Skip to content

Commit 62598cf

Browse files
[RISCV][GISEL] Regbank select for scalable vector G_ICMP
1 parent dd47ba5 commit 62598cf

File tree

2 files changed

+688
-0
lines changed

2 files changed

+688
-0
lines changed

llvm/lib/Target/RISCV/GISel/RISCVRegisterBankInfo.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,19 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
488488
OpdsMapping[1] = GPRValueMapping;
489489
break;
490490
}
491+
case TargetOpcode::G_ICMP: {
492+
if (MRI.getType(MI.getOperand(0).getReg()).isVector()) {
493+
LLT DstTy = MRI.getType(MI.getOperand(0).getReg());
494+
LLT SrcTy = MRI.getType(MI.getOperand(2).getReg());
495+
OpdsMapping[0] =
496+
getVRBValueMapping(DstTy.getSizeInBits().getKnownMinValue());
497+
OpdsMapping[2] = OpdsMapping[3] =
498+
getVRBValueMapping(SrcTy.getSizeInBits().getKnownMinValue());
499+
} else {
500+
OpdsMapping[0] = OpdsMapping[2] = OpdsMapping[3] = GPRValueMapping;
501+
}
502+
break;
503+
}
491504
case TargetOpcode::G_FCMP: {
492505
LLT Ty = MRI.getType(MI.getOperand(2).getReg());
493506

0 commit comments

Comments
 (0)