Elena Demikhovsky
f7c1b16591
AVX-512: Added rrk, rrkz, rmk, rmkz, rmbk, rmbkz versions of AVX512 FP packed instructions, added encoding tests for them.
...
By Robert Khazanov.
llvm-svn: 203098
2014-03-06 08:45:30 +00:00
Elena Demikhovsky
9737e3886b
AVX-512: Fixed extract_vector_elt for v8i1 vector
...
llvm-svn: 202624
2014-03-02 09:19:44 +00:00
Elena Demikhovsky
a5c38cbb45
AVX-512: Fixed encoding of VPCMPEQ and VPCMPGT
...
llvm-svn: 202015
2014-02-24 10:08:30 +00:00
Elena Demikhovsky
3ebfe11532
AVX-512: Fixed encoding of VPTESTMQ
...
llvm-svn: 201980
2014-02-23 14:28:35 +00:00
Elena Demikhovsky
c96570172a
AVX-512: Assembly parsing of broadcast semantic in AVX-512; imlemented by Nis Zinovy (zinovy.y.nis@intel.com)
...
Fixed truncate i32 to i1; a test will be provided in the next commit.
llvm-svn: 201757
2014-02-20 06:34:39 +00:00
Cameron McInally
7b544f0297
Fix AVX512 vector sqrt assembly strings.
...
llvm-svn: 201681
2014-02-19 15:16:09 +00:00
Craig Topper
5ccb61781f
Add an x86 prefix encoding for instructions that would decode to a different instruction with 0xf2/f3/66 were in front of them, but don't themselves have a prefix. For now this doesn't change any bbehavior, but plan to use it to fix some bugs in the disassembler.
...
llvm-svn: 201538
2014-02-18 00:21:49 +00:00
Elena Demikhovsky
750498c77b
AVX-512: implemented zext fron i1 to i16
...
llvm-svn: 201502
2014-02-17 07:29:33 +00:00
Elena Demikhovsky
1fad075974
AVX-512: simpyfied BUILD_VECTOR for masks; fixed cmp/test sequence
...
llvm-svn: 201487
2014-02-16 11:34:23 +00:00
Elena Demikhovsky
2aafc22ed9
AVX-512: Optimized BUILD_VECTOR pattern;
...
fixed encoding of VEXTRACTPS instruction.
llvm-svn: 201134
2014-02-11 07:25:59 +00:00
Elena Demikhovsky
9f423d6f25
AVX-512: Fixed extract_vector_elt for v16i1 and v8i1 vectors.
...
llvm-svn: 201066
2014-02-10 07:02:39 +00:00
Elena Demikhovsky
a30e437659
AVX-512: Added intrinsic for cvtph2ps.
...
Added VPTESTNM instruction.
Added a pattern to vselect (lit tests will follow).
llvm-svn: 200823
2014-02-05 07:05:03 +00:00
Craig Topper
da7160d6d2
Simplify some x86 format classes and remove some ambiguities in their application.
...
llvm-svn: 200608
2014-02-01 08:17:56 +00:00
Craig Topper
fb1746beec
Remove duplicate pattern and add predicate checks on other patterns.
...
llvm-svn: 200455
2014-01-30 06:03:19 +00:00
Elena Demikhovsky
a5d38a39a0
AVX-512: added VPERM2D VPERM2Q VPERM2PS VPERM2PD instructions,
...
they give better sequences than VPERMI
llvm-svn: 199893
2014-01-23 14:27:26 +00:00
Elena Demikhovsky
767fc967b4
AVX-512: optimized scalar compare patterns
...
removed AVX512SI format, since it is similar to AVX512BI.
llvm-svn: 199217
2014-01-14 15:10:08 +00:00
Craig Topper
ae11aed9d7
Separate the concept of 16-bit/32-bit operand size controlled by 0x66 prefix and the current mode from the concept of SSE instructions using 0x66 prefix as part of their encoding without being affected by the mode.
...
This should allow SSE instructions to be encoded correctly in 16-bit mode which r198586 probably broke.
llvm-svn: 199193
2014-01-14 07:41:20 +00:00
Elena Demikhovsky
b19c9dc1a1
AVX-512: Embedded Rounding Control - encoding and printing
...
Changed intrinsics for vrcp14/vrcp28 vrsqrt14/vrsqrt28 - aligned with GCC.
llvm-svn: 199102
2014-01-13 12:55:03 +00:00
Elena Demikhovsky
172a27c750
AVX-512: Added more intrinsics for pmin/pmax, pabs, blend, pmuldq.
...
llvm-svn: 198745
2014-01-08 10:54:22 +00:00
Elena Demikhovsky
3629b4aa0e
AVX-512: added intrinsic vcvtpd2ps (with rounding mode and without)
...
llvm-svn: 198593
2014-01-06 08:45:54 +00:00
Elena Demikhovsky
f404e054a1
AVX-512: changed property name from "neverHasSideEffects=1" to "hasSideEffects=0", added this property to VMOVSS/VMOVSD;
...
Optimized a truncate pattern.
llvm-svn: 198562
2014-01-05 14:21:07 +00:00
Elena Demikhovsky
52e4a0e109
AVX-512: Added more intrinsics for convert and min/max.
...
Removed vzeroupper from AVX-512 mode - our optimization gude does not recommend to insert vzeroupper at all.
llvm-svn: 198557
2014-01-05 10:46:09 +00:00
Craig Topper
0550ce7ac1
Mark x86 _alt instructions as AsmParserOnly so they will be omitted from disassembler without string matches.
...
llvm-svn: 198545
2014-01-05 04:55:55 +00:00
Craig Topper
3484fc2161
Add a new x86 specific instruction flag to force some isCodeGenOnly instructions to go through to the disassembler tables without resorting to string matches. Apply flag to all _REV instructions.
...
llvm-svn: 198543
2014-01-05 04:17:28 +00:00
Craig Topper
9dd48c8ed4
Mark all x86 Int_ and _Int patterns as isCodeGenOnly so the disassembler table builder doesn't need to string match them to exclude them.
...
llvm-svn: 198323
2014-01-02 17:28:14 +00:00
Elena Demikhovsky
de3f751baf
AVX-512: Added intrinsics for vcvt, vcvtt, vrndscale, vcmp
...
Printing rounding control.
Enncoding for EVEX_RC (rounding control).
llvm-svn: 198277
2014-01-01 15:12:34 +00:00
Elena Demikhovsky
b64d7e8586
AVX-512: Result type of scalar SETCC is MVT::i1 for AVX-512.
...
llvm-svn: 198008
2013-12-25 10:06:40 +00:00
Elena Demikhovsky
64c9548d66
AVX-512: fixed some patterns for MVT::i1
...
llvm-svn: 197981
2013-12-24 14:24:07 +00:00
Elena Demikhovsky
fe24a30e38
AVX512: SETCC returns i1 for AVX-512 and i8 for all others
...
llvm-svn: 197876
2013-12-22 10:13:18 +00:00
Elena Demikhovsky
c5f6726a24
AVX-512: Added implementation of CONCAT_VECTORS for v8i1 vectors (by Alexey Bader).
...
Added implementation of "truncate" from integer type (i64/i32/i16/i8) to i1.
llvm-svn: 197482
2013-12-17 08:33:15 +00:00
Elena Demikhovsky
47fc44e52e
AVX-512: Added legal type MVT::i1 and VK1 register for it.
...
Added scalar compare VCMPSS, VCMPSD.
Implemented LowerSELECT for scalar FP operations.
I replaced FSETCCss, FSETCCsd with one node type FSETCCs.
Node extract_vector_elt(v16i1/v8i1, idx) returns an element of type i1.
llvm-svn: 197384
2013-12-16 13:52:35 +00:00
Elena Demikhovsky
cf08809813
AVX-512: Removed "z" suffix from AVX-512 instructions, since it is incompatible with GCC.
...
I moved a test from avx512-vbroadcast-crash.ll to avx512-vbroadcast.ll
I defined HasAVX512 predicate as AssemblerPredicate. It means that you should invoke llvm-mc with "-mcpu=knl" to get encoding for AVX-512 instructions. I need this to let AsmMatcher to set different encoding for AVX and AVX-512 instructions that have the same mnemonic and operands (all scalar instructions).
llvm-svn: 197041
2013-12-11 14:31:04 +00:00
Elena Demikhovsky
e382c3fdcd
AVX-512: changed intrinsics for mask operations
...
llvm-svn: 196918
2013-12-10 13:53:10 +00:00
Elena Demikhovsky
6270b388c8
AVX-512: Changed intrinsics of VPCONFLICT to match GCC builtin form
...
llvm-svn: 196914
2013-12-10 11:58:35 +00:00
Cameron McInally
e3cc4aacb9
Update AVX512 vector blend intrinsic names.
...
llvm-svn: 196581
2013-12-06 13:35:35 +00:00
Cameron McInally
30bbb214e5
Add AVX512 patterns for v16i32 broadcast and v2i64 zero extend load.
...
Patch by Aleksey Bader.
llvm-svn: 196435
2013-12-05 00:11:25 +00:00
Cameron McInally
cbb51dacfb
Fix assembly syntax for AVX512 vector blend instructions.
...
llvm-svn: 196393
2013-12-04 18:05:36 +00:00
Elena Demikhovsky
0a74b7da35
AVX-512: Handled extractelement from mask vector;
...
Added VMOSHDUP/VMOVSLDUP shuffle instructions.
llvm-svn: 194691
2013-11-14 11:29:27 +00:00
Cameron McInally
d80f7d34de
Add support for AVX512 masked vector blend intrinsics.
...
llvm-svn: 194006
2013-11-04 19:14:56 +00:00
Elena Demikhovsky
dacddb0bab
AVX-512: added VPCONFLICT instruction and intrinsics,
...
added EVEX_KZ to tablegen
llvm-svn: 193959
2013-11-03 13:46:31 +00:00
Cameron McInally
394d557f41
Add AVX512 unmasked integer broadcast intrinsics and support.
...
llvm-svn: 193748
2013-10-31 13:56:31 +00:00
Elena Demikhovsky
199c823555
AVX-512: PMIN/PMAX intrinsics and patterns
...
Patch by Cameron McInally <cameron.mcinally@nyu.edu>
llvm-svn: 193497
2013-10-27 08:18:37 +00:00
Quentin Colombet
8761a8f5c0
[X86][AVX512] Add patterns that match the AVX512 floating point register vbroadcast intrinsics.
...
Patch by Cameron McInally <cameron.mcinally@nyu.edu>
llvm-svn: 193422
2013-10-25 18:04:12 +00:00
Quentin Colombet
4bf1c282c2
[X86][AVX512] Add patterns that match the AVX512 floating point vbroadcast intrinsics.
...
Patch by Cameron McInally <cameron.mcinally@nyu.edu>
llvm-svn: 193421
2013-10-25 17:47:18 +00:00
Elena Demikhovsky
dd0794e51b
AVX-512: added VCVTPH2PS, VCVTPS2PH with intrinsics
...
llvm-svn: 193312
2013-10-24 07:16:35 +00:00
Elena Demikhovsky
1f3ed4169c
AVX-512: aligned / unaligned load and store for 512-bit integer vectors.
...
llvm-svn: 193156
2013-10-22 09:19:28 +00:00
Lang Hames
2783993fca
X86 vector element shift-by-immediate instructions take i8 immediates. Make
...
the instruction defenitions and ISEL reflect this.
Prior to this patch these instructions took an i32i8imm, and the high bits were
dropped during encoding. This led to incorrect behavior for shifts by
immediates higher than 255. This patch fixes that issue by detecting large
immediate shifts and returning constant zero (for logical shifts) or capping
the shift amount at an encodable value (for arithmetic shifts).
Fixes <rdar://problem/14968098>
llvm-svn: 193096
2013-10-21 17:51:24 +00:00
Craig Topper
88adf2a49c
Remove more filters from the disassembler. Mark some AVX512 instructions as CodeGenOnly.
...
llvm-svn: 192525
2013-10-12 05:41:08 +00:00
Elena Demikhovsky
a3a714082b
AVX-512: Added VRCP28 and VRSQRT28 instructions and intrinsics.
...
llvm-svn: 192283
2013-10-09 08:16:14 +00:00
Andrew Trick
15a4774345
Add missing HasAVX512 predicate.
...
This was only working because AVX had cheaper rules in all cases.
I'm sure there are other places in this file where predicates are missing.
llvm-svn: 192276
2013-10-09 05:11:10 +00:00