From ad4dfb3321c2a0d8151acc581a914b6ca3384741 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 23 May 2021 17:17:16 -0400 Subject: [PATCH] agx: Add invert_cond (ccn) to IR Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_compiler.h | 3 +++ src/asahi/compiler/agx_opcodes.py | 1 + src/asahi/compiler/agx_print.c | 9 +++++++++ 3 files changed, 13 insertions(+) diff --git a/src/asahi/compiler/agx_compiler.h b/src/asahi/compiler/agx_compiler.h index 03f9e9b7d55..9625244fc1b 100644 --- a/src/asahi/compiler/agx_compiler.h +++ b/src/asahi/compiler/agx_compiler.h @@ -265,6 +265,9 @@ typedef struct { enum agx_lod_mode lod_mode; }; + /* Invert icond/fcond */ + bool invert_cond : 1; + /* TODO: Handle tex ops more efficient */ enum agx_dim dim : 3; diff --git a/src/asahi/compiler/agx_opcodes.py b/src/asahi/compiler/agx_opcodes.py index 1f054901879..ac4941aeb96 100644 --- a/src/asahi/compiler/agx_opcodes.py +++ b/src/asahi/compiler/agx_opcodes.py @@ -87,6 +87,7 @@ SCOREBOARD = immediate("scoreboard") ICOND = immediate("icond") FCOND = immediate("fcond") NEST = immediate("nest") +INVERT_COND = immediate("invert_cond") FUNOP = lambda x: (x << 28) FUNOP_MASK = FUNOP((1 << 14) - 1) diff --git a/src/asahi/compiler/agx_print.c b/src/asahi/compiler/agx_print.c index b471f3aa5a0..6856b87239e 100644 --- a/src/asahi/compiler/agx_print.c +++ b/src/asahi/compiler/agx_print.c @@ -176,6 +176,15 @@ agx_print_instr(agx_instr *I, FILE *fp) fprintf(fp, "n=%u", I->nest); } + if ((info.immediates & AGX_IMMEDIATE_INVERT_COND) && I->invert_cond) { + if (print_comma) + fprintf(fp, ", "); + else + print_comma = true; + + fprintf(fp, "inv"); + } + fprintf(fp, "\n"); }