Craig Topper
332eeeae8a
[AVX-512] Move 128/256-bit intrinsic tests from avx512bwvl test file to avx512vl test file.
...
llvm-svn: 294149
2017-02-05 22:25:35 +00:00
Craig Topper
044662d14b
[AVX-512] Add additional test cases for broadcast intrinsics that demonstates that we don't fold the loads to use a broadcast instruction.
...
llvm-svn: 292465
2017-01-19 02:34:25 +00:00
Craig Topper
0cda8bbf74
[AVX-512] Remove vinsert intrinsics and autoupgrade to native shufflevectors. There are some codegen problems here that I'll try to fix in future commits.
...
llvm-svn: 290864
2017-01-03 05:45:57 +00:00
Craig Topper
4d47c6ae57
[AVX-512] Remove vextract intrinsics and autoupgrade to native shufflevectors. This unfortunately generates some really terrible code without VLX support due to v2i1 and v4i1 not being legal.
...
Hopefully we can improve that in future patches.
llvm-svn: 290863
2017-01-03 05:45:46 +00:00
Gadi Haber
19c4fc5e62
This is a large patch for X86 AVX-512 of an optimization for reducing code size by encoding EVEX AVX-512 instructions using the shorter VEX encoding when possible.
...
There are cases of AVX-512 instructions that have two possible encodings. This is the case with instructions that use vector registers with low indexes of 0 - 15 and do not use the zmm registers or the mask k registers.
The EVEX encoding prefix requires 4 bytes whereas the VEX prefix can take only up to 3 bytes. Consequently, using the VEX encoding for these instructions results in a code size reduction of ~2 bytes even though it is compiled with the AVX-512 features enabled.
Reviewers: Craig Topper, Zvi Rackoover, Elena Demikhovsky
Differential Revision: https://reviews.llvm.org/D27901
llvm-svn: 290663
2016-12-28 10:12:48 +00:00
Elena Demikhovsky
7c7bf1b432
Added a template for building target specific memory node in DAG.
...
I added API for creation a target specific memory node in DAG. Today, all memory nodes are common for all targets and their constructors are located in SelectionDAG.cpp.
There are some cases in X86 where we need to create a special node - truncation-with-saturation store, float-to-half-store.
In the current patch I added truncation-with-saturation nodes and I'm using them for intrinsics. In the future I plan to implement DAG lowering for truncation-with-saturation pattern.
Differential Revision: https://reviews.llvm.org/D27899
llvm-svn: 290250
2016-12-21 10:43:36 +00:00
Craig Topper
abe7c5b5e9
[AVX-512] Remove 128/256 masked vpermil instrinsics and autoupgrade to a select around the unmasked avx1 intrinsics.
...
llvm-svn: 289340
2016-12-10 21:15:52 +00:00
Simon Pilgrim
17062a2bf6
[X86][AVX512VL] Improved testing of vcvtpd2ps, vcvtpd2dq/vcvtpd2udq and vcvttpd2dq/vcvttpd2udq implicit zeroing of upper 64-bits of xmm result
...
Ensure that masked instruction doesn't assume implicit zeroing.
llvm-svn: 288211
2016-11-29 22:38:30 +00:00
Simon Pilgrim
3ce6a545c7
[X86][SSE] Add awareness of (v)cvtpd2dq and vcvtpd2udq implicit zeroing of upper 64-bits of xmm result
...
We've already added the equivalent for (v)cvttpd2dq (rL284459) and vcvttpd2udq
llvm-svn: 287835
2016-11-23 22:35:06 +00:00
Simon Pilgrim
eda1193456
[X86][AVX512VL] Add v2f64 -> v2i32/v2f32 + zero codegen tests
...
llvm-svn: 287821
2016-11-23 22:01:50 +00:00
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
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
Craig Topper
43e97649a1
[AVX-512] Add unmasked intrinsics for variable shifts of dwords and qwords.
...
These will be used to replace the masked intrinsics so that InstCombineCalls can optimize the AVX-512 variable shifts the same way it does for AVX2.
llvm-svn: 286754
2016-11-13 07:26:15 +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
9d25c5e2fa
[AVX-512] Add unmasked version of shift by immediate and shift by single element in XMM.
...
Summary:
This is the first step towards being able to add the avx512 shift by immediate intrinsics to InstCombineCalls where we aleady support the sse2 and avx2 intrinsics. We need to the unmasked versions so we can avoid having to teach InstCombineCalls that it would need to insert selects sometimes. Instead we'll just add the selects around the new instrinsics in the frontend.
This change should also enable the shift by i32 intrinsics to take a non-constant shift value just like the avx2 and sse intrinsics. This will enable us to fix PR30691 once we update clang.
Next I'll switch clang to use the new builtins. Then we'll come back to the backend and remove/autoupgrade the old intrinsics. Then I'll work on the same series for variable shifts.
Reviewers: RKSimon, zvi, delena
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D26333
llvm-svn: 286711
2016-11-12 05:28:24 +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
46de41330c
[AVX-512] Remove intrinsics for 128/256-bit masked variable shift. Instead upgrade them to a select and the older AVX2 intrinsic.
...
llvm-svn: 286073
2016-11-06 16:29:19 +00:00
Craig Topper
af9b3fe752
[AVX-512] Remove intrinsics for 128/256-bit masked shift by immediate. Instead upgrade them to a select and the older SSE/AVX2 intrinsic.
...
llvm-svn: 286072
2016-11-06 16:29:14 +00:00
Craig Topper
c9467ed31e
[AVX-512] Remove intrinsics for 128/256-bit masked shift by single element in xmm. Instead upgrade them to a select and the older SSE/AVX2 intrinsic.
...
llvm-svn: 286070
2016-11-06 16:29:08 +00:00
Craig Topper
1b468b4e3a
[AVX-512] Remove a 512-bit test cases from the avx512vl test file. It already exists in the avx512f test file.
...
llvm-svn: 286069
2016-11-06 16:29:03 +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
b084c90a18
[X86] Add support for printing shuffle comments for VALIGN instructions.
...
llvm-svn: 284915
2016-10-22 06:51:56 +00:00
Craig Topper
4729fe8bb6
[AVX-512] Correct execution domain for VPERMT2PS and VPERMI2PS.
...
llvm-svn: 284328
2016-10-16 04:54:31 +00:00
Elena Demikhovsky
5b10aa1f1e
DAG: Setting Masked-Expand-Load as a variant of Masked-Load node
...
Masked-expand-load node represents load operation that loads a variable amount of elements from memory according to amount of "true" bits in the mask and expands the loaded elements according to their position in the mask vector.
Right now, the node is used in intrinsics for VEXPAND* instructions.
The work is done towards implementation of masked.expandload and masked.compressstore intrinsics.
Differential Revision: https://reviews.llvm.org/D25322
llvm-svn: 283694
2016-10-09 10:48:52 +00:00
Ayman Musa
d7a5ed4141
[X86][avx512] Fix bug in masked compress store.
...
Differential Revision: https://reviews.llvm.org/D23984
llvm-svn: 282381
2016-09-26 06:22:08 +00:00
Craig Topper
60d3ef1d72
[AVX-512] Fix some patterns predicates to properly enforce priority for various versions of CVTDQ2PD instruction.
...
llvm-svn: 282358
2016-09-25 16:34:02 +00:00
Craig Topper
61403201ea
[X86,AVX-512] Use INSERT_SUBREG instead of SUBREG_TO_REG when the input is not the output of an instruction.
...
SUBREG_TO_REG is supposed to indicate that the super register has been zeroed, but we can't prove that if we don't know where it came from.
llvm-svn: 281885
2016-09-19 02:53:43 +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
4fa3b50fc3
[AVX-512] Fix masked VPERMI2PS isel when the index comes from a bitcast.
...
We need to bitcast the index operand to a floating point type so that it matches the result type. If not then the passthru part of the DAG will be a bitcast from the index's original type to the destination type. This makes it very difficult to match. The other option would be to add 5 sets of patterns for every other possible type.
llvm-svn: 280696
2016-09-06 06:56:59 +00:00
Craig Topper
cf9f1b8dfa
[AVX-512] Add a test case to show that we don't select masked vpermi2ps when the index operand comes from a bitcast.
...
It doesn't work because we're looking for a bitcast from the v4i32 index operand to v4f32 for the passthru part of the DAG. But since the index is bitcasted from v2i64 and bitcasts fold, we actually have a bitcast from v2i64 to v4f32 in the passthru part of the DAG.
Taken from optimized output from clang's test case.
llvm-svn: 280695
2016-09-06 05:45:27 +00:00
Craig Topper
4177345d7f
[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div intrinsics and upgrade to native IR.
...
llvm-svn: 280633
2016-09-04 18:13:33 +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
05948fb36c
[AVX-512] Correct ExeDomain for many AVX-512 instructions.
...
llvm-svn: 277416
2016-08-02 05:11:15 +00:00
Craig Topper
4c53e60360
[AVX512] Add VLX packed move instructions to the execution dependency fix pass and update tests.
...
llvm-svn: 277304
2016-07-31 20:20:01 +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
5c913e84df
[AVX512] Use VMOVAPSZ128rr/VMOVAPS256rr for VR128X/VR256X physreg moves when VLX is supported.
...
Ideally we would use VEX encoded moves instead of EVEX if the high 16 registers aren't referenced, but this a good first step.
llvm-svn: 275763
2016-07-18 06:14:34 +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
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
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
68ea80649b
[X86][AVX512] Add support for VPERMPD/VPERMQ masked shuffle comments
...
llvm-svn: 274469
2016-07-03 18:40:24 +00:00
Simon Pilgrim
1f59076196
[X86][AVX512] Add support for VPERM/VSHUF masked shuffle comments
...
llvm-svn: 274462
2016-07-03 13:55:41 +00:00
Simon Pilgrim
68f438a036
[X86][AVX512] Add support for PMOVZX masked shuffle comments
...
llvm-svn: 274461
2016-07-03 13:33:28 +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
283418fbb6
[AVX512] Add patterns for any-extending a mask that use the def of KMOVW/KMOVB without going through an EXTRACT_SUBREG and a MOVZX.
...
llvm-svn: 273253
2016-06-21 07:37:32 +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
Igor Breger
e59165ca63
[AVX512] [AVX512/AVX][Intrinsics] Fix Variable Bit Shift Right Arithmetic intrinsic lowering.
...
Differential Revision: http://reviews.llvm.org/D20897
llvm-svn: 273138
2016-06-20 07:05:43 +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
200d237e57
[AVX512] Add shuffle comment printing for masked VPERMPD/VPERMQ.
...
llvm-svn: 272371
2016-06-10 05:12:40 +00:00
Craig Topper
89c1761474
[AVX512] Fix shuffle comment printing to handle the masked versions of some shuffles. Previously we were printing the mask operands as the register names.
...
llvm-svn: 272367
2016-06-10 04:48:05 +00:00
Igor Breger
f635367e2b
[AVX512] Remove masked_move/blendm intrinsic from back-end.
...
This is complement patch to D21060.
Differential Revision: http://reviews.llvm.org/D21174
llvm-svn: 272257
2016-06-09 11:46:55 +00:00
Craig Topper
6f7288dc44
[AVX512] Fix shuffle decode printing for several instructions with write masks. There are still more bugs here with UNPCK and PALIGN for sure. But these were the easiest ones to fix.
...
llvm-svn: 272252
2016-06-09 07:49:08 +00:00
Craig Topper
e7ae106147
[AVX512] Ensure EVEX vpshufd, vpshuflw, and vpshufhw have isel priority over the VEX encoded ones.
...
llvm-svn: 271629
2016-06-03 05:31:04 +00:00
Craig Topper
01f53b1773
[AVX512] Fix shuffle comment printing for EVEX encoded PSHUFD, PSHUFHW, and PSHUFLW.
...
llvm-svn: 271628
2016-06-03 05:31:00 +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
Igor Breger
73ee8ba9b0
[AVX512] Fix intrinsic vcvtps2ph lowering.
...
Differential Revision: http://reviews.llvm.org/D20788
llvm-svn: 271255
2016-05-31 08:04:21 +00:00
Igor Breger
52bd1d5fcc
Fix intrinsic vbroadcast{i32|f32}x2 lowering.
...
Differential Revision: http://reviews.llvm.org/D20780
llvm-svn: 271254
2016-05-31 07:43:39 +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
Igor Breger
23c2090606
[llvm][AVX512][intrinsics] Fix vperm{b|w|d|q|ps|pd} intrinsics. Index is second argument to buildin function but it is first instruction operand.
...
Differential Revision: http://reviews.llvm.org/D20515
llvm-svn: 270548
2016-05-24 11:06:22 +00:00
Michael Zuckerman
11b55b29d1
[Clang][AVX512][intrinsics] Fix vscalef intrinsics.
...
Differential Revision: http://reviews.llvm.org/D20324
llvm-svn: 270321
2016-05-21 11:09:53 +00:00
Craig Topper
22ae353207
[AVX512] Disable AVX2 VPERMD, VPERMQ, VPERMPS, and VPERMPD patterns when AVX512VL is enabled. Also add shuffle comment printing for AVX512VL VPERMPD/VPERMQ to keep some tests that now use these instructions instead of the AVX2 ones.
...
llvm-svn: 270317
2016-05-21 06:07:18 +00:00
Craig Topper
6be70deda3
[AVX512] Disable AVX/AVX2 VBROADCASTSS/VBROADCASTSD patterns when AVX512VL is enabled.
...
llvm-svn: 270316
2016-05-21 05:47:25 +00:00
Craig Topper
1a23a521bb
[AVX512] Use update_llc_test_checks to update some tests so we can see all the instruction encodings and ensure everything is with EVEX.
...
llvm-svn: 270315
2016-05-21 05:46:58 +00:00
Craig Topper
73f48f4662
[AVX512] Fix test cases I missed in r270311.
...
llvm-svn: 270313
2016-05-21 03:59:55 +00:00
Craig Topper
258f874bb9
[AVX512] Make the permd intrinsics take a 32-bit immediate to match the software spec.
...
llvm-svn: 269579
2016-05-14 21:13:20 +00:00
Craig Topper
d8a9c0d120
[AVX512] Fix types for pshufd intrinsics. The immediate is the second argument and the mask is the 4th argument. Also move the 128/256 tests to the right test file.
...
Prior to this the immediate was a strange 16-bits and the 512-bit intrinsic couldn't receive the full 16 mask bits it needs.
llvm-svn: 269526
2016-05-14 00:47:18 +00:00
Simon Pilgrim
217b886b10
[X86][AVX512] Moved CHECKs inside functions to stop update_llc_test_checks going haywire
...
I'm not going to regenerate these anytime soon but do have some diffs to apply that I'd like to do with update_llc_test_checks
llvm-svn: 269420
2016-05-13 14:47:55 +00:00
Simon Pilgrim
6ce35dd9ea
[X86][AVX512] Fixed VPERMILPD/VPERMILPS shuffle comments.
...
Fixed incorrect operands indices used to access src registers
llvm-svn: 269221
2016-05-11 18:53:44 +00:00
Craig Topper
e5ce84a33c
[AVX512] Add VLX 128/256-bit SET0 operations that encode to 128/256-bit EVEX encoded VPXORD so all 32 registers can be used.
...
llvm-svn: 268884
2016-05-08 21:33:53 +00:00
Michael Zuckerman
927fdaee88
[LLVM][AVX512]PSRAWI Change imm8 to int.
...
Differential Revision: http://reviews.llvm.org/D17705
llvm-svn: 262480
2016-03-02 12:05:07 +00:00
Michael Zuckerman
433b241570
[LLVM][AVX512] PSRL{DI|QI} Change imm8 to int
...
Differential Revision: http://reviews.llvm.org/D17713
llvm-svn: 262353
2016-03-01 17:46:32 +00:00
Michael Zuckerman
7878888690
[AVX512][PSRAQ][PSRAD] Change imm8 to int.
...
Differential Revision: http://reviews.llvm.org/D17692
llvm-svn: 262320
2016-03-01 11:36:23 +00:00
Michael Zuckerman
724dc3b20c
[AVX512][PRORQ][PRORD] Change imm8 to int
...
Differential Revision: http://reviews.llvm.org/D17024
llvm-svn: 261198
2016-02-18 09:52:12 +00:00
Michael Zuckerman
529c27f408
[AVX512][PROLQ][PROLD] Change imm8 to int
...
Differential Revision: http://reviews.llvm.org/D16983
llvm-svn: 260101
2016-02-08 15:13:32 +00:00
Igor Breger
0aeda37464
AVX512: VPBROADCASTB/W/D/Q from GPR intrinsics implementation.
...
Differential Revision: http://reviews.llvm.org/D16813
llvm-svn: 260024
2016-02-07 08:30:50 +00:00
Simon Pilgrim
0acc32a3b3
[X86][AVX512] Added support for VPMOVZX shuffle decoding.
...
llvm-svn: 260007
2016-02-06 19:51:21 +00:00
Michael Zuckerman
1bd7f993fc
[AVX512] Adding PTESTNMB/D/W/Q instruction
...
Differential Revision: http://reviews.llvm.org/D16520
llvm-svn: 258688
2016-01-25 14:43:23 +00:00
Michael Zuckerman
19670d479a
[AVX512] Adding PTESTMB/W/D/Q instruction
...
Differential Revision: http://reviews.llvm.org/D16519
llvm-svn: 258686
2016-01-25 13:27:32 +00:00
Igor Breger
1e5bafbc82
AVX512: VMOVDQU8/16/32/64 (load) intrinsic implementation.
...
Differential Revision: http://reviews.llvm.org/D16137
llvm-svn: 258657
2016-01-24 08:04:33 +00:00
Igor Breger
7a000f5bb2
AVX512: Masked move intrinsic implementation.
...
Implemented intrinsic for the follow instructions (reg move) : VMOVDQU8/16, VMOVDQA32/64, VMOVAPS/PD.
Differential Revision: http://reviews.llvm.org/D16316
llvm-svn: 258398
2016-01-21 14:18:11 +00:00
Asaf Badouh
d4a0d9a78c
[X86][AVX512]fix dag & add intrinsics for fixupimm
...
cover all width and types (pd/ps/sd/ss) of fixupimm instruction and inrtinsics
Differential Revision: http://reviews.llvm.org/D16313
llvm-svn: 258124
2016-01-19 14:21:39 +00:00
Igor Breger
239fda676c
AVX512: Masked store intrinsic implementation.
...
Implemented intrinsic for the follow instructions (store) : VMOVDQU8/16/32/64, VMOVDQA32/64, VMOVAPS/PD, VMOVUPS/PD.
Differential Revision: http://reviews.llvm.org/D16271
llvm-svn: 258047
2016-01-18 13:52:57 +00:00
Igor Breger
dd6522c653
AVX512 : Change v8i1 bitconvert GR8 pattern, remove unnecessary movzbl instruction.
...
code example , previous implementation.
movzbl %dil, %eax
kmovw %eax, %k0
new code
kmovw %edi, %k0
Differential Revision: http://reviews.llvm.org/D16287
llvm-svn: 258045
2016-01-18 12:02:45 +00:00
Michael Zuckerman
ac1b238b0a
[AVX512] Adding VPERMW/D/Q VPERMPS/D Intrinsics
...
Differential Revision: http://reviews.llvm.org/D16189
llvm-svn: 258008
2016-01-17 11:33:29 +00:00
Michael Zuckerman
ede597c753
[AVX512] Adding VPERMQ VPERMPD Intrinsics
...
Differential Revision: http://reviews.llvm.org/D16194
llvm-svn: 258006
2016-01-17 08:32:14 +00:00
Igor Breger
fc96331d88
AVX512: VMOVDQA32/64 (load) intrinsic implementation.
...
Differential Revision: http://reviews.llvm.org/D16142
llvm-svn: 257749
2016-01-14 07:56:04 +00:00
Michael Zuckerman
0e31b22487
[AVX512] Adding PMOVSXBD/W/Q , PMOVZSDQ and PMOVZSWD/Q Intrinsics .
...
Differential Revision: http://reviews.llvm.org/D16111
llvm-svn: 257604
2016-01-13 14:59:19 +00:00
Michael Zuckerman
43cea85db9
[AVX512] Adding PMOVZXBD/W/Q , PMOVZXDQ and PMOVZXWD/Q Intrinsics
...
Differential Revision:http://reviews.llvm.org/D16071
llvm-svn: 257601
2016-01-13 14:25:21 +00:00
Michael Zuckerman
298a680c80
[AVX512] adding PRORQ , PRORD , PRORLVQ and PRORLVD Intrinsics
...
Differential Revision: http://reviews.llvm.org/D16052
llvm-svn: 257594
2016-01-13 12:39:33 +00:00
Michael Zuckerman
2ddcbcf464
[AVX512] adding PROLQ and PROLD Intrinsics
...
Differential Revision: http://reviews.llvm.org/D16048
llvm-svn: 257523
2016-01-12 21:19:17 +00:00
Igor Breger
ea8e8e9f97
AVX512: VPMOVAPS/PD and VPMOVUPS/PD (load) intrinsic implementation.
...
Differential Revision: http://reviews.llvm.org/D16042
llvm-svn: 257463
2016-01-12 10:02:32 +00:00
Michael Zuckerman
885f61c534
[AVX512] add PRORVQ and PRORVD Intrinsic
...
Differential Revision:http://reviews.llvm.org/D15955
llvm-svn: 257283
2016-01-10 09:16:41 +00:00
Michael Zuckerman
3aca221b31
[AVX512] add PSLLW and PSLLV Intrinsic
...
Differential Revision: http://reviews.llvm.org/D15889
llvm-svn: 257070
2016-01-07 16:02:51 +00:00
Michael Zuckerman
354152d590
[AVX512] add PSRAV Intrinsic
...
Differential Revision: http://reviews.llvm.org/D15856
llvm-svn: 257063
2016-01-07 14:42:20 +00:00
Michael Zuckerman
5cbae95916
[AVX512] add PSLLD and PSLLQ Intrinsic
...
Differential Revision: http://reviews.llvm.org/D15885
llvm-svn: 256840
2016-01-05 15:17:39 +00:00
Michael Zuckerman
cf0b6db9ef
[AVX512] add PSRAD and PSRAQ Intrinsic
...
Differential Revision: http://reviews.llvm.org/D15851
llvm-svn: 256754
2016-01-04 13:45:45 +00:00