From: Sanjay Patel Date: Wed, 8 Jan 2020 19:42:32 +0000 (-0500) Subject: [x86] add test for concat-extract corner case; NFC X-Git-Tag: llvmorg-11-init~629 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=31992a69b808f30a46a4ddb6da0d073d528bc72e;p=platform%2Fupstream%2Fllvm.git [x86] add test for concat-extract corner case; NFC See D72361 for discussion. --- diff --git a/llvm/test/CodeGen/X86/extract-concat.ll b/llvm/test/CodeGen/X86/extract-concat.ll index e8c89e1..cd8c4d1 100644 --- a/llvm/test/CodeGen/X86/extract-concat.ll +++ b/llvm/test/CodeGen/X86/extract-concat.ll @@ -147,3 +147,25 @@ define <16 x i64> @load_catcat(<4 x i64>* %p) { %r = shufflevector <16 x i64> %cat2, <16 x i64> undef, <16 x i32> ret <16 x i64> %r } + +; Use weird types to make sure we do not miscompile a case where +; the source ops are not an even multiple size of the result. + +define <4 x i32> @cat_ext_straddle(<6 x i32>* %px, <6 x i32>* %py) { +; SSE42-LABEL: cat_ext_straddle: +; SSE42: # %bb.0: +; SSE42-NEXT: movaps 16(%rdi), %xmm0 +; SSE42-NEXT: unpcklpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; SSE42-NEXT: retq +; +; AVX-LABEL: cat_ext_straddle: +; AVX: # %bb.0: +; AVX-NEXT: vmovaps 16(%rdi), %xmm0 +; AVX-NEXT: vunpcklpd {{.*#+}} xmm0 = xmm0[0],mem[0] +; AVX-NEXT: retq + %x = load <6 x i32>, <6 x i32>* %px + %y = load <6 x i32>, <6 x i32>* %py + %cat = shufflevector <6 x i32> %x, <6 x i32> %y, <12 x i32> + %ext = shufflevector <12 x i32> %cat, <12 x i32> undef, <4 x i32> + ret <4 x i32> %ext +}