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
Craig Topper
a328ee42cf
Use AVX512PIi8 for the alt forms of vcmp instructions. This adds the TB prefix and keeps the mnemonic from starting with an extra 'v'
...
llvm-svn: 192272
2013-10-09 04:24:38 +00:00
Elena Demikhovsky
2e408aefe0
AVX-512: added scalar convert instructions and intrinsics.
...
Fixed load folding in VPERM2I instruction.
llvm-svn: 192063
2013-10-06 13:11:09 +00:00
Elena Demikhovsky
462a2d235b
AVX-512: fixed shuffle lowering
...
in case of BLEND and added VSHUFPS patterns.
llvm-svn: 192055
2013-10-06 06:11:18 +00:00
Elena Demikhovsky
85aeffaf5c
AVX-512: Fixed encoding of VMOVQ instruction.
...
llvm-svn: 191889
2013-10-03 12:03:26 +00:00
Elena Demikhovsky
34586e7d41
AVX-512: fixed a bug in getLoadStoreRegOpcode() for AVX-512 target
...
llvm-svn: 191818
2013-10-02 12:20:42 +00:00
Elena Demikhovsky
b30371cb6b
AVX-512: Added TB prefix to all instructions without prefixes,
...
otherwise encoding fails after the last change in X86MCCodeEmitter.cpp.
llvm-svn: 191812
2013-10-02 06:39:07 +00:00
Elena Demikhovsky
3b75f5d282
AVX-512: Added X86vzmovl patterns
...
llvm-svn: 191733
2013-10-01 08:38:02 +00:00