@@ -624,3 +624,66 @@ body: |
624
624
%5:sgpr(<8 x s32>) = G_INSERT_VECTOR_ELT %0, %1, %4
625
625
S_ENDPGM 0, implicit %5
626
626
...
627
+
628
+ # This should have been folded out in the legalizer, but make sure it
629
+ # doesn't crash.
630
+ ---
631
+ name : insert_vector_elt_s_s32_v4s32_const_idx
632
+ legalized : true
633
+ regBankSelected : true
634
+
635
+ body : |
636
+ bb.0:
637
+ liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4
638
+
639
+ ; MOVREL-LABEL: name: insert_vector_elt_s_s32_v4s32_const_idx
640
+ ; MOVREL: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
641
+ ; MOVREL: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4
642
+ ; MOVREL: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
643
+ ; MOVREL: $m0 = COPY [[S_MOV_B32_]]
644
+ ; MOVREL: [[S_INDIRECT_REG_WRITE_B32_V4_:%[0-9]+]]:sgpr_128 = S_INDIRECT_REG_WRITE_B32_V4 [[COPY]], [[COPY1]], 1, implicit $m0
645
+ ; MOVREL: S_ENDPGM 0, implicit [[S_INDIRECT_REG_WRITE_B32_V4_]]
646
+ ; GPRIDX-LABEL: name: insert_vector_elt_s_s32_v4s32_const_idx
647
+ ; GPRIDX: [[COPY:%[0-9]+]]:sgpr_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
648
+ ; GPRIDX: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4
649
+ ; GPRIDX: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
650
+ ; GPRIDX: $m0 = COPY [[S_MOV_B32_]]
651
+ ; GPRIDX: [[S_INDIRECT_REG_WRITE_B32_V4_:%[0-9]+]]:sgpr_128 = S_INDIRECT_REG_WRITE_B32_V4 [[COPY]], [[COPY1]], 1, implicit $m0
652
+ ; GPRIDX: S_ENDPGM 0, implicit [[S_INDIRECT_REG_WRITE_B32_V4_]]
653
+ %0:sgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
654
+ %1:sgpr(s32) = COPY $sgpr4
655
+ %2:sgpr(s32) = G_CONSTANT i32 0
656
+ %3:sgpr(<4 x s32>) = G_INSERT_VECTOR_ELT %0, %1, %2
657
+ S_ENDPGM 0, implicit %3
658
+ ...
659
+
660
+ ---
661
+ name : insert_vector_elt_v_s32_v4s32_const_idx
662
+ legalized : true
663
+ regBankSelected : true
664
+
665
+ body : |
666
+ bb.0:
667
+ liveins: $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr4
668
+
669
+ ; MOVREL-LABEL: name: insert_vector_elt_v_s32_v4s32_const_idx
670
+ ; MOVREL: [[COPY:%[0-9]+]]:vreg_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
671
+ ; MOVREL: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4
672
+ ; MOVREL: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
673
+ ; MOVREL: $m0 = COPY [[S_MOV_B32_]]
674
+ ; MOVREL: [[V_INDIRECT_REG_WRITE_B32_V4_:%[0-9]+]]:vreg_128 = V_INDIRECT_REG_WRITE_B32_V4 [[COPY]], [[COPY1]], 1, implicit $m0, implicit $exec
675
+ ; MOVREL: S_ENDPGM 0, implicit [[V_INDIRECT_REG_WRITE_B32_V4_]]
676
+ ; GPRIDX-LABEL: name: insert_vector_elt_v_s32_v4s32_const_idx
677
+ ; GPRIDX: [[COPY:%[0-9]+]]:vreg_128 = COPY $sgpr0_sgpr1_sgpr2_sgpr3
678
+ ; GPRIDX: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr4
679
+ ; GPRIDX: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 0
680
+ ; GPRIDX: S_SET_GPR_IDX_ON [[S_MOV_B32_]], 8, implicit-def $m0, implicit $m0
681
+ ; GPRIDX: [[V_INDIRECT_REG_WRITE_B32_V4_:%[0-9]+]]:vreg_128 = V_INDIRECT_REG_WRITE_B32_V4 [[COPY]], [[COPY1]], 1, implicit $m0, implicit $exec
682
+ ; GPRIDX: S_SET_GPR_IDX_OFF
683
+ ; GPRIDX: S_ENDPGM 0, implicit [[V_INDIRECT_REG_WRITE_B32_V4_]]
684
+ %0:vgpr(<4 x s32>) = COPY $sgpr0_sgpr1_sgpr2_sgpr3
685
+ %1:sgpr(s32) = COPY $sgpr4
686
+ %2:sgpr(s32) = G_CONSTANT i32 0
687
+ %3:vgpr(<4 x s32>) = G_INSERT_VECTOR_ELT %0, %1, %2
688
+ S_ENDPGM 0, implicit %3
689
+ ...
0 commit comments