Krzysztof Parzyszek
ef20447fa0
[Hexagon] Forgot about HexagonISD::VZERO in selecting const vectors
...
llvm-svn: 324244
2018-02-05 15:52:54 +00:00
Krzysztof Parzyszek
67079be139
[Hexagon] Don't use garbage mask in HvxSelector::shuffp2
...
The function shuffp2 was breaking up a wide shuffle into a pair of
narrower ones, except that the narrower shuffle masks were actually
uninitialized.
llvm-svn: 324243
2018-02-05 15:46:41 +00:00
Krzysztof Parzyszek
8cc636c592
[Hexagon] Only process bitcasts of vsplats when selecting const vectors
...
Selecting of constant HVX vectors involves some "manual processing",
which mishandled an unrelated BITCAST operation causing a selection
error.
llvm-svn: 323887
2018-01-31 16:48:20 +00:00
Krzysztof Parzyszek
90ca4e8b0c
[Hexagon] Generate constant splats instead of loads from constant pool
...
llvm-svn: 323568
2018-01-26 21:54:56 +00:00
Krzysztof Parzyszek
5aef4b5997
[Hexagon] Remove unused HexagonISD opcodes, NFC
...
llvm-svn: 323324
2018-01-24 14:07:37 +00:00
Krzysztof Parzyszek
3780a0e1fa
[Hexagon] Implement basic vector operations on vectors vNi1
...
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
2018-01-23 17:53:59 +00:00
Florian Hahn
6a684b2593
Silence GCC 7 warning by using an enum class.
...
This silences the following GCC7 warning:
lib/Target/Hexagon/HexagonISelDAGToDAGHVX.cpp:142:30: warning:
enumeral and non-enumeral type in conditional expression [-Wextra]
return F != Colors.end() ? F->second : None;
~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
Reviewers: amharc, RKSimon, davide
Reviewed By: RKSimon, davide
Differential Revision: https://reviews.llvm.org/D41003
llvm-svn: 322398
2018-01-12 20:35:45 +00:00
Krzysztof Parzyszek
e156e9ba0f
[Hexagon] Use SetVector when queuing nodes to scan in selectVectorConstants
...
llvm-svn: 322298
2018-01-11 17:59:34 +00:00
Eric Christopher
c44717774a
Remove unused function HvxSelector::zerous.
...
llvm-svn: 322053
2018-01-09 02:38:17 +00:00
Benjamin Kramer
802e6255b2
Make helpers static. No functionality change.
...
llvm-svn: 321425
2017-12-24 12:46:22 +00:00
Krzysztof Parzyszek
3f84c0f5d8
[Hexagon] Use ArrayRef member functions instead of custom ones
...
llvm-svn: 321221
2017-12-20 20:54:13 +00:00
Krzysztof Parzyszek
e704583f23
[Hexagon] Cache loads to select to avoid traversing mutating DAG
...
llvm-svn: 321034
2017-12-18 23:13:27 +00:00
Krzysztof Parzyszek
edcd9dcbc4
[Hexagon] Better detection of identity and undef masks in shuffles
...
llvm-svn: 320523
2017-12-12 20:23:12 +00:00
Krzysztof Parzyszek
40a605f1be
[Hexagon] Fix wrong order of operands for vmux
...
Shuffle generation uses vmux to collapse vectors resulting from two
individual shuffles into one. The indexes of the elements selected
from the first operand were indicated by 0xFF in the constant vector
used in the compare instruction, but the compare (veqb) set the bits
corresponding to the 0x00 elements, thus inverting the selection.
Reverse the order of operands to vmux to get the correct output.
llvm-svn: 320516
2017-12-12 19:32:41 +00:00
Krzysztof Parzyszek
a8ab1b75cb
[Hexagon] Add support for Hexagon V65
...
llvm-svn: 320404
2017-12-11 18:57:54 +00:00
Simon Pilgrim
a335e1e29d
Fix 'enumeral and non-enumeral type in conditional expression' gcc warning. NFCI.
...
llvm-svn: 320254
2017-12-09 16:19:18 +00:00
Simon Pilgrim
3d0be4f507
Fix signed/unsigned gcc warning. NFCI.
...
llvm-svn: 320253
2017-12-09 16:04:57 +00:00
Krzysztof Parzyszek
d2967868be
[Hexagon] Recognize vdealb, vdealh, vshuffb and vshuffh specifically
...
llvm-svn: 319978
2017-12-06 22:41:49 +00:00
Krzysztof Parzyszek
64533cf630
[Hexagon] Handle perfect shuffles on single vectors
...
llvm-svn: 319965
2017-12-06 21:25:03 +00:00
Tim Shen
b684b1aa35
[Hexagon] Suppress more warnings on unused variables defined for asserts.
...
llvm-svn: 319944
2017-12-06 19:33:42 +00:00
Davide Italiano
9c60c7dcf4
[Target] dumpr() is defined only in debug builds.
...
This fixes the clang build on macOS.
llvm-svn: 319923
2017-12-06 18:54:17 +00:00
Krzysztof Parzyszek
7d37dd8902
[Hexagon] Generate HVX code for vector construction and access
...
Support for:
- build vector,
- extract vector element, subvector,
- insert vector element, subvector,
- shuffle.
llvm-svn: 319901
2017-12-06 16:40:37 +00:00