summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/pmul.ll
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2008-05-23 17:49:40 +0000
committerDan Gohman <gohman@apple.com>2008-05-23 17:49:40 +0000
commit0b924dcef859daafded64268447aeff3f60f1c08 (patch)
treebc48b50b7eb9e237f81511b4aa81272e8dee8332 /test/CodeGen/X86/pmul.ll
parentd4083d01d275de9d30b0e23a03d8bd1984c8ddab (diff)
downloadllvm-0b924dcef859daafded64268447aeff3f60f1c08.tar.gz
llvm-0b924dcef859daafded64268447aeff3f60f1c08.tar.bz2
llvm-0b924dcef859daafded64268447aeff3f60f1c08.tar.xz
Use PMULDQ for v2i64 multiplies when SSE4.1 is available. And add
load-folding table entries for PMULDQ and PMULLD. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51489 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/pmul.ll')
-rw-r--r--test/CodeGen/X86/pmul.ll32
1 files changed, 32 insertions, 0 deletions
diff --git a/test/CodeGen/X86/pmul.ll b/test/CodeGen/X86/pmul.ll
new file mode 100644
index 0000000000..3af47f680c
--- /dev/null
+++ b/test/CodeGen/X86/pmul.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-as < %s | llc -march=x86 -mattr=sse41 > %t
+; RUN: grep pmul %t | count 6
+; RUN: grep mov %t | count 8
+
+define <4 x i32> @a(<4 x i32> %i) nounwind {
+ %A = mul <4 x i32> %i, < i32 117, i32 117, i32 117, i32 117 >
+ ret <4 x i32> %A
+}
+define <2 x i64> @b(<2 x i64> %i) nounwind {
+ %A = mul <2 x i64> %i, < i64 117, i64 117 >
+ ret <2 x i64> %A
+}
+define <4 x i32> @c(<4 x i32> %i, <4 x i32> %j) nounwind {
+ %A = mul <4 x i32> %i, %j
+ ret <4 x i32> %A
+}
+define <2 x i64> @d(<2 x i64> %i, <2 x i64> %j) nounwind {
+ %A = mul <2 x i64> %i, %j
+ ret <2 x i64> %A
+}
+; Use a call to force spills.
+declare void @foo()
+define <4 x i32> @e(<4 x i32> %i, <4 x i32> %j) nounwind {
+ call void @foo()
+ %A = mul <4 x i32> %i, %j
+ ret <4 x i32> %A
+}
+define <2 x i64> @f(<2 x i64> %i, <2 x i64> %j) nounwind {
+ call void @foo()
+ %A = mul <2 x i64> %i, %j
+ ret <2 x i64> %A
+}