[llvm] [RISCV][GISel] Support select vx, vf form rvv intrinsics (PR #157398)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 17 09:14:40 PDT 2025
================
@@ -723,8 +723,28 @@ bool RISCVLegalizerInfo::legalizeIntrinsic(LegalizerHelper &Helper,
MachineInstr &MI) const {
Intrinsic::ID IntrinsicID = cast<GIntrinsic>(MI).getIntrinsicID();
- if (RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IntrinsicID))
+ if (const RISCVVIntrinsicsTable::RISCVVIntrinsicInfo *II =
+ RISCVVIntrinsicsTable::getRISCVVIntrinsicInfo(IntrinsicID)) {
+ if (II->hasScalarOperand() && !II->IsFPIntrinsic) {
+ MachineIRBuilder &MIRBuilder = Helper.MIRBuilder;
+ MachineRegisterInfo &MRI = *MIRBuilder.getMRI();
+
+ auto OldScalar = MI.getOperand(II->ScalarOperand + 2).getReg();
+ // Legalize integer vx form intrinsic.
+ if (MRI.getType(OldScalar).isScalar()) {
+ if (MRI.getType(OldScalar).getSizeInBits() < sXLen.getSizeInBits()) {
+ Helper.Observer.changingInstr(MI);
+ Helper.widenScalarSrc(MI, sXLen, II->ScalarOperand + 2,
+ TargetOpcode::G_ANYEXT);
+ Helper.Observer.changedInstr(MI);
+ } else if (MRI.getType(OldScalar).getSizeInBits() >
+ sXLen.getSizeInBits()) {
+ // TODO: i64 in riscv32.
----------------
topperc wrote:
Should we return false here so it fails?
https://github.com/llvm/llvm-project/pull/157398
More information about the llvm-commits
mailing list