do correct vdata set (still fails)

This commit is contained in:
microsoftv 2024-08-17 01:10:31 -04:00
parent fa3a37133d
commit c92203e9f1
2 changed files with 3 additions and 3 deletions

View File

@ -470,14 +470,14 @@ void Translator::BUFFER_ATOMIC(u32 num_dwords, AtomicOp op, const GcnInst& inst)
ir.GetScalarReg(srsrc + 2), ir.GetScalarReg(srsrc + 3));
// Get current srsrc value
IR::U32 prev_val = GetSrc(inst.src[2]);
IR::U32 prev_val = ir.GetScalarReg(srsrc);
// Apply atomic op
// derefs srsrc buffer and adds vdata value to it
const IR::U32 new_vdata = IR::U32{ir.BufferAtomicIAdd(handle, address, vdata_val, info)};
if (mubuf.glc) {
ir.SetVectorReg(vdata, new_vdata);
ir.SetVectorReg(vdata, prev_val);
}
return;

View File

@ -96,7 +96,7 @@ OPCODE(StoreBufferFormatF32x4, Void, Opaq
OPCODE(StoreBufferU32, Void, Opaque, Opaque, U32, )
// Buffer atomic operations
OPCODE(BufferAtomicIAdd32, U32, Opaque, Opaque, Opaque )
OPCODE(BufferAtomicIAdd32, Void, Opaque, Opaque, Opaque )
OPCODE(BufferAtomicSMin32, U32, U32, U32, )
OPCODE(BufferAtomicUMin32, U32, U32, U32, )
OPCODE(BufferAtomicSMax32, U32, U32, U32, )