diff options
author | Sanjay Patel <spatel@rotateright.com> | 2018-01-09 15:41:00 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2018-01-09 15:41:00 +0000 |
commit | 37e28e40cbec436532bd60e7d00c4d1caea9edca (patch) | |
tree | e1e63366738bfb912a4982532792b502c7fbbc38 /llvm/test/Integer | |
parent | 2b3bd306378a87737c238886856cc3a9d584fc1e (diff) | |
download | bcm5719-llvm-37e28e40cbec436532bd60e7d00c4d1caea9edca.tar.gz bcm5719-llvm-37e28e40cbec436532bd60e7d00c4d1caea9edca.zip |
[SelectionDAG] lower math intrinsics to finite version of libcalls when possible (PR35672)
Ingredients in this patch:
1. Add HANDLE_LIBCALL defs for finite mathlib functions that correspond to LLVM intrinsics.
2. Plumbing to send TargetLibraryInfo down to SelectionDAGLegalize.
3. Relaxed math and library checking in SelectionDAGLegalize::ConvertNodeToLibcall() to choose finite libcalls.
There was a bug about determining the availability of the finite calls that should be fixed with:
rL322010
Not in this patch:
This doesn't resolve the question/bug of clang creating the intrinsic IR in the first place.
There's likely follow-up work needed to support the long double variants better.
There's room for improvement to reduce the code duplication.
Create finite calls that don't originate from a corresponding intrinsic or DAG node?
Differential Revision: https://reviews.llvm.org/D41338
llvm-svn: 322087
Diffstat (limited to 'llvm/test/Integer')
0 files changed, 0 insertions, 0 deletions