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