diff options
author | Carl Ritson <carl.ritson@amd.com> | 2020-07-07 15:40:35 +0900 |
---|---|---|
committer | Carl Ritson <carl.ritson@amd.com> | 2020-07-07 15:40:44 +0900 |
commit | 560292fa990a2bfcf8415f07a166393beff667f6 (patch) | |
tree | 816c87bf056e4f22be9d3acc98789a530dfcdd1e /llvm | |
parent | 38d6640ba55e52a4ae23059164660075c3d8e18a (diff) | |
download | llvm-560292fa990a2bfcf8415f07a166393beff667f6.zip llvm-560292fa990a2bfcf8415f07a166393beff667f6.tar.gz llvm-560292fa990a2bfcf8415f07a166393beff667f6.tar.bz2 |
[AMDGPU] Update isFMAFasterThanFMulAndFAdd assumptions
MAD/MAC is no longer always available.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D83207
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index d902728..7920418 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -4277,10 +4277,13 @@ bool SITargetLowering::isFMAFasterThanFMulAndFAdd(const MachineFunction &MF, switch (VT.getSimpleVT().SimpleTy) { case MVT::f32: { - // This is as fast on some subtargets. However, we always have full rate f32 - // mad available which returns the same result as the separate operations - // which we should prefer over fma. We can't use this if we want to support - // denormals, so only report this in these cases. + // If mad is not available this depends only on if f32 fma is full rate. + if (!Subtarget->hasMadMacF32Insts()) + return Subtarget->hasFastFMAF32(); + + // Otherwise f32 mad is always full rate and returns the same result as + // the separate operations so should be preferred over fma. + // However does not support denomals. if (hasFP32Denormals(MF)) return Subtarget->hasFastFMAF32() || Subtarget->hasDLInsts(); |