summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>2020-04-28 13:48:37 -0400
committerMarge Bot <eric+marge@anholt.net>2020-04-29 00:30:05 +0000
commit9b415bf6a037867432c72294f0f03917f3b06ae8 (patch)
tree19fa067a5ec95ce352341434430d95afcd3cdf91
parent6de01faac5a20208422fb75d22f2bd88c53f53d8 (diff)
pan/bi: Add bitwise modifiers
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4790>
-rw-r--r--src/panfrost/bifrost/bi_print.c5
-rw-r--r--src/panfrost/bifrost/compiler.h7
2 files changed, 12 insertions, 0 deletions
diff --git a/src/panfrost/bifrost/bi_print.c b/src/panfrost/bifrost/bi_print.c
index e67a1485780..1c9c8a72a31 100644
--- a/src/panfrost/bifrost/bi_print.c
+++ b/src/panfrost/bifrost/bi_print.c
@@ -206,6 +206,9 @@ bi_print_src(FILE *fp, bi_instruction *ins, unsigned s)
if (abs)
fprintf(fp, "abs(");
+ if (ins->type == BI_BITWISE && ins->bitwise.src_invert[s])
+ fprintf(fp, "~");
+
bi_print_index(fp, ins, src, s);
if (abs)
@@ -378,6 +381,8 @@ bi_print_instruction(bi_instruction *ins, FILE *fp)
fprintf(fp, ".loc%u", ins->blend_location);
else if (ins->type == BI_TEX)
fprintf(fp, ".%s", bi_tex_op_name(ins->op.texture));
+ else if (ins->type == BI_BITWISE)
+ fprintf(fp, ".%cshift", ins->bitwise.rshift ? 'r' : 'l');
if (ins->vector_channels)
fprintf(fp, ".v%u", ins->vector_channels);
diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h
index 4178352f3a8..0716cf342ef 100644
--- a/src/panfrost/bifrost/compiler.h
+++ b/src/panfrost/bifrost/compiler.h
@@ -214,6 +214,11 @@ enum bi_tex_op {
BI_TEX_DUAL
};
+struct bi_bitwise {
+ bool src_invert[2];
+ bool rshift; /* false for lshift */
+};
+
typedef struct {
struct list_head link; /* Must be first */
enum bi_class type;
@@ -290,6 +295,8 @@ typedef struct {
/* For BLEND -- the location 0-7 */
unsigned blend_location;
+
+ struct bi_bitwise bitwise;
};
} bi_instruction;