pan/bit: Add round tests
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 30 Apr 2020 22:15:23 +0000 (18:15 -0400)
committerMarge Bot <eric+marge@anholt.net>
Fri, 1 May 2020 00:27:23 +0000 (00:27 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4844>

src/panfrost/bifrost/test/bi_test_pack.c

index f8ae55c6e3765f34ae500476394fc8550ae0cea2..ba9828cffe03edcb73250467bc240bdcc42d3277 100644 (file)
@@ -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);