[LLVMdev] how do I disable vectorization passes for a target by default?

22 views
Skip to first unread message

Robert Lytton

unread,
Aug 23, 2013, 1:30:15 PM8/23/13
to llv...@cs.uiuc.edu
Hi

I would like to disable vectorization on the XCore target by default.

I assume I need to push_back -fno-vectorize in clang/lib/driver/Tools.cpp for Triple::xcore.

Should I also disable the pass in llvm explicitly?
I tried setting getNumberOfRegisters in XCoreTTI::TargetTransformInfo viz:

  unsigned getNumberOfRegisters(bool Vector) const {
    if (Vector) {
       return 0;
    }
    return 12;
  }

But this made no difference (I need to double check).

What is the correct way to disable vectorization passes?

Robert

Nadav Rotem

unread,
Aug 23, 2013, 2:00:36 PM8/23/13
to Robert Lytton, llv...@cs.uiuc.edu
Hi Robert, 

The best way is to push “-vectorize-loops=false”. You can look at PassManagerBuilder.cpp in LLVM to see the flag.  You can also run "clang -###” to see which flags the compiler driver passes.  Setting the register number will only influence the unroll-factor of the vectorized code. You would also want to vectorize the SLP-vectorizer in a similar way.  

Thanks,
Nadav

_______________________________________________
LLVM Developers mailing list
LLV...@cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

Reply all
Reply to author
Forward
0 new messages