Skip to content

Commit 8809c28

Browse files
[RISCV][GISEL] Legalize and regbankselect vector typed G_IMPLICIT_DEF
1 parent 8ecfe9a commit 8809c28

File tree

4 files changed

+842
-1
lines changed

4 files changed

+842
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
107107

108108
using namespace TargetOpcode;
109109

110-
111110
auto BoolVecTys = {nxv1s1, nxv2s1, nxv4s1, nxv8s1, nxv16s1, nxv32s1, nxv64s1};
112111

113112
auto IntOrFPVecTys = {nxv1s8, nxv2s8, nxv4s8, nxv8s8, nxv16s8, nxv32s8,
@@ -217,6 +216,8 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
217216

218217
getActionDefinitionsBuilder(G_IMPLICIT_DEF)
219218
.legalFor({s32, sXLen, p0})
219+
.legalIf(typeIsLegalBoolVec(0, BoolVecTys, ST))
220+
.legalIf(typeIsLegalIntOrFPVec(0, IntOrFPVecTys, ST))
220221
.widenScalarToNextPow2(0)
221222
.clampScalar(0, s32, sXLen);
222223

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,11 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
351351
// $f10_d = COPY %1(s32)
352352
if (anyUseOnlyUseFP(Dst, MRI, TRI))
353353
Mapping = getFPValueMapping(MRI.getType(Dst).getSizeInBits());
354+
355+
LLT DstTy = MRI.getType(Dst);
356+
if (DstTy.isVector())
357+
Mapping = getVRBValueMapping(DstTy.getSizeInBits().getKnownMinValue());
358+
354359
return getInstructionMapping(DefaultMappingID, /*Cost=*/1, Mapping,
355360
NumOperands);
356361
}

0 commit comments

Comments
 (0)