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);
57 #define ACTIVATION_OP2(op, x) op##_op(x) 58 #define ACTIVATION_OP(op, x) ACTIVATION_OP2(op, x) 60 #if defined(S1_VAL) && defined(S2_VAL) 61 #if defined(O1_VAL) && defined(O2_VAL) 62 #define PERFORM_ACTIVATION_QUANT(act, data) \ 64 data = ACTIVATION_OP(act, data); \ 66 VEC_DATA_TYPE(float, VEC_SIZE) \ 67 fdata = CONVERT(data, VEC_DATA_TYPE(float, VEC_SIZE)); \ 69 fdata = round((fdata - (float)O1_VAL) * ((float)S1_VAL / (float)S2_VAL) + (float)O2_VAL); \ 70 data = CONVERT_SAT(fdata, VEC_DATA_TYPE(DATA_TYPE, VEC_SIZE)); \ 72 #else // defined(O1_VAL) && defined(O2_VAL) 73 #define PERFORM_ACTIVATION_QUANT(act, data) \ 75 data = ACTIVATION_OP(act, data); \ 77 VEC_DATA_TYPE(float, VEC_SIZE) \ 78 fdata = CONVERT(data, VEC_DATA_TYPE(float, VEC_SIZE)); \ 80 fdata = round((fdata) * ((float)S1_VAL / (float)S2_VAL)); \ 81 data = CONVERT_SAT(fdata, VEC_DATA_TYPE(DATA_TYPE, VEC_SIZE)); \ 85 #define PERFORM_ACTIVATION_QUANT(act, data) \ 87 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)