diff options
author | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2017-04-21 19:25:33 +0000 |
---|---|---|
committer | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2017-04-21 19:25:33 +0000 |
commit | c4b18e7099ae416eb207b8b407b69d81557c465a (patch) | |
tree | be3f32ec710a3052f493541685bf3d82098a44ef /llvm/lib/Target | |
parent | f608a0a7788fcb3b5ba86c08c6a470c8813310b9 (diff) | |
download | bcm5719-llvm-c4b18e7099ae416eb207b8b407b69d81557c465a.tar.gz bcm5719-llvm-c4b18e7099ae416eb207b8b407b69d81557c465a.zip |
AMDGPU: Do not lower fast unsafe div for safe, f32, with fp32 denormals
Differential Revision: https://reviews.llvm.org/D32085
llvm-svn: 301023
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index fb166d7c7cd..612e63048d3 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -3410,9 +3410,11 @@ SDValue SITargetLowering::lowerFastUnsafeFDIV(SDValue Op, EVT VT = Op.getValueType(); bool Unsafe = DAG.getTarget().Options.UnsafeFPMath; + if (!Unsafe && VT == MVT::f32 && Subtarget->hasFP32Denormals()) + return SDValue(); + if (const ConstantFPSDNode *CLHS = dyn_cast<ConstantFPSDNode>(LHS)) { - if (Unsafe || (VT == MVT::f32 && !Subtarget->hasFP32Denormals()) || - VT == MVT::f16) { + if (Unsafe || VT == MVT::f32 || VT == MVT::f16) { if (CLHS->isExactlyValue(1.0)) { // v_rcp_f32 and v_rsq_f32 do not support denormals, and according to // the CI documentation has a worst case error of 1 ulp. |