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);