summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/TargetMachine.cpp
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-02-01 16:57:18 +0000
committerSanjay Patel <spatel@rotateright.com>2018-02-01 16:57:18 +0000
commit657e5d8d41e7aae1cabfcb6e3200a9d4981a456e (patch)
treefd37bde2c22c124863fe42f5a53b42432a2ce57f /llvm/lib/Target/TargetMachine.cpp
parent396fc876946d73bd047ab54e21d5acc1a6d3023c (diff)
downloadbcm5719-llvm-657e5d8d41e7aae1cabfcb6e3200a9d4981a456e.tar.gz
bcm5719-llvm-657e5d8d41e7aae1cabfcb6e3200a9d4981a456e.zip
[DAGCombiner] filter out denorm inputs when calculating sqrt estimate (PR34994)
As shown in the example in PR34994: https://bugs.llvm.org/show_bug.cgi?id=34994 ...we can return a very wrong answer (inf instead of 0.0) for square root when using a reciprocal square root estimate instruction. Here, I've conditionalized the filtering out of denorms based on the function having "denormal-fp-math"="ieee" in its attributes. The other options for this attribute are 'preserve-sign' and 'positive-zero'. So we don't generate this extra code by default with just '-ffast-math' (because then there's no denormal attribute string at all), but it works if you specify '-ffast-math -fdenormal-fp-math=ieee' from clang. As noted in the review, there may be other problems in clang that affect the results depending on platform (Linux x86 at least), but this should allow creating the desired codegen. Differential Revision: https://reviews.llvm.org/D42323 llvm-svn: 323981
Diffstat (limited to 'llvm/lib/Target/TargetMachine.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud