pan/bit: Add BI_REDUCE_FMA interp
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 14 Apr 2020 17:14:51 +0000 (13:14 -0400)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 17 Apr 2020 20:25:36 +0000 (16:25 -0400)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4615>

src/panfrost/bifrost/test/bi_interpret.c

index 53c3d983eb161a0a617f9d4a98b0de517bbba111..92f5865e48bbf884aec72903dc1adc4e59040973 100644 (file)
@@ -472,6 +472,21 @@ bit_step(struct bit_state *s, bi_instruction *ins, bool FMA)
         case BI_MOV:
                 bpoly(mov);
 
+        case BI_REDUCE_FMA: {
+                if (ins->src_types[0] != nir_type_float32)
+                        unreachable("Unknown reduce type");
+
+                if (ins->op.reduce == BI_REDUCE_ADD_FREXPM) {
+                        int _nop = 0;
+                        float f = frexp_log(srcs[1].f32, &_nop);
+                        dest.f32 = srcs[0].f32 + f;
+                } else {
+                        unreachable("Unknown reduce");
+                }
+
+                break;
+        }
+
         case BI_SPECIAL: {
                 assert(nir_alu_type_get_base_type(ins->dest_type) == nir_type_float);
                 assert(nir_alu_type_get_base_type(ins->dest_type) != nir_type_float64);