[llvm] [RISCV][GISel] Support select vx, vf form rvv intrinsics (PR #157398)
Jianjian Guan via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 12 03:04:56 PDT 2025
================
@@ -714,6 +714,31 @@ RISCVLegalizerInfo::RISCVLegalizerInfo(const RISCVSubtarget &ST)
bool RISCVLegalizerInfo::legalizeIntrinsic(LegalizerHelper &Helper,
MachineInstr &MI) const {
Intrinsic::ID IntrinsicID = cast<GIntrinsic>(MI).getIntrinsicID();
+
+ if (auto *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()) {
+ auto NewScalar = MRI.createGenericVirtualRegister(sXLen);
+ MIRBuilder.buildExtOrTrunc(TargetOpcode::G_ANYEXT, NewScalar,
----------------
jacquesguan wrote:
Thanks, Addressed.
https://github.com/llvm/llvm-project/pull/157398
More information about the llvm-commits
mailing list