brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.0 KiB · f1d345f Raw
555 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -O0 -debugify-and-strip-all-safe -mtriple=aarch64 -run-pass=legalizer -global-isel-abort=1 %s -o - | FileCheck %s3---4name:            test_shift5body:             |6  bb.0.entry:7    ; CHECK-LABEL: name: test_shift8    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x09    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x110    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)11    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 25512    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]13    ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)14    ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[TRUNC1]], 815    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[SEXT_INREG]], [[AND]](s32)16    ; CHECK-NEXT: $w0 = COPY [[ASHR]](s32)17    ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)18    ; CHECK-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC2]], [[C]]19    ; CHECK-NEXT: [[TRUNC3:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)20    ; CHECK-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[TRUNC3]], [[C]]21    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[AND2]], [[AND1]](s32)22    ; CHECK-NEXT: $w0 = COPY [[LSHR]](s32)23    ; CHECK-NEXT: [[TRUNC4:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s64)24    ; CHECK-NEXT: [[AND3:%[0-9]+]]:_(s32) = G_AND [[TRUNC4]], [[C]]25    ; CHECK-NEXT: [[TRUNC5:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)26    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[TRUNC5]], [[AND3]](s32)27    ; CHECK-NEXT: $w0 = COPY [[SHL]](s32)28    %0:_(s64) = COPY $x029    %1:_(s64) = COPY $x130    %2:_(s8) = G_TRUNC %0(s64)31    %3:_(s8) = G_TRUNC %1(s64)32    %4:_(s8) = G_ASHR %2, %333    %7:_(s32) = G_ANYEXT %4(s8)34    $w0 = COPY %7(s32)35    %5:_(s8) = G_LSHR %2, %336    %8:_(s32) = G_ANYEXT %5(s8)37    $w0 = COPY %8(s32)38    %6:_(s8) = G_SHL %2, %339    %9:_(s32) = G_ANYEXT %6(s8)40    $w0 = COPY %9(s32)41 42...43---44name: test_shl_i64_i3245body:             |46  bb.0:47    ; CHECK-LABEL: name: test_shl_i64_i3248    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x049    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w150    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)51    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[COPY]], [[ZEXT]](s64)52    ; CHECK-NEXT: $x0 = COPY [[SHL]](s64)53    %0:_(s64) = COPY $x054    %1:_(s32) = COPY $w155    %2:_(s64) = G_SHL %0, %156    $x0 = COPY %2(s64)57 58...59---60name: test_ashr_i64_i3261body:             |62  bb.0:63    ; CHECK-LABEL: name: test_ashr_i64_i3264    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x065    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w166    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)67    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[COPY]], [[ZEXT]](s64)68    ; CHECK-NEXT: $x0 = COPY [[ASHR]](s64)69    %0:_(s64) = COPY $x070    %1:_(s32) = COPY $w171    %2:_(s64) = G_ASHR %0, %172    $x0 = COPY %2(s64)73 74...75---76name: test_lshr_i64_i3277body:             |78  bb.0:79    ; CHECK-LABEL: name: test_lshr_i64_i3280    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x081    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $w182    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)83    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY]], [[ZEXT]](s64)84    ; CHECK-NEXT: $x0 = COPY [[LSHR]](s64)85    %0:_(s64) = COPY $x086    %1:_(s32) = COPY $w187    %2:_(s64) = G_LSHR %0, %188    $x0 = COPY %2(s64)89 90...91 92---93name: test_shl_s128_s12894body:             |95  bb.0:96    ; CHECK-LABEL: name: test_shl_s128_s12897    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $q098    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $q199    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)100    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64101    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128)102    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[TRUNC]], [[C]]103    ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C]], [[TRUNC]]104    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0105    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[TRUNC]](s64), [[C]]106    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[TRUNC]](s64), [[C1]]107    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[TRUNC]](s64)108    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[SUB1]](s64)109    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[TRUNC]](s64)110    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL1]]111    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[UV]], [[SUB]](s64)112    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[SHL]], [[C1]]113    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[OR]], [[SHL2]]114    ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s32), [[UV1]], [[SELECT1]]115    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT]](s64), [[SELECT2]](s64)116    ; CHECK-NEXT: $q0 = COPY [[MV]](s128)117    %0:_(s128) = COPY $q0118    %1:_(s128) = COPY $q1119    %2:_(s128) = G_SHL %0, %1120    $q0 = COPY %2121 122...123 124---125name: test_lshr_s128_s128126body:             |127  bb.0:128    ; CHECK-LABEL: name: test_lshr_s128_s128129    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $q0130    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $q1131    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)132    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64133    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128)134    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[TRUNC]], [[C]]135    ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C]], [[TRUNC]]136    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0137    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[TRUNC]](s64), [[C]]138    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[TRUNC]](s64), [[C1]]139    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[TRUNC]](s64)140    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[TRUNC]](s64)141    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[SUB1]](s64)142    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR1]], [[SHL]]143    ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[SUB]](s64)144    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[OR]], [[LSHR2]]145    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s32), [[UV]], [[SELECT]]146    ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[LSHR]], [[C1]]147    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT1]](s64), [[SELECT2]](s64)148    ; CHECK-NEXT: $q0 = COPY [[MV]](s128)149    %0:_(s128) = COPY $q0150    %1:_(s128) = COPY $q1151    %2:_(s128) = G_LSHR %0, %1152    $q0 = COPY %2153 154...155 156---157name: test_ashr_s128_s128158body:             |159  bb.0:160    ; CHECK-LABEL: name: test_ashr_s128_s128161    ; CHECK: [[COPY:%[0-9]+]]:_(s128) = COPY $q0162    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $q1163    ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128)164    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 64165    ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](s128)166    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[TRUNC]], [[C]]167    ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C]], [[TRUNC]]168    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0169    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[TRUNC]](s64), [[C]]170    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[TRUNC]](s64), [[C1]]171    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[UV1]], [[TRUNC]](s64)172    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[TRUNC]](s64)173    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[UV1]], [[SUB1]](s64)174    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL]]175    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 63176    ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(s64) = G_ASHR [[UV1]], [[C2]](s64)177    ; CHECK-NEXT: [[ASHR2:%[0-9]+]]:_(s64) = G_ASHR [[UV1]], [[SUB]](s64)178    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[OR]], [[ASHR2]]179    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s32), [[UV]], [[SELECT]]180    ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[ASHR]], [[ASHR1]]181    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[SELECT1]](s64), [[SELECT2]](s64)182    ; CHECK-NEXT: $q0 = COPY [[MV]](s128)183    %0:_(s128) = COPY $q0184    %1:_(s128) = COPY $q1185    %2:_(s128) = G_ASHR %0, %1186    $q0 = COPY %2187 188...189 190---191name: test_ashr_v2i32192body:             |193  bb.0:194    ; CHECK-LABEL: name: test_ashr_v2i32195    ; CHECK: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0196    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $d1197    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<2 x s32>) = G_ASHR [[COPY]], [[COPY1]](<2 x s32>)198    ; CHECK-NEXT: $d0 = COPY [[ASHR]](<2 x s32>)199    %0:_(<2 x s32>) = COPY $d0200    %1:_(<2 x s32>) = COPY $d1201    %2:_(<2 x s32>) = G_ASHR %0, %1202    $d0 = COPY %2203 204...205---206name: test_ashr_v4i32207body:             |208  bb.0:209    ; CHECK-LABEL: name: test_ashr_v4i32210    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0211    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s32>) = COPY $q1212    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<4 x s32>) = G_ASHR [[COPY]], [[COPY1]](<4 x s32>)213    ; CHECK-NEXT: $q0 = COPY [[ASHR]](<4 x s32>)214    %0:_(<4 x s32>) = COPY $q0215    %1:_(<4 x s32>) = COPY $q1216    %2:_(<4 x s32>) = G_ASHR %0, %1217    $q0 = COPY %2218 219...220---221name:            shl_cimm_32222body:             |223  bb.1:224    liveins: $w0225 226    ; CHECK-LABEL: name: shl_cimm_32227    ; CHECK: liveins: $w0228    ; CHECK-NEXT: {{  $}}229    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0230    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8231    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[COPY]], [[C]](s64)232    ; CHECK-NEXT: $w0 = COPY [[SHL]](s32)233    ; CHECK-NEXT: RET_ReallyLR implicit $w0234    %0:_(s32) = COPY $w0235    %1:_(s32) = G_CONSTANT i32 8236    %2:_(s32) = G_SHL %0, %1(s32)237    $w0 = COPY %2(s32)238    RET_ReallyLR implicit $w0239 240...241---242name:            lshr_cimm_32243body:             |244  bb.1:245    liveins: $w0246 247    ; CHECK-LABEL: name: lshr_cimm_32248    ; CHECK: liveins: $w0249    ; CHECK-NEXT: {{  $}}250    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0251    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8252    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY]], [[C]](s64)253    ; CHECK-NEXT: $w0 = COPY [[LSHR]](s32)254    ; CHECK-NEXT: RET_ReallyLR implicit $w0255    %0:_(s32) = COPY $w0256    %1:_(s32) = G_CONSTANT i32 8257    %2:_(s32) = G_LSHR %0, %1(s32)258    $w0 = COPY %2(s32)259    RET_ReallyLR implicit $w0260 261...262---263name:            ashr_cimm_32264body:             |265  bb.1:266    liveins: $w0267 268    ; CHECK-LABEL: name: ashr_cimm_32269    ; CHECK: liveins: $w0270    ; CHECK-NEXT: {{  $}}271    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $w0272    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8273    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s32) = G_ASHR [[COPY]], [[C]](s64)274    ; CHECK-NEXT: $w0 = COPY [[ASHR]](s32)275    ; CHECK-NEXT: RET_ReallyLR implicit $w0276    %0:_(s32) = COPY $w0277    %1:_(s32) = G_CONSTANT i32 8278    %2:_(s32) = G_ASHR %0, %1(s32)279    $w0 = COPY %2(s32)280    RET_ReallyLR implicit $w0281 282...283---284name: test_ashr_v16i8285body:             |286  bb.0:287    ; CHECK-LABEL: name: test_ashr_v16i8288    ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0289    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1290    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<16 x s8>) = G_ASHR [[COPY]], [[COPY1]](<16 x s8>)291    ; CHECK-NEXT: $q0 = COPY [[ASHR]](<16 x s8>)292    %0:_(<16 x s8>) = COPY $q0293    %1:_(<16 x s8>) = COPY $q1294    %2:_(<16 x s8>) = G_ASHR %0, %1295    $q0 = COPY %2296...297---298name: test_ashr_v8i16299body:             |300  bb.0:301    ; CHECK-LABEL: name: test_ashr_v8i16302    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0303    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1304    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<8 x s16>) = G_ASHR [[COPY]], [[COPY1]](<8 x s16>)305    ; CHECK-NEXT: $q0 = COPY [[ASHR]](<8 x s16>)306    %0:_(<8 x s16>) = COPY $q0307    %1:_(<8 x s16>) = COPY $q1308    %2:_(<8 x s16>) = G_ASHR %0, %1309    $q0 = COPY %2310...311---312name: test_shl_v16i8313body:             |314  bb.0:315    ; CHECK-LABEL: name: test_shl_v16i8316    ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0317    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1318    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<16 x s8>) = G_SHL [[COPY]], [[COPY1]](<16 x s8>)319    ; CHECK-NEXT: $q0 = COPY [[SHL]](<16 x s8>)320    %0:_(<16 x s8>) = COPY $q0321    %1:_(<16 x s8>) = COPY $q1322    %2:_(<16 x s8>) = G_SHL %0, %1323    $q0 = COPY %2324...325---326name: test_shl_v8i16327body:             |328  bb.0:329    ; CHECK-LABEL: name: test_shl_v8i16330    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0331    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1332    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<8 x s16>) = G_SHL [[COPY]], [[COPY1]](<8 x s16>)333    ; CHECK-NEXT: $q0 = COPY [[SHL]](<8 x s16>)334    %0:_(<8 x s16>) = COPY $q0335    %1:_(<8 x s16>) = COPY $q1336    %2:_(<8 x s16>) = G_SHL %0, %1337    $q0 = COPY %2338...339---340name: test_lshr_v16i8341body:             |342  bb.0:343    ; CHECK-LABEL: name: test_lshr_v16i8344    ; CHECK: [[COPY:%[0-9]+]]:_(<16 x s8>) = COPY $q0345    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<16 x s8>) = COPY $q1346    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<16 x s8>) = G_LSHR [[COPY]], [[COPY1]](<16 x s8>)347    ; CHECK-NEXT: $q0 = COPY [[LSHR]](<16 x s8>)348    %0:_(<16 x s8>) = COPY $q0349    %1:_(<16 x s8>) = COPY $q1350    %2:_(<16 x s8>) = G_LSHR %0, %1351    $q0 = COPY %2352...353---354name: test_lshr_v8i16355body:             |356  bb.0:357    ; CHECK-LABEL: name: test_lshr_v8i16358    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0359    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s16>) = COPY $q1360    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<8 x s16>) = G_LSHR [[COPY]], [[COPY1]](<8 x s16>)361    ; CHECK-NEXT: $q0 = COPY [[LSHR]](<8 x s16>)362    %0:_(<8 x s16>) = COPY $q0363    %1:_(<8 x s16>) = COPY $q1364    %2:_(<8 x s16>) = G_LSHR %0, %1365    $q0 = COPY %2366...367---368name: test_shl_v4i16369body:             |370  bb.0:371    ; CHECK-LABEL: name: test_shl_v4i16372    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0373    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d1374    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<4 x s16>) = G_SHL [[COPY]], [[COPY1]](<4 x s16>)375    ; CHECK-NEXT: $d0 = COPY [[SHL]](<4 x s16>)376    %0:_(<4 x s16>) = COPY $d0377    %1:_(<4 x s16>) = COPY $d1378    %2:_(<4 x s16>) = G_SHL %0, %1379    $d0 = COPY %2380...381---382name: test_lshr_v4i16383body:             |384  bb.0:385    ; CHECK-LABEL: name: test_lshr_v4i16386    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0387    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d1388    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<4 x s16>) = G_LSHR [[COPY]], [[COPY1]](<4 x s16>)389    ; CHECK-NEXT: $d0 = COPY [[LSHR]](<4 x s16>)390    %0:_(<4 x s16>) = COPY $d0391    %1:_(<4 x s16>) = COPY $d1392    %2:_(<4 x s16>) = G_LSHR %0, %1393    $d0 = COPY %2394...395---396name: test_ashr_v4i16397body:             |398  bb.0:399    ; CHECK-LABEL: name: test_ashr_v4i16400    ; CHECK: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0401    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<4 x s16>) = COPY $d1402    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<4 x s16>) = G_ASHR [[COPY]], [[COPY1]](<4 x s16>)403    ; CHECK-NEXT: $d0 = COPY [[ASHR]](<4 x s16>)404    %0:_(<4 x s16>) = COPY $d0405    %1:_(<4 x s16>) = COPY $d1406    %2:_(<4 x s16>) = G_ASHR %0, %1407    $d0 = COPY %2408...409---410name: test_ashr_v8s32411body:             |412  bb.0:413    ; CHECK-LABEL: name: test_ashr_v8s32414    ; CHECK: [[DEF:%[0-9]+]]:_(<4 x s32>) = G_IMPLICIT_DEF415    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<4 x s32>) = G_ASHR [[DEF]], [[DEF]](<4 x s32>)416    ; CHECK-NEXT: [[ASHR1:%[0-9]+]]:_(<4 x s32>) = G_ASHR [[DEF]], [[DEF]](<4 x s32>)417    ; CHECK-NEXT: $q0 = COPY [[ASHR]](<4 x s32>)418    ; CHECK-NEXT: $q1 = COPY [[ASHR1]](<4 x s32>)419    %0:_(<8 x s32>) = G_IMPLICIT_DEF420    %1:_(<8 x s32>) = G_IMPLICIT_DEF421    %2:_(<8 x s32>) = G_ASHR %0, %1422    %3:_(<4 x s32>), %4:_(<4 x s32>) = G_UNMERGE_VALUES %2423    $q0 = COPY %3(<4 x s32>)424    $q1 = COPY %4(<4 x s32>)425...426---427name: test_shl_v8s8428body:             |429  bb.0:430    ; CHECK-LABEL: name: test_shl_v8s8431    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0432    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1433    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(<8 x s8>) = G_SHL [[COPY]], [[COPY1]](<8 x s8>)434    ; CHECK-NEXT: $d0 = COPY [[SHL]](<8 x s8>)435    %0:_(<8 x s8>) = COPY $d0436    %1:_(<8 x s8>) = COPY $d1437    %2:_(<8 x s8>) = G_SHL %0, %1438    $d0 = COPY %2439...440---441name: test_ashr_v8s8442body:             |443  bb.0:444    ; CHECK-LABEL: name: test_ashr_v8s8445    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0446    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1447    ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(<8 x s8>) = G_ASHR [[COPY]], [[COPY1]](<8 x s8>)448    ; CHECK-NEXT: $d0 = COPY [[ASHR]](<8 x s8>)449    %0:_(<8 x s8>) = COPY $d0450    %1:_(<8 x s8>) = COPY $d1451    %2:_(<8 x s8>) = G_ASHR %0, %1452    $d0 = COPY %2453...454 455---456name: test_lshr_v8s8457body:             |458  bb.0:459    ; CHECK-LABEL: name: test_lshr_v8s8460    ; CHECK: [[COPY:%[0-9]+]]:_(<8 x s8>) = COPY $d0461    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(<8 x s8>) = COPY $d1462    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(<8 x s8>) = G_LSHR [[COPY]], [[COPY1]](<8 x s8>)463    ; CHECK-NEXT: $d0 = COPY [[LSHR]](<8 x s8>)464    %0:_(<8 x s8>) = COPY $d0465    %1:_(<8 x s8>) = COPY $d1466    %2:_(<8 x s8>) = G_LSHR %0, %1467    $d0 = COPY %2468...469---470name: test_lshr_nonpow2471body:             |472  bb.0:473    ; CHECK-LABEL: name: test_lshr_nonpow2474    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0475    ; CHECK-NEXT: %a:_(s32) = COPY $w1476    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0477    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %a(s32), %a(s32)478    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES %a(s32), [[C]](s32)479    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 64480    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[C1]]481    ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C1]], [[COPY]]482    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 0483    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[C1]]484    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[C2]]485    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[MV]], [[COPY]](s64)486    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[MV1]], [[SUB1]](s64)487    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL]]488    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[MV1]], [[SUB]](s64)489    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[OR]], [[LSHR1]]490    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s32), [[MV]], [[SELECT]]491    ; CHECK-NEXT: %d1:_(s32), %d2:_(s32) = G_UNMERGE_VALUES [[SELECT1]](s64)492    ; CHECK-NEXT: $w0 = COPY %d2(s32)493    %0:_(s64) = COPY $x0494    %a:_(s32) = COPY $w1495    %merge:_(s96) = G_MERGE_VALUES %a, %a, %a496    %lshr:_(s96) = G_LSHR %merge, %0497    %d1:_(s32), %d2:_(s32), %d3:_(s32) = G_UNMERGE_VALUES %lshr498    $w0 = COPY %d2(s32)499 500...501---502name: test_lshr_nonpow2_wide503body:             |504  bb.0:505    ; CHECK-LABEL: name: test_lshr_nonpow2_wide506    ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0507    ; CHECK-NEXT: %a:_(s32) = COPY $w1508    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0509    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %a(s32), %a(s32)510    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES %a(s32), %a(s32)511    ; CHECK-NEXT: [[MV2:%[0-9]+]]:_(s64) = G_MERGE_VALUES %a(s32), [[C]](s32)512    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0513    ; CHECK-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 128514    ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[C2]]515    ; CHECK-NEXT: [[SUB1:%[0-9]+]]:_(s64) = G_SUB [[C2]], [[COPY]]516    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[C2]]517    ; CHECK-NEXT: [[ICMP1:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[C1]]518    ; CHECK-NEXT: [[C3:%[0-9]+]]:_(s64) = G_CONSTANT i64 64519    ; CHECK-NEXT: [[SUB2:%[0-9]+]]:_(s64) = G_SUB [[COPY]], [[C3]]520    ; CHECK-NEXT: [[SUB3:%[0-9]+]]:_(s64) = G_SUB [[C3]], [[COPY]]521    ; CHECK-NEXT: [[ICMP2:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[COPY]](s64), [[C3]]522    ; CHECK-NEXT: [[ICMP3:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[COPY]](s64), [[C1]]523    ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[MV]], [[COPY]](s64)524    ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[MV1]], [[SUB3]](s64)525    ; CHECK-NEXT: [[OR:%[0-9]+]]:_(s64) = G_OR [[LSHR]], [[SHL]]526    ; CHECK-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[MV1]], [[SUB2]](s64)527    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(s64) = G_SELECT [[ICMP2]](s32), [[OR]], [[LSHR1]]528    ; CHECK-NEXT: [[SELECT1:%[0-9]+]]:_(s64) = G_SELECT [[ICMP3]](s32), [[MV]], [[SELECT]]529    ; CHECK-NEXT: [[ICMP4:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[SUB1]](s64), [[C3]]530    ; CHECK-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[MV2]], [[SUB1]](s64)531    ; CHECK-NEXT: [[SELECT2:%[0-9]+]]:_(s64) = G_SELECT [[ICMP4]](s32), [[SHL1]], [[C1]]532    ; CHECK-NEXT: [[OR1:%[0-9]+]]:_(s64) = G_OR [[SELECT1]], [[SELECT2]]533    ; CHECK-NEXT: [[SUB4:%[0-9]+]]:_(s64) = G_SUB [[SUB]], [[C3]]534    ; CHECK-NEXT: [[SUB5:%[0-9]+]]:_(s64) = G_SUB [[C3]], [[SUB]]535    ; CHECK-NEXT: [[ICMP5:%[0-9]+]]:_(s32) = G_ICMP intpred(ult), [[SUB]](s64), [[C3]]536    ; CHECK-NEXT: [[ICMP6:%[0-9]+]]:_(s32) = G_ICMP intpred(eq), [[SUB]](s64), [[C1]]537    ; CHECK-NEXT: [[LSHR2:%[0-9]+]]:_(s64) = G_LSHR [[MV2]], [[SUB]](s64)538    ; CHECK-NEXT: [[SHL2:%[0-9]+]]:_(s64) = G_SHL [[C1]], [[SUB5]](s64)539    ; CHECK-NEXT: [[OR2:%[0-9]+]]:_(s64) = G_OR [[LSHR2]], [[SHL2]]540    ; CHECK-NEXT: [[LSHR3:%[0-9]+]]:_(s64) = G_LSHR [[C1]], [[SUB4]](s64)541    ; CHECK-NEXT: [[SELECT3:%[0-9]+]]:_(s64) = G_SELECT [[ICMP5]](s32), [[OR2]], [[LSHR3]]542    ; CHECK-NEXT: [[SELECT4:%[0-9]+]]:_(s64) = G_SELECT [[ICMP6]](s32), [[MV2]], [[SELECT3]]543    ; CHECK-NEXT: [[SELECT5:%[0-9]+]]:_(s64) = G_SELECT [[ICMP]](s32), [[OR1]], [[SELECT4]]544    ; CHECK-NEXT: [[SELECT6:%[0-9]+]]:_(s64) = G_SELECT [[ICMP1]](s32), [[MV]], [[SELECT5]]545    ; CHECK-NEXT: %d1:_(s32), %d2:_(s32) = G_UNMERGE_VALUES [[SELECT6]](s64)546    ; CHECK-NEXT: $w0 = COPY %d2(s32)547    %0:_(s64) = COPY $x0548    %a:_(s32) = COPY $w1549    %merge:_(s160) = G_MERGE_VALUES %a, %a, %a, %a, %a550    %lshr:_(s160) = G_LSHR %merge, %0551    %d1:_(s32), %d2:_(s32), %d3:_(s32), %d4:_(s32), %d5:_(s32) = G_UNMERGE_VALUES %lshr552    $w0 = COPY %d2(s32)553 554...555