Skip to content

Commit b253a80

Browse files
[RISCV][VLOPT] Add mask load to isSupported and getOperandInfo (#122030)
Add mask store to getOperandInfo since it has the same behavior.
1 parent bfb0a51 commit b253a80

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@ static OperandInfo getOperandInfo(const MachineOperand &MO,
245245
// Vector Unit-Stride Instructions
246246
// Vector Strided Instructions
247247
/// Dest EEW encoded in the instruction and EMUL=(EEW/SEW)*LMUL
248+
case RISCV::VLM_V:
249+
case RISCV::VSM_V:
250+
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(0, MI), 0);
248251
case RISCV::VLE8_V:
249252
case RISCV::VSE8_V:
250253
case RISCV::VLSE8_V:
@@ -744,6 +747,7 @@ static bool isSupportedInstr(const MachineInstr &MI) {
744747
switch (RVV->BaseInstr) {
745748
// Vector Unit-Stride Instructions
746749
// Vector Strided Instructions
750+
case RISCV::VLM_V:
747751
case RISCV::VLE8_V:
748752
case RISCV::VLSE8_V:
749753
case RISCV::VLE16_V:

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -573,6 +573,26 @@ body: |
573573
PseudoVSE8_V_MF2 %x, $noreg, 1, 3 /* e8 */
574574
...
575575
---
576+
name: vsm_v
577+
body: |
578+
bb.0:
579+
; CHECK-LABEL: name: vsm_v
580+
; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, 1, 0 /* e8 */
581+
; CHECK-NEXT: PseudoVSM_V_B8 %x, $noreg, 1, 0 /* e8 */
582+
%x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0
583+
PseudoVSM_V_B8 %x, $noreg, 1, 0
584+
...
585+
---
586+
name: vsm_v_incompatible_emul
587+
body: |
588+
bb.0:
589+
; CHECK-LABEL: name: vsm_v_incompatible_emul
590+
; CHECK: %x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0 /* e8 */
591+
; CHECK-NEXT: PseudoVSM_V_B16 %x, $noreg, 1, 0 /* e8 */
592+
%x:vr = PseudoVMAND_MM_B8 $noreg, $noreg, -1, 0
593+
PseudoVSM_V_B16 %x, $noreg, 1, 0
594+
...
595+
---
576596
name: vleN_v
577597
body: |
578598
bb.0:
@@ -603,6 +623,36 @@ body: |
603623
%x:vr = PseudoVADD_VV_MF2 $noreg, %x, $noreg, 1, 3 /* e8 */, 0
604624
...
605625
---
626+
name: vlm_v
627+
body: |
628+
bb.0:
629+
; CHECK-LABEL: name: vlm_v
630+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, 1, 0 /* e8 */, 0 /* tu, mu */
631+
; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0 /* e8 */
632+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
633+
%y:vr = PseudoVMAND_MM_B8 $noreg, %x, 1, 0
634+
...
635+
---
636+
name: vlm_v_incompatible_eew
637+
body: |
638+
bb.0:
639+
; CHECK-LABEL: name: vlm_v_incompatible_eew
640+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0 /* e8 */, 0 /* tu, mu */
641+
; CHECK-NEXT: %y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0 /* tu, mu */
642+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
643+
%y:vr = PseudoVADD_VV_M1 $noreg, $noreg, %x, 1, 4 /* e16 */, 0
644+
...
645+
---
646+
name: vlm_v_incompatible_emul
647+
body: |
648+
bb.0:
649+
; CHECK-LABEL: name: vlm_v_incompatible_emul
650+
; CHECK: %x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0 /* e8 */, 0 /* tu, mu */
651+
; CHECK-NEXT: %y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0 /* e8 */
652+
%x:vr = PseudoVLM_V_B8 $noreg, $noreg, -1, 0, 0
653+
%y:vr = PseudoVMAND_MM_B16 $noreg, %x, 1, 0
654+
...
655+
---
606656
name: vsseN_v
607657
body: |
608658
bb.0:

0 commit comments

Comments
 (0)