| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
There seem to be only 2 places that produce these,
and it's kind of tricky to hit them.
Also fixes failure to bitcast between i64 and v2f32,
although this for some reason wasn't actually broken in the
simple bitcast testcase, but did in the scalar_to_vector one.
llvm-svn: 210664
|
|
|
|
|
|
|
|
|
|
|
| |
We need to make sure only one new instruction is added when spilling
otherwise the register allocator may crash.
This fixes a crash in the game Antichamber.
https://bugs.freedesktop.org/show_bug.cgi?id=75276
llvm-svn: 210587
|
|
|
|
| |
llvm-svn: 210568
|
|
|
|
| |
llvm-svn: 210567
|
|
|
|
| |
llvm-svn: 210564
|
|
|
|
| |
llvm-svn: 210563
|
|
|
|
|
|
| |
It has other uses besides shift instructions.
llvm-svn: 210478
|
|
|
|
| |
llvm-svn: 210476
|
|
|
|
| |
llvm-svn: 210226
|
|
|
|
|
|
| |
These patterns are already handled in the instruction definition.
llvm-svn: 209979
|
|
|
|
| |
llvm-svn: 209971
|
|
|
|
|
|
|
| |
These are confusing enough since the order swaps,
so give them more useful names.
llvm-svn: 209787
|
|
|
|
| |
llvm-svn: 209456
|
|
|
|
| |
llvm-svn: 209454
|
|
|
|
| |
llvm-svn: 209388
|
|
|
|
|
|
|
|
| |
This will allow us to use a single MachineInstr to represent
instructions which behave the same but have different encodings
on some subtargets.
llvm-svn: 209028
|
|
|
|
|
|
| |
This was inspired by the PredicateControl class in the MIPS backend.
llvm-svn: 209027
|
|
|
|
| |
llvm-svn: 209026
|
|
|
|
| |
llvm-svn: 209025
|
|
|
|
| |
llvm-svn: 209024
|
|
|
|
| |
llvm-svn: 209023
|
|
|
|
|
|
|
|
|
|
| |
We now use SReg_* for integer types and VReg_* for floating-point types.
This should help simplify the SIFixSGPRCopies pass and no longer causes
ISel to insert a COPY after termiator instuctions that output a value.
This change is covered by exisitng tests.
llvm-svn: 208888
|
|
|
|
| |
llvm-svn: 208885
|
|
|
|
| |
llvm-svn: 208479
|
|
|
|
| |
llvm-svn: 208478
|
|
|
|
|
|
| |
We were dropping the high bits of 64-bit immediate offsets.
llvm-svn: 208431
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The register spiller assumes that only one new instruction is created
when spilling and restoring registers, so we need to emit pseudo
instructions for vector register spills and lower them after
register allocation.
v2:
- Fix calculation of lane index
- Extend VGPR liveness to end of program.
v3:
- Use SIMM16 field of S_NOP to specify multiple NOPs.
https://bugs.freedesktop.org/show_bug.cgi?id=75005
llvm-svn: 207843
|
|
|
|
|
|
|
|
|
| |
We can't use SALU instructions for this since they ignore the EXEC mask
and are always executed.
This fixes several OpenCV tests.
llvm-svn: 207661
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SI_IF and SI_ELSE are terminators which also produce a value. For
these instructions ISel always inserts a COPY to move their value
to another basic block. This COPY ends up between SI_(IF|ELSE)
and the S_BRANCH* instruction at the end of the block.
This breaks MachineBasicBlock::getFirstTerminator() and also the
machine verifier which assumes that terminators are grouped together at
the end of blocks.
To solve this we coalesce the copy away right after ISel to make sure
there are no instructions in between terminators at the end of blocks.
llvm-svn: 207591
|
|
|
|
|
|
|
|
| |
SALU instructions ignore control flow, so it is not always safe to use
them within branches. This is a partial solution to this problem
until we can come up with something better.
llvm-svn: 207590
|
|
|
|
| |
llvm-svn: 206902
|
|
|
|
|
|
| |
Don't know why I didn't just do this in the first place.
llvm-svn: 206862
|
|
|
|
| |
llvm-svn: 206547
|
|
|
|
|
|
|
|
|
| |
Having i128 as a legal type complicates the legalization phase. v4i32
is already a legal type, so we will use that instead.
This fixes several piglit tests.
llvm-svn: 206500
|
|
|
|
| |
llvm-svn: 206475
|
|
|
|
|
|
|
| |
Better match what is done for VOPC to eventually
prefer selecting these.
llvm-svn: 206048
|
|
|
|
| |
llvm-svn: 205837
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Moving these patterns from TableGen files to PerformDAGCombine()
should allow us to generate better code by eliminating unnecessary
shifts and extensions earlier.
This also fixes a bug where the MAD pattern was calling
SimplifyDemandedBits with a 24-bit mask on the first operand
even when the full pattern wasn't being matched. This occasionally
resulted in some instructions being incorrectly deleted from the
program.
v2:
- Fix bug with 64-bit mul
llvm-svn: 205731
|
|
|
|
| |
llvm-svn: 205561
|
|
|
|
|
|
|
| |
It's now matched to the scalar 64-bit or and split later if
necessary.'
llvm-svn: 205252
|
|
|
|
| |
llvm-svn: 205235
|
|
|
|
|
|
|
| |
This allows allows us to replace ISD::EXTRACT_ELEMENT, which is lowered
using shifts, with ISD::EXTRACT_VECTOR_ELT, which is a no-op.
llvm-svn: 205187
|
|
|
|
|
|
|
|
| |
Try to match scalar and first like the other instructions.
Expand 64-bit ands to a pair of 32-bit ands since that is not
available on the VALU.
llvm-svn: 204660
|
|
|
|
|
|
|
| |
This type promotion is replacing a Tablegen pattern and it is already
covered by existing tests.
llvm-svn: 204617
|
|
|
|
|
|
|
| |
Some of them also had the pattern on both, so this removes the
duplication.
llvm-svn: 204492
|
|
|
|
| |
llvm-svn: 204275
|
|
|
|
| |
llvm-svn: 204274
|
|
|
|
|
|
|
| |
v2:
-Use correct opcode for DS_READ_64
llvm-svn: 204273
|
|
|
|
| |
llvm-svn: 204272
|
|
|
|
|
|
|
|
|
| |
Also remove unused data fields from the DS_Load_Helper class.
v2:
- Merge fields for DS_WRITE
llvm-svn: 204269
|