From fc7770b1ddac0f26489925ded8002bd9a8886095 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 5 Feb 2021 19:52:18 -0500 Subject: [PATCH] pan/bi: Add trivial rewrite helpers We need to do certain rewrites during scheduling before RA runs in order to satsify scheduler post-conditions. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/bifrost/bi_schedule.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/panfrost/bifrost/bi_schedule.c b/src/panfrost/bifrost/bi_schedule.c index c976df59355..fab8b099a82 100644 --- a/src/panfrost/bifrost/bi_schedule.c +++ b/src/panfrost/bifrost/bi_schedule.c @@ -890,6 +890,32 @@ bi_rewrite_passthrough(bi_tuple prec, bi_tuple succ) } } +static void +bi_rewrite_fau_to_pass(bi_tuple *tuple) +{ + bi_foreach_instr_and_src_in_tuple(tuple, ins, s) { + if (ins->src[s].type != BI_INDEX_FAU) continue; + + ins->src[s] = bi_passthrough(ins->src[s].offset ? + BIFROST_SRC_FAU_HI : BIFROST_SRC_FAU_LO); + } +} + +static void +bi_rewrite_zero(bi_instr *ins, bool fma) +{ + bi_foreach_src(ins, s) { + bi_index src = ins->src[s]; + unsigned swizzle = src.swizzle; + + if (src.type == BI_INDEX_CONSTANT && src.value == 0) { + assert(!src.abs && !src.neg); + ins->src[s] = bi_passthrough( + fma ? BIFROST_SRC_STAGE : BIFROST_SRC_FAU_LO); + ins->src[s].swizzle = swizzle; + } + } +} #ifndef NDEBUG