Skip to content

Commit cf9c153

Browse files
fixup! add load support
1 parent 8b59858 commit cf9c153

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,24 +273,32 @@ static OperandInfo getOperandInfo(const MachineOperand &MO,
273273
// Vector Indexed Instructions
274274
// vs(o|u)xei<eew>.v
275275
// Dest EEW=SEW, EMUL=LMUL. Source EEW=<eew> and EMUL=(EEW/SEW)*LMUL
276+
case RISCV::VLUXEI8_V:
277+
case RISCV::VLOXEI8_V:
276278
case RISCV::VSUXEI8_V:
277279
case RISCV::VSOXEI8_V: {
278280
if (IsMODef)
279281
return OperandInfo(MIVLMul, MILog2SEW);
280282
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(3, MI), 3);
281283
}
284+
case RISCV::VLUXEI16_V:
285+
case RISCV::VLOXEI16_V:
282286
case RISCV::VSUXEI16_V:
283287
case RISCV::VSOXEI16_V: {
284288
if (IsMODef)
285289
return OperandInfo(MIVLMul, MILog2SEW);
286290
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(4, MI), 4);
287291
}
292+
case RISCV::VLUXEI32_V:
293+
case RISCV::VLOXEI32_V:
288294
case RISCV::VSUXEI32_V:
289295
case RISCV::VSOXEI32_V: {
290296
if (IsMODef)
291297
return OperandInfo(MIVLMul, MILog2SEW);
292298
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(5, MI), 5);
293299
}
300+
case RISCV::VLUXEI64_V:
301+
case RISCV::VLOXEI64_V:
294302
case RISCV::VSUXEI64_V:
295303
case RISCV::VSOXEI64_V: {
296304
if (IsMODef)

llvm/test/CodeGen/RISCV/rvv/vl-opt-op-info.mir

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,42 @@ body: |
613613
%y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0
614614
...
615615
---
616+
name: vluxeiN_v
617+
body: |
618+
bb.0:
619+
; CHECK-LABEL: name: vluxeiN_v
620+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
621+
; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */
622+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
623+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
624+
%y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0
625+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0
626+
...
627+
---
628+
name: vluxeiN_v_incompatible_eew
629+
body: |
630+
bb.0:
631+
; CHECK-LABEL: name: vluxeiN_v_incompatible_eew
632+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0 /* tu, mu */
633+
; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */
634+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
635+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 4 /* e16 */, 0
636+
%y:vr = PseudoVLUXEI8_V_M1_M1 $noreg, $noreg, %x, 1, 3 /* e8 */, 0
637+
%z:vr = PseudoVADD_VV_M1 $noreg, %y, $noreg, 1, 3 /* e8 */, 0
638+
...
639+
---
640+
name: vluxeiN_v_incompatible_emul
641+
body: |
642+
bb.0:
643+
; CHECK-LABEL: name: vluxeiN_v_incompatible_emul
644+
; CHECK: %x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0 /* tu, mu */
645+
; CHECK-NEXT: %y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0 /* tu, mu */
646+
; CHECK-NEXT: %z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 3 /* e8 */, 0 /* tu, mu */
647+
%x:vr = PseudoVADD_VV_M1 $noreg, $noreg, $noreg, -1, 3 /* e8 */, 0
648+
%y:vr = PseudoVLUXEI8_V_MF2_MF2 $noreg, $noreg, %x, 1, 3 /* e8 */, 0
649+
%z:vr = PseudoVADD_VV_MF2 $noreg, %y, $noreg, 1, 3 /* e8 */, 0
650+
...
651+
---
616652
name: vmop_mm_incompatible_eew
617653
body: |
618654
bb.0:

0 commit comments

Comments
 (0)