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 | e3731f5f6a05d26ed64a37577a1e9cc4f2b7a52d (patch) | |
tree | bc48b50b7eb9e237f81511b4aa81272e8dee8332 /test | |
parent | ff3a74d6d4a5fbcc9489d929b83fe16c97a1f429 (diff) | |
download | external_llvm-e3731f5f6a05d26ed64a37577a1e9cc4f2b7a52d.zip external_llvm-e3731f5f6a05d26ed64a37577a1e9cc4f2b7a52d.tar.gz external_llvm-e3731f5f6a05d26ed64a37577a1e9cc4f2b7a52d.tar.bz2 |
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')
-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 0000000..3af47f6 --- /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 +} |