967 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=MOVREL %s3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=MOVREL %s4# RUN: llc -mtriple=amdgcn -mcpu=fiji -amdgpu-vgpr-index-mode -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GPRIDX %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GPRIDX %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=MOVREL %s7# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=MOVREL %s8 9---10name: extract_vector_elt_s_s32_v2s3211legalized: true12regBankSelected: true13 14body: |15 bb.0:16 liveins: $sgpr0_sgpr1, $sgpr217 18 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v2s3219 ; MOVREL: liveins: $sgpr0_sgpr1, $sgpr220 ; MOVREL-NEXT: {{ $}}21 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr122 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr223 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]24 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]25 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]26 ;27 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v2s3228 ; GPRIDX: liveins: $sgpr0_sgpr1, $sgpr229 ; GPRIDX-NEXT: {{ $}}30 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sreg_64 = COPY $sgpr0_sgpr131 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr232 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]33 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]34 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]35 %0:sgpr(<2 x s32>) = COPY $sgpr0_sgpr136 %1:sgpr(s32) = COPY $sgpr237 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %138 S_ENDPGM 0, implicit %239...40 41---42name: extract_vector_elt_s_s32_v3s3243legalized: true44regBankSelected: true45 46body: |47 bb.0:48 liveins: $sgpr0_sgpr1_sgpr2, $sgpr349 50 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v3s3251 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2, $sgpr352 ; MOVREL-NEXT: {{ $}}53 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr254 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr255 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]56 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]57 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]58 ;59 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v3s3260 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2, $sgpr361 ; GPRIDX-NEXT: {{ $}}62 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_96 = COPY $sgpr0_sgpr1_sgpr263 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr264 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]65 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]66 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]67 %0:sgpr(<3 x s32>) = COPY $sgpr0_sgpr1_sgpr268 %1:sgpr(s32) = COPY $sgpr269 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %170 S_ENDPGM 0, implicit %271...72 73---74name: extract_vector_elt_s_s32_v4s3275legalized: true76regBankSelected: true77 78body: |79 bb.0:80 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr481 82 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v4s3283 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr484 ; MOVREL-NEXT: {{ $}}85 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr386 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr487 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]88 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]89 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]90 ;91 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v4s3292 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr493 ; GPRIDX-NEXT: {{ $}}94 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr395 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr496 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]97 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]98 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]99 %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3100 %1:sgpr(s32) = COPY $sgpr4101 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1102 S_ENDPGM 0, implicit %2103...104 105---106name: extract_vector_elt_s_s32_v8s32107legalized: true108regBankSelected: true109 110body: |111 bb.0:112 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8113 114 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v8s32115 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8116 ; MOVREL-NEXT: {{ $}}117 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7118 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8119 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]120 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]121 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]122 ;123 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v8s32124 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8125 ; GPRIDX-NEXT: {{ $}}126 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7127 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8128 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]129 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]130 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]131 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7132 %1:sgpr(s32) = COPY $sgpr8133 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1134 S_ENDPGM 0, implicit %2135...136 137---138name: extract_vector_elt_s_s32_v16s32139legalized: true140regBankSelected: true141 142body: |143 bb.0:144 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15145 146 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v16s32147 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15148 ; MOVREL-NEXT: {{ $}}149 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15150 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8151 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]152 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]153 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]154 ;155 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v16s32156 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15157 ; GPRIDX-NEXT: {{ $}}158 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15159 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8160 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]161 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]162 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]163 %0:sgpr(<16 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15164 %1:sgpr(s32) = COPY $sgpr8165 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1166 S_ENDPGM 0, implicit %2167...168 169---170name: extract_vector_elt_s_s32_v32s32171legalized: true172regBankSelected: true173 174body: |175 bb.0:176 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40177 178 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v32s32179 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40180 ; MOVREL-NEXT: {{ $}}181 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31182 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40183 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]184 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]185 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]186 ;187 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v32s32188 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40189 ; GPRIDX-NEXT: {{ $}}190 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31191 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40192 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]193 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]194 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]195 %0:sgpr(<32 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31196 %1:sgpr(s32) = COPY $sgpr40197 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1198 S_ENDPGM 0, implicit %2199...200 201---202name: extract_vector_elt_s_s64_v2s64203legalized: true204regBankSelected: true205 206body: |207 bb.0:208 liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4209 210 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v2s64211 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4212 ; MOVREL-NEXT: {{ $}}213 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3214 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4215 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]216 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]217 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]218 ;219 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v2s64220 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4221 ; GPRIDX-NEXT: {{ $}}222 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3223 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4224 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]225 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]226 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]227 %0:sgpr(<2 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3228 %1:sgpr(s32) = COPY $sgpr4229 %2:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %1230 S_ENDPGM 0, implicit %2231...232 233---234name: extract_vector_elt_s_s64_v4s64235legalized: true236regBankSelected: true237 238body: |239 bb.0:240 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8241 242 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v4s64243 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8244 ; MOVREL-NEXT: {{ $}}245 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7246 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8247 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]248 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]249 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]250 ;251 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v4s64252 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8253 ; GPRIDX-NEXT: {{ $}}254 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7255 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8256 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]257 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]258 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]259 %0:sgpr(<4 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7260 %1:sgpr(s32) = COPY $sgpr8261 %2:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %1262 S_ENDPGM 0, implicit %2263...264 265---266name: extract_vector_elt_s_s64_v8s64267legalized: true268regBankSelected: true269 270body: |271 bb.0:272 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15273 274 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v8s64275 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15276 ; MOVREL-NEXT: {{ $}}277 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15278 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8279 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]280 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]281 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]282 ;283 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v8s64284 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15285 ; GPRIDX-NEXT: {{ $}}286 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15287 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8288 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]289 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]290 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]291 %0:sgpr(<8 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15292 %1:sgpr(s32) = COPY $sgpr8293 %2:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %1294 S_ENDPGM 0, implicit %2295...296 297---298name: extract_vector_elt_s_s64_v16s64299legalized: true300regBankSelected: true301 302body: |303 bb.0:304 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40305 306 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v16s64307 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40308 ; MOVREL-NEXT: {{ $}}309 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31310 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40311 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]312 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]313 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]314 ;315 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v16s64316 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31, $sgpr40317 ; GPRIDX-NEXT: {{ $}}318 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_1024 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31319 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40320 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]321 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]322 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]323 %0:sgpr(<16 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15_sgpr16_sgpr17_sgpr18_sgpr19_sgpr20_sgpr21_sgpr22_sgpr23_sgpr24_sgpr25_sgpr26_sgpr27_sgpr28_sgpr29_sgpr30_sgpr31324 %1:sgpr(s32) = COPY $sgpr40325 %2:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %1326 S_ENDPGM 0, implicit %2327...328 329---330name: extract_vector_elt_s_s32_v8s32_idx_offset_1331legalized: true332regBankSelected: true333 334body: |335 bb.0:336 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8337 338 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_1339 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8340 ; MOVREL-NEXT: {{ $}}341 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7342 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8343 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]344 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub1, implicit $m0, implicit [[COPY]]345 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]346 ;347 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_1348 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8349 ; GPRIDX-NEXT: {{ $}}350 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7351 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8352 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]353 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub1, implicit $m0, implicit [[COPY]]354 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]355 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7356 %1:sgpr(s32) = COPY $sgpr8357 %2:sgpr(s32) = G_CONSTANT i32 1358 %3:sgpr(s32) = G_ADD %1, %2359 %4:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3360 S_ENDPGM 0, implicit %4361...362 363---364name: extract_vector_elt_s_s32_v8s32_idx_offset_m1365legalized: true366regBankSelected: true367 368body: |369 bb.0:370 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8371 372 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_m1373 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8374 ; MOVREL-NEXT: {{ $}}375 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7376 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8377 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1378 ; MOVREL-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc379 ; MOVREL-NEXT: $m0 = COPY [[S_ADD_I32_]]380 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]381 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]382 ;383 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_m1384 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8385 ; GPRIDX-NEXT: {{ $}}386 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7387 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8388 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1389 ; GPRIDX-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc390 ; GPRIDX-NEXT: $m0 = COPY [[S_ADD_I32_]]391 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]392 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]393 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7394 %1:sgpr(s32) = COPY $sgpr8395 %2:sgpr(s32) = G_CONSTANT i32 -1396 %3:sgpr(s32) = G_ADD %1, %2397 %4:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3398 S_ENDPGM 0, implicit %4399...400 401---402name: extract_vector_elt_s_s32_v8s32_idx_offset_7403legalized: true404regBankSelected: true405 406body: |407 bb.0:408 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8409 410 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_7411 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8412 ; MOVREL-NEXT: {{ $}}413 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7414 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8415 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]416 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub7, implicit $m0, implicit [[COPY]]417 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]418 ;419 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_7420 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8421 ; GPRIDX-NEXT: {{ $}}422 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7423 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8424 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]425 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub7, implicit $m0, implicit [[COPY]]426 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]427 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7428 %1:sgpr(s32) = COPY $sgpr8429 %2:sgpr(s32) = G_CONSTANT i32 7430 %3:sgpr(s32) = G_ADD %1, %2431 %4:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3432 S_ENDPGM 0, implicit %4433...434 435---436name: extract_vector_elt_s_s32_v8s32_idx_offset_8437legalized: true438regBankSelected: true439 440body: |441 bb.0:442 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8443 444 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_8445 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8446 ; MOVREL-NEXT: {{ $}}447 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7448 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8449 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 8450 ; MOVREL-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc451 ; MOVREL-NEXT: $m0 = COPY [[S_ADD_I32_]]452 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]453 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]454 ;455 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v8s32_idx_offset_8456 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7, $sgpr8457 ; GPRIDX-NEXT: {{ $}}458 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_256 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7459 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8460 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 8461 ; GPRIDX-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc462 ; GPRIDX-NEXT: $m0 = COPY [[S_ADD_I32_]]463 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]464 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]465 %0:sgpr(<8 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7466 %1:sgpr(s32) = COPY $sgpr8467 %2:sgpr(s32) = G_CONSTANT i32 8468 %3:sgpr(s32) = G_ADD %1, %2469 %4:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3470 S_ENDPGM 0, implicit %4471...472 473---474name: extract_vector_elt_s_s64_v8s64_idx_offset_1475legalized: true476regBankSelected: true477 478body: |479 bb.0:480 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15481 482 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_1483 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15484 ; MOVREL-NEXT: {{ $}}485 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15486 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8487 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]488 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub2_sub3, implicit $m0, implicit [[COPY]]489 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]490 ;491 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_1492 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15493 ; GPRIDX-NEXT: {{ $}}494 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15495 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8496 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]497 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub2_sub3, implicit $m0, implicit [[COPY]]498 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]499 %0:sgpr(<8 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15500 %1:sgpr(s32) = COPY $sgpr8501 %2:sgpr(s32) = G_CONSTANT i32 1502 %3:sgpr(s32) = G_ADD %1, %2503 %4:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %3504 S_ENDPGM 0, implicit %4505...506 507---508name: extract_vector_elt_s_s64_v8s64_idx_offset_2509legalized: true510regBankSelected: true511 512body: |513 bb.0:514 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15515 516 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_2517 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15518 ; MOVREL-NEXT: {{ $}}519 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15520 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8521 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]522 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub4_sub5, implicit $m0, implicit [[COPY]]523 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]524 ;525 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_2526 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15527 ; GPRIDX-NEXT: {{ $}}528 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15529 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8530 ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]531 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub4_sub5, implicit $m0, implicit [[COPY]]532 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]533 %0:sgpr(<8 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15534 %1:sgpr(s32) = COPY $sgpr8535 %2:sgpr(s32) = G_CONSTANT i32 2536 %3:sgpr(s32) = G_ADD %1, %2537 %4:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %3538 S_ENDPGM 0, implicit %4539...540 541---542name: extract_vector_elt_s_s64_v8s64_idx_offset_m1543legalized: true544regBankSelected: true545 546body: |547 bb.0:548 liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15549 550 ; MOVREL-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_m1551 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15552 ; MOVREL-NEXT: {{ $}}553 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15554 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8555 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1556 ; MOVREL-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc557 ; MOVREL-NEXT: $m0 = COPY [[S_ADD_I32_]]558 ; MOVREL-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]559 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]560 ;561 ; GPRIDX-LABEL: name: extract_vector_elt_s_s64_v8s64_idx_offset_m1562 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15563 ; GPRIDX-NEXT: {{ $}}564 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_512 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15565 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8566 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1567 ; GPRIDX-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc568 ; GPRIDX-NEXT: $m0 = COPY [[S_ADD_I32_]]569 ; GPRIDX-NEXT: [[S_MOVRELS_B64_:%[0-9]+]]:sreg_64 = S_MOVRELS_B64 [[COPY]].sub0_sub1, implicit $m0, implicit [[COPY]]570 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B64_]]571 %0:sgpr(<8 x s64>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6_sgpr7_sgpr8_sgpr9_sgpr10_sgpr11_sgpr12_sgpr13_sgpr14_sgpr15572 %1:sgpr(s32) = COPY $sgpr8573 %2:sgpr(s32) = G_CONSTANT i32 -1574 %3:sgpr(s32) = G_ADD %1, %2575 %4:sgpr(s64) = G_EXTRACT_VECTOR_ELT %0, %3576 S_ENDPGM 0, implicit %4577...578 579---580name: extract_vector_elt_v_s32_v2s32581legalized: true582regBankSelected: true583 584body: |585 bb.0:586 liveins: $vgpr0_vgpr1, $sgpr2587 588 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v2s32589 ; MOVREL: liveins: $vgpr0_vgpr1, $sgpr2590 ; MOVREL-NEXT: {{ $}}591 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1592 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2593 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]594 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]595 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]596 ;597 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v2s32598 ; GPRIDX: liveins: $vgpr0_vgpr1, $sgpr2599 ; GPRIDX-NEXT: {{ $}}600 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1601 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2602 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V2_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V2 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec603 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V2_]]604 %0:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1605 %1:sgpr(s32) = COPY $sgpr2606 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1607 S_ENDPGM 0, implicit %2608...609 610---611name: extract_vector_elt_v_s32_v3s32612legalized: true613regBankSelected: true614 615body: |616 bb.0:617 liveins: $vgpr0_vgpr1_vgpr2, $sgpr3618 619 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v3s32620 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2, $sgpr3621 ; MOVREL-NEXT: {{ $}}622 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2623 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2624 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]625 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]626 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]627 ;628 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v3s32629 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2, $sgpr3630 ; GPRIDX-NEXT: {{ $}}631 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_96 = COPY $vgpr0_vgpr1_vgpr2632 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2633 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V3_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V3 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec634 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V3_]]635 %0:vgpr(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2636 %1:sgpr(s32) = COPY $sgpr2637 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1638 S_ENDPGM 0, implicit %2639...640 641---642name: extract_vector_elt_v_s32_v4s32643legalized: true644regBankSelected: true645 646body: |647 bb.0:648 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $sgpr4649 650 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v4s32651 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $sgpr4652 ; MOVREL-NEXT: {{ $}}653 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3654 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4655 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]656 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]657 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]658 ;659 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v4s32660 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $sgpr4661 ; GPRIDX-NEXT: {{ $}}662 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $vgpr0_vgpr1_vgpr2_vgpr3663 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4664 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V4_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V4 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec665 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V4_]]666 %0:vgpr(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3667 %1:sgpr(s32) = COPY $sgpr4668 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1669 S_ENDPGM 0, implicit %2670...671 672---673name: extract_vector_elt_v_s32_v8s32674legalized: true675regBankSelected: true676 677body: |678 bb.0:679 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8680 681 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v8s32682 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8683 ; MOVREL-NEXT: {{ $}}684 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7685 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8686 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]687 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]688 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]689 ;690 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v8s32691 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $vgpr8692 ; GPRIDX-NEXT: {{ $}}693 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7694 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8695 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V8 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec696 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_]]697 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7698 %1:sgpr(s32) = COPY $sgpr8699 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1700 S_ENDPGM 0, implicit %2701...702 703---704name: extract_vector_elt_v_s32_v16s32705legalized: true706regBankSelected: true707 708body: |709 bb.0:710 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15711 712 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v16s32713 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15714 ; MOVREL-NEXT: {{ $}}715 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15716 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8717 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]718 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]719 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]720 ;721 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v16s32722 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15723 ; GPRIDX-NEXT: {{ $}}724 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_512 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15725 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8726 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V16_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V16 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec727 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V16_]]728 %0:vgpr(<16 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15729 %1:sgpr(s32) = COPY $sgpr8730 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1731 S_ENDPGM 0, implicit %2732...733 734---735name: extract_vector_elt_v_s32_v32s32736legalized: true737regBankSelected: true738 739body: |740 bb.0:741 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31, $sgpr40742 743 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v32s32744 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31, $sgpr40745 ; MOVREL-NEXT: {{ $}}746 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_1024 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31747 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40748 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]749 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]750 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]751 ;752 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v32s32753 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31, $sgpr40754 ; GPRIDX-NEXT: {{ $}}755 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_1024 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31756 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr40757 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V32_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V32 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec758 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V32_]]759 %0:vgpr(<32 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7_vgpr8_vgpr9_vgpr10_vgpr11_vgpr12_vgpr13_vgpr14_vgpr15_vgpr16_vgpr17_vgpr18_vgpr19_vgpr20_vgpr21_vgpr22_vgpr23_vgpr24_vgpr25_vgpr26_vgpr27_vgpr28_vgpr29_vgpr30_vgpr31760 %1:sgpr(s32) = COPY $sgpr40761 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1762 S_ENDPGM 0, implicit %2763...764 765---766name: extract_vector_elt_v_s32_v8s32_idx_offset_1767legalized: true768regBankSelected: true769 770body: |771 bb.0:772 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8773 774 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_1775 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8776 ; MOVREL-NEXT: {{ $}}777 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7778 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8779 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]780 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub1, implicit $m0, implicit $exec, implicit [[COPY]]781 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]782 ;783 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_1784 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8785 ; GPRIDX-NEXT: {{ $}}786 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7787 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8788 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V8 [[COPY]], [[COPY1]], 11, implicit-def $m0, implicit $m0, implicit $exec789 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_]]790 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7791 %1:sgpr(s32) = COPY $sgpr8792 %2:sgpr(s32) = G_CONSTANT i32 1793 %3:sgpr(s32) = G_ADD %1, %2794 %4:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3795 S_ENDPGM 0, implicit %4796...797 798---799name: extract_vector_elt_v_s32_v8s32_idx_offset_m1800legalized: true801regBankSelected: true802 803body: |804 bb.0:805 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8806 807 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_m1808 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8809 ; MOVREL-NEXT: {{ $}}810 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7811 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8812 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1813 ; MOVREL-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc814 ; MOVREL-NEXT: $m0 = COPY [[S_ADD_I32_]]815 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]816 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]817 ;818 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_m1819 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8820 ; GPRIDX-NEXT: {{ $}}821 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7822 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8823 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 -1824 ; GPRIDX-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc825 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V8 [[COPY]], [[S_ADD_I32_]], 3, implicit-def $m0, implicit $m0, implicit $exec826 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_]]827 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7828 %1:sgpr(s32) = COPY $sgpr8829 %2:sgpr(s32) = G_CONSTANT i32 -1830 %3:sgpr(s32) = G_ADD %1, %2831 %4:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3832 S_ENDPGM 0, implicit %4833...834 835---836name: extract_vector_elt_v_s32_v8s32_idx_offset_7837legalized: true838regBankSelected: true839 840body: |841 bb.0:842 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8843 844 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_7845 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8846 ; MOVREL-NEXT: {{ $}}847 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7848 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8849 ; MOVREL-NEXT: $m0 = COPY [[COPY1]]850 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub7, implicit $m0, implicit $exec, implicit [[COPY]]851 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]852 ;853 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_7854 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8855 ; GPRIDX-NEXT: {{ $}}856 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7857 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8858 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V8 [[COPY]], [[COPY1]], 71, implicit-def $m0, implicit $m0, implicit $exec859 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_]]860 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7861 %1:sgpr(s32) = COPY $sgpr8862 %2:sgpr(s32) = G_CONSTANT i32 7863 %3:sgpr(s32) = G_ADD %1, %2864 %4:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3865 S_ENDPGM 0, implicit %4866...867 868---869name: extract_vector_elt_v_s32_v8s32_idx_offset_8870legalized: true871regBankSelected: true872 873body: |874 bb.0:875 liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8876 877 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_8878 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8879 ; MOVREL-NEXT: {{ $}}880 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7881 ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8882 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 8883 ; MOVREL-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc884 ; MOVREL-NEXT: $m0 = COPY [[S_ADD_I32_]]885 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]886 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]887 ;888 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v8s32_idx_offset_8889 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7, $sgpr8890 ; GPRIDX-NEXT: {{ $}}891 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_256 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7892 ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr8893 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 8894 ; GPRIDX-NEXT: [[S_ADD_I32_:%[0-9]+]]:sreg_32 = S_ADD_I32 [[COPY1]], [[S_MOV_B32_]], implicit-def dead $scc895 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V8 [[COPY]], [[S_ADD_I32_]], 3, implicit-def $m0, implicit $m0, implicit $exec896 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V8_]]897 %0:vgpr(<8 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7898 %1:sgpr(s32) = COPY $sgpr8899 %2:sgpr(s32) = G_CONSTANT i32 8900 %3:sgpr(s32) = G_ADD %1, %2901 %4:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %3902 S_ENDPGM 0, implicit %4903...904 905---906name: extract_vector_elt_s_s32_v4s32_const_idx907legalized: true908regBankSelected: true909 910body: |911 bb.0:912 liveins: $sgpr0_sgpr1_sgpr2_sgpr3913 914 ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v4s32_const_idx915 ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3916 ; MOVREL-NEXT: {{ $}}917 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3918 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0919 ; MOVREL-NEXT: $m0 = COPY [[S_MOV_B32_]]920 ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]921 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]922 ;923 ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v4s32_const_idx924 ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3925 ; GPRIDX-NEXT: {{ $}}926 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3927 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0928 ; GPRIDX-NEXT: $m0 = COPY [[S_MOV_B32_]]929 ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]930 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]931 %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3932 %1:sgpr(s32) = G_CONSTANT i32 0933 %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1934 S_ENDPGM 0, implicit %2935...936 937---938name: extract_vector_elt_v_s32_v4s32_const_idx939legalized: true940regBankSelected: true941 942body: |943 bb.0:944 liveins: $vgpr0_vgpr1_vgpr2_vgpr3945 946 ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v4s32_const_idx947 ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3948 ; MOVREL-NEXT: {{ $}}949 ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3950 ; MOVREL-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0951 ; MOVREL-NEXT: $m0 = COPY [[S_MOV_B32_]]952 ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]953 ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]954 ;955 ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v4s32_const_idx956 ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3957 ; GPRIDX-NEXT: {{ $}}958 ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3959 ; GPRIDX-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0960 ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V4_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V4 [[COPY]], [[S_MOV_B32_]], 3, implicit-def $m0, implicit $m0, implicit $exec961 ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V4_]]962 %0:vgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3963 %1:sgpr(s32) = G_CONSTANT i32 0964 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1965 S_ENDPGM 0, implicit %2966...967