brintos

brintos / llvm-project-archived public Read only

0
0
Text · 20.1 KiB · fe28c3a Raw
505 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64-unknown-unknown -verify-machineinstrs -run-pass=legalizer %s -o - | FileCheck %s3# RUN: llc -mtriple=aarch64-unknown-unknown -verify-machineinstrs -run-pass=legalizer -mattr=+cssc %s -o - | FileCheck %s --check-prefix=CHECK-CSSC4...5---6name:            v8s8_legal7tracksRegLiveness: true8body:             |9  bb.0:10    liveins: $d011    ; CHECK-LABEL: name: v8s8_legal12    ; CHECK: liveins: $d013    ; CHECK-NEXT: {{  $}}14    ; CHECK-NEXT: %copy:_(<8 x s8>) = COPY $d015    ; CHECK-NEXT: %ctpop:_(<8 x s8>) = G_CTPOP %copy(<8 x s8>)16    ; CHECK-NEXT: $d0 = COPY %ctpop(<8 x s8>)17    ; CHECK-NEXT: RET_ReallyLR implicit $d018    ;19    ; CHECK-CSSC-LABEL: name: v8s8_legal20    ; CHECK-CSSC: liveins: $d021    ; CHECK-CSSC-NEXT: {{  $}}22    ; CHECK-CSSC-NEXT: %copy:_(<8 x s8>) = COPY $d023    ; CHECK-CSSC-NEXT: %ctpop:_(<8 x s8>) = G_CTPOP %copy(<8 x s8>)24    ; CHECK-CSSC-NEXT: $d0 = COPY %ctpop(<8 x s8>)25    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $d026    %copy:_(<8 x s8>) = COPY $d027    %ctpop:_(<8 x s8>) = G_CTPOP %copy(<8 x s8>)28    $d0 = COPY %ctpop(<8 x s8>)29    RET_ReallyLR implicit $d030 31...32---33name:            v16s8_legal34tracksRegLiveness: true35body:             |36  bb.0:37    liveins: $q038    ; CHECK-LABEL: name: v16s8_legal39    ; CHECK: liveins: $q040    ; CHECK-NEXT: {{  $}}41    ; CHECK-NEXT: %copy:_(<16 x s8>) = COPY $q042    ; CHECK-NEXT: %ctpop:_(<16 x s8>) = G_CTPOP %copy(<16 x s8>)43    ; CHECK-NEXT: $q0 = COPY %ctpop(<16 x s8>)44    ; CHECK-NEXT: RET_ReallyLR implicit $q045    ;46    ; CHECK-CSSC-LABEL: name: v16s8_legal47    ; CHECK-CSSC: liveins: $q048    ; CHECK-CSSC-NEXT: {{  $}}49    ; CHECK-CSSC-NEXT: %copy:_(<16 x s8>) = COPY $q050    ; CHECK-CSSC-NEXT: %ctpop:_(<16 x s8>) = G_CTPOP %copy(<16 x s8>)51    ; CHECK-CSSC-NEXT: $q0 = COPY %ctpop(<16 x s8>)52    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $q053    %copy:_(<16 x s8>) = COPY $q054    %ctpop:_(<16 x s8>) = G_CTPOP %copy(<16 x s8>)55    $q0 = COPY %ctpop(<16 x s8>)56    RET_ReallyLR implicit $q057 58...59---60name:            s32_lower61tracksRegLiveness: true62body:             |63  bb.0:64    liveins: $w065    ; CHECK-LABEL: name: s32_lower66    ; CHECK: liveins: $w067    ; CHECK-NEXT: {{  $}}68    ; CHECK-NEXT: %copy:_(s32) = COPY $w069    ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT %copy(s32)70    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[ZEXT]](s64)71    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)72    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]73    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 074    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C]](s64)75    ; CHECK-NEXT: %ctpop:_(s32) = COPY [[EVEC]](s32)76    ; CHECK-NEXT: $w0 = COPY %ctpop(s32)77    ; CHECK-NEXT: RET_ReallyLR implicit $w078    ;79    ; CHECK-CSSC-LABEL: name: s32_lower80    ; CHECK-CSSC: liveins: $w081    ; CHECK-CSSC-NEXT: {{  $}}82    ; CHECK-CSSC-NEXT: %copy:_(s32) = COPY $w083    ; CHECK-CSSC-NEXT: %ctpop:_(s32) = G_CTPOP %copy(s32)84    ; CHECK-CSSC-NEXT: $w0 = COPY %ctpop(s32)85    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w086    %copy:_(s32) = COPY $w087    %ctpop:_(s32) = G_CTPOP %copy(s32)88    $w0 = COPY %ctpop(s32)89    RET_ReallyLR implicit $w090 91...92---93name:            s64_lower94tracksRegLiveness: true95body:             |96  bb.0:97    liveins: $x098    ; CHECK-LABEL: name: s64_lower99    ; CHECK: liveins: $x0100    ; CHECK-NEXT: {{  $}}101    ; CHECK-NEXT: %copy:_(s64) = COPY $x0102    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST %copy(s64)103    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)104    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]105    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0106    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C]](s64)107    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)108    ; CHECK-NEXT: %ctpop:_(s64) = G_ZEXT [[COPY]](s32)109    ; CHECK-NEXT: $x0 = COPY %ctpop(s64)110    ; CHECK-NEXT: RET_ReallyLR implicit $x0111    ;112    ; CHECK-CSSC-LABEL: name: s64_lower113    ; CHECK-CSSC: liveins: $x0114    ; CHECK-CSSC-NEXT: {{  $}}115    ; CHECK-CSSC-NEXT: %copy:_(s64) = COPY $x0116    ; CHECK-CSSC-NEXT: %ctpop:_(s64) = G_CTPOP %copy(s64)117    ; CHECK-CSSC-NEXT: $x0 = COPY %ctpop(s64)118    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $x0119    %copy:_(s64) = COPY $x0120    %ctpop:_(s64) = G_CTPOP %copy(s64)121    $x0 = COPY %ctpop(s64)122    RET_ReallyLR implicit $x0123 124...125---126name:            s128_lower127tracksRegLiveness: true128body:             |129  bb.0:130    liveins: $x0, $x1131 132    ; CHECK-LABEL: name: s128_lower133    ; CHECK: liveins: $x0, $x1134    ; CHECK-NEXT: {{  $}}135    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0136    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1137    ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s128) = G_MERGE_VALUES [[COPY]](s64), [[COPY1]](s64)138    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[MV]](s128)139    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)140    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]141    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0142    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C]](s64)143    ; CHECK-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)144    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 0145    ; CHECK-NEXT: [[MV1:%[0-9]+]]:_(s64) = G_MERGE_VALUES [[COPY2]](s32), [[C1]](s32)146    ; CHECK-NEXT: $x0 = COPY [[MV1]](s64)147    ; CHECK-NEXT: $x1 = COPY [[C]](s64)148    ; CHECK-NEXT: RET_ReallyLR implicit $x0, implicit $x1149    ;150    ; CHECK-CSSC-LABEL: name: s128_lower151    ; CHECK-CSSC: liveins: $x0, $x1152    ; CHECK-CSSC-NEXT: {{  $}}153    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0154    ; CHECK-CSSC-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1155    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(s64) = G_CTPOP [[COPY]](s64)156    ; CHECK-CSSC-NEXT: [[CTPOP1:%[0-9]+]]:_(s64) = G_CTPOP [[COPY1]](s64)157    ; CHECK-CSSC-NEXT: [[ADD:%[0-9]+]]:_(s64) = G_ADD [[CTPOP]], [[CTPOP1]]158    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 0159    ; CHECK-CSSC-NEXT: $x0 = COPY [[ADD]](s64)160    ; CHECK-CSSC-NEXT: $x1 = COPY [[C]](s64)161    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $x0, implicit $x1162    %1:_(s64) = COPY $x0163    %2:_(s64) = COPY $x1164    %0:_(s128) = G_MERGE_VALUES %1(s64), %2(s64)165    %3:_(s128) = G_CTPOP %0(s128)166    %4:_(s64), %5:_(s64) = G_UNMERGE_VALUES %3(s128)167    $x0 = COPY %4(s64)168    $x1 = COPY %5(s64)169    RET_ReallyLR implicit $x0, implicit $x1170 171...172---173name:            widen_s16174tracksRegLiveness: true175body:             |176  bb.0:177    liveins: $w0178 179    ; CHECK-LABEL: name: widen_s16180    ; CHECK: liveins: $w0181    ; CHECK-NEXT: {{  $}}182    ; CHECK-NEXT: %copy:_(s32) = COPY $w0183    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT %copy(s32)184    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535185    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]186    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[AND]](s64)187    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)188    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]189    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0190    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C1]](s64)191    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)192    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)193    ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32)194    ; CHECK-NEXT: RET_ReallyLR implicit $w0195    ;196    ; CHECK-CSSC-LABEL: name: widen_s16197    ; CHECK-CSSC: liveins: $w0198    ; CHECK-CSSC-NEXT: {{  $}}199    ; CHECK-CSSC-NEXT: %copy:_(s32) = COPY $w0200    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535201    ; CHECK-CSSC-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND %copy, [[C]]202    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)203    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)204    ; CHECK-CSSC-NEXT: $w0 = COPY [[COPY]](s32)205    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w0206    %copy:_(s32) = COPY $w0207    %trunc:_(s16) = G_TRUNC %copy(s32)208    %ctpop:_(s16) = G_CTPOP %trunc(s16)209    %ext:_(s32) = G_ANYEXT %ctpop(s16)210    $w0 = COPY %ext(s32)211    RET_ReallyLR implicit $w0212 213...214---215name:            widen_s8216tracksRegLiveness: true217body:             |218  bb.0:219    liveins: $w0220 221    ; CHECK-LABEL: name: widen_s8222    ; CHECK: liveins: $w0223    ; CHECK-NEXT: {{  $}}224    ; CHECK-NEXT: %copy:_(s32) = COPY $w0225    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT %copy(s32)226    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255227    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]228    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[AND]](s64)229    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)230    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]231    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0232    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C1]](s64)233    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)234    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)235    ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32)236    ; CHECK-NEXT: RET_ReallyLR implicit $w0237    ;238    ; CHECK-CSSC-LABEL: name: widen_s8239    ; CHECK-CSSC: liveins: $w0240    ; CHECK-CSSC-NEXT: {{  $}}241    ; CHECK-CSSC-NEXT: %copy:_(s32) = COPY $w0242    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255243    ; CHECK-CSSC-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND %copy, [[C]]244    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)245    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)246    ; CHECK-CSSC-NEXT: $w0 = COPY [[COPY]](s32)247    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w0248    %copy:_(s32) = COPY $w0249    %trunc:_(s8) = G_TRUNC %copy(s32)250    %ctpop:_(s8) = G_CTPOP %trunc(s8)251    %ext:_(s32) = G_ANYEXT %ctpop(s8)252    $w0 = COPY %ext(s32)253    RET_ReallyLR implicit $w0254 255...256---257name:            widen_s3258tracksRegLiveness: true259body:             |260  bb.0:261    liveins: $w0262 263    ; CHECK-LABEL: name: widen_s3264    ; CHECK: liveins: $w0265    ; CHECK-NEXT: {{  $}}266    ; CHECK-NEXT: %copy:_(s32) = COPY $w0267    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT %copy(s32)268    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 7269    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]270    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[AND]](s64)271    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)272    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]273    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0274    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C1]](s64)275    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)276    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)277    ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32)278    ; CHECK-NEXT: RET_ReallyLR implicit $w0279    ;280    ; CHECK-CSSC-LABEL: name: widen_s3281    ; CHECK-CSSC: liveins: $w0282    ; CHECK-CSSC-NEXT: {{  $}}283    ; CHECK-CSSC-NEXT: %copy:_(s32) = COPY $w0284    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7285    ; CHECK-CSSC-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND %copy, [[C]]286    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)287    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)288    ; CHECK-CSSC-NEXT: $w0 = COPY [[COPY]](s32)289    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w0290    %copy:_(s32) = COPY $w0291    %trunc:_(s3) = G_TRUNC %copy(s32)292    %ctpop:_(s3) = G_CTPOP %trunc(s3)293    %ext:_(s32) = G_ANYEXT %ctpop(s3)294    $w0 = COPY %ext(s32)295    RET_ReallyLR implicit $w0296 297...298---299name:            different_sizes300tracksRegLiveness: true301body:             |302  bb.0:303    liveins: $w0304    ; CHECK-LABEL: name: different_sizes305    ; CHECK: liveins: $w0306    ; CHECK-NEXT: {{  $}}307    ; CHECK-NEXT: %copy:_(s32) = COPY $w0308    ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT %copy(s32)309    ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 255310    ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]311    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[AND]](s64)312    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)313    ; CHECK-NEXT: [[UADDLV:%[0-9]+]]:_(<4 x s32>) = G_UADDLV [[CTPOP]]314    ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 0315    ; CHECK-NEXT: [[EVEC:%[0-9]+]]:_(s32) = G_EXTRACT_VECTOR_ELT [[UADDLV]](<4 x s32>), [[C1]](s64)316    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[EVEC]](s32)317    ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY [[COPY]](s32)318    ; CHECK-NEXT: $w0 = COPY [[COPY1]](s32)319    ; CHECK-NEXT: RET_ReallyLR implicit $w0320    ;321    ; CHECK-CSSC-LABEL: name: different_sizes322    ; CHECK-CSSC: liveins: $w0323    ; CHECK-CSSC-NEXT: {{  $}}324    ; CHECK-CSSC-NEXT: %copy:_(s32) = COPY $w0325    ; CHECK-CSSC-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 255326    ; CHECK-CSSC-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND %copy, [[C]]327    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(s32) = G_CTPOP [[AND]](s32)328    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[CTPOP]](s32)329    ; CHECK-CSSC-NEXT: $w0 = COPY [[COPY]](s32)330    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $w0331    %copy:_(s32) = COPY $w0332    %trunc:_(s8) = G_TRUNC %copy(s32)333    %ctpop:_(s16) = G_CTPOP %trunc(s8)334    %ext:_(s32) = G_ANYEXT %ctpop(s16)335    $w0 = COPY %ext(s32)336    RET_ReallyLR implicit $w0337 338...339---340name:            custom_8x16341tracksRegLiveness: true342body:             |343  bb.0:344    liveins: $q0345 346    ; CHECK-LABEL: name: custom_8x16347    ; CHECK: liveins: $q0348    ; CHECK-NEXT: {{  $}}349    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0350    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<8 x s16>)351    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)352    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]353    ; CHECK-NEXT: $q0 = COPY [[UADDLP]](<8 x s16>)354    ; CHECK-NEXT: RET_ReallyLR implicit $q0355    ;356    ; CHECK-CSSC-LABEL: name: custom_8x16357    ; CHECK-CSSC: liveins: $q0358    ; CHECK-CSSC-NEXT: {{  $}}359    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(<8 x s16>) = COPY $q0360    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<8 x s16>)361    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)362    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]363    ; CHECK-CSSC-NEXT: $q0 = COPY [[UADDLP]](<8 x s16>)364    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $q0365    %0:_(<8 x s16>) = COPY $q0366    %1:_(<8 x s16>) = G_CTPOP %0(<8 x s16>)367    $q0 = COPY %1(<8 x s16>)368    RET_ReallyLR implicit $q0369 370...371---372name:            custom_4x32373tracksRegLiveness: true374body:             |375  bb.0:376    liveins: $q0377 378    ; CHECK-LABEL: name: custom_4x32379    ; CHECK: liveins: $q0380    ; CHECK-NEXT: {{  $}}381    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0382    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<4 x s32>)383    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)384    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]385    ; CHECK-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]386    ; CHECK-NEXT: $q0 = COPY [[UADDLP1]](<4 x s32>)387    ; CHECK-NEXT: RET_ReallyLR implicit $q0388    ;389    ; CHECK-CSSC-LABEL: name: custom_4x32390    ; CHECK-CSSC: liveins: $q0391    ; CHECK-CSSC-NEXT: {{  $}}392    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $q0393    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<4 x s32>)394    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)395    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]396    ; CHECK-CSSC-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]397    ; CHECK-CSSC-NEXT: $q0 = COPY [[UADDLP1]](<4 x s32>)398    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $q0399    %0:_(<4 x s32>) = COPY $q0400    %1:_(<4 x s32>) = G_CTPOP %0(<4 x s32>)401    $q0 = COPY %1(<4 x s32>)402    RET_ReallyLR implicit $q0403 404...405---406name:            custom_2x64407tracksRegLiveness: true408body:             |409  bb.0:410    liveins: $q0411 412    ; CHECK-LABEL: name: custom_2x64413    ; CHECK: liveins: $q0414    ; CHECK-NEXT: {{  $}}415    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0416    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<2 x s64>)417    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)418    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]419    ; CHECK-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]420    ; CHECK-NEXT: [[UADDLP2:%[0-9]+]]:_(<2 x s64>) = G_UADDLP [[UADDLP1]]421    ; CHECK-NEXT: $q0 = COPY [[UADDLP2]](<2 x s64>)422    ; CHECK-NEXT: RET_ReallyLR implicit $q0423    ;424    ; CHECK-CSSC-LABEL: name: custom_2x64425    ; CHECK-CSSC: liveins: $q0426    ; CHECK-CSSC-NEXT: {{  $}}427    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q0428    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<16 x s8>) = G_BITCAST [[COPY]](<2 x s64>)429    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<16 x s8>) = G_CTPOP [[BITCAST]](<16 x s8>)430    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<8 x s16>) = G_UADDLP [[CTPOP]]431    ; CHECK-CSSC-NEXT: [[UADDLP1:%[0-9]+]]:_(<4 x s32>) = G_UADDLP [[UADDLP]]432    ; CHECK-CSSC-NEXT: [[UADDLP2:%[0-9]+]]:_(<2 x s64>) = G_UADDLP [[UADDLP1]]433    ; CHECK-CSSC-NEXT: $q0 = COPY [[UADDLP2]](<2 x s64>)434    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $q0435    %0:_(<2 x s64>) = COPY $q0436    %1:_(<2 x s64>) = G_CTPOP %0(<2 x s64>)437    $q0 = COPY %1(<2 x s64>)438    RET_ReallyLR implicit $q0439 440...441---442name:            custom_4x16443tracksRegLiveness: true444body:             |445  bb.0:446    liveins: $d0447 448    ; CHECK-LABEL: name: custom_4x16449    ; CHECK: liveins: $d0450    ; CHECK-NEXT: {{  $}}451    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0452    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[COPY]](<4 x s16>)453    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)454    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<4 x s16>) = G_UADDLP [[CTPOP]]455    ; CHECK-NEXT: $d0 = COPY [[UADDLP]](<4 x s16>)456    ; CHECK-NEXT: RET_ReallyLR implicit $d0457    ;458    ; CHECK-CSSC-LABEL: name: custom_4x16459    ; CHECK-CSSC: liveins: $d0460    ; CHECK-CSSC-NEXT: {{  $}}461    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $d0462    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[COPY]](<4 x s16>)463    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)464    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<4 x s16>) = G_UADDLP [[CTPOP]]465    ; CHECK-CSSC-NEXT: $d0 = COPY [[UADDLP]](<4 x s16>)466    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $d0467    %0:_(<4 x s16>) = COPY $d0468    %1:_(<4 x s16>) = G_CTPOP %0(<4 x s16>)469    $d0 = COPY %1(<4 x s16>)470    RET_ReallyLR implicit $d0471 472...473---474name:            custom_2x32475tracksRegLiveness: true476body:             |477  bb.0:478    liveins: $d0479 480    ; CHECK-LABEL: name: custom_2x32481    ; CHECK: liveins: $d0482    ; CHECK-NEXT: {{  $}}483    ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0484    ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[COPY]](<2 x s32>)485    ; CHECK-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)486    ; CHECK-NEXT: [[UADDLP:%[0-9]+]]:_(<4 x s16>) = G_UADDLP [[CTPOP]]487    ; CHECK-NEXT: [[UADDLP1:%[0-9]+]]:_(<2 x s32>) = G_UADDLP [[UADDLP]]488    ; CHECK-NEXT: $d0 = COPY [[UADDLP1]](<2 x s32>)489    ; CHECK-NEXT: RET_ReallyLR implicit $d0490    ;491    ; CHECK-CSSC-LABEL: name: custom_2x32492    ; CHECK-CSSC: liveins: $d0493    ; CHECK-CSSC-NEXT: {{  $}}494    ; CHECK-CSSC-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $d0495    ; CHECK-CSSC-NEXT: [[BITCAST:%[0-9]+]]:_(<8 x s8>) = G_BITCAST [[COPY]](<2 x s32>)496    ; CHECK-CSSC-NEXT: [[CTPOP:%[0-9]+]]:_(<8 x s8>) = G_CTPOP [[BITCAST]](<8 x s8>)497    ; CHECK-CSSC-NEXT: [[UADDLP:%[0-9]+]]:_(<4 x s16>) = G_UADDLP [[CTPOP]]498    ; CHECK-CSSC-NEXT: [[UADDLP1:%[0-9]+]]:_(<2 x s32>) = G_UADDLP [[UADDLP]]499    ; CHECK-CSSC-NEXT: $d0 = COPY [[UADDLP1]](<2 x s32>)500    ; CHECK-CSSC-NEXT: RET_ReallyLR implicit $d0501    %0:_(<2 x s32>) = COPY $d0502    %1:_(<2 x s32>) = G_CTPOP %0(<2 x s32>)503    $d0 = COPY %1(<2 x s32>)504    RET_ReallyLR implicit $d0505