315 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -mtriple thumb-- -mattr=+v6t2 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s3--- |4 define void @test_icmp_eq_s32() { ret void }5 define void @test_icmp_ne_s32() { ret void }6 define void @test_icmp_ugt_s32() { ret void }7 define void @test_icmp_uge_s32() { ret void }8 define void @test_icmp_ult_s32() { ret void }9 define void @test_icmp_ule_s32() { ret void }10 define void @test_icmp_sgt_s32() { ret void }11 define void @test_icmp_sge_s32() { ret void }12 define void @test_icmp_slt_s32() { ret void }13 define void @test_icmp_sle_s32() { ret void }14...15---16name: test_icmp_eq_s3217legalized: true18regBankSelected: true19selected: false20registers:21 - { id: 0, class: gprb }22 - { id: 1, class: gprb }23 - { id: 2, class: gprb }24 - { id: 3, class: gprb }25body: |26 bb.0:27 liveins: $r0, $r128 29 ; CHECK-LABEL: name: test_icmp_eq_s3230 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r031 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r132 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg33 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr34 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 0 /* CC::eq */, $cpsr35 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg36 ; CHECK: $r0 = COPY [[t2ANDri]]37 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r038 %0(s32) = COPY $r039 %1(s32) = COPY $r140 %2(s1) = G_ICMP intpred(eq), %0(s32), %141 %3(s32) = G_ZEXT %2(s1)42 $r0 = COPY %3(s32)43 BX_RET 14, $noreg, implicit $r044...45---46name: test_icmp_ne_s3247legalized: true48regBankSelected: true49selected: false50registers:51 - { id: 0, class: gprb }52 - { id: 1, class: gprb }53 - { id: 2, class: gprb }54 - { id: 3, class: gprb }55body: |56 bb.0:57 liveins: $r0, $r158 59 ; CHECK-LABEL: name: test_icmp_ne_s3260 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r061 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r162 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg63 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr64 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 1 /* CC::ne */, $cpsr65 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg66 ; CHECK: $r0 = COPY [[t2ANDri]]67 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r068 %0(s32) = COPY $r069 %1(s32) = COPY $r170 %2(s1) = G_ICMP intpred(ne), %0(s32), %171 %3(s32) = G_ZEXT %2(s1)72 $r0 = COPY %3(s32)73 BX_RET 14, $noreg, implicit $r074...75---76name: test_icmp_ugt_s3277legalized: true78regBankSelected: true79selected: false80registers:81 - { id: 0, class: gprb }82 - { id: 1, class: gprb }83 - { id: 2, class: gprb }84 - { id: 3, class: gprb }85body: |86 bb.0:87 liveins: $r0, $r188 89 ; CHECK-LABEL: name: test_icmp_ugt_s3290 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r091 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r192 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg93 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr94 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 8 /* CC::hi */, $cpsr95 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg96 ; CHECK: $r0 = COPY [[t2ANDri]]97 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r098 %0(s32) = COPY $r099 %1(s32) = COPY $r1100 %2(s1) = G_ICMP intpred(ugt), %0(s32), %1101 %3(s32) = G_ZEXT %2(s1)102 $r0 = COPY %3(s32)103 BX_RET 14, $noreg, implicit $r0104...105---106name: test_icmp_uge_s32107legalized: true108regBankSelected: true109selected: false110registers:111 - { id: 0, class: gprb }112 - { id: 1, class: gprb }113 - { id: 2, class: gprb }114 - { id: 3, class: gprb }115body: |116 bb.0:117 liveins: $r0, $r1118 119 ; CHECK-LABEL: name: test_icmp_uge_s32120 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0121 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1122 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg123 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr124 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 2 /* CC::hs */, $cpsr125 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg126 ; CHECK: $r0 = COPY [[t2ANDri]]127 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0128 %0(s32) = COPY $r0129 %1(s32) = COPY $r1130 %2(s1) = G_ICMP intpred(uge), %0(s32), %1131 %3(s32) = G_ZEXT %2(s1)132 $r0 = COPY %3(s32)133 BX_RET 14, $noreg, implicit $r0134...135---136name: test_icmp_ult_s32137legalized: true138regBankSelected: true139selected: false140registers:141 - { id: 0, class: gprb }142 - { id: 1, class: gprb }143 - { id: 2, class: gprb }144 - { id: 3, class: gprb }145body: |146 bb.0:147 liveins: $r0, $r1148 149 ; CHECK-LABEL: name: test_icmp_ult_s32150 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0151 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1152 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg153 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr154 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 3 /* CC::lo */, $cpsr155 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg156 ; CHECK: $r0 = COPY [[t2ANDri]]157 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0158 %0(s32) = COPY $r0159 %1(s32) = COPY $r1160 %2(s1) = G_ICMP intpred(ult), %0(s32), %1161 %3(s32) = G_ZEXT %2(s1)162 $r0 = COPY %3(s32)163 BX_RET 14, $noreg, implicit $r0164...165---166name: test_icmp_ule_s32167legalized: true168regBankSelected: true169selected: false170registers:171 - { id: 0, class: gprb }172 - { id: 1, class: gprb }173 - { id: 2, class: gprb }174 - { id: 3, class: gprb }175body: |176 bb.0:177 liveins: $r0, $r1178 179 ; CHECK-LABEL: name: test_icmp_ule_s32180 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0181 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1182 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg183 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr184 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 9 /* CC::ls */, $cpsr185 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg186 ; CHECK: $r0 = COPY [[t2ANDri]]187 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0188 %0(s32) = COPY $r0189 %1(s32) = COPY $r1190 %2(s1) = G_ICMP intpred(ule), %0(s32), %1191 %3(s32) = G_ZEXT %2(s1)192 $r0 = COPY %3(s32)193 BX_RET 14, $noreg, implicit $r0194...195---196name: test_icmp_sgt_s32197legalized: true198regBankSelected: true199selected: false200registers:201 - { id: 0, class: gprb }202 - { id: 1, class: gprb }203 - { id: 2, class: gprb }204 - { id: 3, class: gprb }205body: |206 bb.0:207 liveins: $r0, $r1208 209 ; CHECK-LABEL: name: test_icmp_sgt_s32210 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0211 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1212 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg213 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr214 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 12 /* CC::gt */, $cpsr215 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg216 ; CHECK: $r0 = COPY [[t2ANDri]]217 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0218 %0(s32) = COPY $r0219 %1(s32) = COPY $r1220 %2(s1) = G_ICMP intpred(sgt), %0(s32), %1221 %3(s32) = G_ZEXT %2(s1)222 $r0 = COPY %3(s32)223 BX_RET 14, $noreg, implicit $r0224...225---226name: test_icmp_sge_s32227legalized: true228regBankSelected: true229selected: false230registers:231 - { id: 0, class: gprb }232 - { id: 1, class: gprb }233 - { id: 2, class: gprb }234 - { id: 3, class: gprb }235body: |236 bb.0:237 liveins: $r0, $r1238 239 ; CHECK-LABEL: name: test_icmp_sge_s32240 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0241 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1242 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg243 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr244 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 10 /* CC::ge */, $cpsr245 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg246 ; CHECK: $r0 = COPY [[t2ANDri]]247 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0248 %0(s32) = COPY $r0249 %1(s32) = COPY $r1250 %2(s1) = G_ICMP intpred(sge), %0(s32), %1251 %3(s32) = G_ZEXT %2(s1)252 $r0 = COPY %3(s32)253 BX_RET 14, $noreg, implicit $r0254...255---256name: test_icmp_slt_s32257legalized: true258regBankSelected: true259selected: false260registers:261 - { id: 0, class: gprb }262 - { id: 1, class: gprb }263 - { id: 2, class: gprb }264 - { id: 3, class: gprb }265body: |266 bb.0:267 liveins: $r0, $r1268 269 ; CHECK-LABEL: name: test_icmp_slt_s32270 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0271 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1272 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg273 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr274 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 11 /* CC::lt */, $cpsr275 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg276 ; CHECK: $r0 = COPY [[t2ANDri]]277 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0278 %0(s32) = COPY $r0279 %1(s32) = COPY $r1280 %2(s1) = G_ICMP intpred(slt), %0(s32), %1281 %3(s32) = G_ZEXT %2(s1)282 $r0 = COPY %3(s32)283 BX_RET 14, $noreg, implicit $r0284...285---286name: test_icmp_sle_s32287legalized: true288regBankSelected: true289selected: false290registers:291 - { id: 0, class: gprb }292 - { id: 1, class: gprb }293 - { id: 2, class: gprb }294 - { id: 3, class: gprb }295body: |296 bb.0:297 liveins: $r0, $r1298 299 ; CHECK-LABEL: name: test_icmp_sle_s32300 ; CHECK: [[COPY:%[0-9]+]]:gprnopc = COPY $r0301 ; CHECK: [[COPY1:%[0-9]+]]:rgpr = COPY $r1302 ; CHECK: [[t2MOVi:%[0-9]+]]:rgpr = t2MOVi 0, 14 /* CC::al */, $noreg, $noreg303 ; CHECK: t2CMPrr [[COPY]], [[COPY1]], 14 /* CC::al */, $noreg, implicit-def $cpsr304 ; CHECK: [[t2MOVCCi:%[0-9]+]]:rgpr = t2MOVCCi [[t2MOVi]], 1, 13 /* CC::le */, $cpsr305 ; CHECK: [[t2ANDri:%[0-9]+]]:rgpr = t2ANDri [[t2MOVCCi]], 1, 14 /* CC::al */, $noreg, $noreg306 ; CHECK: $r0 = COPY [[t2ANDri]]307 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0308 %0(s32) = COPY $r0309 %1(s32) = COPY $r1310 %2(s1) = G_ICMP intpred(sle), %0(s32), %1311 %3(s32) = G_ZEXT %2(s1)312 $r0 = COPY %3(s32)313 BX_RET 14, $noreg, implicit $r0314...315