Mesa (main): aco: fix shared_atomic_comp_swap if the second source isn't a VGPR
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Jul 8 11:02:01 UTC 2021
Module: Mesa
Branch: main
Commit: 74a221bcfd8dd8a1badbb44c71c38485d6c05ec2
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=74a221bcfd8dd8a1badbb44c71c38485d6c05ec2
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Thu Jul 8 09:09:25 2021 +0200
aco: fix shared_atomic_comp_swap if the second source isn't a VGPR
Only VGPRs are valid with DS instructions.
Cc: 21.1 mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11777>
---
src/amd/compiler/aco_instruction_selection.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index c614277c48d..0001840c09f 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -6985,8 +6985,10 @@ void visit_shared_atomic(isel_context *ctx, nir_intrinsic_instr *instr)
ds.reset(create_instruction<DS_instruction>(op, Format::DS, num_operands, return_previous ? 1 : 0));
ds->operands[0] = Operand(address);
ds->operands[1] = Operand(data);
- if (num_operands == 4)
- ds->operands[2] = Operand(get_ssa_temp(ctx, instr->src[2].ssa));
+ if (num_operands == 4) {
+ Temp data2 = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[2].ssa));
+ ds->operands[2] = Operand(data2);
+ }
ds->operands[num_operands - 1] = m;
ds->offset0 = offset;
if (return_previous)
More information about the mesa-commit
mailing list