#define _CLC_POWN_INTRINSIC "llvm.powi" #define _CLC_POWN_DECL(GENTYPE, INTTYPE) \ _CLC_OVERLOAD _CLC_DECL GENTYPE pown(GENTYPE x, INTTYPE y); #define _CLC_VECTOR_POWN_DECL(GENTYPE, INTTYPE) \ _CLC_POWN_DECL(GENTYPE##2, INTTYPE##2) \ _CLC_POWN_DECL(GENTYPE##3, INTTYPE##3) \ _CLC_POWN_DECL(GENTYPE##4, INTTYPE##4) \ _CLC_POWN_DECL(GENTYPE##8, INTTYPE##8) \ _CLC_POWN_DECL(GENTYPE##16, INTTYPE##16) _CLC_OVERLOAD float pown(float x, int y) __asm(_CLC_POWN_INTRINSIC ".f32"); _CLC_VECTOR_POWN_DECL(float, int) #ifdef cl_khr_fp64 _CLC_OVERLOAD double pown(double x, int y) __asm(_CLC_POWN_INTRINSIC ".f64"); _CLC_VECTOR_POWN_DECL(double, int) #endif #undef _CLC_POWN_INTRINSIC #undef _CLC_POWN_DECL #undef _CLC_VECTOR_POWN_DECL