diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-03-04 18:25:41 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-03-04 18:25:41 +0000 |
commit | 1d6bb9f4171028bd0eb3dfcb59f42b28c279d4be (patch) | |
tree | bd5f9425e10e6616a37eac0815b3566ba1132430 /test/CodeGen/X86/pr40891.ll | |
parent | bd7f07563c83e00dae23ea41c0fc4f95995e50cb (diff) | |
download | src-a3fe7a9f3f7b071150a3abe933e9b4670a8d078c.tar.gz src-a3fe7a9f3f7b071150a3abe933e9b4670a8d078c.zip |
Vendor import of llvm release_80 branch r355313:vendor/llvm/llvm-release_80-r355313
Diffstat (limited to 'test/CodeGen/X86/pr40891.ll')
-rw-r--r-- | test/CodeGen/X86/pr40891.ll | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/CodeGen/X86/pr40891.ll b/test/CodeGen/X86/pr40891.ll new file mode 100644 index 000000000000..3f3cfb23d03d --- /dev/null +++ b/test/CodeGen/X86/pr40891.ll @@ -0,0 +1,22 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=avx2 | FileCheck %s + +; Make sure this sequence doesn't hang in DAG combine. + +define <8 x i32> @foo(<8 x i64> %x, <4 x i64> %y) { +; CHECK-LABEL: foo: +; CHECK: # %bb.0: +; CHECK-NEXT: vandps %ymm2, %ymm0, %ymm0 +; CHECK-NEXT: vandps {{\.LCPI.*}}, %ymm1, %ymm1 +; CHECK-NEXT: vpermilps {{.*#+}} ymm0 = ymm0[0,2,2,3,4,6,6,7] +; CHECK-NEXT: vpermpd {{.*#+}} ymm0 = ymm0[0,2,2,3] +; CHECK-NEXT: vpermilps {{.*#+}} ymm1 = ymm1[0,2,2,3,4,6,6,7] +; CHECK-NEXT: vpermpd {{.*#+}} ymm1 = ymm1[0,2,2,3] +; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0 +; CHECK-NEXT: retl + %a = shufflevector <4 x i64> %y, <4 x i64> <i64 12345, i64 67890, i64 13579, i64 24680>, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> + %b = and <8 x i64> %x, %a + %c = trunc <8 x i64> %b to <8 x i32> + ret <8 x i32> %c +} + |