diff options
author | Alyssa Rosenzweig <[email protected]> | 2020-05-28 12:53:22 -0400 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-05-29 20:34:55 +0000 |
commit | 627872ef7f8be877cc8c64f0b424827a43ed8ef7 (patch) | |
tree | 359668b5d0d39c1ad551f9c82d23104bfb9a860e | |
parent | f1298ae33658c7e0e1c2e07b70903338e0981bed (diff) |
pan/bi: Add branch constant field to IR
The offsets used for branches need some extra bits twiddled, so add a
field to the clause to indicate this is happening. This is not ambiguous
since a clause can only have a single branch.
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5260>
-rw-r--r-- | src/panfrost/bifrost/bi_print.c | 3 | ||||
-rw-r--r-- | src/panfrost/bifrost/compiler.h | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/panfrost/bifrost/bi_print.c b/src/panfrost/bifrost/bi_print.c index 681075c6c7e..7b8164e4f43 100644 --- a/src/panfrost/bifrost/bi_print.c +++ b/src/panfrost/bifrost/bi_print.c @@ -479,6 +479,9 @@ bi_print_clause(bi_clause *clause, FILE *fp) for (unsigned i = 0; i < clause->constant_count; ++i) fprintf(fp, "%" PRIx64 " ", clause->constants[i]); + if (clause->branch_constant) + fprintf(fp, "*"); + fprintf(fp, "\n"); } } diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h index b1f7887e587..fb95c6d83df 100644 --- a/src/panfrost/bifrost/compiler.h +++ b/src/panfrost/bifrost/compiler.h @@ -376,6 +376,12 @@ typedef struct { uint64_t constants[8]; unsigned constant_count; + /* Branches encode a constant offset relative to the program counter + * with some magic flags. By convention, if there is a branch, its + * constant will be last. Set this flag to indicate this is required. + */ + bool branch_constant; + /* What type of high latency instruction is here, basically */ unsigned clause_type; } bi_clause; |