DPC++ Runtime
Runtime libraries for oneAPI DPC++
helper_macros.hpp File Reference

Go to the source code of this file.

Macros

#define GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, NAME, ...)    NAME
 
#define FOR_EACH4_A1(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1)    BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG1)
 
#define FOR_EACH4_A2(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2)
 
#define FOR_EACH4_A3(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3)
 
#define FOR_EACH4_A4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4)
 
#define FOR_EACH4_A5(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5)
 
#define FOR_EACH4_A6(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
 
#define FOR_EACH4_A7(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
 
#define FOR_EACH4_A8(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8)
 
#define FOR_EACH4_A11(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11)
 
#define FOR_EACH4_A14(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11, ARG12, ARG13, ARG14)
 
#define EXPAND(x)   x
 
#define FOR_EACH4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ...)
 
#define FOR_EACH3_BASE(BASE_CASE, FIXED1, FIXED2, FIXED3, ARG1)    BASE_CASE(FIXED1, FIXED2, FIXED3, ARG1)
 
#define FOR_EACH3(BASE_CASE, FIXED1, FIXED2, FIXED3, ...)    FOR_EACH4(FOR_EACH3_BASE, BASE_CASE, FIXED1, FIXED2, FIXED3, __VA_ARGS__)
 
#define FOR_EACH2_BASE(BASE_CASE, FIXED1, FIXED2, ARG1)    BASE_CASE(FIXED1, FIXED2, ARG1)
 
#define FOR_EACH2(BASE_CASE, FIXED1, FIXED2, ...)    FOR_EACH3(FOR_EACH2_BASE, BASE_CASE, FIXED1, FIXED2, __VA_ARGS__)
 
#define FOR_EACH1_BASE(BASE_CASE, FIXED1, ARG1)   BASE_CASE(FIXED1, ARG1)
 
#define FOR_EACH1(BASE_CASE, FIXED1, ...)    FOR_EACH2(FOR_EACH1_BASE, BASE_CASE, FIXED1, __VA_ARGS__)
 
#define FOR_EACH0_BASE(BASE_CASE, ARG1)   BASE_CASE(ARG1)
 
#define FOR_EACH0(BASE_CASE, ...)    FOR_EACH1(FOR_EACH0_BASE, BASE_CASE, __VA_ARGS__)
 
#define ONE_ARG_TYPENAME_TYPE   typename T0
 
#define TWO_ARGS_TYPENAME_TYPE   typename T0, typename T1
 
#define THREE_ARGS_TYPENAME_TYPE   typename T0, typename T1, typename T2
 
#define ONE_ARG_TEMPLATE_TYPE   T0
 
#define TWO_ARGS_TEMPLATE_TYPE   T0, T1
 
#define THREE_ARGS_TEMPLATE_TYPE   T0, T1, T2
 
#define ONE_ARG_TEMPLATE_TYPE_ARG   T0 x
 
#define TWO_ARGS_TEMPLATE_TYPE_ARG   T0 x, T1 y
 
#define THREE_ARGS_TEMPLATE_TYPE_ARG   T0 x, T1 y, T2 z
 
#define ONE_ARG_TEMPLATE_TYPE_ARG_REF   T0 &x
 
#define TWO_ARGS_TEMPLATE_TYPE_ARG_REF   T0 &x, T1 &y
 
#define THREE_ARGS_TEMPLATE_TYPE_ARG_REF   T0 &x, T1 &y, T2 &z
 
#define ONE_ARG_ARG   x
 
#define TWO_ARGS_ARG   x, y
 
#define THREE_ARGS_ARG   x, y, z
 
#define ONE_ARG_SIMPLIFIED_ARG    simplify_if_swizzle_t<T0> { x }
 
#define TWO_ARGS_SIMPLIFIED_ARG    simplify_if_swizzle_t<T0>{x}, simplify_if_swizzle_t<T1> { y }
 
#define THREE_ARGS_SIMPLIFIED_ARG
 
#define TWO_ARGS_ARG_ROTATED   y, x
 
#define THREE_ARGS_ARG_ROTATED   z, x, y
 
#define ONE_ARG_CONVERTED_ARG   detail::builtins::convert_arg(x)
 
#define TWO_ARGS_CONVERTED_ARG    detail::builtins::convert_arg(x), detail::builtins::convert_arg(y)
 
#define THREE_ARGS_CONVERTED_ARG
 
#define ONE_ARG_AUTO_ARG   auto x
 
#define TWO_ARGS_AUTO_ARG   auto x, auto y
 
#define THREE_ARGS_AUTO_ARG   auto x, auto y, auto z
 
#define ONE_ARG_TYPE_ARG(TYPE)   TYPE x
 
#define TWO_ARGS_TYPE_ARG(TYPE)   TYPE x, TYPE y
 
#define THREE_ARGS_TYPE_ARG(TYPE)   TYPE x, TYPE y, TYPE z
 
#define ONE_ARG_TYPE(TYPE)   TYPE
 
#define TWO_ARGS_TYPE(TYPE)   TYPE, TYPE
 
#define THREE_ARGS_TYPE(TYPE)   TYPE, TYPE, TYPE
 
#define ONE_ARG_VEC_TYPE(TYPE, VL)   vec<TYPE, VL>
 
#define TWO_ARGS_VEC_TYPE(TYPE, VL)   vec<TYPE, VL>, vec<TYPE, VL>
 
#define THREE_ARGS_VEC_TYPE(TYPE, VL)    vec<TYPE, VL>, vec<TYPE, VL>, vec<TYPE, VL>
 
#define ONE_ARG_VEC_TYPE_ARG(TYPE, VL)   vec<TYPE, VL> x
 
#define TWO_ARGS_VEC_TYPE_ARG(TYPE, VL)   vec<TYPE, VL> x, vec<TYPE, VL> y
 
#define THREE_ARGS_VEC_TYPE_ARG(TYPE, VL)    vec<TYPE, VL> x, vec<TYPE, VL> y, vec<TYPE, VL> z
 
#define TWO_ARGS_LESS_ONE   ONE_ARG
 
#define THREE_ARGS_LESS_ONE   TWO_ARGS
 
#define SYCL_CONCAT_IMPL(A, B)   A##B
 
#define SYCL_CONCAT(A, B)   SYCL_CONCAT_IMPL(A, B)
 
#define LESS_ONE(NUM_ARGS)   SYCL_CONCAT(NUM_ARGS, _LESS_ONE)
 
#define FP_TYPES   float, double, half
 
#define SIGNED_TYPES   char, signed char, short, int, long, long long
 
#define UNSIGNED_TYPES    unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long
 
#define INTEGER_TYPES   SIGNED_TYPES, UNSIGNED_TYPES
 
#define FIXED_WIDTH_INTEGER_TYPES    int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t
 
#define DEVICE_IMPL_TEMPLATE_CUSTOM_DELEGATE( NUM_ARGS, NAME, ENABLER, DELEGATOR, NS, ...)
 
#define DEVICE_IMPL_TEMPLATE(NUM_ARGS, NAME, ENABLER, ...)
 
#define SYCL_BUILTIN_EXPORT
 
#define HOST_IMPL_TEMPLATE_CUSTOM_DELEGATOR( NUM_ARGS, NAME, ENABLER, FUNC_CLASS, RET_TYPE_TRAITS, DELEGATOR)
 
#define HOST_IMPL_TEMPLATE(NUM_ARGS, NAME, ENABLER, FUNC_CLASS, RET_TYPE_TRAITS)
 
#define HOST_IMPL_SCALAR_RET_TYPE(NUM_ARGS, NAME, RET_TYPE, TYPE)
 
#define HOST_IMPL_SCALAR(NUM_ARGS, NAME, TYPE)    HOST_IMPL_SCALAR_RET_TYPE(NUM_ARGS, NAME, TYPE, TYPE)
 

Macro Definition Documentation

◆ DEVICE_IMPL_TEMPLATE

#define DEVICE_IMPL_TEMPLATE (   NUM_ARGS,
  NAME,
  ENABLER,
  ... 
)
Value:
DEVICE_IMPL_TEMPLATE_CUSTOM_DELEGATE(NUM_ARGS, NAME, ENABLER, \
builtin_marray_impl, sycl, __VA_ARGS__)
#define DEVICE_IMPL_TEMPLATE_CUSTOM_DELEGATE( NUM_ARGS, NAME, ENABLER, DELEGATOR, NS,...)
auto builtin_marray_impl(FuncTy F, const Ts &...x)
Definition: builtins.hpp:119
Definition: access.hpp:18

Definition at line 204 of file helper_macros.hpp.

◆ DEVICE_IMPL_TEMPLATE_CUSTOM_DELEGATE

#define DEVICE_IMPL_TEMPLATE_CUSTOM_DELEGATE (   NUM_ARGS,
  NAME,
  ENABLER,
  DELEGATOR,
  NS,
  ... 
)
Value:
template <NUM_ARGS##_TYPENAME_TYPE> \
detail::ENABLER<NUM_ARGS##_TEMPLATE_TYPE>(NAME)( \
NUM_ARGS##_TEMPLATE_TYPE_ARG) { \
if constexpr (detail::is_marray_v<T0>) { \
return detail::DELEGATOR( \
[](NUM_ARGS##_AUTO_ARG) { return (NS::NAME)(NUM_ARGS##_ARG); }, \
NUM_ARGS##_ARG); \
} else { \
return __VA_ARGS__(NUM_ARGS##_CONVERTED_ARG); \
} \
}

Definition at line 190 of file helper_macros.hpp.

◆ EXPAND

#define EXPAND (   x)    x

Definition at line 73 of file helper_macros.hpp.

◆ FIXED_WIDTH_INTEGER_TYPES

#define FIXED_WIDTH_INTEGER_TYPES    int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t

Definition at line 184 of file helper_macros.hpp.

◆ FOR_EACH0

#define FOR_EACH0 (   BASE_CASE,
  ... 
)     FOR_EACH1(FOR_EACH0_BASE, BASE_CASE, __VA_ARGS__)

Definition at line 98 of file helper_macros.hpp.

◆ FOR_EACH0_BASE

#define FOR_EACH0_BASE (   BASE_CASE,
  ARG1 
)    BASE_CASE(ARG1)

Definition at line 97 of file helper_macros.hpp.

◆ FOR_EACH1

#define FOR_EACH1 (   BASE_CASE,
  FIXED1,
  ... 
)     FOR_EACH2(FOR_EACH1_BASE, BASE_CASE, FIXED1, __VA_ARGS__)

Definition at line 94 of file helper_macros.hpp.

◆ FOR_EACH1_BASE

#define FOR_EACH1_BASE (   BASE_CASE,
  FIXED1,
  ARG1 
)    BASE_CASE(FIXED1, ARG1)

Definition at line 93 of file helper_macros.hpp.

◆ FOR_EACH2

#define FOR_EACH2 (   BASE_CASE,
  FIXED1,
  FIXED2,
  ... 
)     FOR_EACH3(FOR_EACH2_BASE, BASE_CASE, FIXED1, FIXED2, __VA_ARGS__)

Definition at line 90 of file helper_macros.hpp.

◆ FOR_EACH2_BASE

#define FOR_EACH2_BASE (   BASE_CASE,
  FIXED1,
  FIXED2,
  ARG1 
)     BASE_CASE(FIXED1, FIXED2, ARG1)

Definition at line 88 of file helper_macros.hpp.

◆ FOR_EACH3

#define FOR_EACH3 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  ... 
)     FOR_EACH4(FOR_EACH3_BASE, BASE_CASE, FIXED1, FIXED2, FIXED3, __VA_ARGS__)

Definition at line 85 of file helper_macros.hpp.

◆ FOR_EACH3_BASE

#define FOR_EACH3_BASE (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  ARG1 
)     BASE_CASE(FIXED1, FIXED2, FIXED3, ARG1)

Definition at line 83 of file helper_macros.hpp.

◆ FOR_EACH4

#define FOR_EACH4 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ... 
)
Value:
__VA_ARGS__, FOR_EACH4##_A15, FOR_EACH4##_A14, FOR_EACH4##_A13, \
FOR_EACH4##_A12, FOR_EACH4##_A11, FOR_EACH4##_A10, FOR_EACH4##_A9, \
FOR_EACH4##_A8, FOR_EACH4##_A7, FOR_EACH4##_A6, FOR_EACH4##_A5, \
FOR_EACH4##_A4, FOR_EACH4##_A3, FOR_EACH4##_A2, FOR_EACH4##_A1, \
_0, )(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, __VA_ARGS__))
#define FOR_EACH4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4,...)
#define GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, NAME,...)
#define EXPAND(x)

Definition at line 75 of file helper_macros.hpp.

◆ FOR_EACH4_A1

#define FOR_EACH4_A1 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1 
)     BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG1)

Definition at line 23 of file helper_macros.hpp.

◆ FOR_EACH4_A11

#define FOR_EACH4_A11 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5,
  ARG6,
  ARG7,
  ARG8,
  ARG9,
  ARG10,
  ARG11 
)
Value:
FOR_EACH4_A7(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7) \
FOR_EACH4_A4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG8, ARG9, ARG10, \
ARG11)
#define FOR_EACH4_A7(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)

Definition at line 56 of file helper_macros.hpp.

◆ FOR_EACH4_A14

#define FOR_EACH4_A14 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5,
  ARG6,
  ARG7,
  ARG8,
  ARG9,
  ARG10,
  ARG11,
  ARG12,
  ARG13,
  ARG14 
)
Value:
FOR_EACH4_A11(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11) \
FOR_EACH4_A3(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG12, ARG13, ARG14)
#define FOR_EACH4_A11(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7, ARG8, ARG9, ARG10, ARG11)

Definition at line 62 of file helper_macros.hpp.

◆ FOR_EACH4_A2

#define FOR_EACH4_A2 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2 
)
Value:
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG1) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG2)

Definition at line 25 of file helper_macros.hpp.

◆ FOR_EACH4_A3

#define FOR_EACH4_A3 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3 
)
Value:
FOR_EACH4_A2(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG3)
#define FOR_EACH4_A2(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2)

Definition at line 28 of file helper_macros.hpp.

◆ FOR_EACH4_A4

#define FOR_EACH4_A4 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4 
)
Value:
FOR_EACH4_A3(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG4)
#define FOR_EACH4_A3(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3)

Definition at line 32 of file helper_macros.hpp.

◆ FOR_EACH4_A5

#define FOR_EACH4_A5 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5 
)
Value:
FOR_EACH4_A4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG5)
#define FOR_EACH4_A4(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4)

Definition at line 36 of file helper_macros.hpp.

◆ FOR_EACH4_A6

#define FOR_EACH4_A6 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5,
  ARG6 
)
Value:
FOR_EACH4_A5(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4, ARG5) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG6)
#define FOR_EACH4_A5(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5)

Definition at line 41 of file helper_macros.hpp.

◆ FOR_EACH4_A7

#define FOR_EACH4_A7 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5,
  ARG6,
  ARG7 
)
Value:
FOR_EACH4_A6(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG7)
#define FOR_EACH4_A6(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)

Definition at line 46 of file helper_macros.hpp.

◆ FOR_EACH4_A8

#define FOR_EACH4_A8 (   BASE_CASE,
  FIXED1,
  FIXED2,
  FIXED3,
  FIXED4,
  ARG1,
  ARG2,
  ARG3,
  ARG4,
  ARG5,
  ARG6,
  ARG7,
  ARG8 
)
Value:
FOR_EACH4_A7(BASE_CASE, FIXED1, FIXED2, FIXED3, FIXED4, ARG1, ARG2, ARG3, \
ARG4, ARG5, ARG6, ARG7) \
BASE_CASE(FIXED1, FIXED2, FIXED3, FIXED4, ARG8)

Definition at line 51 of file helper_macros.hpp.

◆ FP_TYPES

#define FP_TYPES   float, double, half

Definition at line 175 of file helper_macros.hpp.

◆ GET_MACRO

#define GET_MACRO (   _1,
  _2,
  _3,
  _4,
  _5,
  _6,
  _7,
  _8,
  _9,
  _10,
  _11,
  _12,
  _13,
  _14,
  _15,
  NAME,
  ... 
)     NAME

Definition at line 20 of file helper_macros.hpp.

◆ HOST_IMPL_SCALAR

#define HOST_IMPL_SCALAR (   NUM_ARGS,
  NAME,
  TYPE 
)     HOST_IMPL_SCALAR_RET_TYPE(NUM_ARGS, NAME, TYPE, TYPE)

Definition at line 248 of file helper_macros.hpp.

◆ HOST_IMPL_SCALAR_RET_TYPE

#define HOST_IMPL_SCALAR_RET_TYPE (   NUM_ARGS,
  NAME,
  RET_TYPE,
  TYPE 
)
Value:
inline RET_TYPE(NAME)(NUM_ARGS##_TYPE_ARG(TYPE)) { \
extern SYCL_BUILTIN_EXPORT RET_TYPE __##NAME##_impl( \
NUM_ARGS##_TYPE(TYPE)); \
return __##NAME##_impl(NUM_ARGS##_ARG); \
}
#define SYCL_BUILTIN_EXPORT

Definition at line 241 of file helper_macros.hpp.

◆ HOST_IMPL_TEMPLATE

#define HOST_IMPL_TEMPLATE (   NUM_ARGS,
  NAME,
  ENABLER,
  FUNC_CLASS,
  RET_TYPE_TRAITS 
)
Value:
HOST_IMPL_TEMPLATE_CUSTOM_DELEGATOR(NUM_ARGS, NAME, ENABLER, FUNC_CLASS, \
RET_TYPE_TRAITS, \
#define HOST_IMPL_TEMPLATE_CUSTOM_DELEGATOR( NUM_ARGS, NAME, ENABLER, FUNC_CLASS, RET_TYPE_TRAITS, DELEGATOR)
auto builtin_default_host_impl(FuncTy F, const Ts &...x)
Definition: builtins.hpp:141

Definition at line 235 of file helper_macros.hpp.

◆ HOST_IMPL_TEMPLATE_CUSTOM_DELEGATOR

#define HOST_IMPL_TEMPLATE_CUSTOM_DELEGATOR (   NUM_ARGS,
  NAME,
  ENABLER,
  FUNC_CLASS,
  RET_TYPE_TRAITS,
  DELEGATOR 
)
Value:
template <typename... Ts> auto __##FUNC_CLASS##_##NAME##_lambda(Ts... xs) { \
/* Can't inline into the real lambda due to \
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112867. Can't emulate a \
* lambda through a local struct because templates are not allowed in \
* local structs. Have to specify FUNC_CLASS to avoid \
* ambiguity between, e.g. sycl::__cos_lambda/sycl::native::__cos_lambda \
* or between max in common functions and max in integer functions. \
*/ \
using ret_ty = typename detail::RET_TYPE_TRAITS< \
typename detail::first_type<Ts...>::type>::type; \
extern SYCL_BUILTIN_EXPORT ret_ty __##NAME##_impl(Ts...); \
return __##NAME##_impl(xs...); \
} \
template <NUM_ARGS##_TYPENAME_TYPE> \
detail::ENABLER<NUM_ARGS##_TEMPLATE_TYPE>(NAME)( \
NUM_ARGS##_TEMPLATE_TYPE_ARG) { \
return detail::DELEGATOR( \
[](auto... xs) { return __##FUNC_CLASS##_##NAME##_lambda(xs...); }, \
NUM_ARGS##_ARG); \
}

Definition at line 218 of file helper_macros.hpp.

◆ INTEGER_TYPES

#define INTEGER_TYPES   SIGNED_TYPES, UNSIGNED_TYPES

Definition at line 182 of file helper_macros.hpp.

◆ LESS_ONE

#define LESS_ONE (   NUM_ARGS)    SYCL_CONCAT(NUM_ARGS, _LESS_ONE)

Definition at line 172 of file helper_macros.hpp.

◆ ONE_ARG_ARG

#define ONE_ARG_ARG   x

Definition at line 120 of file helper_macros.hpp.

◆ ONE_ARG_AUTO_ARG

#define ONE_ARG_AUTO_ARG   auto x

Definition at line 144 of file helper_macros.hpp.

◆ ONE_ARG_CONVERTED_ARG

#define ONE_ARG_CONVERTED_ARG   detail::builtins::convert_arg(x)

Definition at line 137 of file helper_macros.hpp.

◆ ONE_ARG_SIMPLIFIED_ARG

#define ONE_ARG_SIMPLIFIED_ARG    simplify_if_swizzle_t<T0> { x }

Definition at line 124 of file helper_macros.hpp.

◆ ONE_ARG_TEMPLATE_TYPE

#define ONE_ARG_TEMPLATE_TYPE   T0

Definition at line 108 of file helper_macros.hpp.

◆ ONE_ARG_TEMPLATE_TYPE_ARG

#define ONE_ARG_TEMPLATE_TYPE_ARG   T0 x

Definition at line 112 of file helper_macros.hpp.

◆ ONE_ARG_TEMPLATE_TYPE_ARG_REF

#define ONE_ARG_TEMPLATE_TYPE_ARG_REF   T0 &x

Definition at line 116 of file helper_macros.hpp.

◆ ONE_ARG_TYPE

#define ONE_ARG_TYPE (   TYPE)    TYPE

Definition at line 152 of file helper_macros.hpp.

◆ ONE_ARG_TYPE_ARG

#define ONE_ARG_TYPE_ARG (   TYPE)    TYPE x

Definition at line 148 of file helper_macros.hpp.

◆ ONE_ARG_TYPENAME_TYPE

#define ONE_ARG_TYPENAME_TYPE   typename T0

Definition at line 104 of file helper_macros.hpp.

◆ ONE_ARG_VEC_TYPE

#define ONE_ARG_VEC_TYPE (   TYPE,
  VL 
)    vec<TYPE, VL>

Definition at line 156 of file helper_macros.hpp.

◆ ONE_ARG_VEC_TYPE_ARG

#define ONE_ARG_VEC_TYPE_ARG (   TYPE,
  VL 
)    vec<TYPE, VL> x

Definition at line 161 of file helper_macros.hpp.

◆ SIGNED_TYPES

#define SIGNED_TYPES   char, signed char, short, int, long, long long

Definition at line 177 of file helper_macros.hpp.

◆ SYCL_BUILTIN_EXPORT

#define SYCL_BUILTIN_EXPORT

Definition at line 211 of file helper_macros.hpp.

◆ SYCL_CONCAT

#define SYCL_CONCAT (   A,
 
)    SYCL_CONCAT_IMPL(A, B)

Definition at line 170 of file helper_macros.hpp.

◆ SYCL_CONCAT_IMPL

#define SYCL_CONCAT_IMPL (   A,
 
)    A##B

Definition at line 169 of file helper_macros.hpp.

◆ THREE_ARGS_ARG

#define THREE_ARGS_ARG   x, y, z

Definition at line 122 of file helper_macros.hpp.

◆ THREE_ARGS_ARG_ROTATED

#define THREE_ARGS_ARG_ROTATED   z, x, y

Definition at line 135 of file helper_macros.hpp.

◆ THREE_ARGS_AUTO_ARG

#define THREE_ARGS_AUTO_ARG   auto x, auto y, auto z

Definition at line 146 of file helper_macros.hpp.

◆ THREE_ARGS_CONVERTED_ARG

#define THREE_ARGS_CONVERTED_ARG
Value:
detail::builtins::convert_arg(x), detail::builtins::convert_arg(y), \
detail::builtins::convert_arg(z)
auto auto autodecltype(x) z
autodecltype(x) x

Definition at line 140 of file helper_macros.hpp.

◆ THREE_ARGS_LESS_ONE

#define THREE_ARGS_LESS_ONE   TWO_ARGS

Definition at line 167 of file helper_macros.hpp.

◆ THREE_ARGS_SIMPLIFIED_ARG

#define THREE_ARGS_SIMPLIFIED_ARG
Value:
simplify_if_swizzle_t<T0>{x}, simplify_if_swizzle_t<T1>{y}, \
simplify_if_swizzle_t<T2> { \
z \
}

Definition at line 128 of file helper_macros.hpp.

◆ THREE_ARGS_TEMPLATE_TYPE

#define THREE_ARGS_TEMPLATE_TYPE   T0, T1, T2

Definition at line 110 of file helper_macros.hpp.

◆ THREE_ARGS_TEMPLATE_TYPE_ARG

#define THREE_ARGS_TEMPLATE_TYPE_ARG   T0 x, T1 y, T2 z

Definition at line 114 of file helper_macros.hpp.

◆ THREE_ARGS_TEMPLATE_TYPE_ARG_REF

#define THREE_ARGS_TEMPLATE_TYPE_ARG_REF   T0 &x, T1 &y, T2 &z

Definition at line 118 of file helper_macros.hpp.

◆ THREE_ARGS_TYPE

#define THREE_ARGS_TYPE (   TYPE)    TYPE, TYPE, TYPE

Definition at line 154 of file helper_macros.hpp.

◆ THREE_ARGS_TYPE_ARG

#define THREE_ARGS_TYPE_ARG (   TYPE)    TYPE x, TYPE y, TYPE z

Definition at line 150 of file helper_macros.hpp.

◆ THREE_ARGS_TYPENAME_TYPE

#define THREE_ARGS_TYPENAME_TYPE   typename T0, typename T1, typename T2

Definition at line 106 of file helper_macros.hpp.

◆ THREE_ARGS_VEC_TYPE

#define THREE_ARGS_VEC_TYPE (   TYPE,
  VL 
)     vec<TYPE, VL>, vec<TYPE, VL>, vec<TYPE, VL>

Definition at line 158 of file helper_macros.hpp.

◆ THREE_ARGS_VEC_TYPE_ARG

#define THREE_ARGS_VEC_TYPE_ARG (   TYPE,
  VL 
)     vec<TYPE, VL> x, vec<TYPE, VL> y, vec<TYPE, VL> z

Definition at line 163 of file helper_macros.hpp.

◆ TWO_ARGS_ARG

#define TWO_ARGS_ARG   x, y

Definition at line 121 of file helper_macros.hpp.

◆ TWO_ARGS_ARG_ROTATED

#define TWO_ARGS_ARG_ROTATED   y, x

Definition at line 134 of file helper_macros.hpp.

◆ TWO_ARGS_AUTO_ARG

#define TWO_ARGS_AUTO_ARG   auto x, auto y

Definition at line 145 of file helper_macros.hpp.

◆ TWO_ARGS_CONVERTED_ARG

#define TWO_ARGS_CONVERTED_ARG    detail::builtins::convert_arg(x), detail::builtins::convert_arg(y)

Definition at line 138 of file helper_macros.hpp.

◆ TWO_ARGS_LESS_ONE

#define TWO_ARGS_LESS_ONE   ONE_ARG

Definition at line 166 of file helper_macros.hpp.

◆ TWO_ARGS_SIMPLIFIED_ARG

#define TWO_ARGS_SIMPLIFIED_ARG    simplify_if_swizzle_t<T0>{x}, simplify_if_swizzle_t<T1> { y }

Definition at line 126 of file helper_macros.hpp.

◆ TWO_ARGS_TEMPLATE_TYPE

#define TWO_ARGS_TEMPLATE_TYPE   T0, T1

Definition at line 109 of file helper_macros.hpp.

◆ TWO_ARGS_TEMPLATE_TYPE_ARG

#define TWO_ARGS_TEMPLATE_TYPE_ARG   T0 x, T1 y

Definition at line 113 of file helper_macros.hpp.

◆ TWO_ARGS_TEMPLATE_TYPE_ARG_REF

#define TWO_ARGS_TEMPLATE_TYPE_ARG_REF   T0 &x, T1 &y

Definition at line 117 of file helper_macros.hpp.

◆ TWO_ARGS_TYPE

#define TWO_ARGS_TYPE (   TYPE)    TYPE, TYPE

Definition at line 153 of file helper_macros.hpp.

◆ TWO_ARGS_TYPE_ARG

#define TWO_ARGS_TYPE_ARG (   TYPE)    TYPE x, TYPE y

Definition at line 149 of file helper_macros.hpp.

◆ TWO_ARGS_TYPENAME_TYPE

#define TWO_ARGS_TYPENAME_TYPE   typename T0, typename T1

Definition at line 105 of file helper_macros.hpp.

◆ TWO_ARGS_VEC_TYPE

#define TWO_ARGS_VEC_TYPE (   TYPE,
  VL 
)    vec<TYPE, VL>, vec<TYPE, VL>

Definition at line 157 of file helper_macros.hpp.

◆ TWO_ARGS_VEC_TYPE_ARG

#define TWO_ARGS_VEC_TYPE_ARG (   TYPE,
  VL 
)    vec<TYPE, VL> x, vec<TYPE, VL> y

Definition at line 162 of file helper_macros.hpp.

◆ UNSIGNED_TYPES

#define UNSIGNED_TYPES    unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long

Definition at line 179 of file helper_macros.hpp.