[llvm] [RISCV][VLOPT] Support segmented store instructions (PR #155467)
Min-Yih Hsu via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 2 16:11:04 PDT 2025
================
@@ -2192,3 +2192,219 @@ body: |
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0
%y:vr = PseudoVRGATHEREI16_VV_M1_E32_MF2 $noreg, $noreg, %x, 1, 5 /* e32 */, 0
$v8 = COPY %y
+...
+---
+name: vsseg3e32_v
+body: |
+ bb.0:
+ liveins: $v8
+
+ ; CHECK-LABEL: name: vsseg3e32_v
+ ; CHECK: liveins: $v8
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:vr = COPY $v8
+ ; CHECK-NEXT: [[PseudoVADD_VV_M1_:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 5 /* e32 */, 3 /* ta, ma */
+ ; CHECK-NEXT: [[PseudoVADD_VV_M1_1:%[0-9]+]]:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 5 /* e32 */, 3 /* ta, ma */
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:vrn3m1 = IMPLICIT_DEF
+ ; CHECK-NEXT: [[INSERT_SUBREG:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[DEF]], [[COPY]], %subreg.sub_vrm1_0
+ ; CHECK-NEXT: [[INSERT_SUBREG1:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG]], [[PseudoVADD_VV_M1_]], %subreg.sub_vrm1_1
+ ; CHECK-NEXT: [[INSERT_SUBREG2:%[0-9]+]]:vrn3m1 = INSERT_SUBREG [[INSERT_SUBREG1]], [[PseudoVADD_VV_M1_1]], %subreg.sub_vrm1_2
+ ; CHECK-NEXT: PseudoVSSEG3E32_V_M1 killed [[INSERT_SUBREG2]], $noreg, 1, 5 /* e32 */
+ %0:vr = COPY $v8
+ %1:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 10, 5 /* e32 */, 3 /* ta, ma */
+ %2:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 5 /* e32 */, 3 /* ta, ma */
+ %6:vrn3m1 = IMPLICIT_DEF
+ %5:vrn3m1 = INSERT_SUBREG %6, %0, %subreg.sub_vrm1_0
+ %7:vrn3m1 = INSERT_SUBREG %5, %1, %subreg.sub_vrm1_1
+ %8:vrn3m1 = INSERT_SUBREG %7, %2, %subreg.sub_vrm1_2
+ PseudoVSSEG3E32_V_M1 killed %8, $noreg, 1, 5 /* e32 */
----------------
mshockwave wrote:
> RISCV::INSERT_SUBREG can be generated to insert an LMUL1 register into an LMUL2 register
Ah thanks for pointing that out. In that case I guess it's still not safe to propagate VL from LMUL2 to LMUL1?
https://github.com/llvm/llvm-project/pull/155467
More information about the llvm-commits
mailing list