| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
| |
for vector type as 'expand' instead of 'legal'
For now, we didn't set the default operation action for SIGN_EXTEND_INREG for
vector type, which is 0 by default, that is legal. However, most target didn't
have native instructions to support this opcode. It should be set as expand by
default, as what we did for ANY_EXTEND_VECTOR_INREG.
Differential Revision: https://reviews.llvm.org/D70000
|
|
|
|
| |
llvm-svn: 369014
|
|
|
|
| |
llvm-svn: 354473
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to reflect the new license.
We understand that people may be surprised that we're moving the header
entirely to discuss the new license. We checked this carefully with the
Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM
project under our new license, so you will see that the license headers
include that license only. Some of our contributors have contributed
code under our old license, and accordingly, we have retained a copy of
our old license notice in the top-level files in each project and
repository.
llvm-svn: 351636
|
|
|
|
|
|
|
|
|
|
| |
nodes. Move asserts into getNode.
These methods were just wrappers around getNode with additional asserts (identical and repeated 3 times). But getNode already has a switch that can be used to hold these asserts that allows them to be shared for all 3 opcodes. This also enables checking on the places that create these nodes without using the wrappers.
The rest of the patch is just changing all callers to use getNode directly.
llvm-svn: 346087
|
|
|
|
|
|
|
|
| |
Shufflevector instructions in LLVM IR that extract a subset of elements
of a longer input into a shorter vector can be done using VECTOR_SHUFFLEs.
This will avoid expanding them into constly extracts and inserts.
llvm-svn: 342091
|
|
|
|
| |
llvm-svn: 334109
|
|
|
|
| |
llvm-svn: 333771
|
|
|
|
| |
llvm-svn: 333760
|
|
|
|
| |
llvm-svn: 332525
|
|
|
|
|
|
|
|
|
|
| |
There was some unfortunate interaction between VSPLAT and BITCAST
related to the selection of constant vectors (coming from selecting
shuffles). Introduce VSPLATW that always splats a 32-bit word, and
can have arbitrary result type (to avoid BITCASTs of VSPLAT).
Clean up the previous selection of BITCAST/VSPLAT.
llvm-svn: 330471
|
|
|
|
| |
llvm-svn: 330344
|
|
|
|
|
|
|
|
|
| |
This is a follow-up to r325169, this time for all types, not just HVX
vector types.
Disable this by default, since it's not always safe.
llvm-svn: 326915
|
|
|
|
| |
llvm-svn: 325169
|
|
|
|
| |
llvm-svn: 324392
|
|
|
|
| |
llvm-svn: 324391
|
|
|
|
| |
llvm-svn: 324352
|
|
|
|
|
|
|
|
| |
Vector pairs are legal types, but not every operation can work on pairs.
For those operations that are legal for single vectors, generate a concat
of their results on pair halves.
llvm-svn: 324350
|
|
|
|
| |
llvm-svn: 324349
|
|
|
|
|
|
|
|
|
|
| |
It was expanded directly into instructions earlier. That was to avoid
loads from a constant pool for a vector negation: "xor x, splat(i1 -1)".
Implement ISD opcodes QTRUE and QFALSE to denote logical vectors of
all true and all false values, and handle setcc with negations through
selection patterns.
llvm-svn: 324348
|
|
|
|
|
|
|
| |
Unlike V6_vmpyhv, it produces the result in the exact form that is
expected without the need for a shuffle.
llvm-svn: 324241
|
|
|
|
| |
llvm-svn: 323916
|
|
|
|
| |
llvm-svn: 323914
|
|
|
|
| |
llvm-svn: 323911
|
|
|
|
| |
llvm-svn: 323889
|
|
|
|
| |
llvm-svn: 323568
|
|
|
|
|
|
| |
"in in" -> "in", "on on" -> "on" etc.
llvm-svn: 323508
|
|
|
|
| |
llvm-svn: 323295
|
|
|
|
| |
llvm-svn: 323233
|
|
|
|
|
|
|
|
|
|
|
| |
In addition to that, make sure that there are no boolean vector types that
are associated with multiple register classes. Specifically, remove v32i1
and v64i1 from integer register classes. These types will correspond to
results of vector comparisons, and as such should belong to the vector
predicate class. Having them in scalar registers as well makes legalization
ambiguous.
llvm-svn: 323229
|
|
|
|
| |
llvm-svn: 322499
|
|
|
|
| |
llvm-svn: 321893
|
|
|
|
|
|
| |
Handle BUILD_VECTOR of boolean values.
llvm-svn: 321220
|
|
|
|
|
|
| |
Implement any-extend as zero-extend.
llvm-svn: 321004
|
|
|
|
| |
llvm-svn: 320744
|
|
|
|
|
|
| |
HVX does not support operations on 64-bit integers.
llvm-svn: 320722
|
|
|
|
|
|
|
|
| |
A wrong type was passed to insertVector, causing an out-of-bounds value
to be added an an operand to HexagonISD::INSERT. This later failed in
instruction selection.
llvm-svn: 320369
|
|
|
|
|
|
| |
Handle and, or, xor, add, sub, mul for vectors of i8, i16, and i32.
llvm-svn: 320063
|
|
|
|
| |
llvm-svn: 319940
|
|
Support for:
- build vector,
- extract vector element, subvector,
- insert vector element, subvector,
- shuffle.
llvm-svn: 319901
|