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
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
9769428e08
[X86][AVX512] Remove vector BROADCAST builtins.
...
llvm-svn: 274555
2016-07-05 14:49:58 +00:00
Craig Topper
5d16cd9d63
[AVX512] Remove masked VPERMD/VPERMQ/VPERMILPS/VPERMILPD intrinsics. They were autoupgraded to native IR in r274506 and r274506.
...
llvm-svn: 274519
2016-07-04 19:58:38 +00:00
Simon Pilgrim
77dda7c2e0
[X86][AVX512] Converted the MOVDDUP/MOVSLDUP/MOVSHDUP masked intrinsics to generic IR
...
llvm-svn: 274443
2016-07-02 17:16:41 +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
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
Sanjay Patel
0e9afea3c8
[x86] autoupgrade and remove AVX2 integer min/max intrinsics
...
This will (hopefully very temporarily) break clang.
The clang side of this should be the next commit.
llvm-svn: 272932
2016-06-16 18:44:20 +00:00
Sanjay Patel
51ab757941
[x86] autoupgrade and remove SSE2/SSE41 integer min/max intrinsics
...
Follow-up to:
http://reviews.llvm.org/rL272806
http://reviews.llvm.org/rL272807
llvm-svn: 272907
2016-06-16 15:48:30 +00:00
David Majnemer
248190ba69
[X86] Remove llvm.x86.bit.scan.{forward,reverse}.32
...
The need for these intrinsics has been obviated by r272564 which
reimplements their functionality using generic IR.
llvm-svn: 272566
2016-06-13 17:33:13 +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
1067986c5b
[X86] Remove sse2 pshufd/pshuflw/pshufhw intrinsics and upgrade them to shufflevector.
...
llvm-svn: 272510
2016-06-12 14:11:32 +00:00
Craig Topper
251030babe
[AVX512] Remove the masked palignr intrinsics that I forgot to remove when I added auto-upgrade code to turn them into shufflevectors and selects.
...
llvm-svn: 272497
2016-06-12 04:14:13 +00:00
Simon Pilgrim
f718682eb9
[X86][AVX512] Dropped avx512 VPSLLDQ/VPSRLDQ intrinsics
...
Auto-upgrade to generic shuffles like sse/avx2 implementations now that we can lower to VPSLLDQ/VPSRLDQ
llvm-svn: 272308
2016-06-09 21:09:03 +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
6ae375c9ba
[X86] Use smaller types to shrink the intrinsic lowering tables by about 12K.
...
llvm-svn: 271776
2016-06-04 04:32:17 +00:00
Craig Topper
5250634334
[X86] Use X86ISD::ABS for lowering pabs SSSE3/AVX intrinsics to match AVX512. Should allow those intrinsics to use the EVEX encoded instructions and get the extra registers when available.
...
llvm-svn: 271775
2016-06-04 04:32:15 +00:00
Simon Pilgrim
e85506b6e0
[X86][XOP] Support for VPERMIL2PD/VPERMIL2PS 2-input shuffle instructions
...
This patch begins adding support for lowering to the XOP VPERMIL2PD/VPERMIL2PS shuffle instructions - adding the X86ISD::VPERMIL2 opcode and cleaning up the usage.
The internal llvm intrinsics were assuming the shuffle mask operand was the same type as the float/double input operands (I guess to simplify the intrinsic definitions in X86InstrXOP.td to a single value type). These needed changing to integer types (matching the clang builtin and the AMD intrinsics definitions), an auto upgrade path is added to convert old calls.
Mask decoding/target shuffle support will be added in future patches.
Differential Revision: http://reviews.llvm.org/D20049
llvm-svn: 271633
2016-06-03 08:06:03 +00:00
Craig Topper
5bb9cda620
[AVX512] Remove LOADA/LOADU/STOREA/STOREU intrinsic types now that they are unused.
...
llvm-svn: 271479
2016-06-02 04:19:40 +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
Michael Zuckerman
6a894956fc
Adding back-end support to two bit scanning intrinsics
...
Adding LLVM back-end support to two intrinsics dealing with bit scan: _bit_scan_forward and _bit_scan_reverse.
Their functionality is as described in Intel intrinsics guide:
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_forward&expand=371,370
https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_bit_scan_reverse&expand=371,370
Commit on behalf of Omer Paparo Bivas
Differential Revision: http://reviews.llvm.org/D19915
llvm-svn: 271386
2016-06-01 12:02:37 +00:00
Craig Topper
4f2d5a68d3
Revert r271362 "[AVX512] Remove masked load intrinsics. Clang now emits generic masked load intrinsics instead."
...
Looks like something isn't quite right still. Also forgot to move the test cases to an autoupgrade test.
llvm-svn: 271363
2016-06-01 05:57:55 +00:00
Craig Topper
dacd9d2bac
[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: 271362
2016-06-01 05:35:16 +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
Simon Pilgrim
9602d678cb
[X86][SSE] (Reapplied) Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)
...
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
Reapplied now that the the companion patch (D20684) removes/auto-upgrade the clang intrinsics has been committed.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 271131
2016-05-28 18:03:41 +00:00
Simon Pilgrim
4642a57fbf
Revert: r270973 - [X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)
...
llvm-svn: 270976
2016-05-27 09:02:25 +00:00
Simon Pilgrim
c013e5737b
[X86][SSE] Replace (V)PMOVSX and (V)PMOVZX integer extension intrinsics with generic IR (llvm)
...
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
A companion patch (D20684) removes/auto-upgrade the clang intrinsics.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 270973
2016-05-27 08:49:15 +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
a63a129749
[Clang][AVX512][intrinsics] Fix rcp and sqrt intrinsics.
...
Differential Revision: http://reviews.llvm.org/D20438
llvm-svn: 270322
2016-05-21 14:44:18 +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
b395105584
[X86] Convert some SSE2/AVX2 intrinsics to ISD opcodes during lowering instead of pattern matching the intrinsics. This unifies handling with AVX512 and allows these intrinsics to select EVEX encoded instructions to increase available registers.
...
llvm-svn: 270310
2016-05-21 03:52:28 +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
Elena Demikhovsky
e79b716daf
Fixed lowering of _comi_ intrinsics from all sets - SSE/SSE2/AVX/AVX-512
...
Differential revision http://reviews.llvm.org/D19261
llvm-svn: 269569
2016-05-14 15:06:09 +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
cd0dfc93eb
[X86][SSE] Support for MOVMSK signbit extraction instructions
...
Add support for lowering with the MOVMSK instruction to extract vector element signbits to a GPR.
This is an early step towards more optimal handling of vector comparison results.
Differential Revision: http://reviews.llvm.org/D18741
llvm-svn: 265266
2016-04-03 18:22:03 +00:00
Simon Pilgrim
572ca71573
[X86][XOP] Support for VPPERM byte shuffle instruction
...
This patch begins adding support for lowering to the XOP VPPERM instruction - adding the X86ISD::VPPERM opcode.
Differential Revision: http://reviews.llvm.org/D18189
llvm-svn: 264260
2016-03-24 11:52:43 +00:00
Simon Pilgrim
abcee45b7a
[X86][AVX] Better support for the variable mask form of VPERMILPD/VPERMILPS
...
The variable mask form of VPERMILPD/VPERMILPS were only partially implemented, with much of it still performed as an intrinsic.
This patch properly defines the instructions in terms of X86ISD::VPERMILPV, permitting the opcode to be easily combined as a target shuffle.
Differential Revision: http://reviews.llvm.org/D17681
llvm-svn: 262635
2016-03-03 18:13:53 +00:00
Michael Zuckerman
c4d054fa4a
[LLVM][AVX512] PSRLWI Chnage imm8 to int
...
Differential Revision: http://reviews.llvm.org/D17753
llvm-svn: 262592
2016-03-03 08:54:05 +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
96836fc81c
[AVX512][PSLLW ][PSLLV] Change imm8 to int
...
Differential Revision: http://reviews.llvm.org/D17684
llvm-svn: 262176
2016-02-28 07:32:10 +00:00
Simon Pilgrim
3b42ca0760
Strip trailing whitespace. NFCI.
...
llvm-svn: 262131
2016-02-27 11:49:16 +00:00
Michael Zuckerman
a1f2d27da2
[LLVM][AVX512][PSHUFHW ][PSHUFLW ] Change imm8 to int
...
Differential Revision: http://reviews.llvm.org/D17538
llvm-svn: 261725
2016-02-24 08:39:05 +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
Ahmed Bougacha
f3cccab1e0
[X86] Remove the now-unused X86ISD::PSIGN. NFC.
...
llvm-svn: 261025
2016-02-16 22:14: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