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
the
   /// known library functions, return true and set F to the corresponding
value.
-  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.

cheers,
--renato
-------------- 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