diff options
| author | Sanjay Patel <spatel@rotateright.com> | 2018-02-01 16:57:18 +0000 |
|---|---|---|
| committer | Sanjay Patel <spatel@rotateright.com> | 2018-02-01 16:57:18 +0000 |
| commit | 657e5d8d41e7aae1cabfcb6e3200a9d4981a456e (patch) | |
| tree | fd37bde2c22c124863fe42f5a53b42432a2ce57f /llvm/lib/Target/TargetMachine.cpp | |
| parent | 396fc876946d73bd047ab54e21d5acc1a6d3023c (diff) | |
| download | bcm5719-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

