@@ -964,3 +964,129 @@ body: |
964964 %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1
965965 S_ENDPGM 0, implicit %2
966966 ...
967+
968+ ---
969+ name : extract_vector_elt_s_s32_v6s32
970+ legalized : true
971+ regBankSelected : true
972+
973+ body : |
974+ bb.0:
975+ liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5, $sgpr6
976+
977+ ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v6s32
978+ ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5, $sgpr6
979+ ; MOVREL-NEXT: {{ $}}
980+ ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_192 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
981+ ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr6
982+ ; MOVREL-NEXT: $m0 = COPY [[COPY1]]
983+ ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]
984+ ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]
985+ ;
986+ ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v6s32
987+ ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5, $sgpr6
988+ ; GPRIDX-NEXT: {{ $}}
989+ ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_192 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
990+ ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr6
991+ ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]
992+ ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]
993+ ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]
994+ %0:sgpr(<6 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5
995+ %1:sgpr(s32) = COPY $sgpr6
996+ %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1
997+ S_ENDPGM 0, implicit %2
998+ ...
999+
1000+ ---
1001+ name : extract_vector_elt_s_s32_v7s32
1002+ legalized : true
1003+ regBankSelected : true
1004+
1005+ body : |
1006+ bb.0:
1007+ liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6, $sgpr7
1008+
1009+ ; MOVREL-LABEL: name: extract_vector_elt_s_s32_v7s32
1010+ ; MOVREL: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6, $sgpr7
1011+ ; MOVREL-NEXT: {{ $}}
1012+ ; MOVREL-NEXT: [[COPY:%[0-9]+]]:sgpr_224 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6
1013+ ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr7
1014+ ; MOVREL-NEXT: $m0 = COPY [[COPY1]]
1015+ ; MOVREL-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]
1016+ ; MOVREL-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]
1017+ ;
1018+ ; GPRIDX-LABEL: name: extract_vector_elt_s_s32_v7s32
1019+ ; GPRIDX: liveins: $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6, $sgpr7
1020+ ; GPRIDX-NEXT: {{ $}}
1021+ ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:sgpr_224 = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6
1022+ ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr7
1023+ ; GPRIDX-NEXT: $m0 = COPY [[COPY1]]
1024+ ; GPRIDX-NEXT: [[S_MOVRELS_B32_:%[0-9]+]]:sreg_32 = S_MOVRELS_B32 [[COPY]].sub0, implicit $m0, implicit [[COPY]]
1025+ ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[S_MOVRELS_B32_]]
1026+ %0:sgpr(<7 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3_sgpr4_sgpr5_sgpr6
1027+ %1:sgpr(s32) = COPY $sgpr7
1028+ %2:sgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1
1029+ S_ENDPGM 0, implicit %2
1030+ ...
1031+
1032+ ---
1033+ name : extract_vector_elt_v_s32_v6s32
1034+ legalized : true
1035+ regBankSelected : true
1036+
1037+ body : |
1038+ bb.0:
1039+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $sgpr2
1040+
1041+ ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v6s32
1042+ ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $sgpr2
1043+ ; MOVREL-NEXT: {{ $}}
1044+ ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_192 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5
1045+ ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
1046+ ; MOVREL-NEXT: $m0 = COPY [[COPY1]]
1047+ ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]
1048+ ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]
1049+ ;
1050+ ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v6s32
1051+ ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5, $sgpr2
1052+ ; GPRIDX-NEXT: {{ $}}
1053+ ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_192 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5
1054+ ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
1055+ ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V6_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V6 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec
1056+ ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V6_]]
1057+ %0:vgpr(<6 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5
1058+ %1:sgpr(s32) = COPY $sgpr2
1059+ %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1
1060+ S_ENDPGM 0, implicit %2
1061+ ...
1062+
1063+ ---
1064+ name : extract_vector_elt_v_s32_v7s32
1065+ legalized : true
1066+ regBankSelected : true
1067+
1068+ body : |
1069+ bb.0:
1070+ liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6, $sgpr2
1071+
1072+ ; MOVREL-LABEL: name: extract_vector_elt_v_s32_v7s32
1073+ ; MOVREL: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6, $sgpr2
1074+ ; MOVREL-NEXT: {{ $}}
1075+ ; MOVREL-NEXT: [[COPY:%[0-9]+]]:vreg_224 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6
1076+ ; MOVREL-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
1077+ ; MOVREL-NEXT: $m0 = COPY [[COPY1]]
1078+ ; MOVREL-NEXT: [[V_MOVRELS_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOVRELS_B32_e32 [[COPY]].sub0, implicit $m0, implicit $exec, implicit [[COPY]]
1079+ ; MOVREL-NEXT: S_ENDPGM 0, implicit [[V_MOVRELS_B32_e32_]]
1080+ ;
1081+ ; GPRIDX-LABEL: name: extract_vector_elt_v_s32_v7s32
1082+ ; GPRIDX: liveins: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6, $sgpr2
1083+ ; GPRIDX-NEXT: {{ $}}
1084+ ; GPRIDX-NEXT: [[COPY:%[0-9]+]]:vreg_224 = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6
1085+ ; GPRIDX-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr2
1086+ ; GPRIDX-NEXT: [[V_INDIRECT_REG_READ_GPR_IDX_B32_V7_:%[0-9]+]]:vgpr_32 = V_INDIRECT_REG_READ_GPR_IDX_B32_V7 [[COPY]], [[COPY1]], 3, implicit-def $m0, implicit $m0, implicit $exec
1087+ ; GPRIDX-NEXT: S_ENDPGM 0, implicit [[V_INDIRECT_REG_READ_GPR_IDX_B32_V7_]]
1088+ %0:vgpr(<7 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6
1089+ %1:sgpr(s32) = COPY $sgpr2
1090+ %2:vgpr(s32) = G_EXTRACT_VECTOR_ELT %0, %1
1091+ S_ENDPGM 0, implicit %2
1092+ ...
0 commit comments