aboutsummaryrefslogtreecommitdiffstats
path: root/src/freedreno/ir3
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2019-02-25 14:22:04 -0500
committerRob Clark <[email protected]>2019-02-26 13:19:44 -0500
commitcabe55a2e73e947f368b852298c7ff92b6ffea22 (patch)
treeccfa3f09af263bc7e288a5b8eb5cbc4fc8d3a537 /src/freedreno/ir3
parentedd5b3126d891fe31c2f445b2d3cd89f368ab818 (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/freedreno/ir3')
-rw-r--r--src/freedreno/ir3/ir3_a6xx.c5
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:
*/