brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.3 KiB · fa7da82 Raw
476 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=riscv64 -run-pass=legalizer %s -o - \3# RUN: | FileCheck %s --check-prefixes=CHECK,RV64I4# RUN: llc -mtriple=riscv64 -mattr=+zbb -run-pass=legalizer %s -o - \5# RUN: | FileCheck %s --check-prefixes=CHECK,RV64ZBB6 7---8name:            uaddsat_i329body:             |10  bb.1:11    liveins: $x10, $x1112 13    ; CHECK-LABEL: name: uaddsat_i3214    ; CHECK: liveins: $x10, $x1115    ; CHECK-NEXT: {{  $}}16    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1017    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1118    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]19    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD]], 3220    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SEXT_INREG]](s64)21    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 3222    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[SEXT_INREG]](s64), [[SEXT_INREG1]]23    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)24    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -125    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)26    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[COPY2]]27    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)28    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)29    ; CHECK-NEXT: PseudoRET implicit $x1030    %2:_(s64) = COPY $x1031    %0:_(s32) = G_TRUNC %2(s64)32    %3:_(s64) = COPY $x1133    %1:_(s32) = G_TRUNC %3(s64)34    %4:_(s32) = G_UADDSAT %0, %1(s32)35    %5:_(s64) = G_ANYEXT %4(s32)36    $x10 = COPY %5(s64)37    PseudoRET implicit $x1038 39...40---41name:            uaddsat_i6442body:             |43  bb.1:44    liveins: $x10, $x1145 46    ; RV64I-LABEL: name: uaddsat_i6447    ; RV64I: liveins: $x10, $x1148    ; RV64I-NEXT: {{  $}}49    ; RV64I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1050    ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1151    ; RV64I-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]52    ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[ADD]](s64), [[COPY1]]53    ; RV64I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY [[ADD]](s64)54    ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -155    ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[C]], [[COPY2]]56    ; RV64I-NEXT: $x10 = COPY [[SELECT]](s64)57    ; RV64I-NEXT: PseudoRET implicit $x1058    ;59    ; RV64ZBB-LABEL: name: uaddsat_i6460    ; RV64ZBB: liveins: $x10, $x1161    ; RV64ZBB-NEXT: {{  $}}62    ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1063    ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1164    ; RV64ZBB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -165    ; RV64ZBB-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY]], [[C]]66    ; RV64ZBB-NEXT: [[UMIN:%[0-9]+]]:_(s64) = G_UMIN [[XOR]], [[COPY1]]67    ; RV64ZBB-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[UMIN]]68    ; RV64ZBB-NEXT: $x10 = COPY [[ADD]](s64)69    ; RV64ZBB-NEXT: PseudoRET implicit $x1070    %0:_(s64) = COPY $x1071    %1:_(s64) = COPY $x1172    %2:_(s64) = G_UADDSAT %0, %1(s64)73    $x10 = COPY %2(s64)74    PseudoRET implicit $x1075 76...77---78name:            saddsat_i3279body:             |80  bb.1:81    liveins: $x10, $x1182 83    ; CHECK-LABEL: name: saddsat_i3284    ; CHECK: liveins: $x10, $x1185    ; CHECK-NEXT: {{  $}}86    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x1087    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1188    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 3289    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 3290    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[SEXT_INREG]], [[SEXT_INREG1]]91    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ADD]](s64)92    ; CHECK-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD]], 3293    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[ADD]](s64), [[SEXT_INREG2]]94    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)95    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 3196    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY [[SEXT_INREG2]](s64)97    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY3]], [[C]](s64)98    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -214748364899    ; CHECK-NEXT: [[ADD1:%[0-9]+]]:_(s64) = G_ADD [[ASHR]], [[C1]]100    ; CHECK-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD1]], 32101    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[SEXT_INREG3]](s64)102    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[COPY2]]103    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)104    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)105    ; CHECK-NEXT: PseudoRET implicit $x10106    %2:_(s64) = COPY $x10107    %0:_(s32) = G_TRUNC %2(s64)108    %3:_(s64) = COPY $x11109    %1:_(s32) = G_TRUNC %3(s64)110    %4:_(s32) = G_SADDSAT %0, %1(s32)111    %5:_(s64) = G_ANYEXT %4(s32)112    $x10 = COPY %5(s64)113    PseudoRET implicit $x10114 115...116---117name:            saddsat_i64118body:             |119  bb.1:120    liveins: $x10, $x11121 122    ; RV64I-LABEL: name: saddsat_i64123    ; RV64I: liveins: $x10, $x11124    ; RV64I-NEXT: {{  $}}125    ; RV64I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10126    ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11127    ; RV64I-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]128    ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0129    ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[ADD]](s64), [[COPY]]130    ; RV64I-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[COPY1]](s64), [[C]]131    ; RV64I-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ICMP1]], [[ICMP]]132    ; RV64I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY [[ADD]](s64)133    ; RV64I-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 63134    ; RV64I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY2]], [[C1]](s64)135    ; RV64I-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808136    ; RV64I-NEXT: [[ADD1:%[0-9]+]]:_(s64) = G_ADD [[ASHR]], [[C2]]137    ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[XOR]](s64), [[ADD1]], [[COPY2]]138    ; RV64I-NEXT: $x10 = COPY [[SELECT]](s64)139    ; RV64I-NEXT: PseudoRET implicit $x10140    ;141    ; RV64ZBB-LABEL: name: saddsat_i64142    ; RV64ZBB: liveins: $x10, $x11143    ; RV64ZBB-NEXT: {{  $}}144    ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10145    ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11146    ; RV64ZBB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807147    ; RV64ZBB-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808148    ; RV64ZBB-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0149    ; RV64ZBB-NEXT: [[SMAX:%[0-9]+]]:_(s64) = G_SMAX [[COPY]], [[C2]]150    ; RV64ZBB-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[C]], [[SMAX]]151    ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[COPY]], [[C2]]152    ; RV64ZBB-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C1]], [[SMIN]]153    ; RV64ZBB-NEXT: [[SMAX1:%[0-9]+]]:_(s64) = G_SMAX [[SUB1]], [[COPY1]]154    ; RV64ZBB-NEXT: [[SMIN1:%[0-9]+]]:_(s64) = G_SMIN [[SMAX1]], [[SUB]]155    ; RV64ZBB-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[SMIN1]]156    ; RV64ZBB-NEXT: $x10 = COPY [[ADD]](s64)157    ; RV64ZBB-NEXT: PseudoRET implicit $x10158    %0:_(s64) = COPY $x10159    %1:_(s64) = COPY $x11160    %2:_(s64) = G_SADDSAT %0, %1(s64)161    $x10 = COPY %2(s64)162    PseudoRET implicit $x10163 164...165---166name:            usubsat_i32167body:             |168  bb.1:169    liveins: $x10, $x11170 171    ; CHECK-LABEL: name: usubsat_i32172    ; CHECK: liveins: $x10, $x11173    ; CHECK-NEXT: {{  $}}174    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10175    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11176    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[COPY1]]177    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[SUB]], 32178    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SEXT_INREG]](s64)179    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32180    ; CHECK-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 32181    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[SEXT_INREG1]](s64), [[SEXT_INREG2]]182    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0183    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)184    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[TRUNC]]185    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)186    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)187    ; CHECK-NEXT: PseudoRET implicit $x10188    %2:_(s64) = COPY $x10189    %0:_(s32) = G_TRUNC %2(s64)190    %3:_(s64) = COPY $x11191    %1:_(s32) = G_TRUNC %3(s64)192    %4:_(s32) = G_USUBSAT %0, %1(s32)193    %5:_(s64) = G_ANYEXT %4(s32)194    $x10 = COPY %5(s64)195    PseudoRET implicit $x10196 197...198---199name:            usubsat_i64200body:             |201  bb.1:202    liveins: $x10, $x11203 204    ; RV64I-LABEL: name: usubsat_i64205    ; RV64I: liveins: $x10, $x11206    ; RV64I-NEXT: {{  $}}207    ; RV64I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10208    ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11209    ; RV64I-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[COPY1]]210    ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[COPY]](s64), [[COPY1]]211    ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0212    ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[C]], [[SUB]]213    ; RV64I-NEXT: $x10 = COPY [[SELECT]](s64)214    ; RV64I-NEXT: PseudoRET implicit $x10215    ;216    ; RV64ZBB-LABEL: name: usubsat_i64217    ; RV64ZBB: liveins: $x10, $x11218    ; RV64ZBB-NEXT: {{  $}}219    ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10220    ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11221    ; RV64ZBB-NEXT: [[UMIN:%[0-9]+]]:_(s64) = G_UMIN [[COPY]], [[COPY1]]222    ; RV64ZBB-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[UMIN]]223    ; RV64ZBB-NEXT: $x10 = COPY [[SUB]](s64)224    ; RV64ZBB-NEXT: PseudoRET implicit $x10225    %0:_(s64) = COPY $x10226    %1:_(s64) = COPY $x11227    %2:_(s64) = G_USUBSAT %0, %1(s64)228    $x10 = COPY %2(s64)229    PseudoRET implicit $x10230 231...232---233name:            ssubsat_i32234body:             |235  bb.1:236    liveins: $x10, $x11237 238    ; CHECK-LABEL: name: ssubsat_i32239    ; CHECK: liveins: $x10, $x11240    ; CHECK-NEXT: {{  $}}241    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10242    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11243    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32244    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY1]], 32245    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[SEXT_INREG]], [[SEXT_INREG1]]246    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SUB]](s64)247    ; CHECK-NEXT: [[SEXT_INREG2:%[0-9]+]]:_(s64) = G_SEXT_INREG [[SUB]], 32248    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[SUB]](s64), [[SEXT_INREG2]]249    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[TRUNC]](s32)250    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 31251    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s64) = COPY [[SEXT_INREG2]](s64)252    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY3]], [[C]](s64)253    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -2147483648254    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[ASHR]], [[C1]]255    ; CHECK-NEXT: [[SEXT_INREG3:%[0-9]+]]:_(s64) = G_SEXT_INREG [[ADD]], 32256    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[SEXT_INREG3]](s64)257    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[COPY2]]258    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)259    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)260    ; CHECK-NEXT: PseudoRET implicit $x10261    %2:_(s64) = COPY $x10262    %0:_(s32) = G_TRUNC %2(s64)263    %3:_(s64) = COPY $x11264    %1:_(s32) = G_TRUNC %3(s64)265    %4:_(s32) = G_SSUBSAT %0, %1(s32)266    %5:_(s64) = G_ANYEXT %4(s32)267    $x10 = COPY %5(s64)268    PseudoRET implicit $x10269 270...271---272name:            ssubsat_i64273body:             |274  bb.1:275    liveins: $x10, $x11276 277    ; RV64I-LABEL: name: ssubsat_i64278    ; RV64I: liveins: $x10, $x11279    ; RV64I-NEXT: {{  $}}280    ; RV64I-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10281    ; RV64I-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11282    ; RV64I-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[COPY1]]283    ; RV64I-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0284    ; RV64I-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[SUB]](s64), [[COPY]]285    ; RV64I-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(sgt), [[COPY1]](s64), [[C]]286    ; RV64I-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[ICMP1]], [[ICMP]]287    ; RV64I-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY [[SUB]](s64)288    ; RV64I-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 63289    ; RV64I-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY2]], [[C1]](s64)290    ; RV64I-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808291    ; RV64I-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[ASHR]], [[C2]]292    ; RV64I-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[XOR]](s64), [[ADD]], [[COPY2]]293    ; RV64I-NEXT: $x10 = COPY [[SELECT]](s64)294    ; RV64I-NEXT: PseudoRET implicit $x10295    ;296    ; RV64ZBB-LABEL: name: ssubsat_i64297    ; RV64ZBB: liveins: $x10, $x11298    ; RV64ZBB-NEXT: {{  $}}299    ; RV64ZBB-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10300    ; RV64ZBB-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11301    ; RV64ZBB-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807302    ; RV64ZBB-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808303    ; RV64ZBB-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1304    ; RV64ZBB-NEXT: [[SMAX:%[0-9]+]]:_(s64) = G_SMAX [[COPY]], [[C2]]305    ; RV64ZBB-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[SMAX]], [[C]]306    ; RV64ZBB-NEXT: [[SMIN:%[0-9]+]]:_(s64) = G_SMIN [[COPY]], [[C2]]307    ; RV64ZBB-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[SMIN]], [[C1]]308    ; RV64ZBB-NEXT: [[SMAX1:%[0-9]+]]:_(s64) = G_SMAX [[SUB]], [[COPY1]]309    ; RV64ZBB-NEXT: [[SMIN1:%[0-9]+]]:_(s64) = G_SMIN [[SMAX1]], [[SUB1]]310    ; RV64ZBB-NEXT: [[SUB2:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[SMIN1]]311    ; RV64ZBB-NEXT: $x10 = COPY [[SUB2]](s64)312    ; RV64ZBB-NEXT: PseudoRET implicit $x10313    %0:_(s64) = COPY $x10314    %1:_(s64) = COPY $x11315    %2:_(s64) = G_SSUBSAT %0, %1(s64)316    $x10 = COPY %2(s64)317    PseudoRET implicit $x10318 319...320---321name:            uaddsat_i8322body:             |323  bb.1:324    liveins: $x10, $x11325 326    ; CHECK-LABEL: name: uaddsat_i8327    ; CHECK: liveins: $x10, $x11328    ; CHECK-NEXT: {{  $}}329    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10330    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11331    ; CHECK-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[COPY]], [[COPY1]]332    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255333    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ADD]], [[C]]334    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]335    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ult), [[AND]](s64), [[AND1]]336    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1337    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[C1]](s64)338    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[ADD]](s64)339    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC]], [[TRUNC1]]340    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)341    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)342    ; CHECK-NEXT: PseudoRET implicit $x10343    %2:_(s64) = COPY $x10344    %0:_(s8) = G_TRUNC %2(s64)345    %3:_(s64) = COPY $x11346    %1:_(s8) = G_TRUNC %3(s64)347    %4:_(s8) = G_UADDSAT %0, %1(s8)348    %5:_(s64) = G_ANYEXT %4(s8)349    $x10 = COPY %5(s64)350    PseudoRET implicit $x10351 352...353---354name:            sshlsat_i32355body:             |356  bb.1:357    liveins: $x10, $x11358 359    ; CHECK-LABEL: name: sshlsat_i32360    ; CHECK: liveins: $x10, $x11361    ; CHECK-NEXT: {{  $}}362    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10363    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11364    ; CHECK-NEXT: [[SLLW:%[0-9]+]]:_(s64) = G_SLLW [[COPY]], [[COPY1]]365    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SLLW]](s64)366    ; CHECK-NEXT: [[SRAW:%[0-9]+]]:_(s64) = G_SRAW [[SLLW]], [[COPY1]]367    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -2147483648368    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)369    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 2147483647370    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s32) = G_TRUNC [[C1]](s64)371    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0372    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32373    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[SEXT_INREG]](s64), [[C2]]374    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[TRUNC2]]375    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[SRAW]], 32376    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[SEXT_INREG]](s64), [[SEXT_INREG1]]377    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s32) = G_SELECT [[ICMP1]](s64), [[SELECT]], [[TRUNC]]378    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT1]](s32)379    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)380    ; CHECK-NEXT: PseudoRET implicit $x10381    %0:_(s64) = COPY $x10382    %1:_(s32) = G_TRUNC %0(s64)383    %2:_(s64) = COPY $x11384    %3:_(s32) = G_TRUNC %2(s64)385    %4:_(s32) = G_SSHLSAT %1, %3(s32)386    %5:_(s64) = G_ANYEXT %4(s32)387    $x10 = COPY %5(s64)388    PseudoRET implicit $x10389 390...391---392name:            sshlsat_i64393body:             |394  bb.1:395    liveins: $x10, $x11396    ; CHECK-LABEL: name: sshlsat_i64397    ; CHECK: liveins: $x10, $x11398    ; CHECK-NEXT: {{  $}}399    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10400    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11401    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[COPY1]](s64)402    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[COPY1]](s64)403    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808404    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807405    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0406    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(slt), [[COPY]](s64), [[C2]]407    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[C]], [[C1]]408    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[COPY]](s64), [[ASHR]]409    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s64), [[SELECT]], [[SHL]]410    ; CHECK-NEXT: $x10 = COPY [[SELECT1]](s64)411    ; CHECK-NEXT: PseudoRET implicit $x10412    %0:_(s64) = COPY $x10413    %1:_(s64) = COPY $x11414    %2:_(s64) = G_SSHLSAT %0, %1(s64)415    $x10 = COPY %2(s64)416    PseudoRET implicit $x10417 418...419---420name:            ushlsat_i32421body:             |422  bb.1:423    liveins: $x10, $x11424 425    ; CHECK-LABEL: name: ushlsat_i32426    ; CHECK: liveins: $x10, $x11427    ; CHECK-NEXT: {{  $}}428    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10429    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11430    ; CHECK-NEXT: [[SLLW:%[0-9]+]]:_(s64) = G_SLLW [[COPY]], [[COPY1]]431    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[SLLW]](s64)432    ; CHECK-NEXT: [[SRLW:%[0-9]+]]:_(s64) = G_SRLW [[SLLW]], [[COPY1]]433    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1434    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[C]](s64)435    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[COPY]], 32436    ; CHECK-NEXT: [[SEXT_INREG1:%[0-9]+]]:_(s64) = G_SEXT_INREG [[SRLW]], 32437    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[SEXT_INREG]](s64), [[SEXT_INREG1]]438    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[ICMP]](s64), [[TRUNC1]], [[TRUNC]]439    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SELECT]](s32)440    ; CHECK-NEXT: $x10 = COPY [[ANYEXT]](s64)441    ; CHECK-NEXT: PseudoRET implicit $x10442    %0:_(s64) = COPY $x10443    %1:_(s32) = G_TRUNC %0(s64)444    %2:_(s64) = COPY $x11445    %3:_(s32) = G_TRUNC %2(s64)446    %4:_(s32) = G_USHLSAT %1, %3(s32)447    %5:_(s64) = G_ANYEXT %4(s32)448    $x10 = COPY %5(s64)449    PseudoRET implicit $x10450 451...452---453name:            ushlsat_i64454body:             |455  bb.1:456    liveins: $x10, $x11457    ; CHECK-LABEL: name: ushlsat_i64458    ; CHECK: liveins: $x10, $x11459    ; CHECK-NEXT: {{  $}}460    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x10461    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x11462    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[COPY1]](s64)463    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[SHL]], [[COPY1]](s64)464    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1465    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s64) = G_ICMP intpred(ne), [[COPY]](s64), [[LSHR]]466    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s64), [[C]], [[SHL]]467    ; CHECK-NEXT: $x10 = COPY [[SELECT]](s64)468    ; CHECK-NEXT: PseudoRET implicit $x10469    %0:_(s64) = COPY $x10470    %1:_(s64) = COPY $x11471    %2:_(s64) = G_USHLSAT %0, %1(s64)472    $x10 = COPY %2(s64)473    PseudoRET implicit $x10474 475...476