pan/bit: Unify test frontends
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 6 Apr 2020 17:03:06 +0000 (13:03 -0400)
committerMarge Bot <eric+marge@anholt.net>
Mon, 6 Apr 2020 19:41:56 +0000 (19:41 +0000)
Random.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4470>

src/panfrost/bifrost/cmdline.c
src/panfrost/bifrost/test/bi_test_pack.c
src/panfrost/bifrost/test/bit.h

index 095437b89fd4f15440583c2a0456fb43710bbb7b..a0d6364f398ed8356b3b5ae8b913a9fcd362d5db 100644 (file)
@@ -128,10 +128,7 @@ tests(void)
 {
         void *memctx = NULL; /* TODO */
         struct panfrost_device *dev = bit_initialize(memctx);
-        bit_fmod(dev, BIT_DEBUG_FAIL);
-        bit_fma(dev, BIT_DEBUG_FAIL);
-        bit_csel(dev, BIT_DEBUG_FAIL);
-        bit_special(dev, BIT_DEBUG_FAIL);
+        bit_packing(dev, BIT_DEBUG_FAIL);
 }
 
 static void
index 34e2a5cc29f998412ac687102c98bb8212154fcb..3f5e816a35a827f65716c2fd9ce6ef74c7615029 100644 (file)
@@ -158,10 +158,17 @@ bit_test_single(struct panfrost_device *dev,
 /* Utilities for generating tests */
 
 static void
-bit_generate_vector(uint32_t *mem)
+bit_generate_float4(float *mem)
 {
         for (unsigned i = 0; i < 4; ++i)
-                mem[i] = rand();
+                mem[i] = (float) ((rand() & 255) - 127) / 16.0;
+}
+
+static void
+bit_generate_half8(uint16_t *mem)
+{
+        for (unsigned i = 0; i < 8; ++i)
+                mem[i] = _mesa_float_to_half(((float) (rand() & 255) - 127) / 16.0);
 }
 
 static bi_instruction
@@ -279,77 +286,33 @@ bit_special_helper(struct panfrost_device *dev,
 }
 
 void
-bit_fmod(struct panfrost_device *dev, enum bit_debug debug)
+bit_packing(struct panfrost_device *dev, enum bit_debug debug)
 {
-        float input32[4] = { 0.8, 1.7, 0.0, 0.0 };
+        float input32[4];
+        uint16_t input16[8];
 
-        uint32_t input16[4] = {
-                _mesa_float_to_half(input32[0]) | (_mesa_float_to_half(-1.2) << 16),
-                _mesa_float_to_half(input32[1]) | (_mesa_float_to_half(0.9) << 16),
-                0, 0
-        };
+        bit_generate_float4(input32);
+        bit_generate_half8(input16);
 
         for (unsigned sz = 16; sz <= 32; sz *= 2) {
                 uint32_t *input =
-                        (sz == 16) ? input16 :
+                        (sz == 16) ? (uint32_t *) input16 :
                         (uint32_t *) input32;
 
                 bit_fmod_helper(dev, BI_ADD, sz, true, input, debug);
-        }
-}
-
-void
-bit_fma(struct panfrost_device *dev, enum bit_debug debug)
-{
-        float input32[4] = { 0.2, 1.6, -3.5, 0.0 };
-
-        uint32_t input16[4] = {
-                _mesa_float_to_half(input32[0]) | (_mesa_float_to_half(-1.8) << 16),
-                _mesa_float_to_half(input32[1]) | (_mesa_float_to_half(0.6) << 16),
-                _mesa_float_to_half(input32[1]) | (_mesa_float_to_half(16.2) << 16),
-                0
-        };
-
-        for (unsigned sz = 16; sz <= 32; sz *= 2) {
-                uint32_t *input =
-                        (sz == 16) ? input16 :
-                        (uint32_t *) input32;
-
                 bit_fma_helper(dev, sz, input, debug);
         }
-}
-
-void
-bit_csel(struct panfrost_device *dev, enum bit_debug debug)
-{
-        float input32[4] = { 0.2, 1.6, -3.5, 3.0 };
 
-        uint32_t input16[4] = {
-                _mesa_float_to_half(input32[0]) | (_mesa_float_to_half(-1.8) << 16),
-                _mesa_float_to_half(input32[1]) | (_mesa_float_to_half(0.6) << 16),
-                _mesa_float_to_half(input32[1]) | (_mesa_float_to_half(16.2) << 16),
-                _mesa_float_to_half(input32[2]) | (_mesa_float_to_half(4.9) << 16),
-        };
+        for (unsigned sz = 32; sz <= 32; sz *= 2)
+                bit_csel_helper(dev, sz, (uint32_t *) input32, debug);
 
-        for (unsigned sz = 32; sz <= 32; sz *= 2) {
-                uint32_t *input =
-                        (sz == 16) ? input16 :
-                        (uint32_t *) input32;
-
-                bit_csel_helper(dev, sz, input, debug);
-        }
-}
-
-void
-bit_special(struct panfrost_device *dev, enum bit_debug debug)
-{
-        float input32[4] = { 0.9 };
-        uint32_t input16[4] = { _mesa_float_to_half(input32[0]) | (_mesa_float_to_half(0.2) << 16) };
+        float special[4] = { 0.9 };
+        uint32_t special16[4] = { _mesa_float_to_half(special[0]) | (_mesa_float_to_half(0.2) << 16) };
 
         for (unsigned sz = 16; sz <= 32; sz *= 2) {
                 uint32_t *input =
-                        (sz == 16) ? input16 :
-                        (uint32_t *) input32;
+                        (sz == 16) ? special16 :
+                        (uint32_t *) special;
 
                 bit_special_helper(dev, sz, input, debug);
         }
index c4c72ed24058ba3d65b987517f2140b2cb0ae1b1..50bbf00493511dea0320811527d96dfa1685717b 100644 (file)
@@ -67,12 +67,7 @@ struct bit_state {
 void
 bit_step(struct bit_state *s, bi_instruction *ins, bool FMA);
 
-/* Packing tests */
-
-void bit_fmod(struct panfrost_device *dev, enum bit_debug debug);
-void bit_fma(struct panfrost_device *dev, enum bit_debug debug);
-void bit_csel(struct panfrost_device *dev, enum bit_debug debug);
-void bit_special(struct panfrost_device *dev, enum bit_debug debug);
+void bit_packing(struct panfrost_device *dev, enum bit_debug debug);
 
 #endif