]> granicus.if.org Git - clang/commit
[X86] Implement old kunpck intrinsics using vector ops on vXi1 instead of integer...
authorCraig Topper <craig.topper@intel.com>
Sun, 14 Jan 2018 19:23:50 +0000 (19:23 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 14 Jan 2018 19:23:50 +0000 (19:23 +0000)
commit4647e409dfdcda90c9ea357d16f30f65ffcf1bb6
tree3dd6d3812f6cd275801d6815df26b22219b2b528
parent5e18126551e3012cb1a8e8d99e36ae8fa58168b3
[X86] Implement old kunpck intrinsics using vector ops on vXi1 instead of integer shift/and/or

Summary:
kunpck intrinsics were removed in favor of native IR a few months ago. The implementation lowers them as by operation on the integer types passed to the intrinsic and then just shifting, masking, and oring them together. A special X86 DAG combine was added to recognize this patter and turn it into a concat_vector operation.

I think it makes more sense to keep the IR implementation closer to vector operations on vXi1. Given that we expect these builtins to be used around other builtins that operate on k-registers which we try to represent in IR with vXi1. InstCombine should be able to get rid of the bitcasts between integers and vXi1 leaving only the vector operations.

Reviewers: RKSimon, spatel, zvi, jina.nahias

Reviewed By: RKSimon

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D42016

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322461 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGBuiltin.cpp
lib/Headers/avx512bwintrin.h
lib/Headers/avx512fintrin.h
test/CodeGen/avx512bw-builtins.c
test/CodeGen/avx512f-builtins.c