summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2016-06-21 12:29:03 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2016-06-21 12:29:03 +0000
commitbf2c03ee6952c69f1f418707ecad471761ea6ebb (patch)
treeea9336384f476ad10641f272be6ca6f846d8f045 /llvm/test/CodeGen/ARM
parenta266cf0518a3ae40a18d3133c0b10052b6b83e56 (diff)
downloadbcm5719-llvm-bf2c03ee6952c69f1f418707ecad471761ea6ebb.tar.gz
bcm5719-llvm-bf2c03ee6952c69f1f418707ecad471761ea6ebb.zip
[arm+x86] Make GNU variants behave like GNU w.r.t combining sin+cos into sincos.
Summary: canCombineSinCosLibcall() would previously combine sin+cos into sincos for GNUX32/GNUEABI/GNUEABIHF regardless of whether UnsafeFPMath were set or not. However, GNU would only combine them for UnsafeFPMath because sincos does not set errno like sin and cos do. It seems likely that this is an oversight. Reviewers: t.p.northover Subscribers: t.p.northover, aemerson, llvm-commits, rengolin Differential Revision: http://reviews.llvm.org/D21431 llvm-svn: 273259
Diffstat (limited to 'llvm/test/CodeGen/ARM')
-rw-r--r--llvm/test/CodeGen/ARM/sincos.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/sincos.ll b/llvm/test/CodeGen/ARM/sincos.ll
index 30b2664e372..5be0044ddbd 100644
--- a/llvm/test/CodeGen/ARM/sincos.ll
+++ b/llvm/test/CodeGen/ARM/sincos.ll
@@ -1,5 +1,8 @@
; RUN: llc < %s -mtriple=armv7-apple-ios6 -mcpu=cortex-a8 | FileCheck %s --check-prefix=NOOPT
; RUN: llc < %s -mtriple=armv7-apple-ios7 -mcpu=cortex-a8 | FileCheck %s --check-prefix=SINCOS
+; RUN: llc < %s -mtriple=armv7-linux-gnu -mcpu=cortex-a8 | FileCheck %s --check-prefix=NOOPT-GNU
+; RUN: llc < %s -mtriple=armv7-linux-gnueabi -mcpu=cortex-a8 \
+; RUN: --enable-unsafe-fp-math | FileCheck %s --check-prefix=SINCOS-GNU
; Combine sin / cos into a single call.
; rdar://12856873
@@ -9,9 +12,17 @@ entry:
; SINCOS-LABEL: test1:
; SINCOS: bl ___sincosf_stret
+; SINCOS-GNU-LABEL: test1:
+; SINCOS-GNU: bl sincosf
+
; NOOPT-LABEL: test1:
; NOOPT: bl _sinf
; NOOPT: bl _cosf
+
+; NOOPT-GNU-LABEL: test1:
+; NOOPT-GNU: bl sinf
+; NOOPT-GNU: bl cosf
+
%call = tail call float @sinf(float %x) nounwind readnone
%call1 = tail call float @cosf(float %x) nounwind readnone
%add = fadd float %call, %call1
@@ -23,9 +34,16 @@ entry:
; SINCOS-LABEL: test2:
; SINCOS: bl ___sincos_stret
+; SINCOS-GNU-LABEL: test2:
+; SINCOS-GNU: bl sincos
+
; NOOPT-LABEL: test2:
; NOOPT: bl _sin
; NOOPT: bl _cos
+
+; NOOPT-GNU-LABEL: test2:
+; NOOPT-GNU: bl sin
+; NOOPT-GNU: bl cos
%call = tail call double @sin(double %x) nounwind readnone
%call1 = tail call double @cos(double %x) nounwind readnone
%add = fadd double %call, %call1
OpenPOWER on IntegriCloud