diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp index e0bc4b77d..fe2315c10 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp @@ -41,14 +41,12 @@ Id EmitImageAtomicUMax32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicUMax); } -Id EmitImageAtomicInc32(EmitContext&, IR::Inst*, u32, Id, Id) { - // TODO: This is not yet implemented - throw NotImplementedException("SPIR-V Instruction"); +Id EmitImageAtomicInc32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value) { + return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicInc); } -Id EmitImageAtomicDec32(EmitContext&, IR::Inst*, u32, Id, Id) { - // TODO: This is not yet implemented - throw NotImplementedException("SPIR-V Instruction"); +Id EmitImageAtomicDec32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value) { + return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicDec); } Id EmitImageAtomicAnd32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value) { @@ -67,4 +65,12 @@ Id EmitImageAtomicExchange32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id co return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicExchange); } +Id EmitBufferAtomicIMin32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value) { + return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicMin); +} + +Id EmitBufferAtomicIMax32(EmitContext& ctx, IR::Inst* inst, u32 handle, Id coords, Id value) { + return ImageAtomicU32(ctx, inst, handle, coords, value, &Sirit::Module::OpAtomicMax); +} + } // namespace Shader::Backend::SPIRV