aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2012-08-03 04:06:28 +0000
committerBob Wilson <bob.wilson@apple.com>2012-08-03 04:06:28 +0000
commitd49edb7ab098fa0c82f59efbcf1b4eb2958f8dc3 (patch)
tree4b5501fbb4854f887d64f9f1f828402f0fcc6600 /test
parentd1e672e0234b99dbff78baed0e47d033cf963abe (diff)
downloadexternal_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.ll8
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