diff options
author | Bob Wilson <bob.wilson@apple.com> | 2012-08-03 04:06:28 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2012-08-03 04:06:28 +0000 |
commit | d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3 (patch) | |
tree | 4b5501fbb4854f887d64f9f1f828402f0fcc6600 /test | |
parent | d1e672e0234b99dbff78baed0e47d033cf963abe (diff) | |
download | external_llvm-d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3.zip external_llvm-d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3.tar.gz external_llvm-d49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3.tar.bz2 |
Fall back to selection DAG isel for calls to builtin functions.
Fast isel doesn't currently have support for translating builtin function
calls to target instructions. For embedded environments where the library
functions are not available, this is a matter of correctness and not
just optimization. Most of this patch is just arranging to make the
TargetLibraryInfo available in fast isel. <rdar://problem/12008746>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161232 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/fabs.ll | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/test/CodeGen/X86/fabs.ll b/test/CodeGen/X86/fabs.ll index 5adc38f..07a8d91 100644 --- a/test/CodeGen/X86/fabs.ll +++ b/test/CodeGen/X86/fabs.ll @@ -1,6 +1,7 @@ ; Make sure this testcase codegens to the fabs instruction, not a call to fabsf ; RUN: llc < %s -march=x86 -mattr=-sse2,-sse3,-sse | FileCheck %s ; RUN: llc < %s -march=x86 -mattr=-sse,-sse2,-sse3 -enable-unsafe-fp-math -enable-no-nans-fp-math | FileCheck %s --check-prefix=UNSAFE +; RUN: llc < %s -march=x86-64 -O0 | FileCheck %s --check-prefix=NOOPT declare float @fabsf(float) @@ -8,6 +9,7 @@ declare x86_fp80 @fabsl(x86_fp80) ; CHECK: test1: ; UNSAFE: test1: +; NOOPT: test1: define float @test1(float %X) { %Y = call float @fabsf(float %X) ret float %Y @@ -17,9 +19,11 @@ define float @test1(float %X) { ; CHECK-NOT: fabs ; UNSAFE-NOT: fabs +; NOOPT-NOT: fabsf ; CHECK: test2: ; UNSAFE: test2: +; NOOPT: test2: define double @test2(double %X) { %Y = fcmp oge double %X, -0.0 %Z = fsub double -0.0, %X @@ -28,6 +32,7 @@ define double @test2(double %X) { } ; fabs is not used here. ; CHECK-NOT: fabs +; NOOPT-NOT: fabs ; UNSAFE: {{^[ \t]+fabs$}} @@ -35,12 +40,15 @@ define double @test2(double %X) { ; CHECK: test3: ; UNSAFE: test3: +; NOOPT: test3: define x86_fp80 @test3(x86_fp80 %X) { %Y = call x86_fp80 @fabsl(x86_fp80 %X) ret x86_fp80 %Y } ; CHECK: {{^[ \t]+fabs$}} ; UNSAFE: {{^[ \t]+fabs$}} +; NOOPT: {{^[ \t]+fabs$}} ; CHECK-NOT: fabs ; UNSAFE-NOT: fabs +; NOOPT-NOT: fabs |