From e006f3a6afc09bc745016f574300ab26234c080e Mon Sep 17 00:00:00 2001 From: microsoftv <6063922+microsoftv@users.noreply.github.com> Date: Sat, 17 Aug 2024 01:46:56 -0400 Subject: [PATCH] clang --- .../backend/spirv/emit_spirv_atomic.cpp | 1 - .../frontend/translate/vector_memory.cpp | 2 +- src/shader_recompiler/ir/ir_emitter.cpp | 54 +++++++++---------- src/shader_recompiler/ir/opcodes.inc | 2 +- 4 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp index 57730c782..f6a1a829e 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp @@ -21,7 +21,6 @@ Id SharedAtomicU32(EmitContext& ctx, Id offset, Id value, return (ctx.*atomic_func)(ctx.U32[1], pointer, scope, semantics, value); } - Id BufferAtomicU32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id address, Id value, Id (Sirit::Module::*atomic_func)(Id, Id, Id, Id, Id)) { // Get srsrc buffer diff --git a/src/shader_recompiler/frontend/translate/vector_memory.cpp b/src/shader_recompiler/frontend/translate/vector_memory.cpp index c6a6717ee..4295c1fee 100644 --- a/src/shader_recompiler/frontend/translate/vector_memory.cpp +++ b/src/shader_recompiler/frontend/translate/vector_memory.cpp @@ -469,7 +469,7 @@ void Translator::BUFFER_ATOMIC(u32 num_dwords, AtomicOp op, const GcnInst& inst) ir.CompositeConstruct(ir.GetScalarReg(srsrc), ir.GetScalarReg(srsrc + 1), ir.GetScalarReg(srsrc + 2), ir.GetScalarReg(srsrc + 3)); - // Get current srsrc value + // Get current srsrc value (incorrect) IR::U32 prev_val = ir.GetScalarReg(srsrc); // Apply atomic op diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index 76425723d..e13f0f439 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -369,53 +369,51 @@ void IREmitter::StoreBuffer(int num_dwords, const Value& handle, const Value& ad } } -Value IREmitter::BufferAtomicIAdd(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { +Value IREmitter::BufferAtomicIAdd(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { return Inst(Opcode::BufferAtomicIAdd32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicIMin(const Value& handle, const Value& address, - const Value& value, +Value IREmitter::BufferAtomicIMin(const Value& handle, const Value& address, const Value& value, bool is_signed, BufferInstInfo info) { - return is_signed ? Inst(Opcode::BufferAtomicSMin32, Flags{info}, handle, value) - : Inst(Opcode::BufferAtomicUMin32, Flags{info}, handle, value); + return is_signed ? Inst(Opcode::BufferAtomicSMin32, Flags{info}, handle, address, value) + : Inst(Opcode::BufferAtomicUMin32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicIMax(const Value& handle, const Value& address, - const Value& value, +Value IREmitter::BufferAtomicIMax(const Value& handle, const Value& address, const Value& value, bool is_signed, BufferInstInfo info) { - return is_signed ? Inst(Opcode::BufferAtomicSMax32, Flags{info}, handle, value) - : Inst(Opcode::BufferAtomicUMax32, Flags{info}, handle, value); + return is_signed ? Inst(Opcode::BufferAtomicSMax32, Flags{info}, handle, address, value) + : Inst(Opcode::BufferAtomicUMax32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicInc(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicInc32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicInc(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicInc32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicDec(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicDec32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicDec(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicDec32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicAnd(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicAnd32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicAnd(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicAnd32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicOr(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicOr32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicOr(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicOr32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicXor(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicXor32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicXor(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicXor32, Flags{info}, handle, address, value); } -Value IREmitter::BufferAtomicExchange(const Value& handle, const Value& address, - const Value& value, BufferInstInfo info) { - return Inst(Opcode::BufferAtomicExchange32, Flags{info}, handle, value); +Value IREmitter::BufferAtomicExchange(const Value& handle, const Value& address, const Value& value, + BufferInstInfo info) { + return Inst(Opcode::BufferAtomicExchange32, Flags{info}, handle, address, value); } void IREmitter::StoreBufferFormat(int num_dwords, const Value& handle, const Value& address, diff --git a/src/shader_recompiler/ir/opcodes.inc b/src/shader_recompiler/ir/opcodes.inc index a3789412f..14bc28856 100644 --- a/src/shader_recompiler/ir/opcodes.inc +++ b/src/shader_recompiler/ir/opcodes.inc @@ -96,7 +96,7 @@ OPCODE(StoreBufferFormatF32x4, Void, Opaq OPCODE(StoreBufferU32, Void, Opaque, Opaque, U32, ) // Buffer atomic operations -OPCODE(BufferAtomicIAdd32, Void, Opaque, Opaque, Opaque ) +OPCODE(BufferAtomicIAdd32, Opaque, Opaque, Opaque, Opaque ) OPCODE(BufferAtomicSMin32, U32, U32, U32, ) OPCODE(BufferAtomicUMin32, U32, U32, U32, ) OPCODE(BufferAtomicSMax32, U32, U32, U32, )