Add PassManagerBuilder.loop_vectorize property
This commit is contained in:
parent
edcef56f05
commit
10e83f306f
4 changed files with 51 additions and 1 deletions
|
|
@ -988,6 +988,11 @@ _wrap_obj2obj(LLVMPassManagerBuilderGetSizeLevel, LLVMPassManagerBuilderRef, int
|
|||
_wrap_objint2none(LLVMPassManagerBuilderSetVectorize, LLVMPassManagerBuilderRef)
|
||||
_wrap_obj2obj(LLVMPassManagerBuilderGetVectorize, LLVMPassManagerBuilderRef, int)
|
||||
|
||||
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
|
||||
_wrap_objint2none(LLVMPassManagerBuilderSetLoopVectorize, LLVMPassManagerBuilderRef)
|
||||
_wrap_obj2obj(LLVMPassManagerBuilderGetLoopVectorize, LLVMPassManagerBuilderRef, int)
|
||||
#endif //llvm-3.2
|
||||
|
||||
_wrap_objint2none(LLVMPassManagerBuilderSetDisableUnitAtATime,
|
||||
LLVMPassManagerBuilderRef)
|
||||
_wrap_obj2obj(LLVMPassManagerBuilderGetDisableUnitAtATime,
|
||||
|
|
@ -1989,7 +1994,10 @@ static PyMethodDef core_methods[] = {
|
|||
|
||||
_method( LLVMPassManagerBuilderSetVectorize )
|
||||
_method( LLVMPassManagerBuilderGetVectorize )
|
||||
|
||||
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
|
||||
_method( LLVMPassManagerBuilderSetLoopVectorize )
|
||||
_method( LLVMPassManagerBuilderGetLoopVectorize )
|
||||
#endif // llvm-3.2
|
||||
|
||||
_method( LLVMPassManagerBuilderSetDisableUnitAtATime )
|
||||
_method( LLVMPassManagerBuilderGetDisableUnitAtATime )
|
||||
|
|
|
|||
|
|
@ -669,6 +669,19 @@ int LLVMPassManagerBuilderGetVectorize(LLVMPassManagerBuilderRef pmb){
|
|||
return llvm::unwrap(pmb)->Vectorize;
|
||||
}
|
||||
|
||||
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
|
||||
void LLVMPassManagerBuilderSetLoopVectorize(LLVMPassManagerBuilderRef pmb,
|
||||
int flag)
|
||||
{
|
||||
llvm::unwrap(pmb)->LoopVectorize = flag;
|
||||
}
|
||||
|
||||
int LLVMPassManagerBuilderGetLoopVectorize(LLVMPassManagerBuilderRef pmb){
|
||||
return llvm::unwrap(pmb)->LoopVectorize;
|
||||
}
|
||||
#endif // llvm-3.2
|
||||
|
||||
|
||||
int LLVMPassManagerBuilderGetDisableUnitAtATime(LLVMPassManagerBuilderRef pmb)
|
||||
{
|
||||
return llvm::unwrap(pmb)->DisableUnitAtATime;
|
||||
|
|
|
|||
13
llvm/extra.h
13
llvm/extra.h
|
|
@ -312,6 +312,19 @@ void LLVMPassManagerBuilderSetVectorize(LLVMPassManagerBuilderRef pmb, int flag)
|
|||
*/
|
||||
int LLVMPassManagerBuilderGetVectorize(LLVMPassManagerBuilderRef pmb);
|
||||
|
||||
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
|
||||
/*
|
||||
* Wraps PassManagerBuilder::LoopVectorize
|
||||
*/
|
||||
void LLVMPassManagerBuilderSetLoopVectorize(LLVMPassManagerBuilderRef pmb,
|
||||
int flag);
|
||||
|
||||
/*
|
||||
* Wraps PassManagerBuilder::LoopVectorize
|
||||
*/
|
||||
int LLVMPassManagerBuilderGetLoopVectorize(LLVMPassManagerBuilderRef pmb);
|
||||
#endif // llvm-3.2
|
||||
|
||||
/*
|
||||
* Wraps PassManagerBuilder::DisableUnitAtATime
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ import llvm.core as core # module, function etc.
|
|||
import llvm._core as _core # C wrappers
|
||||
import llvm._util as _util # Utility functions
|
||||
|
||||
import warnings
|
||||
#===----------------------------------------------------------------------===
|
||||
# Pass manager builder
|
||||
#===----------------------------------------------------------------------===
|
||||
|
|
@ -89,6 +90,21 @@ class PassManagerBuilder(object):
|
|||
|
||||
vectorize = property(_get_vectorize, _set_vectorize)
|
||||
|
||||
def _set_loop_vectorize(self, enable):
|
||||
try:
|
||||
_core.LLVMPassManagerBuilderSetLoopVectorize(self.ptr,
|
||||
int(bool(enable)))
|
||||
except AttributeError:
|
||||
warnings.warn("Ignored. LLVM-3.1 & prior do not support loop vectorizer.")
|
||||
|
||||
def _get_loop_vectorize(self):
|
||||
try:
|
||||
return bool(_core.LLVMPassManagerBuilderGetLoopVectorize(self.ptr))
|
||||
except AttributeError:
|
||||
return False
|
||||
|
||||
loop_vectorize = property(_get_loop_vectorize, _set_loop_vectorize)
|
||||
|
||||
def _set_disable_unit_at_a_time(self, disable):
|
||||
return _core.LLVMPassManagerBuilderSetDisableUnitAtATime(
|
||||
self.ptr, disable)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue