diff options
author | Dan Gohman <gohman@apple.com> | 2008-05-23 17:49:40 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-05-23 17:49:40 +0000 |
commit | 0b924dcef859daafded64268447aeff3f60f1c08 (patch) | |
tree | bc48b50b7eb9e237f81511b4aa81272e8dee8332 /test/CodeGen/X86/pmul.ll | |
parent | d4083d01d275de9d30b0e23a03d8bd1984c8ddab (diff) | |
download | llvm-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.ll | 32 |
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 +} |