1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -run-pass=arm-pseudo -verify-machineinstrs %s -o - | FileCheck %s 3--- | 4 target triple = "armv7---gnueabi" 5 6 define i32 @test1(i32 %x) { 7 entry: 8 unreachable 9 } 10 define i32 @test2(i32 %x) { 11 entry: 12 unreachable 13 } 14 define i32 @test3(i32 %x) { 15 entry: 16 unreachable 17 } 18 define i32 @test4(i32 %x) { 19 entry: 20 unreachable 21 } 22 @var = global i32 0 23 define i32 @test5(i32 %x) { 24 entry: 25 unreachable 26 } 27 define i32 @vbsl_kill_flags(i32 %x) { 28 unreachable 29 } 30... 31--- 32name: test1 33alignment: 4 34tracksRegLiveness: true 35liveins: 36 - { reg: '$r0', virtual-reg: '' } 37body: | 38 bb.0.entry: 39 liveins: $r0 40 41 ; CHECK-LABEL: name: test1 42 ; CHECK: liveins: $r0 43 ; CHECK-NEXT: {{ $}} 44 ; CHECK-NEXT: $r1 = MOVi 2, 14 /* CC::al */, $noreg, $noreg 45 ; CHECK-NEXT: CMPri killed $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 46 ; CHECK-NEXT: $r1 = MOVi16 500, 0 /* CC::eq */, killed $cpsr, implicit killed $r1 47 ; CHECK-NEXT: $r0 = MOVr killed $r1, 14 /* CC::al */, $noreg, $noreg 48 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0 49 $r1 = MOVi 2, 14, $noreg, $noreg 50 CMPri killed $r0, 0, 14, $noreg, implicit-def $cpsr 51 $r1 = MOVCCi16 killed $r1, 500, 0, killed $cpsr 52 $r0 = MOVr killed $r1, 14, $noreg, $noreg 53 BX_RET 14, $noreg, implicit $r0 54 55... 56--- 57name: test2 58alignment: 4 59tracksRegLiveness: true 60liveins: 61 - { reg: '$r0', virtual-reg: '' } 62body: | 63 bb.0.entry: 64 liveins: $r0 65 66 ; CHECK-LABEL: name: test2 67 ; CHECK: liveins: $r0 68 ; CHECK-NEXT: {{ $}} 69 ; CHECK-NEXT: $r1 = MOVi 2, 14 /* CC::al */, $noreg, $noreg 70 ; CHECK-NEXT: CMPri killed $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr 71 ; CHECK-NEXT: $r1 = MOVi16 2068, 0 /* CC::eq */, $cpsr, implicit killed $r1 72 ; CHECK-NEXT: $r1 = MOVTi16 $r1, 7637, 0 /* CC::eq */, $cpsr 73 ; CHECK-NEXT: $r0 = MOVr killed $r1, 14 /* CC::al */, $noreg, $noreg 74 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0 75 $r1 = MOVi 2, 14, $noreg, $noreg 76 CMPri killed $r0, 0, 14, $noreg, implicit-def $cpsr 77 $r1 = MOVCCi32imm killed $r1, 500500500, 0, killed $cpsr 78 $r0 = MOVr killed $r1, 14, $noreg, $noreg 79 BX_RET 14, $noreg, implicit $r0 80 81... 82--- 83name: test3 84alignment: 4 85tracksRegLiveness: true 86liveins: 87 - { reg: '$r0', virtual-reg: '' } 88 - { reg: '$r1', virtual-reg: '' } 89body: | 90 bb.0.entry: 91 liveins: $r0, $r1 92 93 ; CHECK-LABEL: name: test3 94 ; CHECK: liveins: $r0, $r1 95 ; CHECK-NEXT: {{ $}} 96 ; CHECK-NEXT: CMPri $r1, 500, 14 /* CC::al */, $noreg, implicit-def $cpsr 97 ; CHECK-NEXT: $r0 = MOVr killed $r1, 12 /* CC::gt */, killed $cpsr, $noreg, implicit killed $r0 98 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0 99 CMPri $r1, 500, 14, $noreg, implicit-def $cpsr 100 $r0 = MOVCCr killed $r0, killed $r1, 12, killed $cpsr 101 BX_RET 14, $noreg, implicit $r0 102 103... 104--- 105name: test4 106alignment: 4 107tracksRegLiveness: true 108liveins: 109 - { reg: '$r0', virtual-reg: '' } 110 - { reg: '$r0_r1', virtual-reg: '' } 111body: | 112 bb.0.entry: 113 liveins: $r0, $r0_r1 114 115 ; CHECK-LABEL: name: test4 116 ; CHECK: liveins: $r0, $r0_r1 117 ; CHECK-NEXT: {{ $}} 118 ; CHECK-NEXT: $r0 = MOVi16 51712, 14 /* CC::al */, $noreg, implicit-def $r0_r1 119 ; CHECK-NEXT: $r0 = MOVTi16 $r0, 15258, 14 /* CC::al */, $noreg, implicit-def $r0_r1 120 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0 121 $r0 = MOVi32imm 1000000000, implicit-def $r0_r1 122 BX_RET 14, $noreg, implicit $r0 123 124... 125--- 126name: test5 127alignment: 4 128tracksRegLiveness: true 129liveins: 130 - { reg: '$r0', virtual-reg: '' } 131 - { reg: '$r0_r1', virtual-reg: '' } 132body: | 133 bb.0.entry: 134 liveins: $r0, $r0_r1 135 136 ; CHECK-LABEL: name: test5 137 ; CHECK: liveins: $r0, $r0_r1 138 ; CHECK-NEXT: {{ $}} 139 ; CHECK-NEXT: $r0 = MOVi16_ga_pcrel target-flags(arm-lo16) @var, 0, implicit-def $r0_r1 140 ; CHECK-NEXT: $r0 = MOVTi16_ga_pcrel $r0, target-flags(arm-hi16) @var, 0, implicit-def $r0_r1 141 ; CHECK-NEXT: $r0 = PICLDR $r0, 0, 14 /* CC::al */, $noreg, implicit-def $r0_r1 142 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $r0 143 $r0 = MOV_ga_pcrel_ldr @var, implicit-def $r0_r1 144 BX_RET 14, $noreg, implicit $r0 145 146... 147--- 148name: vbsl_kill_flags 149alignment: 4 150tracksRegLiveness: true 151body: | 152 bb.0 (%ir-block.0): 153 liveins: $d1 154 155 ; CHECK-LABEL: name: vbsl_kill_flags 156 ; CHECK: liveins: $d1 157 ; CHECK-NEXT: {{ $}} 158 ; CHECK-NEXT: renamable $d0 = VORRd renamable $d1, renamable $d1, 14 /* CC::al */, $noreg 159 ; CHECK-NEXT: renamable $d0 = VBSLd killed renamable $d0, renamable $d1, renamable $d1, 14 /* CC::al */, $noreg 160 ; CHECK-NEXT: BX_RET 14 /* CC::al */, $noreg, implicit $d0 161 renamable $d0 = VBSPd killed renamable $d1, renamable $d1, renamable $d1, 14 /* CC::al */, $noreg 162 BX_RET 14 /* CC::al */, $noreg, implicit $d0 163 164... 165