mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-29 12:15:39 +00:00
Merge pull request #11826 from oneandonlydean/carry/3699-f16-fma
fix(shader): take the fused result when an f16 fma's sum is exact
This commit is contained in:
1 file changed
+2
-1
@@ -325,7 +325,8 @@ IrF32 TranslationContext::fmaF16RoundedToOdd(IrF32 lhs, IrF32 rhs, IrF32 addend)
|
||||
IrValue& sumBits = ir.BitCastU32(sum);
|
||||
IrValue& sameSign = ir.IEqual(ir.BitwiseAnd(ir.BitwiseXor(sumBits, ir.BitCastU32(error)), ir.Constant(0x80000000u)), ir.Constant(0u));
|
||||
IrValue& towardZero = ir.Select(sameSign, sumBits, ir.ISub(sumBits, ir.Constant(1u)));
|
||||
return IrF32(ir.BitCastF32(ir.Select(inexact, ir.BitwiseOr(towardZero, ir.Constant(1u)), sumBits)));
|
||||
IrValue& fused = ir.BitCastU32(ir.Emit(IrOpcode::FPFma32, IrType::F32, {&lhs.Value(), &rhs.Value(), &addend.Value()}));
|
||||
return IrF32(ir.BitCastF32(ir.Select(inexact, ir.BitwiseOr(towardZero, ir.Constant(1u)), fused)));
|
||||
}
|
||||
|
||||
IrU32 TranslationContext::readF16Bits(const RdnaOperand& operand) {
|
||||
|
||||
Reference in new issue
Block a user