Skip to content

Commit 188ca37

Browse files
[RISCV][GISEL] Regbankselect for G_ZEXT, G_SEXT, and G_ANYEXT with scalable vector type
1 parent 35a9393 commit 188ca37

File tree

4 files changed

+2469
-3
lines changed

4 files changed

+2469
-3
lines changed

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,13 +321,19 @@ RISCVRegisterBankInfo::getInstrMapping(const MachineInstr &MI) const {
321321
case TargetOpcode::G_PTRTOINT:
322322
case TargetOpcode::G_INTTOPTR:
323323
case TargetOpcode::G_TRUNC:
324-
case TargetOpcode::G_ANYEXT:
325-
case TargetOpcode::G_SEXT:
326-
case TargetOpcode::G_ZEXT:
327324
case TargetOpcode::G_SEXTLOAD:
328325
case TargetOpcode::G_ZEXTLOAD:
329326
return getInstructionMapping(DefaultMappingID, /*Cost=*/1, GPRValueMapping,
330327
NumOperands);
328+
case TargetOpcode::G_ANYEXT:
329+
case TargetOpcode::G_SEXT:
330+
case TargetOpcode::G_ZEXT: {
331+
// Handle vector extends in the default case below.
332+
if (MRI.getType(MI.getOperand(0).getReg()).isVector())
333+
break;
334+
return getInstructionMapping(DefaultMappingID, /*Cost=*/1, GPRValueMapping,
335+
NumOperands);
336+
}
331337
case TargetOpcode::G_FADD:
332338
case TargetOpcode::G_FSUB:
333339
case TargetOpcode::G_FMUL:

0 commit comments

Comments
 (0)