| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This type can show up when lowering some HVX vector code on Hexagon.
llvm-svn: 372403
|
|
|
|
| |
llvm-svn: 369014
|
|
|
|
|
|
|
|
| |
Pre-commit for D60006 (Add fcmp UNDEF handling to SelectionDAG::FoldSetCC)
Approved by @kparzysz (Krzysztof Parzyszek)
llvm-svn: 357301
|
|
|
|
|
|
|
|
| |
Pre-commit for D59363 (Add icmp UNDEF handling to SelectionDAG::FoldSetCC)
Approved by @kparzysz (Krzysztof Parzyszek)
llvm-svn: 356267
|
|
|
|
| |
llvm-svn: 354473
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The transform performs a bitwise logic op in a wider type followed by
truncate when both inputs are truncated from the same source type:
logic_op (truncate x), (truncate y) --> truncate (logic_op x, y)
There are a bunch of other checks that should prevent doing this when
it might be harmful.
We already do this transform for scalars in this spot. The vector
limitation was shared with a check for the case when the operands are
extended. I'm not sure if that limit is needed either, but that would
be a separate patch.
Differential Revision: https://reviews.llvm.org/D55448
llvm-svn: 349303
|
|
|
|
| |
llvm-svn: 349163
|
|
|
|
| |
llvm-svn: 347218
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D54646
llvm-svn: 347110
|
|
|
|
|
|
|
|
| |
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: 340447
|
|
|
|
|
|
|
|
|
|
| |
This will remove suboptimal branching from the generated ll/sc loops.
The extra simplification pass affects a lot of testcases, which have
been modified to accommodate this change: either by modifying the
test to become immune to the CFG simplification, or (less preferablt)
by adding option -hexagon-initial-cfg-clenaup=0.
llvm-svn: 338774
|
|
|
|
| |
llvm-svn: 334508
|
|
|
|
| |
llvm-svn: 334123
|
|
|
|
| |
llvm-svn: 334109
|
|
|
|
| |
llvm-svn: 333760
|
|
|
|
|
|
|
| |
This saves an instruction because for align-right the shift amount
would need to be put in a register first.
llvm-svn: 333543
|
|
|
|
|
|
|
|
| |
When the shuffle mask selected a subvector of the second input vector,
and aligning of the source was performed, the shuffle mask was updated
incorrectly, resulting in an ICE further in the selection process.
llvm-svn: 333279
|
|
|
|
| |
llvm-svn: 333009
|
|
|
|
| |
llvm-svn: 332525
|
|
|
|
| |
llvm-svn: 331918
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 330333
|
|
|
|
| |
llvm-svn: 328648
|
|
|
|
|
|
| |
Patch by Brendon Cahoon.
llvm-svn: 328022
|
|
|
|
|
|
| |
Patch by Brendon Cahoon.
llvm-svn: 327975
|
|
|
|
| |
llvm-svn: 327037
|
|
|
|
|
|
|
|
|
| |
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: 326627
|
|
|
|
|
|
|
|
|
|
| |
Enable multiple COPY hints to eliminate more COPYs during register allocation.
Note that this is something all targets should do, see
https://reviews.llvm.org/D38128.
Review: Krzysztof Parzyszek
llvm-svn: 325697
|
|
|
|
| |
llvm-svn: 325169
|
|
|
|
|
|
| |
Fixes http://llvm.org/PR36320.
llvm-svn: 324763
|
|
|
|
| |
llvm-svn: 324391
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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: 323914
|
|
|
|
| |
llvm-svn: 323912
|
|
|
|
| |
llvm-svn: 323911
|
|
|
|
| |
llvm-svn: 323889
|
|
|
|
|
|
|
|
| |
Selecting of constant HVX vectors involves some "manual processing",
which mishandled an unrelated BITCAST operation causing a selection
error.
llvm-svn: 323887
|
|
|
|
| |
llvm-svn: 323568
|
|
|
|
| |
llvm-svn: 323346
|
|
|
|
| |
llvm-svn: 323250
|
|
|
|
|
|
|
|
|
|
|
| |
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: 322301
|
|
|
|
|
|
| |
Recommit r321897 with updated testcases.
llvm-svn: 321908
|
|
|
|
|
|
|
| |
Commit message:
[Hexagon] Add patterns for sext_inreg of HVX vector types
llvm-svn: 321904
|
|
|
|
|
|
| |
Only non-bool vectors.
llvm-svn: 321895
|