diff options
author | Rob Clark <[email protected]> | 2020-02-25 10:42:57 -0800 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-03-10 16:01:39 +0000 |
commit | 64ae2ef8bbc63750346345e331750f0e0c643103 (patch) | |
tree | 0e73713d14f73ca8182e066ea4cacf953eca999e /src/freedreno | |
parent | ad2ff7a278a80a05021c68fa014731e8d9c10713 (diff) |
freedreno/ir3: remove extra nops inserted in scheduler
They were inserting a nop between back to back SFU instrucions. But
that doesn't actually appear to be required. And they get stripped out
later anyways before legalize.
Signed-off-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4071>
Diffstat (limited to 'src/freedreno')
-rw-r--r-- | src/freedreno/ir3/ir3_postsched.c | 13 | ||||
-rw-r--r-- | src/freedreno/ir3/ir3_sched.c | 12 |
2 files changed, 0 insertions, 25 deletions
diff --git a/src/freedreno/ir3/ir3_postsched.c b/src/freedreno/ir3/ir3_postsched.c index 47a8e52fdeb..1e706f75a24 100644 --- a/src/freedreno/ir3/ir3_postsched.c +++ b/src/freedreno/ir3/ir3_postsched.c @@ -79,24 +79,11 @@ struct ir3_postsched_node { #define foreach_bit(b, mask) \ for (uint32_t _m = ({debug_assert((mask) >= 1); (mask);}); _m && ({(b) = u_bit_scan(&_m); 1;});) -// TODO deduplicate -static bool is_sfu_or_mem(struct ir3_instruction *instr) -{ - return is_sfu(instr) || is_mem(instr); -} - static void schedule(struct ir3_postsched_ctx *ctx, struct ir3_instruction *instr) { debug_assert(ctx->block == instr->block); - /* maybe there is a better way to handle this than just stuffing - * a nop.. ideally we'd know about this constraint in the - * scheduling and depth calculation.. - */ - if (ctx->scheduled && is_sfu_or_mem(ctx->scheduled) && is_sfu_or_mem(instr)) - ir3_NOP(ctx->block); - /* remove from unscheduled_list: */ list_delinit(&instr->node); diff --git a/src/freedreno/ir3/ir3_sched.c b/src/freedreno/ir3/ir3_sched.c index 78f79df7e4e..9c8d3572a23 100644 --- a/src/freedreno/ir3/ir3_sched.c +++ b/src/freedreno/ir3/ir3_sched.c @@ -85,11 +85,6 @@ static bool is_scheduled(struct ir3_instruction *instr) return !!(instr->flags & IR3_INSTR_MARK); } -static bool is_sfu_or_mem(struct ir3_instruction *instr) -{ - return is_sfu(instr) || is_mem(instr); -} - static void unuse_each_src(struct ir3_sched_ctx *ctx, struct ir3_instruction *instr) { @@ -226,13 +221,6 @@ schedule(struct ir3_sched_ctx *ctx, struct ir3_instruction *instr) { debug_assert(ctx->block == instr->block); - /* maybe there is a better way to handle this than just stuffing - * a nop.. ideally we'd know about this constraint in the - * scheduling and depth calculation.. - */ - if (ctx->scheduled && is_sfu_or_mem(ctx->scheduled) && is_sfu_or_mem(instr)) - ir3_NOP(ctx->block); - /* remove from depth list: */ list_delinit(&instr->node); |