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_objint2none(LLVMPassManagerBuilderSetVectorize, LLVMPassManagerBuilderRef)
|
||||||
_wrap_obj2obj(LLVMPassManagerBuilderGetVectorize, LLVMPassManagerBuilderRef, int)
|
_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,
|
_wrap_objint2none(LLVMPassManagerBuilderSetDisableUnitAtATime,
|
||||||
LLVMPassManagerBuilderRef)
|
LLVMPassManagerBuilderRef)
|
||||||
_wrap_obj2obj(LLVMPassManagerBuilderGetDisableUnitAtATime,
|
_wrap_obj2obj(LLVMPassManagerBuilderGetDisableUnitAtATime,
|
||||||
|
|
@ -1989,7 +1994,10 @@ static PyMethodDef core_methods[] = {
|
||||||
|
|
||||||
_method( LLVMPassManagerBuilderSetVectorize )
|
_method( LLVMPassManagerBuilderSetVectorize )
|
||||||
_method( LLVMPassManagerBuilderGetVectorize )
|
_method( LLVMPassManagerBuilderGetVectorize )
|
||||||
|
#if LLVM_VERSION_MAJOR >= 3 && LLVM_VERSION_MINOR >= 2
|
||||||
|
_method( LLVMPassManagerBuilderSetLoopVectorize )
|
||||||
|
_method( LLVMPassManagerBuilderGetLoopVectorize )
|
||||||
|
#endif // llvm-3.2
|
||||||
|
|
||||||
_method( LLVMPassManagerBuilderSetDisableUnitAtATime )
|
_method( LLVMPassManagerBuilderSetDisableUnitAtATime )
|
||||||
_method( LLVMPassManagerBuilderGetDisableUnitAtATime )
|
_method( LLVMPassManagerBuilderGetDisableUnitAtATime )
|
||||||
|
|
|
||||||
|
|
@ -669,6 +669,19 @@ int LLVMPassManagerBuilderGetVectorize(LLVMPassManagerBuilderRef pmb){
|
||||||
return llvm::unwrap(pmb)->Vectorize;
|
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)
|
int LLVMPassManagerBuilderGetDisableUnitAtATime(LLVMPassManagerBuilderRef pmb)
|
||||||
{
|
{
|
||||||
return llvm::unwrap(pmb)->DisableUnitAtATime;
|
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);
|
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
|
* Wraps PassManagerBuilder::DisableUnitAtATime
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import llvm.core as core # module, function etc.
|
||||||
import llvm._core as _core # C wrappers
|
import llvm._core as _core # C wrappers
|
||||||
import llvm._util as _util # Utility functions
|
import llvm._util as _util # Utility functions
|
||||||
|
|
||||||
|
import warnings
|
||||||
#===----------------------------------------------------------------------===
|
#===----------------------------------------------------------------------===
|
||||||
# Pass manager builder
|
# Pass manager builder
|
||||||
#===----------------------------------------------------------------------===
|
#===----------------------------------------------------------------------===
|
||||||
|
|
@ -89,6 +90,21 @@ class PassManagerBuilder(object):
|
||||||
|
|
||||||
vectorize = property(_get_vectorize, _set_vectorize)
|
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):
|
def _set_disable_unit_at_a_time(self, disable):
|
||||||
return _core.LLVMPassManagerBuilderSetDisableUnitAtATime(
|
return _core.LLVMPassManagerBuilderSetDisableUnitAtATime(
|
||||||
self.ptr, disable)
|
self.ptr, disable)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue