554 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=riscv32 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s4 5---6name: saddo_i87body: |8 bb.1:9 liveins: $x10, $x1110 11 ; CHECK-LABEL: name: saddo_i812 ; CHECK: liveins: $x10, $x1113 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1015 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1116 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 2417 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)18 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)19 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)20 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)21 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASHR]], [[ASHR1]]22 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ADD]], [[C]](s32)23 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)24 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[ADD]](s32), [[ASHR2]]25 ; CHECK-NEXT: $x10 = COPY [[ADD]](s32)26 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)27 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1128 %2:_(s32) = COPY $x1029 %0:_(s8) = G_TRUNC %2(s32)30 %3:_(s32) = COPY $x1131 %1:_(s8) = G_TRUNC %3(s32)32 %4:_(s8), %5:_(s1) = G_SADDO %0, %133 %6:_(s32) = G_ANYEXT %4(s8)34 %7:_(s32) = G_ANYEXT %5(s1)35 $x10 = COPY %6(s32)36 $x11 = COPY %7(s32)37 PseudoRET implicit $x10, implicit $x1138 39...40---41name: saddo_i1642body: |43 bb.1:44 liveins: $x10, $x1145 46 ; CHECK-LABEL: name: saddo_i1647 ; CHECK: liveins: $x10, $x1148 ; CHECK-NEXT: {{ $}}49 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1050 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1151 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1652 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)53 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)54 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)55 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)56 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[ASHR]], [[ASHR1]]57 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[ADD]], [[C]](s32)58 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)59 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[ADD]](s32), [[ASHR2]]60 ; CHECK-NEXT: $x10 = COPY [[ADD]](s32)61 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)62 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1163 %2:_(s32) = COPY $x1064 %0:_(s16) = G_TRUNC %2(s32)65 %3:_(s32) = COPY $x1166 %1:_(s16) = G_TRUNC %3(s32)67 %4:_(s16), %5:_(s1) = G_SADDO %0, %168 %6:_(s32) = G_ANYEXT %4(s16)69 %7:_(s32) = G_ANYEXT %5(s1)70 $x10 = COPY %6(s32)71 $x11 = COPY %7(s32)72 PseudoRET implicit $x10, implicit $x1173 74...75---76name: saddo_i3277body: |78 bb.1:79 liveins: $x10, $x1180 81 ; CHECK-LABEL: name: saddo_i3282 ; CHECK: liveins: $x10, $x1183 ; CHECK-NEXT: {{ $}}84 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x1085 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x1186 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]87 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 088 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[ADD]](s32), [[COPY]]89 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY1]](s32), [[C]]90 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[ICMP1]], [[ICMP]]91 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)92 ; CHECK-NEXT: $x10 = COPY [[COPY2]](s32)93 ; CHECK-NEXT: $x11 = COPY [[XOR]](s32)94 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x1195 %0:_(s32) = COPY $x1096 %1:_(s32) = COPY $x1197 %2:_(s32), %3:_(s1) = G_SADDO %0, %198 %4:_(s32) = G_ANYEXT %3(s1)99 $x10 = COPY %2(s32)100 $x11 = COPY %4(s32)101 PseudoRET implicit $x10, implicit $x11102 103...104---105name: saddo_i64106body: |107 bb.1:108 liveins: $x10, $x11, $x12, $x13109 110 ; CHECK-LABEL: name: saddo_i64111 ; CHECK: liveins: $x10, $x11, $x12, $x13112 ; CHECK-NEXT: {{ $}}113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10114 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11115 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12116 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13117 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY2]]118 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), [[COPY2]]119 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)120 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY1]], [[COPY3]]121 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[ICMP]]122 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0123 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ADD2]](s32)124 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY4]](s32), [[COPY]]125 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY5]](s32), [[COPY1]]126 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY5]](s32), [[COPY1]]127 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[ICMP1]], [[ICMP2]]128 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY2]](s32), [[C]]129 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[COPY3]](s32), [[C]]130 ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY3]](s32), [[C]]131 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP6]](s32), [[ICMP4]], [[ICMP5]]132 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[SELECT1]], [[SELECT]]133 ; CHECK-NEXT: $x10 = COPY [[COPY4]](s32)134 ; CHECK-NEXT: $x11 = COPY [[COPY5]](s32)135 ; CHECK-NEXT: $x12 = COPY [[XOR]](s32)136 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12137 %2:_(s32) = COPY $x10138 %3:_(s32) = COPY $x11139 %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)140 %4:_(s32) = COPY $x12141 %5:_(s32) = COPY $x13142 %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)143 %6:_(s64), %7:_(s1) = G_SADDO %0, %1144 %8:_(s32), %9:_(s32) = G_UNMERGE_VALUES %6(s64)145 %10:_(s32) = G_ANYEXT %7(s1)146 $x10 = COPY %8(s32)147 $x11 = COPY %9(s32)148 $x12 = COPY %10(s32)149 PseudoRET implicit $x10, implicit $x11, implicit $x12150 151...152---153name: ssubo_i8154body: |155 bb.1:156 liveins: $x10, $x11157 158 ; CHECK-LABEL: name: ssubo_i8159 ; CHECK: liveins: $x10, $x11160 ; CHECK-NEXT: {{ $}}161 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10162 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11163 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 24164 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)165 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)166 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)167 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)168 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[ASHR]], [[ASHR1]]169 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[SUB]], [[C]](s32)170 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)171 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[SUB]](s32), [[ASHR2]]172 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)173 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)174 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11175 %2:_(s32) = COPY $x10176 %0:_(s8) = G_TRUNC %2(s32)177 %3:_(s32) = COPY $x11178 %1:_(s8) = G_TRUNC %3(s32)179 %4:_(s8), %5:_(s1) = G_SSUBO %0, %1180 %6:_(s32) = G_ANYEXT %4(s8)181 %7:_(s32) = G_ANYEXT %5(s1)182 $x10 = COPY %6(s32)183 $x11 = COPY %7(s32)184 PseudoRET implicit $x10, implicit $x11185 186...187---188name: ssubo_i16189body: |190 bb.1:191 liveins: $x10, $x11192 193 ; CHECK-LABEL: name: ssubo_i16194 ; CHECK: liveins: $x10, $x11195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10197 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11198 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16199 ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s32)200 ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SHL]], [[C]](s32)201 ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[COPY1]], [[C]](s32)202 ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s32) = G_ASHR [[SHL1]], [[C]](s32)203 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[ASHR]], [[ASHR1]]204 ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[SUB]], [[C]](s32)205 ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s32) = G_ASHR [[SHL2]], [[C]](s32)206 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ne), [[SUB]](s32), [[ASHR2]]207 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)208 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)209 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11210 %2:_(s32) = COPY $x10211 %0:_(s16) = G_TRUNC %2(s32)212 %3:_(s32) = COPY $x11213 %1:_(s16) = G_TRUNC %3(s32)214 %4:_(s16), %5:_(s1) = G_SSUBO %0, %1215 %6:_(s32) = G_ANYEXT %4(s16)216 %7:_(s32) = G_ANYEXT %5(s1)217 $x10 = COPY %6(s32)218 $x11 = COPY %7(s32)219 PseudoRET implicit $x10, implicit $x11220 221...222---223name: ssubo_i32224body: |225 bb.1:226 liveins: $x10, $x11227 228 ; CHECK-LABEL: name: ssubo_i32229 ; CHECK: liveins: $x10, $x11230 ; CHECK-NEXT: {{ $}}231 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10232 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11233 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]234 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0235 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[SUB]](s32), [[COPY]]236 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY1]](s32), [[C]]237 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[ICMP1]], [[ICMP]]238 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[SUB]](s32)239 ; CHECK-NEXT: $x10 = COPY [[COPY2]](s32)240 ; CHECK-NEXT: $x11 = COPY [[XOR]](s32)241 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11242 %0:_(s32) = COPY $x10243 %1:_(s32) = COPY $x11244 %2:_(s32), %3:_(s1) = G_SSUBO %0, %1245 %4:_(s32) = G_ANYEXT %3(s1)246 $x10 = COPY %2(s32)247 $x11 = COPY %4(s32)248 PseudoRET implicit $x10, implicit $x11249 250...251---252name: ssubo_i64253body: |254 bb.1:255 liveins: $x10, $x11, $x12, $x13256 257 ; CHECK-LABEL: name: ssubo_i64258 ; CHECK: liveins: $x10, $x11, $x12, $x13259 ; CHECK-NEXT: {{ $}}260 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10261 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11262 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12263 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13264 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY2]]265 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY2]]266 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[COPY1]], [[COPY3]]267 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[SUB1]], [[ICMP]]268 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0269 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[SUB]](s32), [[COPY]]270 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(slt), [[SUB2]](s32), [[COPY1]]271 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[SUB2]](s32), [[COPY1]]272 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[ICMP1]], [[ICMP2]]273 ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s32) = G_ICMP intpred(ugt), [[COPY2]](s32), [[C]]274 ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY3]](s32), [[C]]275 ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY3]](s32), [[C]]276 ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP6]](s32), [[ICMP4]], [[ICMP5]]277 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[SELECT1]], [[SELECT]]278 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)279 ; CHECK-NEXT: $x11 = COPY [[SUB2]](s32)280 ; CHECK-NEXT: $x12 = COPY [[XOR]](s32)281 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12282 %2:_(s32) = COPY $x10283 %3:_(s32) = COPY $x11284 %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)285 %4:_(s32) = COPY $x12286 %5:_(s32) = COPY $x13287 %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)288 %6:_(s64), %7:_(s1) = G_SSUBO %0, %1289 %8:_(s32), %9:_(s32) = G_UNMERGE_VALUES %6(s64)290 %10:_(s32) = G_ANYEXT %7(s1)291 $x10 = COPY %8(s32)292 $x11 = COPY %9(s32)293 $x12 = COPY %10(s32)294 PseudoRET implicit $x10, implicit $x11, implicit $x12295 296...297---298name: uaddo_i8299body: |300 bb.1:301 liveins: $x10, $x11302 303 ; CHECK-LABEL: name: uaddo_i8304 ; CHECK: liveins: $x10, $x11305 ; CHECK-NEXT: {{ $}}306 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10307 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11308 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]309 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255310 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]311 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]312 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]313 ; CHECK-NEXT: $x10 = COPY [[ADD]](s32)314 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)315 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11316 %2:_(s32) = COPY $x10317 %0:_(s8) = G_TRUNC %2(s32)318 %3:_(s32) = COPY $x11319 %1:_(s8) = G_TRUNC %3(s32)320 %4:_(s8), %5:_(s1) = G_UADDO %0, %1321 %6:_(s32) = G_ANYEXT %4(s8)322 %7:_(s32) = G_ANYEXT %5(s1)323 $x10 = COPY %6(s32)324 $x11 = COPY %7(s32)325 PseudoRET implicit $x10, implicit $x11326 327...328---329name: uaddo_i16330body: |331 bb.1:332 liveins: $x10, $x11333 334 ; CHECK-LABEL: name: uaddo_i16335 ; CHECK: liveins: $x10, $x11336 ; CHECK-NEXT: {{ $}}337 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10338 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11339 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]340 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535341 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ADD]], [[C]]342 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]343 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]344 ; CHECK-NEXT: $x10 = COPY [[ADD]](s32)345 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)346 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11347 %2:_(s32) = COPY $x10348 %0:_(s16) = G_TRUNC %2(s32)349 %3:_(s32) = COPY $x11350 %1:_(s16) = G_TRUNC %3(s32)351 %4:_(s16), %5:_(s1) = G_UADDO %0, %1352 %6:_(s32) = G_ANYEXT %4(s16)353 %7:_(s32) = G_ANYEXT %5(s1)354 $x10 = COPY %6(s32)355 $x11 = COPY %7(s32)356 PseudoRET implicit $x10, implicit $x11357 358...359---360name: uaddo_i32361body: |362 bb.1:363 liveins: $x10, $x11364 365 ; CHECK-LABEL: name: uaddo_i32366 ; CHECK: liveins: $x10, $x11367 ; CHECK-NEXT: {{ $}}368 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10369 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11370 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY1]]371 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), [[COPY1]]372 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)373 ; CHECK-NEXT: $x10 = COPY [[COPY2]](s32)374 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)375 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11376 %0:_(s32) = COPY $x10377 %1:_(s32) = COPY $x11378 %2:_(s32), %3:_(s1) = G_UADDO %0, %1379 %4:_(s32) = G_ANYEXT %3(s1)380 $x10 = COPY %2(s32)381 $x11 = COPY %4(s32)382 PseudoRET implicit $x10, implicit $x11383 384...385---386name: uaddo_i64387body: |388 bb.1:389 liveins: $x10, $x11, $x12, $x13390 391 ; CHECK-LABEL: name: uaddo_i64392 ; CHECK: liveins: $x10, $x11, $x12, $x13393 ; CHECK-NEXT: {{ $}}394 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10395 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11396 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12397 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13398 ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s32) = G_ADD [[COPY]], [[COPY2]]399 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[ADD]](s32), [[COPY2]]400 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:_(s32) = COPY [[ADD]](s32)401 ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s32) = G_ADD [[COPY1]], [[COPY3]]402 ; CHECK-NEXT: [[ADD2:%[0-9]+]]:_(s32) = G_ADD [[ADD1]], [[ICMP]]403 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:_(s32) = COPY [[ADD2]](s32)404 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY4]](s32), [[COPY2]]405 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY5]](s32), [[COPY3]]406 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY5]](s32), [[COPY3]]407 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[ICMP1]], [[ICMP2]]408 ; CHECK-NEXT: $x10 = COPY [[COPY4]](s32)409 ; CHECK-NEXT: $x11 = COPY [[COPY5]](s32)410 ; CHECK-NEXT: $x12 = COPY [[SELECT]](s32)411 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12412 %2:_(s32) = COPY $x10413 %3:_(s32) = COPY $x11414 %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)415 %4:_(s32) = COPY $x12416 %5:_(s32) = COPY $x13417 %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)418 %6:_(s64), %7:_(s1) = G_UADDO %0, %1419 %8:_(s32), %9:_(s32) = G_UNMERGE_VALUES %6(s64)420 %10:_(s32) = G_ANYEXT %7(s1)421 $x10 = COPY %8(s32)422 $x11 = COPY %9(s32)423 $x12 = COPY %10(s32)424 PseudoRET implicit $x10, implicit $x11, implicit $x12425 426...427---428name: usubo_i8429body: |430 bb.1:431 liveins: $x10, $x11432 433 ; CHECK-LABEL: name: usubo_i8434 ; CHECK: liveins: $x10, $x11435 ; CHECK-NEXT: {{ $}}436 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10437 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11438 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]439 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255440 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]441 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]442 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]443 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)444 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)445 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11446 %2:_(s32) = COPY $x10447 %0:_(s8) = G_TRUNC %2(s32)448 %3:_(s32) = COPY $x11449 %1:_(s8) = G_TRUNC %3(s32)450 %4:_(s8), %5:_(s1) = G_USUBO %0, %1451 %6:_(s32) = G_ANYEXT %4(s8)452 %7:_(s32) = G_ANYEXT %5(s1)453 $x10 = COPY %6(s32)454 $x11 = COPY %7(s32)455 PseudoRET implicit $x10, implicit $x11456 457...458---459name: usubo_i16460body: |461 bb.1:462 liveins: $x10, $x11463 464 ; CHECK-LABEL: name: usubo_i16465 ; CHECK: liveins: $x10, $x11466 ; CHECK-NEXT: {{ $}}467 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10468 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11469 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]470 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535471 ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C]]472 ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]473 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[AND]](s32), [[AND1]]474 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)475 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)476 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11477 %2:_(s32) = COPY $x10478 %0:_(s16) = G_TRUNC %2(s32)479 %3:_(s32) = COPY $x11480 %1:_(s16) = G_TRUNC %3(s32)481 %4:_(s16), %5:_(s1) = G_USUBO %0, %1482 %6:_(s32) = G_ANYEXT %4(s16)483 %7:_(s32) = G_ANYEXT %5(s1)484 $x10 = COPY %6(s32)485 $x11 = COPY %7(s32)486 PseudoRET implicit $x10, implicit $x11487 488...489---490name: usubo_i32491body: |492 bb.1:493 liveins: $x10, $x11494 495 ; CHECK-LABEL: name: usubo_i32496 ; CHECK: liveins: $x10, $x11497 ; CHECK-NEXT: {{ $}}498 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10499 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11500 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY1]]501 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY1]]502 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)503 ; CHECK-NEXT: $x11 = COPY [[ICMP]](s32)504 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11505 %0:_(s32) = COPY $x10506 %1:_(s32) = COPY $x11507 %2:_(s32), %3:_(s1) = G_USUBO %0, %1508 %4:_(s32) = G_ANYEXT %3(s1)509 $x10 = COPY %2(s32)510 $x11 = COPY %4(s32)511 PseudoRET implicit $x10, implicit $x11512 513...514---515name: usubo_i64516body: |517 bb.1:518 liveins: $x10, $x11, $x12, $x13519 520 ; CHECK-LABEL: name: usubo_i64521 ; CHECK: liveins: $x10, $x11, $x12, $x13522 ; CHECK-NEXT: {{ $}}523 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $x10524 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $x11525 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $x12526 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY $x13527 ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s32) = G_SUB [[COPY]], [[COPY2]]528 ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY2]]529 ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s32) = G_SUB [[COPY1]], [[COPY3]]530 ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s32) = G_SUB [[SUB1]], [[ICMP]]531 ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s32), [[COPY2]]532 ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY1]](s32), [[COPY3]]533 ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]]534 ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP3]](s32), [[ICMP1]], [[ICMP2]]535 ; CHECK-NEXT: $x10 = COPY [[SUB]](s32)536 ; CHECK-NEXT: $x11 = COPY [[SUB2]](s32)537 ; CHECK-NEXT: $x12 = COPY [[SELECT]](s32)538 ; CHECK-NEXT: PseudoRET implicit $x10, implicit $x11, implicit $x12539 %2:_(s32) = COPY $x10540 %3:_(s32) = COPY $x11541 %0:_(s64) = G_MERGE_VALUES %2(s32), %3(s32)542 %4:_(s32) = COPY $x12543 %5:_(s32) = COPY $x13544 %1:_(s64) = G_MERGE_VALUES %4(s32), %5(s32)545 %6:_(s64), %7:_(s1) = G_USUBO %0, %1546 %8:_(s32), %9:_(s32) = G_UNMERGE_VALUES %6(s64)547 %10:_(s32) = G_ANYEXT %7(s1)548 $x10 = COPY %8(s32)549 $x11 = COPY %9(s32)550 $x12 = COPY %10(s32)551 PseudoRET implicit $x10, implicit $x11, implicit $x12552 553...554