RFC: Enable vectorization of call instructions in the loop vectorizer

Renato Golin renato.golin at linaro.org
Thu Dec 19 05:25:46 PST 2013

Hi James,

Comments below.

   /// getLibFunc - Search for a particular function name.  If it is one of
   /// known library functions, return true and set F to the corresponding
-  bool getLibFunc(StringRef funcName, LibFunc::Func &F) const;
+  virtual bool getLibFunc(StringRef funcName, LibFunc::Func &F) const;

Are you going to use this for non-Lib calls, too? If so, I suggest changing
the names of this and related calls.

+  virtual Function *getScalarized(LibFunc::Func F) {
+    return NULL;
+  }
+  virtual Function *getVectorized(LibFunc::Func F, unsigned VF) {
+    return NULL;
+  }

These could be merged into: getFunction(Func, VF)
and if VF == 1, you return the scalarized one. Other calls in the
vectorizer do that.

+  virtual CallInst *getVectorizedCall(LibFunc::Func F, unsigned VF,
+                                      ArrayRef<Value*> Args) {
+    return NULL;
+  }

and getFunctionCall(...)
with the same behaviour about VF above.

AFACT, the scalar and vector parts of the vectorizer are well defined, and
you don't need to specify it explicitly.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131219/022074f7/attachment.html>

More information about the llvm-commits mailing list