summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2013-02-27 21:31:12 +0000
committerJim Grosbach <grosbach@apple.com>2013-02-27 21:31:12 +0000
commit5f21587648a33f3aa6dd9e5264c8418f9049ad00 (patch)
treec534da19a21710ea98cbc6de802bb79fda31b3d7 /llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll
parent4890582f2adda536c719f664a51ae84760ffe4fe (diff)
downloadbcm5719-llvm-5f21587648a33f3aa6dd9e5264c8418f9049ad00.tar.gz
bcm5719-llvm-5f21587648a33f3aa6dd9e5264c8418f9049ad00.zip
ARM: FMA is legal only if VFP4 is available.
rdar://13306723 llvm-svn: 176212
Diffstat (limited to 'llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll')
-rw-r--r--llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll31
1 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll b/llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll
new file mode 100644
index 00000000000..0e3bf237106
--- /dev/null
+++ b/llvm/test/CodeGen/ARM/2013-02-27-expand-vfma.ll
@@ -0,0 +1,31 @@
+; RUN: llc < %s -mtriple=armv7-apple-darwin | FileCheck %s
+; RUN: llc < %s -mtriple=armv7s-apple-darwin | FileCheck %s -check-prefix=VFP4
+
+define <4 x float> @muladd(<4 x float> %a, <4 x float> %b, <4 x float> %c) nounwind {
+; CHECK: muladd:
+; CHECK: fmaf
+; CHECK: fmaf
+; CHECK: fmaf
+; CHECK: fmaf
+; CHECK-NOT: fmaf
+
+; CHECK-VFP4: vfma.f32
+ %tmp = tail call <4 x float> @llvm.fma.v4f32(<4 x float> %b, <4 x float> %c, <4 x float> %a) #2
+ ret <4 x float> %tmp
+}
+
+declare <4 x float> @llvm.fma.v4f32(<4 x float>, <4 x float>, <4 x float>) #1
+
+define <2 x float> @muladd2(<2 x float> %a, <2 x float> %b, <2 x float> %c) nounwind {
+; CHECK: muladd2:
+; CHECK: fmaf
+; CHECK: fmaf
+; CHECK-NOT: fmaf
+
+; CHECK-VFP4: vfma.f32
+ %tmp = tail call <2 x float> @llvm.fma.v2f32(<2 x float> %b, <2 x float> %c, <2 x float> %a) #2
+ ret <2 x float> %tmp
+}
+
+declare <2 x float> @llvm.fma.v2f32(<2 x float>, <2 x float>, <2 x float>) #1
+
OpenPOWER on IntegriCloud