Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Signed-off-by: Matheus Tavares Bernardino <matheus.bernardino@oss.qualcomm.com>
---
tests/tcg/hexagon/fp_hvx.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/tests/tcg/hexagon/fp_hvx.c b/tests/tcg/hexagon/fp_hvx.c
index 0365833753..46f49c0d3c 100644
--- a/tests/tcg/hexagon/fp_hvx.c
+++ b/tests/tcg/hexagon/fp_hvx.c
@@ -73,6 +73,30 @@ DEF_TEST_OP_2(vsub, SUB_HF, hf, hf);
DEF_TEST_OP_2(vmpy, MULT_SF, sf, sf);
DEF_TEST_OP_2(vmpy, MULT_HF, hf, hf);
+#define signbit_fp(X) \
+ (sizeof(X) == bytes_hf ? ((raw_hf(X) & 0x8000) != 0) : \
+ ((raw_sf(X) & 0x80000000) != 0))
+
+#define STD_MIN(X, Y) ((X) < (Y) ? (X) : (Y))
+#define STD_MAX(X, Y) ((X) > (Y) ? (X) : (Y))
+
+#define MIN(X, Y, DEF_NAN) \
+ ((isnan(X) || isnan(Y)) ? DEF_NAN : \
+ ((X) != (Y)) ? STD_MIN(X, Y) : (signbit_fp(X) ? (X) : (Y))) /* -0 < +0 */
+#define MAX(X, Y, DEF_NAN) \
+ ((isnan(X) || isnan(Y)) ? DEF_NAN : \
+ ((X) != (Y)) ? STD_MAX(X, Y) : (signbit_fp(X) ? (Y) : (X))) /* -0 < +0 */
+
+#define MIN_HF(X, Y) MIN(X, Y, NAN_HF)
+#define MAX_HF(X, Y) MAX(X, Y, NAN_HF)
+#define MIN_SF(X, Y) MIN(X, Y, NAN_SF)
+#define MAX_SF(X, Y) MAX(X, Y, NAN_SF)
+
+DEF_TEST_OP_2(vfmin, MIN_SF, sf, sf);
+DEF_TEST_OP_2(vfmax, MAX_SF, sf, sf);
+DEF_TEST_OP_2(vfmin, MIN_HF, hf, hf);
+DEF_TEST_OP_2(vfmax, MAX_HF, hf, hf);
+
/******************************************************************************
* Other tests
*****************************************************************************/
@@ -150,6 +174,12 @@ int main(void)
test_new();
+ /* min/max */
+ test_vfmin_sf_sf();
+ test_vfmin_hf_hf();
+ test_vfmax_sf_sf();
+ test_vfmax_hf_hf();
+
puts(err ? "FAIL" : "PASS");
return err ? 1 : 0;
}
--
2.37.2