brintos

brintos / llvm-project-archived public Read only

0
0
Text · 48.9 KiB · b59c98f Raw
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