32 #include "tests/datasets/ShapeDatasets.h"
37 #include "tests/validation/fixtures/AddMulAddFixture.h"
49 constexpr AbsoluteTolerance<float> tolerance_quant(1);
53 ActivationLayerInfo(),
54 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU),
57 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f),
58 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 8.f, -2.f)
72 const auto qasymm8_final_output_qinfo_set =
framework::dataset::make(
"FinalOutputInfo", { QuantizationInfo(0.06, 80) });
76 const auto qasymm8_signed_input2_qinfo_set =
framework::dataset::make(
"Input2QInfo", { QuantizationInfo(0.2, -60) });
81 const auto qasymm8_signed_add_output_qinfo_set =
framework::dataset::make(
"AddOutputInfo", { QuantizationInfo(0.24, -39) });
85 const auto qasymm8_signed_final_output_qinfo_set =
framework::dataset::make(
"FinalOutputInfo", { QuantizationInfo(0.06, -48) });
93 using NEAddMulAddFloatFixture = AddMulAddFloatValidationFixture<Tensor, Accessor, NEAddMulAdd, T, true>;
96 using NEAddMulAddFloatFixtureWoIntermOut = AddMulAddFloatValidationFixture<Tensor, Accessor, NEAddMulAdd, T, false>;
106 validate(Accessor(_interm_target), _interm_reference);
124 validate(Accessor(_interm_target), _interm_reference);
130 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
137 validate(Accessor(_interm_target), _interm_reference);
146 validate(Accessor(_interm_target), _interm_reference);
150 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
154 template <typename T>
155 using NEAddMulQuantizedFixture = AddMulAddQuantizedValidationFixture<Tensor, Accessor, NEAddMulAdd, T, true>;
157 template <typename T>
158 using NEAddMulAddQuantizedFixtureWoIntermOut = AddMulAddQuantizedValidationFixture<Tensor, Accessor, NEAddMulAdd, T, false>;
166 qasymm8_input1_qinfo_set),
167 qasymm8_input2_qinfo_set),
168 qasymm8_bn_mul_qinfo_set),
169 qasymm8_bn_add_qinfo_set),
170 qasymm8_add_output_qinfo_set),
171 qasymm8_final_output_qinfo_set))
174 validate(Accessor(_interm_target), _interm_reference, tolerance_quant);
175 validate(Accessor(_target), _reference, tolerance_quant);
181 qasymm8_input1_qinfo_set),
182 qasymm8_input2_qinfo_set),
183 qasymm8_bn_mul_qinfo_set),
184 qasymm8_bn_add_qinfo_set),
185 qasymm8_add_output_qinfo_set),
186 qasymm8_final_output_qinfo_set))
189 validate(Accessor(_interm_target), _interm_reference, tolerance_quant);
190 validate(Accessor(_target), _reference, tolerance_quant);
198 qasymm8_signed_input1_qinfo_set),
199 qasymm8_signed_input2_qinfo_set),
200 qasymm8_signed_bn_mul_qinfo_set),
201 qasymm8_signed_bn_add_qinfo_set),
202 qasymm8_signed_add_output_qinfo_set),
203 qasymm8_signed_final_output_qinfo_set))
206 validate(Accessor(_interm_target), _interm_reference, tolerance_quant);
207 validate(Accessor(_target), _reference, tolerance_quant);
213 qasymm8_signed_input1_qinfo_set),
214 qasymm8_signed_input2_qinfo_set),
215 qasymm8_signed_bn_mul_qinfo_set),
216 qasymm8_signed_bn_add_qinfo_set),
217 qasymm8_signed_add_output_qinfo_set),
218 qasymm8_signed_final_output_qinfo_set))
221 validate(Accessor(_interm_target), _interm_reference, tolerance_quant);
222 validate(Accessor(_target), _reference, tolerance_quant);
234 #endif // __aarch64__