From 7a3334bb2d58f79fa74b55c347c5e4b5afdd1423 Mon Sep 17 00:00:00 2001 From: DanielSvoboda Date: Sun, 28 Jul 2024 14:52:57 -0300 Subject: [PATCH] Update data_share.cpp --- .../frontend/translate/data_share.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/shader_recompiler/frontend/translate/data_share.cpp b/src/shader_recompiler/frontend/translate/data_share.cpp index c5d9f0ecd..54f9d80fa 100644 --- a/src/shader_recompiler/frontend/translate/data_share.cpp +++ b/src/shader_recompiler/frontend/translate/data_share.cpp @@ -65,4 +65,20 @@ void Translator::V_READFIRSTLANE_B32(const GcnInst& inst) { UNREACHABLE(); } +void Translator::DS_MAX(int bit_size, const GcnInst& inst) { + const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; + const IR::U32 data{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; + const IR::U32 current_max{ir.GetVectorReg(IR::VectorReg(inst.dst[0].code))}; + const IR::U32 max_value{ir.UMax(current_max, data)}; + ir.SetVectorReg(IR::VectorReg(inst.dst[0].code), max_value); +} + +void Translator::DS_MIN(int bit_size, const GcnInst& inst) { + const IR::U32 addr{ir.GetVectorReg(IR::VectorReg(inst.src[0].code))}; + const IR::U32 data{ir.GetVectorReg(IR::VectorReg(inst.src[1].code))}; + const IR::U32 current_min{ir.GetVectorReg(IR::VectorReg(inst.dst[0].code))}; + const IR::U32 min_value{ir.UMin(current_min, data)}; + ir.SetVectorReg(IR::VectorReg(inst.dst[0].code), min_value); +} + } // namespace Shader::Gcn