[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