60 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=aarch64 -global-isel %s -o - -stop-after=irtranslator | FileCheck %s3 4define ptr @test_simple_alloca(i32 %numelts) {5 ; CHECK-LABEL: name: test_simple_alloca6 ; CHECK: bb.1 (%ir-block.0):7 ; CHECK: liveins: $w08 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w09 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 110 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)11 ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ZEXT]], [[C]]12 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1513 ; CHECK: [[ADD:%[0-9]+]]:_(s64) = nuw G_ADD [[MUL]], [[C1]]14 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1615 ; CHECK: [[AND:%[0-9]+]]:_(s64) = G_AND [[ADD]], [[C2]]16 ; CHECK: [[DYN_STACKALLOC:%[0-9]+]]:_(p0) = G_DYN_STACKALLOC [[AND]](s64), 117 ; CHECK: $x0 = COPY [[DYN_STACKALLOC]](p0)18 ; CHECK: RET_ReallyLR implicit $x019 %addr = alloca i8, i32 %numelts20 ret ptr %addr21}22 23define ptr @test_aligned_alloca(i32 %numelts) {24 ; CHECK-LABEL: name: test_aligned_alloca25 ; CHECK: bb.1 (%ir-block.0):26 ; CHECK: liveins: $w027 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w028 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 129 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)30 ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ZEXT]], [[C]]31 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1532 ; CHECK: [[ADD:%[0-9]+]]:_(s64) = nuw G_ADD [[MUL]], [[C1]]33 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1634 ; CHECK: [[AND:%[0-9]+]]:_(s64) = G_AND [[ADD]], [[C2]]35 ; CHECK: [[DYN_STACKALLOC:%[0-9]+]]:_(p0) = G_DYN_STACKALLOC [[AND]](s64), 3236 ; CHECK: $x0 = COPY [[DYN_STACKALLOC]](p0)37 ; CHECK: RET_ReallyLR implicit $x038 %addr = alloca i8, i32 %numelts, align 3239 ret ptr %addr40}41 42define ptr @test_natural_alloca(i32 %numelts) {43 ; CHECK-LABEL: name: test_natural_alloca44 ; CHECK: bb.1 (%ir-block.0):45 ; CHECK: liveins: $w046 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $w047 ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1648 ; CHECK: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)49 ; CHECK: [[MUL:%[0-9]+]]:_(s64) = G_MUL [[ZEXT]], [[C]]50 ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1551 ; CHECK: [[ADD:%[0-9]+]]:_(s64) = nuw G_ADD [[MUL]], [[C1]]52 ; CHECK: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1653 ; CHECK: [[AND:%[0-9]+]]:_(s64) = G_AND [[ADD]], [[C2]]54 ; CHECK: [[DYN_STACKALLOC:%[0-9]+]]:_(p0) = G_DYN_STACKALLOC [[AND]](s64), 155 ; CHECK: $x0 = COPY [[DYN_STACKALLOC]](p0)56 ; CHECK: RET_ReallyLR implicit $x057 %addr = alloca i128, i32 %numelts58 ret ptr %addr59}60