Craig Topper
f57e17def0
[AVX-512] Remove intrinsics for valignd/q and autoupgrade them to native shuffles.
...
llvm-svn: 287744
2016-11-23 06:54:55 +00:00
Simon Pilgrim
b57dd17142
[X86][AVX512] Autoupgrade lossless i32/u32 to f64 conversion intrinsics with generic IR
...
Both the (V)CVTDQ2PD (i32 to f64) and (V)CVTUDQ2PD (u32 to f64) conversion instructions are lossless and can be safely represented as generic SINT_TO_FP/UINT_TO_FP calls instead of x86 intrinsics without affecting final codegen.
LLVM counterpart to D26686
Differential Revision: https://reviews.llvm.org/D26736
llvm-svn: 287108
2016-11-16 14:48:32 +00:00
Ayman Musa
4d60243bfd
[X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
...
Differential Revision: https://reviews.llvm.org/D26128
llvm-svn: 287087
2016-11-16 09:00:28 +00:00
Craig Topper
353e59b6d6
[AVX-512] Remove and autoupgrade masked dword/qword variable shift intrinsics to the new unmasked versions and selects.
...
llvm-svn: 286786
2016-11-14 01:53:22 +00:00
Igor Breger
e2399f9e0e
revert commit r286761, some builds failed on Win platforms
...
llvm-svn: 286765
2016-11-13 15:48:11 +00:00
Ayman Musa
c09b3769ae
[X86][AVX512] Removing llvm x86 intrinsics for _mm_mask_move_{ss|sd} intrinsics.
...
Differential Revision: https://reviews.llvm.org/D26128
llvm-svn: 286761
2016-11-13 14:51:25 +00:00
Craig Topper
706d897d8a
[AVX-512] Move masked shift intrinsics tests to the autoupgrade test file. These missed being moved in r286725.
...
llvm-svn: 286746
2016-11-13 03:42:27 +00:00
Craig Topper
da6a63db1c
[AVX-512] Remove the remaining masked shift by immediate or by single value. Autoupgrade them to recently introduced unmasked versions and a select.
...
After this I'll add the unmasked intrinsics to InstCombineCalls to finish making our handling of these types of shuffles consistent between AVX-512 and the legacy intrinsics.
llvm-svn: 286725
2016-11-12 18:04:46 +00:00
Craig Topper
b110e04851
[AVX-512] Remove masked pmovzx/pmovsx builtins and autoupgrade them to selects and native zext/sext.
...
This mostly reuses earlier autoupgrade support for the sse and avx equivalents. Just needed to add the code to add the select.
llvm-svn: 286092
2016-11-07 02:12:57 +00:00
Craig Topper
8ec5c7326d
[AVX-512] Remove masked pmin/pmax intrinsics and autoupgrade to native IR.
...
Clang patch to replace 512-bit vector and 64-bit element versions with native IR will follow.
llvm-svn: 284955
2016-10-24 04:04:16 +00:00
Craig Topper
4619c9e6a8
[X86] Remove masked shufpd/shufps intrinsics and autoupgrade to native vector shuffles. They were removed from clang previously but accidentally left in the backend.
...
llvm-svn: 281300
2016-09-13 07:40:53 +00:00
Craig Topper
af0d63d2e7
[AVX-512] Remove masked integer add/sub/mull intrinsics and upgrade to native IR.
...
llvm-svn: 280611
2016-09-04 02:09:53 +00:00
Elena Demikhovsky
dca03bebd3
AVX-512: Changed lowering of BITCAST between i1 vectors and i8/i16/i32 integer values
...
Optimized lowering of BITCAST node. The BITCAST node can be replaced with COPY_TO_REG instead of KMOV.
It allows to suppress two opposite BITCAST operations and avoid redundant "movs".
Differential Revision: https://reviews.llvm.org/D23247
llvm-svn: 277958
2016-08-07 13:05:58 +00:00
Craig Topper
00d34ed64f
[AVX-512] Don't let ExeDependencyFix pass convert VPANDD/Q to VPANDPS/PD unless DQI instructions are supported. Same for ANDN, OR, and XOR.
...
Thanks to Igor Breger for pointing out my mistake.
llvm-svn: 277292
2016-07-31 17:15:07 +00:00
Craig Topper
f4151bea72
[AVX512] Add initial support for the Execution Domain fixing pass to change some EVEX instructions.
...
llvm-svn: 276393
2016-07-22 05:00:52 +00:00
Craig Topper
a6e6febe2c
[AVX512] Remove masked logic op intrinsics and autoupgrade them to native IR.
...
llvm-svn: 275155
2016-07-12 05:27:53 +00:00
Craig Topper
70610cf7b6
[X86] Remove and autoupgrade 512-bit non-temporal store intrinsics.
...
llvm-svn: 274966
2016-07-09 04:38:27 +00:00
Matthias Braun
152e7c8b12
VirtRegMap: Replace some identity copies with KILL instructions.
...
An identity COPY like this:
%AL = COPY %AL, %EAX<imp-def>
has no semantic effect, but encodes liveness information: Further users
of %EAX only depend on this instruction even though it does not define
the full register.
Replace the COPY with a KILL instruction in those cases to maintain this
liveness information. (This reverts a small part of r238588 but this
time adds a comment explaining why a KILL instruction is useful).
llvm-svn: 274952
2016-07-09 00:19:07 +00:00
Craig Topper
f7bf6de0af
[AVX512] Remove and autoupgrade a duplicate set of 512-bit masked shift intrinsics.
...
I'm not sure if clang ever used these builtin names or not.
llvm-svn: 274827
2016-07-08 06:14:47 +00:00
Simon Pilgrim
4e96fbf3c1
[X86][AVX512] Autoupgrade the BROADCAST intrinsics
...
llvm-svn: 274550
2016-07-05 13:58:47 +00:00
Simon Pilgrim
02d435d2f4
[X86][AVX512] Autoupgrade the VPERMPD/VPERMQ intrinsics
...
llvm-svn: 274506
2016-07-04 14:19:05 +00:00
Simon Pilgrim
9fca300cbe
[X86][AVX512] Autoupgrade the VPERMILPD/VPERMILPS intrinsics
...
llvm-svn: 274498
2016-07-04 12:40:54 +00:00
Simon Pilgrim
dbd6db0dc7
[X86][AVX512] Add support for VPALIGNR/PSHUFD/PSHUFHW/PSHUFLW masked shuffle comments
...
llvm-svn: 274466
2016-07-03 15:00:51 +00:00
Simon Pilgrim
598bdb6bfe
[X86][AVX512] Add support for UNPCK masked shuffle comments
...
llvm-svn: 274464
2016-07-03 14:26:21 +00:00
Simon Pilgrim
7c2fbdc101
[X86][AVX512] Add support for masked shuffle comments
...
This patch adds support for including the avx512 mask register information in the mask/maskz versions of shuffle instruction comments.
This initial version just adds support for MOVDDUP/MOVSHDUP/MOVSLDUP to reduce the mass of test regenerations, other shuffle instructions can be added in due course.
Differential Revision: http://reviews.llvm.org/D21953
llvm-svn: 274459
2016-07-03 13:08:29 +00:00
Simon Pilgrim
19adee9d84
[X86][AVX512] Autoupgrade the MOVDDUP/MOVSLDUP/MOVSHDUP intrinsics
...
llvm-svn: 274439
2016-07-02 14:42:35 +00:00
Craig Topper
597aa42fec
[AVX512] Remove masked unpack intrinsics and autoupgrade to vectorshuffle and selects.
...
llvm-svn: 273543
2016-06-23 07:37:33 +00:00
Craig Topper
0a0fb0fda1
[AVX512] Remove the masked vpcmpeq/vcmpgt intrinsics and autoupgrade them to native icmps.
...
llvm-svn: 273240
2016-06-21 03:53:24 +00:00
Craig Topper
13cf7cac07
[AVX512] Remove maksed pshufd, pshuflw, and phufhw intrinsics and autoupgrade them to selects and shufflevector.
...
llvm-svn: 272527
2016-06-13 02:36:48 +00:00
Craig Topper
f10fbfa738
[AVX512] Remove masked load intrinsics. Clang now emits generic masked load intrinsics instead.
...
The intrinsics will be autoupgraded to the same generic masked loads.
llvm-svn: 271478
2016-06-02 04:19:36 +00:00
Craig Topper
50f85c22c5
[AVX512] Remove masked store intrinsics. Clang now emits generic masked store intrinsics instead.
...
The intrinsics will be autoupgraded to the same generic masked stores.
llvm-svn: 271245
2016-05-31 01:50:02 +00:00