COMPMID-3444: Fix CpuAcc Hal 1.3 PRelu failure issue
authorSheri Zhang <sheri.zhang@arm.com>
Mon, 4 May 2020 20:38:17 +0000 (21:38 +0100)
committerSheri Zhang <sheri.zhang@arm.com>
Tue, 5 May 2020 10:08:34 +0000 (10:08 +0000)
Fix CpuAcc Hal 1.3 Max & Min failure issue

Signed-off-by: Sheri Zhang <sheri.zhang@arm.com>
Change-Id: Ib519e6c6717e6608106aebc8c1cd751a731428a3
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3139
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>

src/core/NEON/kernels/NEElementwiseOperationKernel.cpp
tests/validation/NEON/PReluLayer.cpp

index 3fd5f39e9f4fa7a00c864288170e37664799bdb8..7b2b5e4f1997b8d50ea079e66f0cfafabbabfe51 100644 (file)
@@ -941,7 +941,7 @@ void elementwise_op_quantized_signed(const ITensor *in1, const ITensor *in2, ITe
             const auto output_ptr              = reinterpret_cast<int8_t *>(output.ptr());
 
             const int8_t        broadcast_value  = *reinterpret_cast<const int8_t *>(broadcast_input.ptr());
-            const float32x4x4_t broadcast_vector = vdequantize(vdupq_n_u8(broadcast_value), broadcast_qinfo);
+            const float32x4x4_t broadcast_vector = vdequantize(vdupq_n_s8(broadcast_value), broadcast_qinfo);
 
             int x = (*broadcast_func)(window_start_x, window_end_x, window_step_x, non_broadcast_input_ptr, broadcast_vector, output_ptr,
                                       voffset_non_broadcast, vscale_non_broadcast, voffseto, invvscaleo, !is_broadcast_input_2);
index 0630a057d6882b15db3cc21950959f5deac1bcdf..bc93c65778d0ccdf7627b4d2b3365e2dbef47e56 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 ARM Limited.
+ * Copyright (c) 2019-2020 ARM Limited.
  *
  * SPDX-License-Identifier: MIT
  *
@@ -132,9 +132,9 @@ TEST_SUITE_END() // QASYMM8
 TEST_SUITE(QASYMM8_SIGNED)
 FIXTURE_DATA_TEST_CASE(RunSmall, NEPReluLayerQuantizedFixture<int8_t>, framework::DatasetMode::ALL, combine(combine(combine(combine(datasets::SmallShapes(),
                                                                                                                     PReluLayerQASYMM8SignedDataset),
-                                                                                                                    framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.5f, 20) })),
-                                                                                                                    framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.5f, 10) })),
-                                                                                                            framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.5f, 5) }))
+                                                                                                                    framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.2f, 127) })),
+                                                                                                                    framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.1f, 64) })),
+                                                                                                            framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.5f, -128) }))
 
                       )
 {