107 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=aarch64-apple-ios -global-isel -stop-after=irtranslator %s -o - | FileCheck %s --check-prefix=TRANSLATED3; RUN: llc -mtriple=aarch64-apple-ios -global-isel -stop-before=instruction-select %s -o - | FileCheck %s --check-prefix=PRESELECTION4; RUN: llc -mtriple=aarch64-apple-ios -global-isel -stop-after=instruction-select %s -o - | FileCheck %s --check-prefix=POSTSELECTION5 6; Check we generate G_CONSTANT_FOLD_BARRIER of constants and don't fold them, since they're7; used by constant hoisting to prevent constant folding/propagation.8 9declare void @callee()10 11define i32 @test(i32 %a, i1 %c) {12 ; TRANSLATED-LABEL: name: test13 ; TRANSLATED: bb.1.entry:14 ; TRANSLATED-NEXT: successors: %bb.3(0x40000000), %bb.2(0x40000000)15 ; TRANSLATED-NEXT: liveins: $w0, $w116 ; TRANSLATED-NEXT: {{ $}}17 ; TRANSLATED-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w018 ; TRANSLATED-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w119 ; TRANSLATED-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY1]](s32)20 ; TRANSLATED-NEXT: [[ASSERT_ZEXT:%[0-9]+]]:_(s8) = G_ASSERT_ZEXT [[TRUNC]], 121 ; TRANSLATED-NEXT: [[TRUNC1:%[0-9]+]]:_(s1) = G_TRUNC [[ASSERT_ZEXT]](s8)22 ; TRANSLATED-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 10000023 ; TRANSLATED-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 024 ; TRANSLATED-NEXT: [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:_(s32) = G_CONSTANT_FOLD_BARRIER [[C]]25 ; TRANSLATED-NEXT: G_BRCOND [[TRUNC1]](s1), %bb.326 ; TRANSLATED-NEXT: G_BR %bb.227 ; TRANSLATED-NEXT: {{ $}}28 ; TRANSLATED-NEXT: bb.2.common.ret:29 ; TRANSLATED-NEXT: [[PHI:%[0-9]+]]:_(s32) = G_PHI %7(s32), %bb.3, [[C1]](s32), %bb.130 ; TRANSLATED-NEXT: $w0 = COPY [[PHI]](s32)31 ; TRANSLATED-NEXT: RET_ReallyLR implicit $w032 ; TRANSLATED-NEXT: {{ $}}33 ; TRANSLATED-NEXT: bb.3.cont:34 ; TRANSLATED-NEXT: successors: %bb.2(0x80000000)35 ; TRANSLATED-NEXT: {{ $}}36 ; TRANSLATED-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[CONSTANT_FOLD_BARRIER]]37 ; TRANSLATED-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp38 ; TRANSLATED-NEXT: BL @callee, csr_darwin_aarch64_aapcs, implicit-def $lr, implicit $sp39 ; TRANSLATED-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp40 ; TRANSLATED-NEXT: G_BR %bb.241 ;42 ; PRESELECTION-LABEL: name: test43 ; PRESELECTION: bb.1.entry:44 ; PRESELECTION-NEXT: successors: %bb.3(0x40000000), %bb.2(0x40000000)45 ; PRESELECTION-NEXT: liveins: $w0, $w146 ; PRESELECTION-NEXT: {{ $}}47 ; PRESELECTION-NEXT: [[COPY:%[0-9]+]]:gpr(s32) = COPY $w048 ; PRESELECTION-NEXT: [[COPY1:%[0-9]+]]:gpr(s32) = COPY $w149 ; PRESELECTION-NEXT: [[C:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 10000050 ; PRESELECTION-NEXT: [[CONSTANT_FOLD_BARRIER:%[0-9]+]]:gpr(s32) = G_CONSTANT_FOLD_BARRIER [[C]]51 ; PRESELECTION-NEXT: [[C1:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 052 ; PRESELECTION-NEXT: [[C2:%[0-9]+]]:gpr(s32) = G_CONSTANT i32 153 ; PRESELECTION-NEXT: [[AND:%[0-9]+]]:gpr(s32) = G_AND [[COPY1]], [[C2]]54 ; PRESELECTION-NEXT: G_BRCOND [[AND]](s32), %bb.355 ; PRESELECTION-NEXT: G_BR %bb.256 ; PRESELECTION-NEXT: {{ $}}57 ; PRESELECTION-NEXT: bb.2.common.ret:58 ; PRESELECTION-NEXT: [[PHI:%[0-9]+]]:gpr(s32) = G_PHI %7(s32), %bb.3, [[C1]](s32), %bb.159 ; PRESELECTION-NEXT: $w0 = COPY [[PHI]](s32)60 ; PRESELECTION-NEXT: RET_ReallyLR implicit $w061 ; PRESELECTION-NEXT: {{ $}}62 ; PRESELECTION-NEXT: bb.3.cont:63 ; PRESELECTION-NEXT: successors: %bb.2(0x80000000)64 ; PRESELECTION-NEXT: {{ $}}65 ; PRESELECTION-NEXT: [[ADD:%[0-9]+]]:gpr(s32) = G_ADD [[COPY]], [[CONSTANT_FOLD_BARRIER]]66 ; PRESELECTION-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp67 ; PRESELECTION-NEXT: BL @callee, csr_darwin_aarch64_aapcs, implicit-def $lr, implicit $sp68 ; PRESELECTION-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp69 ; PRESELECTION-NEXT: G_BR %bb.270 ;71 ; POSTSELECTION-LABEL: name: test72 ; POSTSELECTION: bb.1.entry:73 ; POSTSELECTION-NEXT: successors: %bb.3(0x40000000), %bb.2(0x40000000)74 ; POSTSELECTION-NEXT: liveins: $w0, $w175 ; POSTSELECTION-NEXT: {{ $}}76 ; POSTSELECTION-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w077 ; POSTSELECTION-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY $w178 ; POSTSELECTION-NEXT: [[MOVi32imm:%[0-9]+]]:gpr32 = MOVi32imm 10000079 ; POSTSELECTION-NEXT: [[COPY2:%[0-9]+]]:gpr32 = COPY $wzr80 ; POSTSELECTION-NEXT: TBNZW [[COPY1]], 0, %bb.381 ; POSTSELECTION-NEXT: B %bb.282 ; POSTSELECTION-NEXT: {{ $}}83 ; POSTSELECTION-NEXT: bb.2.common.ret:84 ; POSTSELECTION-NEXT: [[PHI:%[0-9]+]]:gpr32 = PHI %7, %bb.3, [[COPY2]], %bb.185 ; POSTSELECTION-NEXT: $w0 = COPY [[PHI]]86 ; POSTSELECTION-NEXT: RET_ReallyLR implicit $w087 ; POSTSELECTION-NEXT: {{ $}}88 ; POSTSELECTION-NEXT: bb.3.cont:89 ; POSTSELECTION-NEXT: successors: %bb.2(0x80000000)90 ; POSTSELECTION-NEXT: {{ $}}91 ; POSTSELECTION-NEXT: [[ADDWrr:%[0-9]+]]:gpr32 = ADDWrr [[COPY]], [[MOVi32imm]]92 ; POSTSELECTION-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp93 ; POSTSELECTION-NEXT: BL @callee, csr_darwin_aarch64_aapcs, implicit-def $lr, implicit $sp94 ; POSTSELECTION-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp95 ; POSTSELECTION-NEXT: B %bb.296entry:97 %hc = bitcast i32 100000 to i3298 br i1 %c, label %cont, label %end99cont:100 %add = add i32 %a, %hc101 call void @callee()102 ret i32 %add103end:104 ret i32 0105}106 107