[llvm] [VPlan] Use VPWidenIntrinsicRecipe to support binary and unary operations with EVL-vectorization (PR #114205)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 1 11:31:23 PDT 2024


================
@@ -970,24 +967,45 @@ void VPWidenIntrinsicRecipe::execute(VPTransformState &State) {
     Args.push_back(Arg);
   }
 
-  // Use vector version of the intrinsic.
-  Module *M = State.Builder.GetInsertBlock()->getModule();
-  Function *VectorF =
-      Intrinsic::getOrInsertDeclaration(M, VectorIntrinsicID, TysForDecl);
-  assert(VectorF && "Can't retrieve vector intrinsic.");
+  if (VPIntrinsic::isVPIntrinsic(VectorIntrinsicID) &&
+      VectorIntrinsicID != Intrinsic::vp_select) {
+    VectorBuilder VBuilder(State.Builder);
----------------
alexey-bataev wrote:

I don't think we need to use VectorBuilder here, the intrinsic call may be emitted directly as a regular intrinsic

https://github.com/llvm/llvm-project/pull/114205


More information about the llvm-commits mailing list