Skip to content

Commit dbd884c

Browse files
[RISCV][GISEL] Add vector RegisterBanks and vector support in getRegBankFromRegClass
Vector Register banks are created for the various register vector register groupings. getRegBankFromRegClass is implemented to go from vector TargetRegisterClass to the corresponding vector RegisterBank.
1 parent f219e03 commit dbd884c

File tree

4 files changed

+1277
-3
lines changed

4 files changed

+1277
-3
lines changed

llvm/lib/CodeGen/MachineVerifier.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1966,9 +1966,6 @@ void MachineVerifier::visitMachineInstrBefore(const MachineInstr *MI) {
19661966
if (SrcReg.isVirtual() && DstReg.isPhysical() && SrcSize.isScalable() &&
19671967
!DstSize.isScalable())
19681968
break;
1969-
if (SrcReg.isVirtual() && DstReg.isPhysical() && SrcSize.isScalable() &&
1970-
!DstSize.isScalable())
1971-
break;
19721969

19731970
if (SrcSize.isNonZero() && DstSize.isNonZero() && SrcSize != DstSize) {
19741971
if (!DstOp.getSubReg() && !SrcOp.getSubReg()) {

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,20 @@ RISCVRegisterBankInfo::getRegBankFromRegClass(const TargetRegisterClass &RC,
100100
case RISCV::FPR64CRegClassID:
101101
case RISCV::FPR32CRegClassID:
102102
return getRegBank(RISCV::FPRBRegBankID);
103+
case RISCV::VMRegClassID:
104+
case RISCV::VRRegClassID:
105+
case RISCV::VRNoV0RegClassID:
106+
case RISCV::VRM2RegClassID:
107+
case RISCV::VRM2NoV0RegClassID:
108+
case RISCV::VRM4RegClassID:
109+
case RISCV::VRM4NoV0RegClassID:
110+
case RISCV::VMV0RegClassID:
111+
case RISCV::VRM2_with_sub_vrm1_0_in_VMV0RegClassID:
112+
case RISCV::VRM4_with_sub_vrm1_0_in_VMV0RegClassID:
113+
case RISCV::VRM8RegClassID:
114+
case RISCV::VRM8NoV0RegClassID:
115+
case RISCV::VRM8_with_sub_vrm1_0_in_VMV0RegClassID:
116+
return getRegBank(RISCV::VRBRegBankID);
103117
}
104118
}
105119

llvm/lib/Target/RISCV/GISel/RISCVRegisterBanks.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,7 @@ def GPRBRegBank : RegisterBank<"GPRB", [GPR]>;
1414

1515
/// Floating Point Registers: F.
1616
def FPRBRegBank : RegisterBank<"FPRB", [FPR64]>;
17+
18+
/// Vector Registers : V.
19+
def VRBRegBank : RegisterBank<"VRB", [VRM8]>;
20+

0 commit comments

Comments
 (0)