diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-12-15 03:00:47 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-12-15 03:00:47 +0000 |
commit | 15e8f5a81feebb70de587edf9622c2aff8284564 (patch) | |
tree | 606265dd9805e5c0a9cc8b99a8a94df2bb628f25 /test | |
parent | d606e673d9979acfea51216471c7de4ba1f07cae (diff) | |
download | external_llvm-15e8f5a81feebb70de587edf9622c2aff8284564.zip external_llvm-15e8f5a81feebb70de587edf9622c2aff8284564.tar.gz external_llvm-15e8f5a81feebb70de587edf9622c2aff8284564.tar.bz2 |
Make better use of instructions that clear high bits; fix various 2-wide shuffle bugs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45058 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/vec_set-5.ll | 3 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_set-7.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-14.ll | 42 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-15.ll | 81 |
4 files changed, 126 insertions, 2 deletions
diff --git a/test/CodeGen/X86/vec_set-5.ll b/test/CodeGen/X86/vec_set-5.ll index cf3ac4c..515b308 100644 --- a/test/CodeGen/X86/vec_set-5.ll +++ b/test/CodeGen/X86/vec_set-5.ll @@ -1,7 +1,8 @@ ; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mattr=+sse2 -o %t -f -; RUN: grep movlhps %t | count 2 +; RUN: grep movlhps %t | count 1 ; RUN: grep unpcklps %t | count 1 ; RUN: grep punpckldq %t | count 1 +; RUN: grep movq %t | count 1 <4 x float> %test1(float %a, float %b) { %tmp = insertelement <4 x float> zeroinitializer, float %a, uint 0 diff --git a/test/CodeGen/X86/vec_set-7.ll b/test/CodeGen/X86/vec_set-7.ll index d622d96..3bf02e2 100644 --- a/test/CodeGen/X86/vec_set-7.ll +++ b/test/CodeGen/X86/vec_set-7.ll @@ -1,4 +1,4 @@ -; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mattr=+sse2 | grep movq | count 1 +; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mattr=+sse2 | grep movsd | count 1 <2 x long> %test(<2 x long>* %p) { %tmp = cast <2 x long>* %p to double* diff --git a/test/CodeGen/X86/vec_shuffle-14.ll b/test/CodeGen/X86/vec_shuffle-14.ll new file mode 100644 index 0000000..6e8d0b8 --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-14.ll @@ -0,0 +1,42 @@ +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | grep movd | count 1 +; RUN: llvm-as < %s | llc -march=x86-64 -mattr=+sse2 | grep movd | count 2 +; RUN: llvm-as < %s | llc -march=x86-64 -mattr=+sse2 | grep movq | count 3 +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | not grep xor + +define <4 x i32> @t1(i32 %a) nounwind { +entry: + %tmp = insertelement <4 x i32> undef, i32 %a, i32 0 + %tmp6 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %tmp, <4 x i32> < i32 4, i32 1, i32 2, i32 3 > ; <<4 x i32>> [#uses=1] + ret <4 x i32> %tmp6 +} + +define <2 x i64> @t2(i64 %a) nounwind { +entry: + %tmp = insertelement <2 x i64> undef, i64 %a, i32 0 + %tmp6 = shufflevector <2 x i64> zeroinitializer, <2 x i64> %tmp, <2 x i32> < i32 2, i32 1 > ; <<4 x i32>> [#uses=1] + ret <2 x i64> %tmp6 +} + +define <2 x i64> @t3(<2 x i64>* %a) nounwind { +entry: + %tmp4 = load <2 x i64>* %a, align 16 ; <<2 x i64>> [#uses=1] + %tmp6 = bitcast <2 x i64> %tmp4 to <4 x i32> ; <<4 x i32>> [#uses=1] + %tmp7 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %tmp6, <4 x i32> < i32 4, i32 5, i32 2, i32 3 > ; <<4 x i32>> [#uses=1] + %tmp8 = bitcast <4 x i32> %tmp7 to <2 x i64> ; <<2 x i64>> [#uses=1] + ret <2 x i64> %tmp8 +} + +define <2 x i64> @t4(<2 x i64> %a) nounwind { +entry: + %tmp5 = bitcast <2 x i64> %a to <4 x i32> ; <<4 x i32>> [#uses=1] + %tmp6 = shufflevector <4 x i32> zeroinitializer, <4 x i32> %tmp5, <4 x i32> < i32 4, i32 5, i32 2, i32 3 > ; <<4 x i32>> [#uses=1] + %tmp7 = bitcast <4 x i32> %tmp6 to <2 x i64> ; <<2 x i64>> [#uses=1] + ret <2 x i64> %tmp7 +} + +define <2 x i64> @t5(<2 x i64> %a) nounwind { +entry: + %tmp6 = shufflevector <2 x i64> zeroinitializer, <2 x i64> %a, <2 x i32> < i32 2, i32 1 > ; <<4 x i32>> [#uses=1] + ret <2 x i64> %tmp6 +} diff --git a/test/CodeGen/X86/vec_shuffle-15.ll b/test/CodeGen/X86/vec_shuffle-15.ll new file mode 100644 index 0000000..062f77c --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-15.ll @@ -0,0 +1,81 @@ +; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 + +define <2 x i64> @t00(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 0, i32 0 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t01(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 0, i32 1 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t02(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 0, i32 2 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t03(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 0, i32 3 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t10(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 1, i32 0 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t11(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 1, i32 1 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t12(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 1, i32 2 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t13(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 1, i32 3 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t20(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 2, i32 0 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t21(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 2, i32 1 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t22(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 2, i32 2 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t23(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 2, i32 3 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t30(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 3, i32 0 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t31(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 3, i32 1 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t32(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 3, i32 2 > + ret <2 x i64> %tmp +} + +define <2 x i64> @t33(<2 x i64> %a, <2 x i64> %b) nounwind { + %tmp = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> < i32 3, i32 3 > + ret <2 x i64> %tmp +} |