| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 214728
|
|
|
|
|
|
|
|
|
| |
This slipped in in r214467, so something like
V_MOV_B32_e32 v0, ... is now printed with 2 spaces
between the instruction name and first operand.
llvm-svn: 214660
|
|
|
|
|
|
| |
Avoid weird line wrapping of BuildMI dest register.
llvm-svn: 214608
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fromulation of the node, which isn't really the desired behavior from
within the combiner or legalizer, but is necessary within ISel. I've
added a hopefully helpful comment and fixed the only two places where
this took place.
Yet another step toward the combiner and legalizer not needing to use
update listeners with virtual calls to manage the worklists behind
legalization and combining.
llvm-svn: 214574
|
|
|
|
|
|
|
|
| |
This reverts commit r214566.
I did not mean to commit this yet.
llvm-svn: 214572
|
|
|
|
| |
llvm-svn: 214569
|
|
|
|
|
|
|
| |
SI doesn't use REGISTER_LOAD anymore, but it was still hitting this code
path for 8-bit and 16-bit private loads.
llvm-svn: 214566
|
|
|
|
|
|
|
| |
This isn't displayed for any other instructions anymore,
and isn't ever used.
llvm-svn: 214523
|
|
|
|
| |
llvm-svn: 214475
|
|
|
|
|
|
|
|
|
|
| |
Abs/neg folding has moved out of foldOperands and into the instruction
selection phase using complex patterns. As a consequence of this
change, we now prefer to select the 64-bit encoding for most
instructions and the modifier operands have been dropped from
integer VOP3 instructions.
llvm-svn: 214467
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were incorrectly assuming that all VOP2 instructions can read SGPRs
in Src0, but this is not true for instructions that read carry-in from
VCC.
The old logic has been replaced with new logic which checks the defined
register classes of the VOP2 instruction to determine whether or not to
legalize the operands.
llvm-svn: 214465
|
|
|
|
|
|
|
| |
This will prevent us from using extra MOV instructions once we prefer
selecting 64-bit instructions.
llvm-svn: 214464
|
|
|
|
|
|
|
|
| |
We were commuting the instruction by still shrinking it using the
original opcode.
NOTE: This is a candidate for the 3.5 branch.
llvm-svn: 214463
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently when DAGCombine converts loads feeding a switch into a switch of
addresses feeding a load the new load inherits the isInvariant flag of the left
side. This is incorrect since invariant loads can be reordered in cases where it
is illegal to reoarder normal loads.
This patch adds an isInvariant parameter to getExtLoad() and updates all call
sites to pass in the data if they have it or false if they don't. It also
changes the DAGCombine to use that data to make the right decision when
creating the new load.
llvm-svn: 214449
|
|
|
|
|
|
|
|
| |
neverHasSideEffects is deprecated, and hasSideEffects = 0 is already
set on the base classes of the basic ALU instruction classes. The
base classes also already set mayLoad = 0 and mayStore = 0
llvm-svn: 214283
|
|
|
|
|
|
|
|
|
| |
We can treat ds_read2_* as a single offset if the offsets are adjacent.
No test since emission of read2 instructions for partially
aligned loads isn't implemented yet.
llvm-svn: 214269
|
|
|
|
| |
llvm-svn: 214225
|
|
|
|
| |
llvm-svn: 214217
|
|
|
|
| |
llvm-svn: 214216
|
|
|
|
|
|
| |
Also add missing comments about how the flags work.
llvm-svn: 214195
|
|
|
|
|
|
| |
Set mayStore = 0 and enable named operand table.
llvm-svn: 214194
|
|
|
|
| |
llvm-svn: 214147
|
|
|
|
| |
llvm-svn: 214146
|
|
|
|
|
|
| |
All the others use bool, so these should too.
llvm-svn: 214106
|
|
|
|
|
|
|
| |
The default guess uses i32. This needs an address space argument
to really do the right thing in all cases.
llvm-svn: 214104
|
|
|
|
| |
llvm-svn: 214101
|
|
|
|
|
|
|
|
|
|
| |
Rename to allowsMisalignedMemoryAccess.
On R600, 8 and 16 byte accesses are mostly OK with 4-byte alignment,
and don't need to be split into multiple accesses. Vector loads with
an alignment of the element type are not uncommon in OpenCL code.
llvm-svn: 214055
|
|
|
|
| |
llvm-svn: 214023
|
|
|
|
| |
llvm-svn: 213985
|
|
|
|
|
|
| |
No functional change.
llvm-svn: 213982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SDValues, fixing the two bugs left in the regression suite.
The key for both of these was the use a single value type rather than
a VTList which caused an unintentionally single-result merge-value node.
Fix this by getting the appropriate VTList in place.
Doing this exposed that the comments in x86's code abouth how MUL_LOHI
operands are handle is wrong. The bug with the use of out-of-range
result numbers was hiding the bug about the order of operands here (as
best i can tell). There are more places where the code appears to get
this backwards still...
llvm-svn: 213931
|
|
|
|
| |
llvm-svn: 213882
|
|
|
|
|
|
| |
These will be used in future patches and shouldn't change anything yet.
llvm-svn: 213877
|
|
|
|
| |
llvm-svn: 213844
|
|
|
|
|
|
|
|
|
|
| |
Use ComputeNumSignBits instead of checking for i8 / i16 which only
worked when AMDIL was lying about having legal i8 / i16.
If an integer is known to fit in 24-bits, we can
do division faster with float ops.
llvm-svn: 213843
|
|
|
|
| |
llvm-svn: 213831
|
|
|
|
|
|
|
|
|
|
| |
GCC believes it may be possible to not return a value from the switch:
lib/Target/R600/SIRegisterInfo.cpp:187:1: warning: control reaches end of non-void function [-Wreturn-type]
Add an unreachable label to indicate that this is not possible and still permit
switch coverage checking.
llvm-svn: 213572
|
|
|
|
| |
llvm-svn: 213571
|
|
|
|
| |
llvm-svn: 213570
|
|
|
|
| |
llvm-svn: 213564
|
|
|
|
| |
llvm-svn: 213563
|
|
|
|
|
|
| |
This pass converts 64-bit instructions to 32-bit when possible.
llvm-svn: 213561
|
|
|
|
|
|
| |
Therefore we don't need to add it to the implict defs list.
llvm-svn: 213558
|
|
|
|
|
|
|
|
|
| |
There are a few more cleanups to do, but I ran into some problems
with ext loads and trunc stores, when I tried to change some of the
vector loads and stores from custom to legal, so I wasn't able to
get rid of everything.
llvm-svn: 213552
|
|
|
|
| |
llvm-svn: 213551
|
|
|
|
| |
llvm-svn: 213550
|
|
|
|
|
|
| |
This operand is never used.
llvm-svn: 213549
|
|
|
|
|
|
|
|
|
|
|
|
| |
This implements a solution for constant initializers suggested
by Vadim Girlin, where we store the data after the shader code
and then use the S_GETPC instruction to compute its address.
This saves use the trouble of creating a new buffer for constant data
and then having to pass the pointer to the kernel via user SGPRs or the
input buffer.
llvm-svn: 213530
|
|
|
|
| |
llvm-svn: 213529
|
|
|
|
| |
llvm-svn: 213528
|