summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2019-10-11 04:02:04 +0000
committerCraig Topper <craig.topper@intel.com>2019-10-11 04:02:04 +0000
commit4b9947e2e76e1e7b1ec0b2fdb9609b2850a20812 (patch)
treeac006ba8a39738a4036f61159d2e36321d83f7ff
parent2d5820cd72255e04aaef2da3c21d62396fdd7fb9 (diff)
downloadbcm5719-llvm-4b9947e2e76e1e7b1ec0b2fdb9609b2850a20812.tar.gz
bcm5719-llvm-4b9947e2e76e1e7b1ec0b2fdb9609b2850a20812.zip
[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
-rw-r--r--llvm/test/CodeGen/X86/min-legal-vector-width.ll22
1 files changed, 21 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/X86/min-legal-vector-width.ll b/llvm/test/CodeGen/X86/min-legal-vector-width.ll
index 91ece95e0a0..95e6d3e7ae7 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, <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
+ %c = select <16 x i1> %b, <16 x i32> %a, <16 x i32> <i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255, i32 255>
+ %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:
OpenPOWER on IntegriCloud