Jina Nahias
eb0829155f
[x86][AVX512] Lowering kunpack intrinsics to LLVM IR
...
This patch, together with a matching llvm patch (https://reviews.llvm.org/D39720 ), implements the lowering of X86 kunpack intrinsics to IR.
Differential Revision: https://reviews.llvm.org/D39719
Change-Id: Id5d3cb394ad33b98be79a6783d1d15569e2b798d
llvm-svn: 319777
2017-12-05 15:42:47 +00:00
Uriel Korach
5b2b71d909
[X86] test/testn intrinsics lowering to IR. clang side
...
Change Header files of the intrinsics for lowering test and testn intrinsics to IR code.
Removed test and testn builtins from clang
Differential Revision: https://reviews.llvm.org/D38737
llvm-svn: 318035
2017-11-13 12:50:52 +00:00
Craig Topper
57f96ac6dc
[X86] Replace the mask cmpeq/cmple/cmplt/cmpgt/cmpge/cmpneq intrinsics with macros that just pass the right comparison predicate value to the regular cmp intrinsic. Remove mask cmpeq/cmpgt builtins that are now unused.
...
This shortens the intrinsic headers a little and allows us to get rid of the cmpeq and cmpgt handling from CGBuiltin.cpp.
llvm-svn: 317506
2017-11-06 21:00:49 +00:00
Jina Nahias
3ad702a1ed
Lowering Mask Set1 intrinsics to LLVM IR
...
This patch, together with a matching llvm patch (https://reviews.llvm.org/D37669 ), implements the lowering of X86 mask set1 intrinsics to IR.
Differential Revision: https://reviews.llvm.org/D37668
llvm-svn: 313624
2017-09-19 11:00:27 +00:00
Yael Tsafrir
23e7733230
[X86] Lower _mm[256|512]_[mask[z]]_avg_epu[8|16] intrinsics to native llvm IR
...
Differential Revision: https://reviews.llvm.org/D37562
llvm-svn: 313011
2017-09-12 07:46:32 +00:00
Craig Topper
f0d1147fae
[AVX-512] Replace 512-bit masked packss/packus builtins and replace with new unmasked builtins.
...
These new unmasked builtins will enable us to easily support optimizing these builtins in InstCombine in the backend.
llvm-svn: 295291
2017-02-16 06:32:07 +00:00
Craig Topper
cdd3603c04
[AVX-512] Remove masking from 512-bit pshufb builtin. The backend now has a version without masking so wrap it with select.
...
This will allow the backend to constant fold these to generic shuffle vectors like 128-bit and 256-bit without having to working about handling masking.
llvm-svn: 289345
2016-12-10 23:09:52 +00:00
Craig Topper
37bf5c6a3f
[AVX-512] Replace masked 16-bit element variable shift builtins with new unmasked versions and selects.
...
llvm-svn: 287313
2016-11-18 05:04:51 +00:00
Craig Topper
d7e5b21914
[X86] Remove extra escaped new lines in intrinsic headers left over from an earlier conversion away from a macro. NFC
...
llvm-svn: 286756
2016-11-13 07:26:31 +00:00
Craig Topper
298aa12b63
[AVX-512] Add returns to shift intrinsics that converted from macros in r286714.
...
llvm-svn: 286738
2016-11-13 00:35:01 +00:00
Craig Topper
1a44193afd
[AVX-512] Convert the rest of the masked shift by immediate and by single element builtins over to the newly added unmasked builtins and a select.
...
This should also fix PR30691 since the new builtins are handled like the legacy builtins in the backend.
llvm-svn: 286714
2016-11-12 07:16:59 +00:00
Craig Topper
0c5da26572
[AVX-512] Replace 512-bit pmovzx/sx builtins with native IR.
...
llvm-svn: 284936
2016-10-23 07:35:47 +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
Craig Topper
351ed42795
[X86] Block pbroadcastq instructions on 32-bit targets instead of pbroadcastb.
...
Thanks to Simon Pilgrim for catching the mistake.
llvm-svn: 276564
2016-07-24 14:58:06 +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
Simon Pilgrim
f5a8837e1b
[X86][AVX512] Converted the VBROADCAST intrinsics to generic IR
...
llvm-svn: 274544
2016-07-05 12:59:33 +00:00
Michael Zuckerman
7dac6fbdf8
[Clang][BuiltIn][AVX512] adding _mm{|256|512}_mask_cvt{s|us|}epi16_storeu_epi8 intrinsics
...
Differential Revision: http://reviews.llvm.org/D21729
llvm-svn: 274532
2016-07-05 08:08:01 +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
Craig Topper
50e3dfe9d0
[X86] Fix pslldq/psrldq intrinsics to not fail compilation with immediates larger than 16. This was accidentally broken in r272246.
...
llvm-svn: 273775
2016-06-25 07:31:14 +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
68738332b8
[AVX512] Implement 512-bit and masked shufflelo and shufflehi intrinsics directly with __builtin_shufflevector and __builtin_ia32_select. Also improve the formatting of the AVX2 version.
...
llvm-svn: 272452
2016-06-11 03:31:13 +00:00
Craig Topper
d4273a425e
[AVX512] Add _mm512_bsrli_epi128 and _mm512_bslli_epi128 intrinsics.
...
llvm-svn: 272451
2016-06-11 03:31:07 +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
6a77b62640
[X86] Use unsigned types for vector arithmetic in intrinsics to avoid undefined behavior for signed integer overflow.
...
This is really only needed for addition, subtraction, and multiplication, but I did the bitwise ops too for overall consistency. Clang currently doesn't set NSW for signed vector operations so the undefined behavior shouldn't happen today.
llvm-svn: 271778
2016-06-04 05:43:41 +00:00
Michael Zuckerman
efbf3f108e
[Clang][AVX512][Builtin] Fix palignr intrinsics header
...
Differential Revision: http://reviews.llvm.org/D20620
llvm-svn: 270707
2016-05-25 15:05:03 +00:00
Craig Topper
709235674b
[AVX512] Add parentheses around macro arguments in AVX512BW intrinsics. Remove leading underscores from macro argument names. Add explicit typecasts to all macro arguments and return values. And finally reformat after all the adjustments.
...
This is a mostly mechanical change accomplished with a script. I tried to split out any changes to the typecasts that already existed into separate commits.
llvm-svn: 269739
2016-05-17 04:41:33 +00:00
Craig Topper
3007cde8c5
[AVX512] _m512_setzero_qi/hi should return __m512i.
...
llvm-svn: 269733
2016-05-17 03:42:25 +00:00
Craig Topper
f6d024edff
[AVX512] Fix odd formatting in intrinsic header.
...
llvm-svn: 269732
2016-05-17 03:42:15 +00:00
Craig Topper
7d00d2031d
[AVX512] Fix bad typecasts on return value for 512-bit integer byte/word compare builtins.
...
llvm-svn: 269620
2016-05-16 00:51:06 +00:00
Craig Topper
b81d430d3a
[AVX512] Fix an intrinsic that was passing -2 as a mask instead of -1.
...
llvm-svn: 269610
2016-05-15 20:09:58 +00:00
Michael Zuckerman
e871785eb6
[Clang][avx512][Builtin] Adding intrinsics for cvtw2mask{128|256|512} instruction set
...
Differential Revision: http://reviews.llvm.org/D19766
llvm-svn: 268385
2016-05-03 14:12:23 +00:00
Michael Zuckerman
de8d3753d3
[clang][AVX512][Builtin] Adding intrinsics for the SAD instruction set.
...
Differential Revision: http://reviews.llvm.org/D19591
llvm-svn: 267942
2016-04-28 21:21:08 +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
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
074edd7c1e
[Clang][AVX512][Builtin] Adding supporting to intrinsics of cvt{b|d|q}2mask{128|256|512} and cvtmask2{b|d|q}{128|256|512} instruction set.
...
Differential Revision: http://reviews.llvm.org/D19009
llvm-svn: 266188
2016-04-13 10:49:37 +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
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
1ad03e7f01
[CLANG][AVX512][BUILTIN] movdqu{qi|hi} {128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17814
llvm-svn: 262609
2016-03-03 11:34:52 +00:00
Michael Zuckerman
abbe34bce6
[Clang][AVX512][BUILTIN] Adding PSRL{W|WI}{128|256|512}
...
Differential Revision: http://reviews.llvm.org/D17754
llvm-svn: 262593
2016-03-03 08:55:20 +00:00
Michael Zuckerman
3df95e711f
[CLANG] [AVX512] [BUILTIN] Adding PSRA{W|WI}{128|256|512}.
...
Differential Revision: http://reviews.llvm.org/D17706
llvm-svn: 262481
2016-03-02 12:06:06 +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
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
6c317515e4
[CLANG] [AVX512] [BUILTIN] Adding PSHUF{L|H}W{128|256|512} builtin to clang .
...
Differential Revision: http://reviews.llvm.org/D17539
llvm-svn: 261755
2016-02-24 17:39:35 +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