diff options
author | Rob Clark <[email protected]> | 2019-02-25 14:22:04 -0500 |
---|---|---|
committer | Rob Clark <[email protected]> | 2019-02-26 13:19:44 -0500 |
commit | cabe55a2e73e947f368b852298c7ff92b6ffea22 (patch) | |
tree | ccfa3f09af263bc7e288a5b8eb5cbc4fc8d3a537 /src | |
parent | edd5b3126d891fe31c2f445b2d3cd89f368ab818 (diff) |
freedreno/ir3/a6xx: fix non-ssa atomic dst
We weren't propagating the array info for cases where result of atomic
is array/reg. This can happen, for example, if result is part of a phi
web lowered to regs.
Fixes dEQP-GLES31.functional.ssbo.atomic.compswap.*
Signed-off-by: Rob Clark <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/freedreno/ir3/ir3_a6xx.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/freedreno/ir3/ir3_a6xx.c b/src/freedreno/ir3/ir3_a6xx.c index 1a10b63edb2..3bb9e3496f4 100644 --- a/src/freedreno/ir3/ir3_a6xx.c +++ b/src/freedreno/ir3/ir3_a6xx.c @@ -374,6 +374,11 @@ get_atomic_dest_mov(struct ir3_instruction *atomic) mov->flags |= IR3_INSTR_SY; + if (atomic->regs[0]->flags & IR3_REG_ARRAY) { + mov->regs[0]->flags |= IR3_REG_ARRAY; + mov->regs[0]->array = atomic->regs[0]->array; + } + /* it will have already been appended to the end of the block, which * isn't where we want it, so fix-up the location: */ |