Craig Topper
93ffabd28d
[AVX-512] Remove masked vector extract builtins and replace with native shufflevectors and selects.
...
Unfortunately, the backend currently doesn't fold masks into the instructions correctly when they come from these shufflevectors. I'll work on that in a future commit.
llvm-svn: 285540
2016-10-31 04:30:56 +00:00
Craig Topper
66b2fd1209
[AVX-512] Remove many of the masked 128/256-bit shift builtins and replace them with unmasked builtins and selects.
...
llvm-svn: 285539
2016-10-31 04:30:51 +00:00
Craig Topper
2eadf1b67e
[AVX-512] Remove masked 128/256-bit sqrt builtins and replace them with unmasked builtins and a select.
...
llvm-svn: 285504
2016-10-29 19:02:10 +00:00
Craig Topper
09e94007be
[AVX-512] Remove masked 128/256-bit pmuludq/pmuldq builtins and replace them with unmasked builtins and a select.
...
llvm-svn: 285503
2016-10-29 19:02:07 +00:00
Craig Topper
160ca8420d
[AVX-512] Remove masked 128/256-bit floating point max/min builtins. Use unmasked builtins with select instead.
...
llvm-svn: 285502
2016-10-29 19:02:03 +00:00
Craig Topper
531ce28311
[AVX-512] Replace 64-bit element and 512-bit vector pmin/pmax builtins with native IR like we do for 128/256-bit, but with the addition of masking.
...
llvm-svn: 284956
2016-10-24 04:04:24 +00:00
Craig Topper
eee7c0520c
[AVX-512] Replace masked 128/256-bit byte, word, and dword min/max builtins with selects and the older unmasked builtins.
...
llvm-svn: 284954
2016-10-23 23:57:30 +00:00
Craig Topper
11dda92405
[AVX-512] Replace masked 128/256-bit vpmovzx/vpmovsx builtins with native IR.
...
llvm-svn: 284927
2016-10-22 21:24:48 +00:00
Craig Topper
78a9c40326
[AVX-512] Remove builtins for 128/256-bit pabsb/pabsw. We can use a select and the older non-masked versions instead.
...
llvm-svn: 284924
2016-10-22 21:24:38 +00:00
Elad Cohen
b107a22afb
[X86] Remove the mm_malloc.h include guard hack from the X86 builtins tests
...
The X86 clang/test/CodeGen/*builtins.c tests define the mm_malloc.h include
guard as a hack for avoiding its inclusion (mm_malloc.h requires a hosted
environment since it expects stdlib.h to be available - which is not the case
in these internal clang codegen tests).
This patch removes this hack and instead passes -ffreestanding to clang cc1.
Differential Revision: https://reviews.llvm.org/D24825
llvm-svn: 282581
2016-09-28 11:59:09 +00:00
Craig Topper
2dfab63bb3
[AVX-512] Remove 128-bit and 256-bit masked floating point add/sub/mul/div builtins and replace with native operations.
...
We can't do the 512-bit ones because they take a rounding mode argument that we can't represent.
llvm-svn: 280635
2016-09-04 18:30:17 +00:00
Craig Topper
f43e4a1728
[AVX-512] Remove masked integer mullo builtins and replace with native IR.
...
llvm-svn: 280597
2016-09-03 19:19:49 +00:00
Craig Topper
0e18976b8d
[AVX-512] Remove masked integer add/sub builtins and replace with native IR.
...
llvm-svn: 280596
2016-09-03 18:29:35 +00:00
Asaf Badouh
2f344b788c
[AVX512] integer comparisions enumeration.
...
fix Bug 28842 https://llvm.org/bugs/show_bug.cgi?id=28842
Differential Revision: https://reviews.llvm.org/D22212
llvm-svn: 277955
2016-08-07 10:43:04 +00:00
Eric Christopher
abb2b54ad3
After PR28761 use -Wall with -Werror in builtins tests to identify
...
possible problems in headers.
llvm-svn: 277696
2016-08-04 06:02:50 +00:00
Craig Topper
45db56c375
[X86] Add missing __x86_64__ qualifiers on a bunch of intrinsics that assume 64-bit GPRs are available.
...
Usages of these intrinsics in a 32-bit build results in assertions in the backend.
llvm-svn: 276249
2016-07-21 07:38:39 +00:00
Craig Topper
4d61a3c2d8
[AVX512] Replace masked AND/OR/XOR intrinsics with native code and remove the builtins.
...
llvm-svn: 275049
2016-07-11 06:14:18 +00:00
Simon Pilgrim
f5a8837e1b
[X86][AVX512] Converted the VBROADCAST intrinsics to generic IR
...
llvm-svn: 274544
2016-07-05 12:59:33 +00:00
Craig Topper
2a383c9273
[X86] Use undefined instead of setzero in shufflevector based intrinsics when the second source is unused. Rewrite immediate extractions in shuffle intrinsics to be in ((c >> x) & y) form instead of ((c & z) >> x). This way only x varies between each use instead of having to vary x and z.
...
llvm-svn: 274525
2016-07-04 22:18:01 +00:00
Simon Pilgrim
427154db2a
[X86][AVX512] Converted the VSHUFPD intrinsics to generic IR
...
llvm-svn: 274523
2016-07-04 21:30:47 +00:00
Simon Pilgrim
30db811526
[X86][AVX512] Converted the VPERMPD/VPERMQ intrinsics to generic IR
...
llvm-svn: 274502
2016-07-04 13:34:44 +00:00
Craig Topper
ac1823f6e9
[AVX512] Modify what indices we emit for the zero vector we use for zero extension of the result of a v2i1 or v4i1 masked compare. This way we emit something that the backend easily interprets as a concatenation rather than a true shuffle. This delivers slightly better codegen with the current backend capabilities.
...
llvm-svn: 274484
2016-07-04 07:09:46 +00:00
Simon Pilgrim
275d721485
[X86][AVX512] Converted the MOVDDUP/MOVSLDUP/MOVSHDUP masked intrinsics to generic IR
...
llvm companion patch imminent
llvm-svn: 274442
2016-07-02 17:16:25 +00:00
Craig Topper
b3a4477b13
[X86] Replace 128-bit and 256 masked vpermilps/vpermilpd builtins with native IR.
...
llvm-svn: 274425
2016-07-02 05:36:43 +00:00
Igor Breger
2c880cf9b1
[AVX512] Zero extend cmp intrinsic return value.
...
Differential Revision: http://reviews.llvm.org/D21746
llvm-svn: 274110
2016-06-29 08:14:17 +00:00
Artur Pilipenko
70d4bb566c
Update the expected masked load/store intrinsics names in tests
...
The mangling of their names was changed in order to support arbitrary addrspace pointers as arguments in rL274043.
llvm-svn: 274044
2016-06-28 18:28:45 +00:00
Craig Topper
79f53ca0b5
[AVX512] Replace masked unpack builtins with shufflevector and selects.
...
llvm-svn: 273533
2016-06-23 06:36:42 +00:00
Craig Topper
d1691c7026
[AVX512] Replace masked integer cmp and ucmp builtins with native IR.
...
llvm-svn: 273378
2016-06-22 04:47:58 +00:00
Craig Topper
879b0978f4
[AVX512] Move the 128-bit and 256-bit lzcnt intrinsics to avx512vlcdintrin.h where they belong.
...
llvm-svn: 273249
2016-06-21 06:53:58 +00:00
Craig Topper
a54c21e742
[AVX512] Use native IR for mask pcmpeq/pcmpgt intrinsics.
...
llvm-svn: 272787
2016-06-15 14:06:34 +00:00
Craig Topper
fc07498e4a
[AVX512] Masked pcmpeqd, pcmpeqq, pcmpgtd, and pcmpgtq don't require avx512bw, just avx512vl.
...
llvm-svn: 272532
2016-06-13 04:15:11 +00:00
Craig Topper
46422562f5
[AVX512] Use a regular expression instead of checking for a specific name in a CHECK line in test.
...
llvm-svn: 272470
2016-06-11 13:35:43 +00:00
Craig Topper
7cc9263ec2
[AVX512] Implement masked and 512-bit pshufd intrinsics directly with __builtin_shufflevector and __builtin_ia32_select.
...
llvm-svn: 272467
2016-06-11 12:50:19 +00:00
Igor Breger
aadb876200
[AVX512] Emit select instruction instead of using x86 specific instrinsics.
...
This will allow us to remove the x86 instrinics from the backend.
Differential Revision: http://reviews.llvm.org/D21060
llvm-svn: 272141
2016-06-08 13:59:20 +00:00
Craig Topper
4d302448ae
[AVX512] Remove 512-bit andnot tests from the avx512vl test file.
...
llvm-svn: 271795
2016-06-04 16:37:38 +00:00
Michael Zuckerman
9e7d0a98fa
[Clang][AVX512][INTRINSICS] adding round cvt and fix regular cvtps_ph
...
Differential Revision: http://reviews.llvm.org/D20870
llvm-svn: 271498
2016-06-02 07:44:08 +00:00
Craig Topper
4b060e31c9
[AVX512] Convert masked load builtins to generic masked load intrinsics instead of the x86 specific ones.
...
This will allow the x86 intrinsics to be removed from the backend.
llvm-svn: 271253
2016-05-31 06:58:07 +00:00
Craig Topper
6e891fbdd2
[AVX512] Emit generic masked store instrinsics instead of using x86 specific intrinsics.
...
This will allow us to remove the x86 instrinics from the backend.
llvm-svn: 271246
2016-05-31 01:50:10 +00:00
Michael Zuckerman
eb5f178c4b
Fix instrinsics names:
...
_mm128_cmp_ps_mask-->_mm_cmp_ps_mask
_mm128_mask_cmp_ps_mask-->_mm_mask_cmp_ps_mask
_mm128_cmp_pd_mask-->_mm_cmp_pd_mask
_mm128_mask_cmp_pd_mask-->_mm_mask_cmp_pd_mask
llvm-svn: 270830
2016-05-26 08:10:12 +00:00
Michael Zuckerman
e6542002fc
[Clang][AVX512][BUILTIN]adding missing intrinsics for movdaq instruction set
...
Differential Revision: http://reviews.llvm.org/D20514
llvm-svn: 270401
2016-05-23 08:01:48 +00:00
Craig Topper
39c871038a
[X86] Add immediate range checks for many of the builtins.
...
This time allow -128 to 255 for builtins that use a char type immediate."
llvm-svn: 269878
2016-05-18 03:18:12 +00:00
Filipe Cabecinhas
09fbfcafc3
Revert "[X86] Add immediate range checks for many of the builtins."
...
This reverts commit r269619.
llvm-svn: 269765
2016-05-17 14:07:43 +00:00
Craig Topper
0f7ea93541
[X86] Add immediate range checks for many of the builtins.
...
llvm-svn: 269619
2016-05-15 22:18:00 +00:00
Michael Zuckerman
8bfb7776e4
[Clang][AVX512][Builtin] Adding intrinsics for vcvt{ph|ps}2{ps|ph} instruction set
...
Differential Revision: http://reviews.llvm.org/D19767
llvm-svn: 268376
2016-05-03 12:45:04 +00:00
Michael Zuckerman
5f0e96e56a
[CLANG][AVX512][BUILTIN]movap{d|s}{128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17818
llvm-svn: 268230
2016-05-02 14:02:01 +00:00
Michael Zuckerman
c62f27e3f4
[Clang][BuiltIn][avx512] Adding intrinsics for vpshufd instruction set
...
Differential Revision: http://reviews.llvm.org/D19580
llvm-svn: 268213
2016-05-02 07:35:27 +00:00
Michael Zuckerman
ac1e519944
[clang][Builtin][AVX512] Adding intrinsics for vmovshdup and vmovsldup instruction set
...
Differential Revision: http://reviews.llvm.org/D19595
llvm-svn: 268196
2016-05-01 14:43:43 +00:00
Michael Zuckerman
533e065bdc
[Clang][BuiltIn][AVX512] Adding intrinsics fot align{d|q} and palignr instruction set
...
Differential Revision: http://reviews.llvm.org/D19588
llvm-svn: 267876
2016-04-28 12:47:30 +00:00
Michael Zuckerman
8938e836c4
[Clang][AVX512][BuiltIn] Adding support to intrinsics of VPERMD and VPERMW instruction set
...
Differential Revision: http://reviews.llvm.org/D19195
llvm-svn: 267380
2016-04-25 05:32:35 +00:00
Michael Zuckerman
4fa96af4db
[Clang][AVX512][BuiltIn] Adding intrinsics of VGATHER{DPS|DPD} , VPGATHER{QD|QQ|DD|DQ} and VGATHERPF{0|1}{DPS|QPS|DPD|QPD} instruction set .
...
Differential Revision: http://reviews.llvm.org/D19224
llvm-svn: 266983
2016-04-21 12:47:27 +00:00
Michael Zuckerman
6fa512cecf
[Clang][Builtin][AVX512] Adding intrinsics for VGETMANT{PD|PS} and VGETEXP{PD|PS} instruction set
...
Differential Revision: http://reviews.llvm.org/D19197
llvm-svn: 266763
2016-04-19 17:10:29 +00:00
Michael Zuckerman
ef2979af50
[Clang][AVX512][BUILTIN] Adding intrinsics support to VEXTRACT{I|F} and VINSERT{I|F} instruction set
...
Differential Revision: http://reviews.llvm.org/D19097
llvm-svn: 266745
2016-04-19 15:18:23 +00:00
Michael Zuckerman
0a3508a8d3
[Clang][AVX512][BUILTIN] Adding support for intrinsics of vpmov{d|q}{b|w|d}{128|256|512} instruction set
...
Differential Revision: http://reviews.llvm.org/D19055
llvm-svn: 266280
2016-04-14 07:56:51 +00:00
Michael Zuckerman
d871531687
[Clang][AVX512][Builtin] Adding intrinsics of vpmovus{d|q}{b|w|d}{128|256|512} instruction set
...
Differential Revision: http://reviews.llvm.org/D19050
llvm-svn: 266278
2016-04-14 06:48:09 +00:00
Michael Zuckerman
e1680617b0
[Clang][AVX512][Builtin] Adding support to intrinsics of pmovs{d|q}{b|w|d}{128|256|512} instruction set
...
Differential Revision: http://reviews.llvm.org/D19023
llvm-svn: 266202
2016-04-13 15:02:04 +00:00
Michael Zuckerman
c2b6128a8f
[Clang][AVX512][Builtin] Adding support for VBROADCAST and VPBROADCASTB/W/D/Q instruction set
...
Differential Revision: http://reviews.llvm.org/D19012
llvm-svn: 266195
2016-04-13 12:58:01 +00:00
Michael Zuckerman
04fb3bc682
[Clang][BuiltIn][avx512] Adding avx512 (shuf,sqrt{ss|sd},rsqrt ) builtin to clang
...
llvm-svn: 266048
2016-04-12 07:59:39 +00:00
Michael Zuckerman
81f468c859
[Clang][AVX512][BuiltIn] Adding avx512 ( psll{d|q}512,psllv{16si|8di},psra{d|q}512,psrav{16si|8di},pternlog{d|q}{128|256|512} ) builtin to clang
...
Differential Revision: http://reviews.llvm.org/D18926
llvm-svn: 265964
2016-04-11 17:04:21 +00:00
Michael Zuckerman
6b5f4d8ad1
[CLANG] [AVX512] [BUILTIN] Adding PSRA{Q|D|QI|DI}{128|256|512} builtin
...
Differential Revision: http://reviews.llvm.org/D17693
llvm-svn: 265952
2016-04-11 15:46:39 +00:00
Michael Zuckerman
1af947a7b3
[Clang][AVX512][BuiltIn] Adding avx512 ( punpck{h|l}{dq|qdq}{128|256|512},rndscale{ss|sd}, {scalef{ss|sd|pd512|ps512} ) builtin to clang
...
Differential Revision: http://reviews.llvm.org/D18929
llvm-svn: 265935
2016-04-11 12:32:31 +00:00
Michael Zuckerman
07525091e6
[Clang][AVX512][BuiltIn] Adding avx512 ( ptest{n}m{b|w}{128|256|512} ) builtin to clang
...
Differential Revision: http://reviews.llvm.org/D18924
llvm-svn: 265928
2016-04-11 10:22:07 +00:00
Michael Zuckerman
d8d2f62107
[Clang][AVX512][BuiltIn] Adding avx512 ( vperm{i|t}2var, vpermil{var}{ps|pd}{256|512} ) builtin to clang.
...
Differential Revision: http://reviews.llvm.org/D18933
llvm-svn: 265915
2016-04-11 07:15:34 +00:00
Michael Zuckerman
cdd54c83d8
Adding avx512 (unpck{h|l}{pd|ps}, rcp14{pd|ps}{128|256},vplzcnt{d|q} ) builtin to clang
...
Differential Revision: http://reviews.llvm.org/D18931
llvm-svn: 265896
2016-04-10 12:54:23 +00:00
Michael Zuckerman
fa7ccc5bcf
[Clang][AVX512][BuiltIn] Adding avx512 ( store ) builtin to clang
...
Differential Revision: http://reviews.llvm.org/D18925
llvm-svn: 265895
2016-04-10 10:51:04 +00:00
Michael Zuckerman
def78750b7
[CLANG][avx512][BUILTIN] Adding fixupimm{pd|ps|sd|ss}
...
getexp{sd|ss} getmant{sd|ss} kunpck{di|si} loada{pd|ps} loaddqu{di|hi|qi|si} max{sd|ss} min{sd|ss} kmov16 builtins to clang
Differential Revision: http://reviews.llvm.org/D18215
llvm-svn: 264574
2016-03-28 12:23:09 +00:00
Michael Zuckerman
912be16a0e
[CLANG][AVX512][BUILTIN] Adding vpmultishiftqb{128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17914
llvm-svn: 262817
2016-03-07 08:29:10 +00:00
Michael Zuckerman
0d67e4b5d6
[CLANG][AVX512][BUILTIN] movddup{128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17826
llvm-svn: 262617
2016-03-03 13:43:05 +00:00
Michael Zuckerman
ffbb67a8e2
[CLANG][AVX512][BUILTIN] movdqa{32|64}{load|store|}{128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17812
llvm-svn: 262598
2016-03-03 09:26:01 +00:00
Michael Zuckerman
d15c95a793
[CLANG] [AVX512] [BUILTIN] Adding PSRAV
...
Differential Revision: http://reviews.llvm.org/D17699
llvm-svn: 262471
2016-03-02 09:05:46 +00:00
Michael Zuckerman
d176d744af
[CLANG][AVX512][BUILTIN] Adding PSRL{DI|QI}{128|256|512} builtin
...
Differential Revision: http://reviews.llvm.org/D17714
llvm-svn: 262355
2016-03-01 17:49:03 +00:00
Michael Zuckerman
0165e7669c
[CLANG][AVX512][BUILTIN] Adding PSRLV builtin
...
Differential Revision: http://reviews.llvm.org/D17718
llvm-svn: 262326
2016-03-01 13:03:45 +00:00
Michael Zuckerman
431b0e18b4
[CLANG] [AVX512] [BUILTIN] Adding PSLL{V|W|Wi}{128|256|512} builtin
...
Differential Revision: http://reviews.llvm.org/D17685
llvm-svn: 262177
2016-02-28 07:39:34 +00:00
Michael Zuckerman
e98cc7477f
[CLANG] [AVX512] [BUILTIN] Adding prorv{d|q}{128|256|512} builtin to clang
...
Differential Revision: http://reviews.llvm.org/D17512
llvm-svn: 261641
2016-02-23 15:59:47 +00:00
Michael Zuckerman
0231f1649b
[CLANG] [AVX512] [BUILTIN] Adding pro{lv|r}{d|q}{128|256|512} builtin to clang
...
Differential Revision: http://reviews.llvm.org/D17506
llvm-svn: 261635
2016-02-23 13:41:13 +00:00
Michael Zuckerman
38a2727764
[CLANG] [AVX512] [BUILTIN] Adding prol{d|q|w}{128|256|512} builtin to clang .
...
Differential Revision: http://reviews.llvm.org/D16985
llvm-svn: 261516
2016-02-22 09:05:41 +00:00
Michael Zuckerman
7a33dce4ef
[CLANG] [AVX512] [BUILTIN] Adding pmovzx{b|d|w}{w|d|q}{128|256|512} builtin to clang
...
Differential Revision: http://reviews.llvm.org/D16961
llvm-svn: 261471
2016-02-21 14:00:11 +00:00
Michael Zuckerman
7cdb72f7ea
[CLANG] [AVX512] [BUILTIN] Adding pmovsx{b|d|w}{w|d|q}{128|256|512} builtin to clang
...
Differential Revision: http://reviews.llvm.org/D16955
llvm-svn: 261196
2016-02-18 09:09:34 +00:00
Eric Christopher
2b2d56f059
Provide a frontend based error for always_inline functions that require
...
target features that the caller function doesn't provide. This matches
the existing backend failure to inline functions that don't have
matching target features - and diagnoses earlier in the case of
always_inline.
Fix up a few test cases that were, in fact, invalid if you tried
to generate code from the backend with the specified target features
and add a couple of tests to illustrate what's going on.
This should fix PR25246.
llvm-svn: 252834
2015-11-12 00:44:12 +00:00
Eric Christopher
cd875efa78
Canonicalize some of the x86 builtin tests and either remove or comment
...
about optimization options.
llvm-svn: 250271
2015-10-14 05:40:21 +00:00
Asaf Badouh
93aa4c808a
[X86][AVX512VL] add AVX512VL intrinsics 4 out of 4
...
Differential Revision: http://reviews.llvm.org/D11526
llvm-svn: 243409
2015-07-28 12:04:40 +00:00
Asaf Badouh
b7cf71b63d
[X86][AVX512VL] add AVX512VL intrinsics 3 out of 4
...
http://reviews.llvm.org/D11526
llvm-svn: 243406
2015-07-28 11:14:09 +00:00
Asaf Badouh
78ee5cc8e1
[X86][AVX512VL] add AVX512VL intrinsics 2 out of 4
...
http://reviews.llvm.org/D11526
llvm-svn: 243402
2015-07-28 10:30:56 +00:00
Asaf Badouh
74da38706e
[X86][AVX512VL] add AVX512VL intrinsics 1 out of 4
...
http://reviews.llvm.org/D11526
llvm-svn: 243394
2015-07-28 08:26:14 +00:00
Igor Breger
c2d7e033d7
This is a comment-only change to test commit access
...
llvm-svn: 240931
2015-06-29 09:48:56 +00:00
Elena Demikhovsky
c563c2c61a
AVX-512: Implemented AVX-512 FMA intrinsics and tests.
...
by Igor Breger
http://reviews.llvm.org/D10797
llvm-svn: 240928
2015-06-29 09:20:57 +00:00
Elena Demikhovsky
23fccde1b1
AVX-512: Changed CC parameter in "cmp" intrinsic
...
from i8 to i32 according to the Intel Spec
llvm-svn: 236980
2015-05-11 09:03:41 +00:00
Elena Demikhovsky
bd5c8b9be9
AVX-512: FP compare intrinsics - changed type of CC parameter from i8 to i32 according to the spec.
...
Added FP compare intrinsics for SKX.
llvm-svn: 236715
2015-05-07 11:26:36 +00:00
Elena Demikhovsky
35dc8c0944
AVX-512: added intrinsics for KNL and SKX
...
by Asaf Badouh (asaf.badouh@intel.com )
llvm-svn: 235986
2015-04-28 13:28:01 +00:00
Craig Topper
2f25a5a875
[X86] Add more of the AVX512 integer comparision intrinsics. This adds 128 and 256 bit vectors of dwords and qwords.
...
llvm-svn: 227075
2015-01-26 08:11:49 +00:00
Robert Khasanov
b9f3a911c9
[AVX512] Added VPCMPEQ intrinisics to headers.
...
Added tests.
Patch by Maxim Blumenthal <maxim.blumenthal@intel.com>
llvm-svn: 219319
2014-10-08 17:18:13 +00:00