Skip to content

Commit cad3091

Browse files
[RISCV][VLOPT] Add vector integer cmp instructions to isSupportedInstr and getOperandInfo
1 parent 2e9bfca commit cad3091

File tree

3 files changed

+525
-2
lines changed

3 files changed

+525
-2
lines changed

llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,32 @@ static OperandInfo getOperandInfo(const MachineInstr &MI,
521521
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(0, MI), 0);
522522
}
523523

524+
// Vector Integer Compare Instructions
525+
// Dest EEW=1 and EMUL=(EEW/SEW)*LMUL. Source EEW=SEW and EMUL=LMUL.
526+
case RISCV::VMSEQ_VI:
527+
case RISCV::VMSEQ_VV:
528+
case RISCV::VMSEQ_VX:
529+
case RISCV::VMSNE_VI:
530+
case RISCV::VMSNE_VV:
531+
case RISCV::VMSNE_VX:
532+
case RISCV::VMSLTU_VV:
533+
case RISCV::VMSLTU_VX:
534+
case RISCV::VMSLT_VV:
535+
case RISCV::VMSLT_VX:
536+
case RISCV::VMSLEU_VV:
537+
case RISCV::VMSLEU_VI:
538+
case RISCV::VMSLEU_VX:
539+
case RISCV::VMSLE_VV:
540+
case RISCV::VMSLE_VI:
541+
case RISCV::VMSLE_VX:
542+
case RISCV::VMSGTU_VI:
543+
case RISCV::VMSGTU_VX:
544+
case RISCV::VMSGT_VI:
545+
case RISCV::VMSGT_VX:
546+
if (IsMODef)
547+
return OperandInfo(RISCVVType::getEMULEqualsEEWDivSEWTimesLMUL(0, MI), 0);
548+
return OperandInfo(MIVLMul, MILog2SEW);
549+
524550
default:
525551
return {};
526552
}
@@ -599,7 +625,26 @@ static bool isSupportedInstr(const MachineInstr &MI) {
599625
case RISCV::VNSRA_WV:
600626
case RISCV::VNSRA_WX:
601627
// Vector Integer Compare Instructions
602-
// FIXME: Add support
628+
case RISCV::VMSEQ_VI:
629+
case RISCV::VMSEQ_VV:
630+
case RISCV::VMSEQ_VX:
631+
case RISCV::VMSNE_VI:
632+
case RISCV::VMSNE_VV:
633+
case RISCV::VMSNE_VX:
634+
case RISCV::VMSLTU_VV:
635+
case RISCV::VMSLTU_VX:
636+
case RISCV::VMSLT_VV:
637+
case RISCV::VMSLT_VX:
638+
case RISCV::VMSLEU_VV:
639+
case RISCV::VMSLEU_VI:
640+
case RISCV::VMSLEU_VX:
641+
case RISCV::VMSLE_VV:
642+
case RISCV::VMSLE_VI:
643+
case RISCV::VMSLE_VX:
644+
case RISCV::VMSGTU_VI:
645+
case RISCV::VMSGTU_VX:
646+
case RISCV::VMSGT_VI:
647+
case RISCV::VMSGT_VX:
603648
// Vector Integer Min/Max Instructions
604649
case RISCV::VMINU_VV:
605650
case RISCV::VMINU_VX:

0 commit comments

Comments
 (0)