| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 222660
|
| |
|
|
|
|
|
|
|
|
| |
We would create an instruction but not inserting it.
Not inserting the unused instruction would lead us to verification
failure.
This fixes PR21653.
llvm-svn: 222659
|
| |
|
|
|
|
|
|
|
| |
Fix JRADDIUSP instruction, remove delay slot flag because this instruction
doesn't have delay slot.
Differential Revision: http://reviews.llvm.org/D6365
llvm-svn: 222658
|
| |
|
|
| |
llvm-svn: 222654
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5122
llvm-svn: 222653
|
| |
|
|
|
|
|
|
|
|
| |
instead of S0
Implement microMIPS 16-bit instructions register set: $0, $2-$7 and $17.
Differential Revision: http://reviews.llvm.org/D5780
llvm-svn: 222652
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 222651
|
| |
|
|
|
|
| |
AsmWriter output.
llvm-svn: 222650
|
| |
|
|
|
|
| |
has been alerted to the warning, in case this variable is meant to be used. Fixes -Werror builds in the meantime.
llvm-svn: 222649
|
| |
|
|
|
|
|
|
|
|
|
| |
With the help of new method readInstruction16() two bytes are read and
decodeInstruction() is called with DecoderTableMicroMips16, if this fails
four bytes are read and decodeInstruction() is called with
DecoderTableMicroMips32.
Differential Revision: http://reviews.llvm.org/D6149
llvm-svn: 222648
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch teaches function 'transformVSELECTtoBlendVECTOR_SHUFFLE' how to
convert VSELECT dag nodes to shuffles on targets that do not have SSE4.1.
On pre-SSE4.1 targets, we can still perform blend operations using movss/movsd.
Also, removed a target specific combine that performed a premature lowering of
VSELECT nodes to target specific MOVSS/MOVSD nodes.
llvm-svn: 222647
|
| |
|
|
|
|
|
|
|
| |
We tried to get the result of DataLayout::getLargestLegalIntTypeSize but
we didn't have a DataLayout. This resulted in opt crashing.
This fixes PR21651.
llvm-svn: 222645
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fill in omission of `cast_or_null<>` and `dyn_cast_or_null<>` for types
that wrap pointers (e.g., smart pointers).
Type traits need to be slightly stricter than for `cast<>` and
`dyn_cast<>` to resolve ambiguities with simple types.
There didn't seem to be any unit tests for pointer wrappers, so I tested
`isa<>`, `cast<>`, and `dyn_cast<>` while I was in there.
This only supports pointer wrappers with a conversion to `bool` to check
for null. If in the future it's useful to support wrappers without such
a conversion, it should be a straightforward incremental step to use the
`simplify_type` machinery for the null check. In that case, the unit
tests should be updated to remove the `operator bool()` from the
`pointer_wrappers::PTy`.
llvm-svn: 222644
|
| |
|
|
|
|
| |
to reduce total data size.
llvm-svn: 222643
|
| |
|
|
| |
llvm-svn: 222636
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
r222375 made some improvements to build_vector lowering of v4x32 and v4xf32 into an insertps, but it missed a case where:
1. A single extracted element is used twice.
2. The lower of the two non-zero indexes should be preserved, and the higher should be used for the dest mask.
This caused a crash, since the source value for the insertps ends-up uninitialized.
Differential Revision: http://reviews.llvm.org/D6377
llvm-svn: 222635
|
| |
|
|
| |
llvm-svn: 222634
|
| |
|
|
| |
llvm-svn: 222633
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduced new target-independent intrinsics in order to support masked vector loads and stores. The loop vectorizer optimizes loops containing conditional memory accesses by generating these intrinsics for existing targets AVX2 and AVX-512. The vectorizer asks the target about availability of masked vector loads and stores.
Added SDNodes for masked operations and lowering patterns for X86 code generator.
Examples:
<16 x i32> @llvm.masked.load.v16i32(i8* %addr, <16 x i32> %passthru, i32 4 /* align */, <16 x i1> %mask)
declare void @llvm.masked.store.v8f64(i8* %addr, <8 x double> %value, i32 4, <8 x i1> %mask)
Scalarizer for other targets (not AVX2/AVX-512) will be done in a separate patch.
http://reviews.llvm.org/D6191
llvm-svn: 222632
|
| |
|
|
| |
llvm-svn: 222631
|
| |
|
|
|
|
|
| |
i1 is not a legal type on Evergreen, so this combine proceeded
and tried to produce a bitcast between i1 and i8.
llvm-svn: 222630
|
| |
|
|
| |
llvm-svn: 222629
|
| |
|
|
|
|
| |
Use -LABEL and remove -CHECK
llvm-svn: 222628
|
| |
|
|
| |
llvm-svn: 222627
|
| |
|
|
| |
llvm-svn: 222625
|
| |
|
|
| |
llvm-svn: 222624
|
| |
|
|
| |
llvm-svn: 222623
|
| |
|
|
|
|
| |
Use Triple::isOS*() helper functions where possible.
llvm-svn: 222622
|
| |
|
|
|
|
| |
Primarily done by using SequenceToOffsetTable to reduce the register pressure set tables and then sizing the indices into the tables appropriately. Size a few other table entries based on content as well. Reduces X86RegisterInfo.o by ~9k.
llvm-svn: 222621
|
| |
|
|
| |
llvm-svn: 222620
|
| |
|
|
|
|
|
|
| |
No functionality changed yet, but this will prevent subsequent patches
from having to handle permutations of various interleaved shuffle
patterns.
llvm-svn: 222614
|
| |
|
|
| |
llvm-svn: 222613
|
| |
|
|
| |
llvm-svn: 222612
|
| |
|
|
|
|
| |
This is a generalization of the X - (0 - Y) -> X transform.
llvm-svn: 222611
|
| |
|
|
| |
llvm-svn: 222609
|
| |
|
|
|
|
|
|
|
|
| |
has a remarkably unique and efficient lowering.
While we get this some of the time already, we miss a few cases and
there wasn't a principled reason we got it. We should at least test
this. v8 already has tests for this pattern.
llvm-svn: 222607
|
| |
|
|
| |
llvm-svn: 222606
|
| |
|
|
| |
llvm-svn: 222605
|
| |
|
|
| |
llvm-svn: 222604
|
| |
|
|
|
|
|
| |
Fixes the self-host fail. Note that this commit activates dominator
analysis in the combiner by default (like the original commit did).
llvm-svn: 222590
|
| |
|
|
|
|
| |
arguments.
llvm-svn: 222587
|
| |
|
|
| |
llvm-svn: 222586
|
| |
|
|
| |
llvm-svn: 222585
|
| |
|
|
|
|
|
| |
We need to use a s_mov_b32 rather than a copy, so that CSE will
eliminate redundant moves to the m0 register.
llvm-svn: 222584
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This s_mov_b32 will write to a virtual register from the M0Reg
class and all the ds instructions now take an extra M0Reg explicit
argument.
This change is necessary to prevent issues with the scheduler
mixing together instructions that expect different values in the m0
registers.
llvm-svn: 222583
|
| |
|
|
|
|
|
| |
This pass attempts to fold the source operands of mov and copy
instructions into their uses.
llvm-svn: 222581
|
| |
|
|
|
|
|
|
|
|
|
| |
filler such as if delay slot filler have to put NOP instruction into the
delay slot of microMIPS BEQ or BNE instruction which uses the register $0,
then instead of emitting NOP this instruction is replaced by the corresponding
microMIPS compact branch instruction, i.e. BEQZC or BNEZC.
Differential Revision: http://reviews.llvm.org/D3566
llvm-svn: 222580
|
| |
|
|
| |
llvm-svn: 222579
|
| |
|
|
| |
llvm-svn: 222578
|
| |
|
|
| |
llvm-svn: 222577
|