diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-07-13 19:25:18 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-07-13 19:25:18 +0000 |
commit | ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0 (patch) | |
tree | 3a28a772df9b17aef34f49e3c727965ad28c0c93 /test/CodeGen/X86/swizzle-avx2.ll | |
parent | 9df3605dea17e84f8183581f6103bd0c79e2a606 (diff) | |
download | src-test-ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0.tar.gz src-test-ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0.zip |
Notes
Diffstat (limited to 'test/CodeGen/X86/swizzle-avx2.ll')
-rw-r--r-- | test/CodeGen/X86/swizzle-avx2.ll | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/test/CodeGen/X86/swizzle-avx2.ll b/test/CodeGen/X86/swizzle-avx2.ll index 29dfa6c2dcc17..6ca9126eb09df 100644 --- a/test/CodeGen/X86/swizzle-avx2.ll +++ b/test/CodeGen/X86/swizzle-avx2.ll @@ -1,4 +1,5 @@ -; RUN: llc < %s -march=x86-64 -mtriple=x86_64-unknown-linux-gnu -mcpu=core-avx2 | FileCheck %s +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=avx2 | FileCheck %s ; Test that we correctly fold a shuffle that performs a swizzle of another ; shuffle node according to the rule @@ -11,81 +12,77 @@ ; Check that we produce a single vector permute / shuffle in all cases. define <8 x i32> @swizzle_1(<8 x i32> %v) { +; CHECK-LABEL: swizzle_1: +; CHECK: # BB#0: +; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [1,3,2,0,4,5,6,7] +; CHECK-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 3, i32 1, i32 2, i32 0, i32 7, i32 5, i32 6, i32 4> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 1, i32 0, i32 2, i32 3, i32 7, i32 5, i32 6, i32 4> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_1 -; CHECK: vpermd -; CHECK-NOT: vpermd -; CHECK: ret - define <8 x i32> @swizzle_2(<8 x i32> %v) { +; CHECK-LABEL: swizzle_2: +; CHECK: # BB#0: +; CHECK-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5] +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 6, i32 7, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 6, i32 7, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_2 -; CHECK: vpshufd $78 -; CHECK-NOT: vpermd -; CHECK-NOT: vpshufd -; CHECK: ret - define <8 x i32> @swizzle_3(<8 x i32> %v) { +; CHECK-LABEL: swizzle_3: +; CHECK: # BB#0: +; CHECK-NEXT: vpshufd {{.*#+}} ymm0 = ymm0[2,3,0,1,6,7,4,5] +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 2, i32 3, i32 0, i32 1> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_3 -; CHECK: vpshufd $78 -; CHECK-NOT: vpermd -; CHECK-NOT: vpshufd -; CHECK: ret - define <8 x i32> @swizzle_4(<8 x i32> %v) { +; CHECK-LABEL: swizzle_4: +; CHECK: # BB#0: +; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [3,1,2,0,6,5,4,7] +; CHECK-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 4, i32 7, i32 5, i32 6, i32 3, i32 2, i32 0, i32 1> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 4, i32 7, i32 5, i32 6, i32 3, i32 2, i32 0, i32 1> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_4 -; CHECK: vpermd -; CHECK-NOT: vpermd -; CHECK: ret - define <8 x i32> @swizzle_5(<8 x i32> %v) { +; CHECK-LABEL: swizzle_5: +; CHECK: # BB#0: +; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [3,0,1,2,7,6,4,5] +; CHECK-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 7, i32 4, i32 6, i32 5, i32 0, i32 2, i32 1, i32 3> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 7, i32 4, i32 6, i32 5, i32 0, i32 2, i32 1, i32 3> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_5 -; CHECK: vpermd -; CHECK-NOT: vpermd -; CHECK: ret - define <8 x i32> @swizzle_6(<8 x i32> %v) { +; CHECK-LABEL: swizzle_6: +; CHECK: # BB#0: +; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [3,1,0,2,4,5,6,7] +; CHECK-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 2, i32 1, i32 3, i32 0, i32 4, i32 7, i32 6, i32 5> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 2, i32 1, i32 3, i32 0, i32 4, i32 7, i32 6, i32 5> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_6 -; CHECK: vpermd -; CHECK-NOT: vpermd -; CHECK: ret - define <8 x i32> @swizzle_7(<8 x i32> %v) { +; CHECK-LABEL: swizzle_7: +; CHECK: # BB#0: +; CHECK-NEXT: vmovdqa {{.*#+}} ymm1 = [0,2,3,1,4,5,6,7] +; CHECK-NEXT: vpermd %ymm0, %ymm1, %ymm0 +; CHECK-NEXT: retq %1 = shufflevector <8 x i32> %v, <8 x i32> undef, <8 x i32> <i32 0, i32 3, i32 1, i32 2, i32 5, i32 4, i32 6, i32 7> %2 = shufflevector <8 x i32> %1, <8 x i32> undef, <8 x i32> <i32 0, i32 3, i32 1, i32 2, i32 5, i32 4, i32 6, i32 7> ret <8 x i32> %2 } -; CHECK-LABEL: swizzle_7 -; CHECK: vpermd -; CHECK-NOT: vpermd -; CHECK: ret - |