From f8a53b4ab48ee5342cf13ade7d0cdf1c3caccc0d Mon Sep 17 00:00:00 2001 From: DH Date: Wed, 28 Jun 2023 19:40:48 +0300 Subject: [PATCH] [amdgpu/shader] Implement Vop3 ADD_F32 --- hw/amdgpu/shader/src/Fragment.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hw/amdgpu/shader/src/Fragment.cpp b/hw/amdgpu/shader/src/Fragment.cpp index 507ae5691..3972f281c 100644 --- a/hw/amdgpu/shader/src/Fragment.cpp +++ b/hw/amdgpu/shader/src/Fragment.cpp @@ -2334,6 +2334,19 @@ void convertVop3(Fragment &fragment, Vop3 inst) { break; } + case Vop3::Op::V3_ADD_F32: { + auto floatT = fragment.context->getFloat32Type(); + auto src0 = getSrc(0, TypeId::Float32); + auto src1 = getSrc(1, TypeId::Float32); + auto resultValue = fragment.builder.createFAdd( + floatT, spirv::cast(src0.value), + spirv::cast(src1.value)); + auto result = applyClamp(applyOmod({floatT, resultValue})); + + fragment.setVectorOperand(inst.vdst, result); + break; + } + case Vop3::Op::V3_SUB_F32: { auto floatT = fragment.context->getFloat32Type(); auto src0 = getSrc(0, TypeId::Float32);