24.02.1
|
Go to the documentation of this file.
27 #define TYPE VEC_DATA_TYPE(DATA_TYPE, VEC_SIZE)
29 #if defined(S1_VAL) && !defined(S2_VAL)
31 #endif // defined(S1_VAL) && !defined(S2_VAL)
32 #if defined(O1_VAL) && !defined(O2_VAL)
34 #endif // defined(O1_VAL) && !defined(O2_VAL)
39 return max((
TYPE)CONST_0, x);
44 return min((
TYPE)A_VAL, max((
TYPE)CONST_0, x));
49 return min(max(x, (
TYPE)B_VAL), (
TYPE)A_VAL);
62 #define ACTIVATION_OP2(op, x) op##_op(x)
63 #define ACTIVATION_OP(op, x) ACTIVATION_OP2(op, x)
65 #if defined(S1_VAL) && defined(S2_VAL)
66 #if defined(O1_VAL) && defined(O2_VAL)
67 #define PERFORM_ACTIVATION_QUANT(act, data) \
69 data = ACTIVATION_OP(act, data); \
71 VEC_DATA_TYPE(float, VEC_SIZE) \
72 fdata = CONVERT(data, VEC_DATA_TYPE(float, VEC_SIZE)); \
74 fdata = round((fdata - (float)O1_VAL) * ((float)S1_VAL / (float)S2_VAL) + (float)O2_VAL); \
75 data = CONVERT_SAT(fdata, VEC_DATA_TYPE(DATA_TYPE, VEC_SIZE)); \
77 #else // defined(O1_VAL) && defined(O2_VAL)
78 #define PERFORM_ACTIVATION_QUANT(act, data) \
80 data = ACTIVATION_OP(act, data); \
82 VEC_DATA_TYPE(float, VEC_SIZE) \
83 fdata = CONVERT(data, VEC_DATA_TYPE(float, VEC_SIZE)); \
85 fdata = round((fdata) * ((float)S1_VAL / (float)S2_VAL)); \
86 data = CONVERT_SAT(fdata, VEC_DATA_TYPE(DATA_TYPE, VEC_SIZE)); \
90 #define PERFORM_ACTIVATION_QUANT(act, data) ({ data = ACTIVATION_OP(act, data); })
DATA_TYPEVEC_SIZE hard_swish_op(DATA_TYPEVEC_SIZE x)
DATA_TYPEVEC_SIZE brelu_op(DATA_TYPEVEC_SIZE x)
DATA_TYPEVEC_SIZE relu_op(DATA_TYPEVEC_SIZE x)
DATA_TYPEVEC_SIZE lu_brelu_op(DATA_TYPEVEC_SIZE x)
DATA_TYPEVEC_SIZE identiy_op(DATA_TYPEVEC_SIZE x)