brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.1 KiB · 1e549fa Raw
571 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22# RUN: llc -O0 -mtriple=arm64-unknown-unknown -global-isel -run-pass=legalizer -global-isel-abort=1 %s -o - | FileCheck %s3 4---5name:            fshl_i86alignment:       47tracksRegLiveness: true8body:             |9  bb.0:10    liveins: $w0, $w1, $w211 12    ; CHECK-LABEL: name: fshl_i813    ; CHECK: liveins: $w0, $w1, $w214    ; CHECK-NEXT: {{  $}}15    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w016    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w117    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w218    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 719    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]20    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -121    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]22    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C]](s32)23    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[COPY3]]24    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)25    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 25526    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]27    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 128    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C3]](s64)29    ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C2]]30    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[AND1]](s32)31    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]32    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)33    ; CHECK-NEXT: RET_ReallyLR implicit $w034    %3:_(s32) = COPY $w035    %0:_(s8) = G_TRUNC %3(s32)36    %4:_(s32) = COPY $w137    %1:_(s8) = G_TRUNC %4(s32)38    %5:_(s32) = COPY $w239    %2:_(s8) = G_TRUNC %5(s32)40    %6:_(s8) = G_FSHL %0, %1, %2(s8)41    %7:_(s32) = G_ANYEXT %6(s8)42    $w0 = COPY %7(s32)43    RET_ReallyLR implicit $w044 45...46 47---48name:            fshl_i1649alignment:       450tracksRegLiveness: true51body:             |52  bb.0:53    liveins: $w0, $w1, $w254 55    ; CHECK-LABEL: name: fshl_i1656    ; CHECK: liveins: $w0, $w1, $w257    ; CHECK-NEXT: {{  $}}58    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w059    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w160    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w261    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1562    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]63    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -164    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]65    ; CHECK-NEXT: [[COPY3:%[0-9]+]]:_(s32) = COPY [[C]](s32)66    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[COPY3]]67    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)68    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 6553569    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C2]]70    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 171    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[C3]](s64)72    ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C2]]73    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND3]], [[AND1]](s32)74    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]75    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)76    ; CHECK-NEXT: RET_ReallyLR implicit $w077    %3:_(s32) = COPY $w078    %0:_(s16) = G_TRUNC %3(s32)79    %4:_(s32) = COPY $w180    %1:_(s16) = G_TRUNC %4(s32)81    %5:_(s32) = COPY $w282    %2:_(s16) = G_TRUNC %5(s32)83    %6:_(s16) = G_FSHL %0, %1, %2(s16)84    %7:_(s32) = G_ANYEXT %6(s16)85    $w0 = COPY %7(s32)86    RET_ReallyLR implicit $w087 88...89 90---91name:            fshl_i3292alignment:       493tracksRegLiveness: true94body:             |95  bb.0:96    liveins: $w0, $w1, $w297 98    ; CHECK-LABEL: name: fshl_i3299    ; CHECK: liveins: $w0, $w1, $w2100    ; CHECK-NEXT: {{  $}}101    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0102    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1103    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY $w2104    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31105    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C]]106    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 -1107    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s32) = G_XOR [[COPY2]], [[C1]]108    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[XOR]], [[C]]109    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[AND]](s32)110    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1111    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s64)112    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[AND1]](s32)113    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]114    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)115    ; CHECK-NEXT: RET_ReallyLR implicit $w0116    %0:_(s32) = COPY $w0117    %1:_(s32) = COPY $w1118    %2:_(s32) = COPY $w2119    %3:_(s32) = G_FSHL %0, %1, %2(s32)120    $w0 = COPY %3(s32)121    RET_ReallyLR implicit $w0122 123...124 125---126name:            fshl_i64127alignment:       4128tracksRegLiveness: true129body:             |130  bb.0:131    liveins: $x0, $x1, $x2132 133    ; CHECK-LABEL: name: fshl_i64134    ; CHECK: liveins: $x0, $x1, $x2135    ; CHECK-NEXT: {{  $}}136    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0137    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1138    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s64) = COPY $x2139    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63140    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY2]], [[C]]141    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1142    ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s64) = G_XOR [[COPY2]], [[C1]]143    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[XOR]], [[C]]144    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1145    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[AND]](s64)146    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s64)147    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[AND1]](s64)148    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]149    ; CHECK-NEXT: $x0 = COPY [[OR]](s64)150    ; CHECK-NEXT: RET_ReallyLR implicit $x0151    %0:_(s64) = COPY $x0152    %1:_(s64) = COPY $x1153    %2:_(s64) = COPY $x2154    %3:_(s64) = G_FSHL %0, %1, %2(s64)155    $x0 = COPY %3(s64)156    RET_ReallyLR implicit $x0157 158...159 160---161name:            fshl_i8_const_shift162alignment:       4163tracksRegLiveness: true164body:             |165  bb.0:166    liveins: $w0, $w1167 168    ; CHECK-LABEL: name: fshl_i8_const_shift169    ; CHECK: liveins: $w0, $w1170    ; CHECK-NEXT: {{  $}}171    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0172    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1173    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4174    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)175    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255176    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]177    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C]](s64)178    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]179    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)180    ; CHECK-NEXT: RET_ReallyLR implicit $w0181    %2:_(s32) = COPY $w0182    %0:_(s8) = G_TRUNC %2(s32)183    %3:_(s32) = COPY $w1184    %1:_(s8) = G_TRUNC %3(s32)185    %7:_(s8) = G_CONSTANT i8 4186    %5:_(s8) = G_FSHL %0, %1, %7(s8)187    %6:_(s32) = G_ANYEXT %5(s8)188    $w0 = COPY %6(s32)189    RET_ReallyLR implicit $w0190 191...192 193---194name:            fshl_i8_const_overshift195alignment:       4196tracksRegLiveness: true197body:             |198  bb.0:199    liveins: $w0, $w1200 201    ; CHECK-LABEL: name: fshl_i8_const_overshift202    ; CHECK: liveins: $w0, $w1203    ; CHECK-NEXT: {{  $}}204    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0205    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1206    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2207    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)208    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255209    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]210    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 6211    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)212    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]213    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)214    ; CHECK-NEXT: RET_ReallyLR implicit $w0215    %2:_(s32) = COPY $w0216    %0:_(s8) = G_TRUNC %2(s32)217    %3:_(s32) = COPY $w1218    %1:_(s8) = G_TRUNC %3(s32)219    %7:_(s8) = G_CONSTANT i8 10220    %5:_(s8) = G_FSHL %0, %1, %7(s8)221    %6:_(s32) = G_ANYEXT %5(s8)222    $w0 = COPY %6(s32)223    RET_ReallyLR implicit $w0224 225...226 227---228name:            fshl_i8_shift_by_bitwidth229alignment:       4230tracksRegLiveness: true231body:             |232  bb.0:233    liveins: $w0, $w1234 235    ; CHECK-LABEL: name: fshl_i8_shift_by_bitwidth236    ; CHECK: liveins: $w0, $w1237    ; CHECK-NEXT: {{  $}}238    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0239    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1240    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0241    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)242    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 255243    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]244    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1245    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)246    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C1]]247    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 7248    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[C3]](s64)249    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]250    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)251    ; CHECK-NEXT: RET_ReallyLR implicit $w0252    %2:_(s32) = COPY $w0253    %0:_(s8) = G_TRUNC %2(s32)254    %3:_(s32) = COPY $w1255    %1:_(s8) = G_TRUNC %3(s32)256    %7:_(s8) = G_CONSTANT i8 8257    %5:_(s8) = G_FSHL %0, %1, %7(s8)258    %6:_(s32) = G_ANYEXT %5(s8)259    $w0 = COPY %6(s32)260    RET_ReallyLR implicit $w0261 262...263 264---265name:            fshl_i16_const_shift266alignment:       4267tracksRegLiveness: true268body:             |269  bb.0:270    liveins: $w0, $w1271 272    ; CHECK-LABEL: name: fshl_i16_const_shift273    ; CHECK: liveins: $w0, $w1274    ; CHECK-NEXT: {{  $}}275    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0276    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1277    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 12278    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)279    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535280    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]281    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 4282    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)283    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]284    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)285    ; CHECK-NEXT: RET_ReallyLR implicit $w0286    %2:_(s32) = COPY $w0287    %0:_(s16) = G_TRUNC %2(s32)288    %3:_(s32) = COPY $w1289    %1:_(s16) = G_TRUNC %3(s32)290    %4:_(s16) = G_CONSTANT i16 12291    %5:_(s16) = G_FSHL %0, %1, %4(s16)292    %6:_(s32) = G_ANYEXT %5(s16)293    $w0 = COPY %6(s32)294    RET_ReallyLR implicit $w0295 296...297 298---299name:            fshl_i16_const_overshift300alignment:       4301tracksRegLiveness: true302body:             |303  bb.0:304    liveins: $w0, $w1305 306    ; CHECK-LABEL: name: fshl_i16_const_overshift307    ; CHECK: liveins: $w0, $w1308    ; CHECK-NEXT: {{  $}}309    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0310    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1311    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4312    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)313    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535314    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]315    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 12316    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)317    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR]]318    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)319    ; CHECK-NEXT: RET_ReallyLR implicit $w0320    %2:_(s32) = COPY $w0321    %0:_(s16) = G_TRUNC %2(s32)322    %3:_(s32) = COPY $w1323    %1:_(s16) = G_TRUNC %3(s32)324    %4:_(s16) = G_CONSTANT i16 20325    %5:_(s16) = G_FSHL %0, %1, %4(s16)326    %6:_(s32) = G_ANYEXT %5(s16)327    $w0 = COPY %6(s32)328    RET_ReallyLR implicit $w0329 330...331 332---333name:            fshl_i16_shift_by_bitwidth334alignment:       4335tracksRegLiveness: true336body:             |337  bb.0:338    liveins: $w0, $w1339 340    ; CHECK-LABEL: name: fshl_i16_shift_by_bitwidth341    ; CHECK: liveins: $w0, $w1342    ; CHECK-NEXT: {{  $}}343    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0344    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1345    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0346    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)347    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535348    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C1]]349    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1350    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND]], [[C2]](s64)351    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[LSHR]], [[C1]]352    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 15353    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[AND1]], [[C3]](s64)354    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]355    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)356    ; CHECK-NEXT: RET_ReallyLR implicit $w0357    %2:_(s32) = COPY $w0358    %0:_(s16) = G_TRUNC %2(s32)359    %3:_(s32) = COPY $w1360    %1:_(s16) = G_TRUNC %3(s32)361    %4:_(s16) = G_CONSTANT i16 16362    %5:_(s16) = G_FSHL %0, %1, %4(s16)363    %6:_(s32) = G_ANYEXT %5(s16)364    $w0 = COPY %6(s32)365    RET_ReallyLR implicit $w0366 367...368 369---370name:            fshl_i32_const_shift371alignment:       4372tracksRegLiveness: true373body:             |374  bb.0:375    liveins: $w0, $w1376 377    ; CHECK-LABEL: name: fshl_i32_const_shift378    ; CHECK: liveins: $w0, $w1379    ; CHECK-NEXT: {{  $}}380    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0381    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1382    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 23383    ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)384    ; CHECK-NEXT: $w0 = COPY [[FSHR]](s32)385    ; CHECK-NEXT: RET_ReallyLR implicit $w0386    %0:_(s32) = COPY $w0387    %1:_(s32) = COPY $w1388    %2:_(s32) = G_CONSTANT i32 9389    %3:_(s32) = G_FSHL %0, %1, %2(s32)390    $w0 = COPY %3(s32)391    RET_ReallyLR implicit $w0392 393...394 395---396name:            fshl_i32_const_overshift397alignment:       4398tracksRegLiveness: true399body:             |400  bb.0:401    liveins: $w0, $w1402 403    ; CHECK-LABEL: name: fshl_i32_const_overshift404    ; CHECK: liveins: $w0, $w1405    ; CHECK-NEXT: {{  $}}406    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0407    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1408    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 22409    ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s32) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)410    ; CHECK-NEXT: $w0 = COPY [[FSHR]](s32)411    ; CHECK-NEXT: RET_ReallyLR implicit $w0412    %0:_(s32) = COPY $w0413    %1:_(s32) = COPY $w1414    %4:_(s32) = G_CONSTANT i32 42415    %3:_(s32) = G_FSHL %0, %1, %4(s32)416    $w0 = COPY %3(s32)417    RET_ReallyLR implicit $w0418 419...420 421---422name:            fshl_i32_shift_by_bandwidth423alignment:       4424tracksRegLiveness: true425body:             |426  bb.0:427    liveins: $w0, $w1428 429    ; CHECK-LABEL: name: fshl_i32_shift_by_bandwidth430    ; CHECK: liveins: $w0, $w1431    ; CHECK-NEXT: {{  $}}432    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0433    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w1434    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0435    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)436    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 1437    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C1]](s64)438    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 31439    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s32) = G_LSHR [[LSHR]], [[C2]](s64)440    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s32) = disjoint G_OR [[SHL]], [[LSHR1]]441    ; CHECK-NEXT: $w0 = COPY [[OR]](s32)442    ; CHECK-NEXT: RET_ReallyLR implicit $w0443    %0:_(s32) = COPY $w0444    %1:_(s32) = COPY $w1445    %4:_(s32) = G_CONSTANT i32 32446    %3:_(s32) = G_FSHL %0, %1, %4(s32)447    $w0 = COPY %3(s32)448    RET_ReallyLR implicit $w0449 450...451 452---453name:            fshl_i64_const_shift454alignment:       4455tracksRegLiveness: true456body:             |457  bb.0:458    liveins: $x0, $x1459 460    ; CHECK-LABEL: name: fshl_i64_const_shift461    ; CHECK: liveins: $x0, $x1462    ; CHECK-NEXT: {{  $}}463    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0464    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1465    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 23466    ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)467    ; CHECK-NEXT: $x0 = COPY [[FSHR]](s64)468    ; CHECK-NEXT: RET_ReallyLR implicit $x0469    %0:_(s64) = COPY $x0470    %1:_(s64) = COPY $x1471    %4:_(s64) = G_CONSTANT i64 41472    %3:_(s64) = G_FSHL %0, %1, %4(s64)473    $x0 = COPY %3(s64)474    RET_ReallyLR implicit $x0475 476...477 478---479name:            fshl_i64_const_overshift480alignment:       4481tracksRegLiveness: true482body:             |483  bb.0:484    liveins: $x0, $x1485 486    ; CHECK-LABEL: name: fshl_i64_const_overshift487    ; CHECK: liveins: $x0, $x1488    ; CHECK-NEXT: {{  $}}489    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0490    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1491    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 56492    ; CHECK-NEXT: [[FSHR:%[0-9]+]]:_(s64) = G_FSHR [[COPY]], [[COPY1]], [[C]](s64)493    ; CHECK-NEXT: $x0 = COPY [[FSHR]](s64)494    ; CHECK-NEXT: RET_ReallyLR implicit $x0495    %0:_(s64) = COPY $x0496    %1:_(s64) = COPY $x1497    %4:_(s64) = G_CONSTANT i64 72498    %3:_(s64) = G_FSHL %0, %1, %4(s64)499    $x0 = COPY %3(s64)500    RET_ReallyLR implicit $x0501 502...503 504---505name:            fshl_i64_shift_by_bandwidth506alignment:       4507tracksRegLiveness: true508body:             |509  bb.0:510    liveins: $x0, $x1511 512    ; CHECK-LABEL: name: fshl_i64_shift_by_bandwidth513    ; CHECK: liveins: $x0, $x1514    ; CHECK-NEXT: {{  $}}515    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0516    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1517    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 63518    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0519    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 1520    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[C1]](s64)521    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s64)522    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[LSHR]], [[C]](s64)523    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = disjoint G_OR [[SHL]], [[LSHR1]]524    ; CHECK-NEXT: $x0 = COPY [[OR]](s64)525    ; CHECK-NEXT: RET_ReallyLR implicit $x0526    %0:_(s64) = COPY $x0527    %1:_(s64) = COPY $x1528    %4:_(s64) = G_CONSTANT i64 64529    %3:_(s64) = G_FSHL %0, %1, %4(s64)530    $x0 = COPY %3(s64)531    RET_ReallyLR implicit $x0532 533...534 535 536 537---538name:            fshl_v4i32_shift_by_bitwidth539alignment:       4540tracksRegLiveness: true541body:             |542  bb.0:543    liveins: $q0, $q1544 545    ; CHECK-LABEL: name: fshl_v4i32_shift_by_bitwidth546    ; CHECK: liveins: $q0, $q1547    ; CHECK-NEXT: {{  $}}548    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0549    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1550    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 31551    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0552    ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32), [[C1]](s32), [[C1]](s32)553    ; CHECK-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32), [[C]](s32), [[C]](s32)554    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 1555    ; CHECK-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[C2]](s32), [[C2]](s32), [[C2]](s32), [[C2]](s32)556    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<4 x s32>) = G_SHL [[COPY]], [[BUILD_VECTOR]](<4 x s32>)557    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<4 x s32>) = G_LSHR [[COPY1]], [[BUILD_VECTOR2]](<4 x s32>)558    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(<4 x s32>) = G_LSHR [[LSHR]], [[BUILD_VECTOR1]](<4 x s32>)559    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<4 x s32>) = disjoint G_OR [[SHL]], [[LSHR1]]560    ; CHECK-NEXT: $q0 = COPY [[OR]](<4 x s32>)561    ; CHECK-NEXT: RET_ReallyLR implicit $q0562    %0:_(<4 x s32>) = COPY $q0563    %1:_(<4 x s32>) = COPY $q1564    %3:_(s32) = G_CONSTANT i32 32565    %2:_(<4 x s32>) = G_BUILD_VECTOR %3(s32), %3(s32), %3(s32), %3(s32)566    %4:_(<4 x s32>) = G_FSHL %0, %1, %2(<4 x s32>)567    $q0 = COPY %4(<4 x s32>)568    RET_ReallyLR implicit $q0569 570...571