From 4b9947e2e76e1e7b1ec0b2fdb9609b2850a20812 Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Fri, 11 Oct 2019 04:02:04 +0000 Subject: [PATCH] [X86] Add test case for trunc_packus_v16i32_v16i8_store to min-legal-vector-width.ll We aren't folding the vpmovuswb into the store. llvm-svn: 374507 --- llvm/test/CodeGen/X86/min-legal-vector-width.ll | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/llvm/test/CodeGen/X86/min-legal-vector-width.ll b/llvm/test/CodeGen/X86/min-legal-vector-width.ll index 91ece95..95e6d3e 100644 --- a/llvm/test/CodeGen/X86/min-legal-vector-width.ll +++ b/llvm/test/CodeGen/X86/min-legal-vector-width.ll @@ -1080,7 +1080,7 @@ define void @vselect_split_v16i16_setcc(<16 x i16> %s, <16 x i16> %t, <16 x i32> ret void } -define <16 x i8> @trunc_packus_v16i32_v16i8(<16 x i32>* %p, <16 x i8>* %q) "min-legal-vector-width"="256" { +define <16 x i8> @trunc_packus_v16i32_v16i8(<16 x i32>* %p) "min-legal-vector-width"="256" { ; CHECK-LABEL: trunc_packus_v16i32_v16i8: ; CHECK: # %bb.0: ; CHECK-NEXT: vmovdqa (%rdi), %ymm0 @@ -1098,6 +1098,26 @@ define <16 x i8> @trunc_packus_v16i32_v16i8(<16 x i32>* %p, <16 x i8>* %q) "min- ret <16 x i8> %f } +define void @trunc_packus_v16i32_v16i8_store(<16 x i32>* %p, <16 x i8>* %q) "min-legal-vector-width"="256" { +; CHECK-LABEL: trunc_packus_v16i32_v16i8_store: +; CHECK: # %bb.0: +; CHECK-NEXT: vmovdqa (%rdi), %ymm0 +; CHECK-NEXT: vpackusdw 32(%rdi), %ymm0, %ymm0 +; CHECK-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3] +; CHECK-NEXT: vpmovuswb %ymm0, %xmm0 +; CHECK-NEXT: vmovdqa %xmm0, (%rsi) +; CHECK-NEXT: vzeroupper +; CHECK-NEXT: retq + %a = load <16 x i32>, <16 x i32>* %p + %b = icmp slt <16 x i32> %a, + %c = select <16 x i1> %b, <16 x i32> %a, <16 x i32> + %d = icmp sgt <16 x i32> %c, zeroinitializer + %e = select <16 x i1> %d, <16 x i32> %c, <16 x i32> zeroinitializer + %f = trunc <16 x i32> %e to <16 x i8> + store <16 x i8> %f, <16 x i8>* %q + ret void +} + define <32 x i8> @trunc_packus_v32i32_v32i8(<32 x i32>* %p) "min-legal-vector-width"="256" { ; CHECK-LABEL: trunc_packus_v32i32_v32i8: ; CHECK: # %bb.0: -- 2.7.4