diff options
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-12.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-13.ll | 4 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-2.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-21.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-28.ll | 33 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-29.ll | 2 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-31.ll | 13 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-32.ll | 13 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-33.ll | 11 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-34.ll | 13 | ||||
-rw-r--r-- | test/CodeGen/X86/vec_shuffle-35.ll | 20 |
11 files changed, 85 insertions, 32 deletions
diff --git a/test/CodeGen/X86/vec_shuffle-12.ll b/test/CodeGen/X86/vec_shuffle-12.ll index aad27ea..98b455a 100644 --- a/test/CodeGen/X86/vec_shuffle-12.ll +++ b/test/CodeGen/X86/vec_shuffle-12.ll @@ -1,8 +1,8 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 > %t +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah > %t ; RUN: not grep punpck %t ; RUN: grep pextrw %t | count 4 ; RUN: grep pinsrw %t | count 6 -; RUN: grep pshuflw %t | count 3 +; RUN: grep pshuflw %t | count 1 ; RUN: grep pshufhw %t | count 2 define <8 x i16> @t1(<8 x i16>* %A, <8 x i16>* %B) nounwind { diff --git a/test/CodeGen/X86/vec_shuffle-13.ll b/test/CodeGen/X86/vec_shuffle-13.ll index 4511e95..61cd128 100644 --- a/test/CodeGen/X86/vec_shuffle-13.ll +++ b/test/CodeGen/X86/vec_shuffle-13.ll @@ -1,7 +1,7 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 > %t +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah > %t ; RUN: grep movlhps %t | count 1 -; RUN: grep movss %t | count 1 ; RUN: grep pshufd %t | count 1 +; RUN: grep movss %t | count 1 ; RUN: grep pshuflw %t | count 1 ; RUN: grep pshufhw %t | count 1 diff --git a/test/CodeGen/X86/vec_shuffle-2.ll b/test/CodeGen/X86/vec_shuffle-2.ll index ae69801..b049565 100644 --- a/test/CodeGen/X86/vec_shuffle-2.ll +++ b/test/CodeGen/X86/vec_shuffle-2.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -o %t -f +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f ; RUN: grep pshufhw %t | count 1 ; RUN: grep pshuflw %t | count 1 ; RUN: grep movhps %t | count 1 diff --git a/test/CodeGen/X86/vec_shuffle-21.ll b/test/CodeGen/X86/vec_shuffle-21.ll index 5409acf..eec2691 100644 --- a/test/CodeGen/X86/vec_shuffle-21.ll +++ b/test/CodeGen/X86/vec_shuffle-21.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -o %t -f +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f ; RUN: grep pshuflw %t | count 1 ; RUN: grep pextrw %t | count 2 ; RUN: grep pinsrw %t | count 2 diff --git a/test/CodeGen/X86/vec_shuffle-28.ll b/test/CodeGen/X86/vec_shuffle-28.ll index 0c81e77..f7e5001 100644 --- a/test/CodeGen/X86/vec_shuffle-28.ll +++ b/test/CodeGen/X86/vec_shuffle-28.ll @@ -1,8 +1,12 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=sse41 -o %t -f -; RUN: grep punpcklwd %t | count 1 -; RUN: grep pextrw %t | count 6 -; RUN: grep pinsrw %t | count 8 +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep movd %t | count 1 +; RUN: grep pshuflw %t | count 1 +; RUN: grep pinsrw %t | count 1 +; RUN: llvm-as < %s | llc -march=x86 -mcpu=core2 -o %t -f +; RUN: grep pshufb %t | count 1 +; FIXME: this test has a superfluous punpcklqdq pre-pshufb currently. +; Don't XFAIL it because it's still better than the previous code. ; Pack various elements via shuffles. define <8 x i16> @shuf1(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { @@ -10,24 +14,3 @@ entry: %tmp7 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 1, i32 8, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef , i32 undef > ret <8 x i16> %tmp7 } - - -define <8 x i16> @shuf2(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { -entry: - %tmp8 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 undef, i32 undef, i32 7, i32 2, i32 8, i32 undef, i32 undef , i32 undef > - ret <8 x i16> %tmp8 -} - - -define <8 x i16> @shuf3(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { -entry: - %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 0, i32 1, i32 undef, i32 undef, i32 3, i32 11, i32 undef , i32 undef > - ret <8 x i16> %tmp9 -} - - -define <8 x i16> @shuf4(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { -entry: - %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 8, i32 9, i32 undef, i32 undef, i32 11, i32 3, i32 undef , i32 undef > - ret <8 x i16> %tmp9 -} diff --git a/test/CodeGen/X86/vec_shuffle-29.ll b/test/CodeGen/X86/vec_shuffle-29.ll index aac63c3..49cb0a7 100644 --- a/test/CodeGen/X86/vec_shuffle-29.ll +++ b/test/CodeGen/X86/vec_shuffle-29.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as < %s | llc -march=x86 -mattr=sse41 -disable-mmx -o %t -f +; RUN: llvm-as < %s | llc -march=x86 -mattr=sse41,-ssse3 -disable-mmx -o %t -f ; RUN: not grep pextrw %t ; RUN: grep pinsrw %t diff --git a/test/CodeGen/X86/vec_shuffle-31.ll b/test/CodeGen/X86/vec_shuffle-31.ll new file mode 100644 index 0000000..0a9dc1f --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-31.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep pextrw %t | count 1 +; RUN: grep punpcklqdq %t | count 1 +; RUN: grep pshufhw %t | count 1 +; RUN: grep pinsrw %t | count 1 +; RUN: llvm-as < %s | llc -march=x86 -mcpu=core2 -o %t -f +; RUN: grep pshufb %t | count 1 + +define <8 x i16> @shuf3(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { +entry: + %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 0, i32 1, i32 undef, i32 undef, i32 3, i32 11, i32 undef , i32 undef > + ret <8 x i16> %tmp9 +} diff --git a/test/CodeGen/X86/vec_shuffle-32.ll b/test/CodeGen/X86/vec_shuffle-32.ll new file mode 100644 index 0000000..3a81948 --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-32.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep punpcklqdq %t | count 1 +; RUN: grep pextrw %t | count 1 +; RUN: grep pshufd %t | count 1 +; RUN: grep pinsrw %t | count 1 +; RUN: llvm-as < %s | llc -march=x86 -mcpu=core2 -o %t -f +; RUN: grep pshufb %t | count 1 + +define <8 x i16> @shuf4(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { +entry: + %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 8, i32 9, i32 undef, i32 undef, i32 11, i32 3, i32 undef , i32 undef > + ret <8 x i16> %tmp9 +} diff --git a/test/CodeGen/X86/vec_shuffle-33.ll b/test/CodeGen/X86/vec_shuffle-33.ll new file mode 100644 index 0000000..e3d6304 --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-33.ll @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep punpcklqdq %t | count 1 +; RUN: grep pshufhw %t | count 1 +; RUN: not grep pextrw %t +; RUN: not grep pinsrw %t + +define <8 x i16> @shuf5(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { +entry: + %tmp9 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 8, i32 9, i32 undef, i32 undef, i32 undef, i32 2, i32 undef , i32 undef > + ret <8 x i16> %tmp9 +} diff --git a/test/CodeGen/X86/vec_shuffle-34.ll b/test/CodeGen/X86/vec_shuffle-34.ll new file mode 100644 index 0000000..99c95d1 --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-34.ll @@ -0,0 +1,13 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep pextrw %t | count 1 +; RUN: grep punpcklqdq %t | count 1 +; RUN: grep pshuflw %t | count 1 +; RUN: grep pinsrw %t | count 1 +; RUN: llvm-as < %s | llc -march=x86 -mcpu=core2 -o %t -f +; RUN: grep pshufb %t | count 2 + +define <8 x i16> @shuf2(<8 x i16> %T0, <8 x i16> %T1) nounwind readnone { +entry: + %tmp8 = shufflevector <8 x i16> %T0, <8 x i16> %T1, <8 x i32> < i32 undef, i32 undef, i32 7, i32 2, i32 8, i32 undef, i32 undef , i32 undef > + ret <8 x i16> %tmp8 +} diff --git a/test/CodeGen/X86/vec_shuffle-35.ll b/test/CodeGen/X86/vec_shuffle-35.ll new file mode 100644 index 0000000..f2b241f --- /dev/null +++ b/test/CodeGen/X86/vec_shuffle-35.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah -o %t -f +; RUN: grep pextrw %t | count 13 +; RUN: grep pinsrw %t | count 14 +; RUN: grep rolw %t | count 13 +; RUN: not grep esp %t +; RUN: not grep ebp %t +; RUN: llvm-as < %s | llc -march=x86 -mcpu=core2 -o %t -f +; RUN: grep pshufb %t | count 3 + +define <16 x i8> @shuf1(<16 x i8> %T0) nounwind readnone { +entry: + %tmp8 = shufflevector <16 x i8> %T0, <16 x i8> undef, <16 x i32> < i32 1, i32 0, i32 3, i32 2, i32 5, i32 4, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 12, i32 13, i32 15 , i32 14 > + ret <16 x i8> %tmp8 +} + +define <16 x i8> @shuf2(<16 x i8> %T0, <16 x i8> %T1) nounwind readnone { +entry: + %tmp8 = shufflevector <16 x i8> %T0, <16 x i8> %T1, <16 x i32> < i32 undef, i32 undef, i32 3, i32 2, i32 17, i32 16, i32 7, i32 6, i32 9, i32 8, i32 11, i32 10, i32 12, i32 13, i32 15 , i32 14 > + ret <16 x i8> %tmp8 +} |