pan/bi: Add frexp_log packing
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 14 Apr 2020 16:54:17 +0000 (12:54 -0400)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 17 Apr 2020 20:25:35 +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/bi_pack.c
src/panfrost/bifrost/bifrost.h

index 822d1ff10d96414d503412d8c8d4e7ab0c7a9dcc..6539d23ee0e3e753a80fa6db0e852d21b6cb80f1 100644 (file)
@@ -728,6 +728,13 @@ bi_pack_fma_csel(bi_instruction *ins, struct bi_registers *regs)
         RETURN_PACKED(pack);
 }
 
+static unsigned
+bi_pack_fma_frexp(bi_instruction *ins, struct bi_registers *regs)
+{
+        unsigned op = BIFROST_FMA_OP_FREXPE_LOG;
+        return bi_pack_fma_1src(ins, regs, op);
+}
+
 /* We have a single convert opcode in the IR but a number of opcodes that could
  * come out. In particular we have native opcodes for:
  *
@@ -857,6 +864,7 @@ bi_pack_fma(bi_clause *clause, bi_bundle bundle, struct bi_registers *regs)
         case BI_FMA:
                 return bi_pack_fma_fma(bundle.fma, regs);
         case BI_FREXP:
+                return bi_pack_fma_frexp(bundle.fma, regs);
         case BI_ISUB:
                 return BIFROST_FMA_NOP;
         case BI_MINMAX:
index 5552dd925856c21536d7cfb0334b9f082d2b3e2e..91755375c3ba3d0f627340e306234a5f3fd9f3c1 100644 (file)
@@ -97,6 +97,7 @@ enum bifrost_packed_src {
 
 #define BIFROST_FMA_EXT (0xe0000)
 #define BIFROST_FMA_OP_MOV BIFROST_FMA_EXT | (0x32d)
+#define BIFROST_FMA_OP_FREXPE_LOG BIFROST_FMA_EXT | 0x3c5
 
 struct bifrost_fma_inst {
         unsigned src0 : 3;