From: Alyssa Rosenzweig Date: Thu, 30 Apr 2020 22:15:23 +0000 (-0400) Subject: pan/bit: Add round tests X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d04be375ccdd5612f07689f9c883c4e8c3f159c3;p=mesa.git pan/bit: Add round tests Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/bifrost/test/bi_test_pack.c b/src/panfrost/bifrost/test/bi_test_pack.c index f8ae55c6e37..ba9828cffe0 100644 --- a/src/panfrost/bifrost/test/bi_test_pack.c +++ b/src/panfrost/bifrost/test/bi_test_pack.c @@ -358,6 +358,21 @@ bit_frexp_helper(struct panfrost_device *dev, uint32_t *input, enum bit_debug de } } +static void +bit_round_helper(struct panfrost_device *dev, uint32_t *input, unsigned sz, bool FMA, enum bit_debug debug) +{ + bi_instruction ins = bit_ins(BI_ROUND, 1, nir_type_float, sz); + + for (enum bifrost_roundmode mode = 0; mode <= 3; ++mode) { + ins.roundmode = mode; + + if (!bit_test_single(dev, &ins, input, FMA, debug)) { + fprintf(stderr, "FAIL: round.%u.%u\n", + sz, mode); + } + } +} + static void bit_reduce_helper(struct panfrost_device *dev, uint32_t *input, enum bit_debug debug) { @@ -569,6 +584,7 @@ bit_packing(struct panfrost_device *dev, enum bit_debug debug) bit_fmod_helper(dev, BI_ADD, sz, true, input, debug, 0); bit_fmod_helper(dev, BI_ADD, sz, false, input, debug, 0); + bit_round_helper(dev, (uint32_t *) input32, sz, true, debug); bit_fmod_helper(dev, BI_MINMAX, sz, false, input, debug, BI_MINMAX_MIN); bit_fmod_helper(dev, BI_MINMAX, sz, false, input, debug, BI_MINMAX_MAX);