Skip to content

Commit e9069db

Browse files
[RISCV][VLOPT] Add masked load to isSupported and getOperandInfo
1 parent 36e4176 commit e9069db

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,9 @@ static OperandInfo getOperandInfo(const MachineOperand &MO,
257257
// Vector Unit-Stride Instructions
258258
// Vector Strided Instructions
259259
/// Dest EEW encoded in the instruction and EMUL=(EEW/SEW)*LMUL
260+
case RISCV::VLM_V:
261+
case RISCV::VSM_V:
262+
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(0, MI), 0);
260263
case RISCV::VLE8_V:
261264
case RISCV::VSE8_V:
262265
case RISCV::VLSE8_V:
@@ -742,6 +745,7 @@ static bool isSupportedInstr(const MachineInstr &MI) {
742745
switch (RVV->BaseInstr) {
743746
// Vector Unit-Stride Instructions
744747
// Vector Strided Instructions
748+
case RISCV::VLM_V:
745749
case RISCV::VLE8_V:
746750
case RISCV::VLSE8_V:
747751
case RISCV::VLE16_V:

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,36 @@ body: |
603603
%x:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0
604604
...
605605
---
606+
name: vlm_v
607+
body: |
608+
bb.0:
609+
; CHECK-LABEL: name: vlm_v
610+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, 1, 0 /* e8 */, 0 /* tu, mu */
611+
; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 /* e8 */
612+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
613+
%y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0
614+
...
615+
---
616+
name: vlm_v_incompatible_eew
617+
body: |
618+
bb.0:
619+
; CHECK-LABEL: name: vlm_v_incompatible_eew
620+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0 /* e8 */, 0 /* tu, mu */
621+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0 /* tu, mu */
622+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
623+
%y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0
624+
...
625+
---
626+
name: vlm_v_incompatible_emul
627+
body: |
628+
bb.0:
629+
; CHECK-LABEL: name: vlm_v_incompatible_emul
630+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0 /* e8 */, 0 /* tu, mu */
631+
; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 /* e8 */
632+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
633+
%y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0
634+
...
635+
---
606636
name: vsseN_v
607637
body: |
608638
bb.0:

0 commit comments

Comments
 (0)