![]() |
![]() |
![]() |
Liboil Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
OilFunctionImpl; OilFunctionImpl * oil_impl_get_by_index (int i); int oil_impl_is_runnable (OilFunctionImpl *impl); enum OilImplFlag; #define OIL_CPU_FLAG_MASK #define OIL_DEFINE_IMPL_FULL (function,klass,flags) #define OIL_DEFINE_IMPL (function,klass) #define OIL_DEFINE_IMPL_REF (function,klass) #define OIL_DEFINE_IMPL_ASM (function,klass) #define OIL_DEFINE_IMPL_DEPENDS (function,klass,...)
typedef struct { } OilFunctionImpl;
An opaque structure representing a function implementation.
OilFunctionImpl * oil_impl_get_by_index (int i);
Returns a pointer to the function implementation with index i
.
|
index |
Returns : |
a pointer to a function implementation structure |
int oil_impl_is_runnable (OilFunctionImpl *impl);
Determines whether the function implementation given by impl
can be executed by the current CPU.
|
an OilFunctionImpl
|
Returns : |
1 if the implementation can be executed, otherwise 0 |
typedef enum { OIL_IMPL_FLAG_REF = (1<<0), OIL_IMPL_FLAG_OPT = (1<<1), OIL_IMPL_FLAG_ASM = (1<<2), OIL_IMPL_FLAG_DISABLED = (1<<3), OIL_IMPL_FLAG_CMOV = (1<<16), OIL_IMPL_FLAG_MMX = (1<<17), OIL_IMPL_FLAG_SSE = (1<<18), OIL_IMPL_FLAG_MMXEXT = (1<<19), OIL_IMPL_FLAG_SSE2 = (1<<20), OIL_IMPL_FLAG_3DNOW = (1<<21), OIL_IMPL_FLAG_3DNOWEXT = (1<<22), OIL_IMPL_FLAG_SSE3 = (1<<23), OIL_IMPL_FLAG_ALTIVEC = (1<<24), OIL_IMPL_FLAG_EDSP = (1<<25), OIL_IMPL_FLAG_ARM6 = (1<<26), OIL_IMPL_FLAG_VFP = (1<<27), OIL_IMPL_FLAG_SSSE3 = (1<<28) } OilImplFlag;
Implementation flags.
OIL_IMPL_FLAG_REF
: is the reference implementation for the class.
OIL_IMPL_FLAG_OPT
: was compiled with alternate CFLAGS as specified
by --enable-alternate-optimization.
OIL_IMPL_FLAG_ASM
: is written in assembly code.
OIL_IMPL_FLAG_DISABLED
: is disabled. This can be set either in the
source code or during library initialization.
OIL_IMPL_FLAG_CMOV
: uses the i386 instruction cmov or its variants.
OIL_IMPL_FLAG_MMX
: uses MMX instructions.
OIL_IMPL_FLAG_SSE
: uses SSE instructions.
OIL_IMPL_FLAG_MMXEXT
: uses AMD's extended MMX instructions. These
are a subset of what Intel calls SSE2. If an implementation uses
only AMD's extended MMX instructions, it should set this flag, and
not OIL_IMPL_FLAG_SSE2
.
OIL_IMPL_FLAG_SSE2
: uses SSE2 instructions. This flag implies
OIL_IMPL_FLAG_SSE
and OIL_IMPL_FLAG_MMXEXT
.
OIL_IMPL_FLAG_3DNOW
: uses 3DNow! instructions.
OIL_IMPL_FLAG_3DNOWEXT
: uses extended 3DNow! instructions.
OIL_IMPL_FLAG_SSE3
: uses SSE3 instructions. This flag implies
OIL_IMPL_FLAG_SSE2
.
OIL_IMPL_FLAG_SSSE3
: uses SSSE3 instructions. This flag implies
OIL_IMPL_FLAG_SSE3
.
OIL_IMPL_FLAG_ALTIVEC
: uses Altivec instructions.
#define OIL_CPU_FLAG_MASK 0xffff0000
Mask describing which bits in OilImplFlag depend on the current CPU.
#define OIL_DEFINE_IMPL_FULL(function,klass,flags)
Defines a OilFunctionImpl structure for the function function
and class klass
. CPU-dependent flags in flags
will indicate
that this implementation requires the given CPU flags.
|
name of function |
|
name of class to declare (without oil_ prefix) |
|
implementation flags and CPU requirements |
#define OIL_DEFINE_IMPL(function,klass)
Shorthand for defining a C implementation. See OIL_DEFINE_IMPL_FULL()
.
|
name of function |
|
name of class to declare (without oil_ prefix) |
#define OIL_DEFINE_IMPL_REF(function,klass)
Shorthand for defining a reference implementation. See OIL_DEFINE_IMPL_FULL()
.
|
name of function |
|
name of class to declare (without oil_ prefix) |
#define OIL_DEFINE_IMPL_ASM(function,klass)
Shorthand for defining an implementation written in inline
assembly code. See OIL_DEFINE_IMPL_FULL()
.
|
name of function |
|
name of class to declare (without oil_ prefix) |
#define OIL_DEFINE_IMPL_DEPENDS(function,klass,...)
Shorthand for defining an implementation that uses another Liboil
function class. This is not currently used. See
OIL_DEFINE_IMPL_FULL()
.
|
name of function |
|
name of class to declare (without oil_ prefix) |
|
other classes this implementation uses |