diff options
author | Craig Topper <craig.topper@intel.com> | 2019-10-12 00:00:59 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2019-10-12 00:00:59 +0000 |
commit | 7dcd440d44ddaf5c31f99128b1869e9dea5b767c (patch) | |
tree | 63ed6d409036e9aeac87e54124a78566c4c02c5b | |
parent | de9aa37bf061abce87d0fbca68959a79e0cc7c51 (diff) | |
download | bcm5719-llvm-7dcd440d44ddaf5c31f99128b1869e9dea5b767c.tar.gz bcm5719-llvm-7dcd440d44ddaf5c31f99128b1869e9dea5b767c.zip |
[X86] Add test case showing missing opportunity to fold vmovsdb into a store after type legalization. NFC
llvm-svn: 374614
-rw-r--r-- | llvm/test/CodeGen/X86/avx512-trunc.ll | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/avx512-trunc.ll b/llvm/test/CodeGen/X86/avx512-trunc.ll index 065a55fe7c5..c8eb139a144 100644 --- a/llvm/test/CodeGen/X86/avx512-trunc.ll +++ b/llvm/test/CodeGen/X86/avx512-trunc.ll @@ -1044,3 +1044,23 @@ define void @negative_test2_smax_usat_trunc_wb_256_mem(<16 x i16> %i, <16 x i8>* store <16 x i8> %x6, <16 x i8>* %res, align 1 ret void } + +define void @ssat_trunc_db_1024_mem(<32 x i32> %i, <32 x i8>* %p) { +; ALL-LABEL: ssat_trunc_db_1024_mem: +; ALL: ## %bb.0: +; ALL-NEXT: vpmovsdb %zmm0, %xmm0 +; ALL-NEXT: vpmovsdb %zmm1, %xmm1 +; ALL-NEXT: vmovdqu %xmm1, 16(%rdi) +; ALL-NEXT: vmovdqu %xmm0, (%rdi) +; ALL-NEXT: vzeroupper +; ALL-NEXT: retq + %x1 = icmp sgt <32 x i32> %i, <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 +-128, i32 -128> + %x2 = select <32 x i1> %x1, <32 x i32> %i, <32 x i32> <i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128, i32 -128> + %x3 = icmp slt <32 x i32> %x2, <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127> + %x5 = select <32 x i1> %x3, <32 x i32> %x2, <32 x i32> <i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127, i32 127> + %x6 = trunc <32 x i32> %x5 to <32 x i8> + store <32 x i8>%x6, <32 x i8>* %p, align 1 + ret void +} + |