| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 186529
|
|
|
|
| |
llvm-svn: 186405
|
|
|
|
|
|
|
| |
Another patch in the series to make more use of R.SBG. This one extends
r186072 and r186073 to handle cases where the AND is inside the shift.
llvm-svn: 186399
|
|
|
|
|
|
| |
Extend r186072 to handle shifts and ANDs.
llvm-svn: 186073
|
|
|
|
|
|
|
|
|
|
|
|
| |
RISBG can handle some ANDs for which no AND IMMEDIATE exists.
It also acts as a three-operand AND for some cases where an
AND IMMEDIATE could be used instead.
It might be worth adding a pass to replace RISBG with AND IMMEDIATE
in cases where the register operands end up being the same and where
AND IMMEDIATE is smaller.
llvm-svn: 186072
|
|
|
|
|
|
|
|
|
|
|
|
| |
Look for patterns of the form (store (load ...), ...) in which the two
locations are known not to partially overlap. (Identical locations are OK.)
These sequences are better implemented by MVC unless either the load or
the store could use RELATIVE LONG instructions.
The testcase showed that we weren't using LHRL and LGHRL for extload16,
only sextloadi16. The patch fixes that too.
llvm-svn: 185919
|
|
|
|
|
|
|
| |
Change SelectionDAG::getXXXNode() interfaces as well as call sites of
these functions to pass in SDLoc instead of DebugLoc.
llvm-svn: 182703
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the actual lib/Target/SystemZ target files necessary to
implement the SystemZ target. Note that at this point, the target
cannot yet be built since the configure bits are missing. Those
will be provided shortly by a follow-on patch.
This version of the patch incorporates feedback from reviews by
Chris Lattner and Anton Korobeynikov. Thanks to all reviewers!
Patch by Richard Sandiford.
llvm-svn: 181203
|
|
|
|
| |
llvm-svn: 142878
|
|
|
|
|
|
|
|
|
|
|
| |
passed the root of the match, even though only a few patterns
actually needed this (one in X86, several in ARM [which should
be refactored anyway], and some in CellSPU that I don't feel
like detangling). Instead of requiring all ComplexPatterns to
take the dead root, have targets opt into getting the root by
putting SDNPWantRoot on the ComplexPattern.
llvm-svn: 114471
|
|
|
|
| |
llvm-svn: 113073
|
|
|
|
|
|
|
|
|
|
| |
were overspecified when inheriting sub-subregisters, for instance:
R0Q:subreg_even32 = R0Q:subreg_32bit = R0Q:subreg_even:subreg_32bit.
This meant that composeSubRegIndices(subreg_even, subreg_32bit) was ambiguous.
llvm-svn: 105063
|
|
|
|
| |
llvm-svn: 104612
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
const_casts, and it reinforces the design of the Target classes being
immutable.
SelectionDAGISel::IsLegalToFold is now a static member function, because
PIC16 uses it in an unconventional way. There is more room for API
cleanup here.
And PIC16's AsmPrinter no longer uses TargetLowering.
llvm-svn: 101635
|
|
|
|
|
|
|
|
|
|
|
|
| |
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader.
Sink some other stuff out of DAGISelHeader into SDISel.
Eliminate the various 'Indent' stuff from various targets, which dates
to when isel was recursive.
17 files changed, 114 insertions(+), 430 deletions(-)
llvm-svn: 97555
|
|
|
|
|
|
|
|
| |
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use.
This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses.
llvm-svn: 96255
|
|
|
|
|
|
|
|
|
| |
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.
llvm-svn: 95687
|
|
|
|
|
|
|
|
|
| |
clear what information these functions are actually using.
This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.
llvm-svn: 92564
|
|
|
|
| |
llvm-svn: 92472
|
|
|
|
| |
llvm-svn: 86149
|
|
|
|
|
|
|
|
| |
naming scheme used in SelectionDAG, where there are multiple kinds
of "target" nodes, but "machine" nodes are nodes which represent
a MachineInstr.
llvm-svn: 82790
|
|
|
|
|
|
| |
- The world needs better C++ refactoring tools, can I get an Amen!?
llvm-svn: 79843
|
|
|
|
| |
llvm-svn: 79834
|
|
|
|
| |
llvm-svn: 79833
|
|
|
|
|
|
|
|
| |
while
the latter is capable of representing either a primitive or an extended type.
llvm-svn: 78713
|
|
|
|
|
|
| |
own struct type.
llvm-svn: 78610
|
|
|
|
|
|
| |
- Anton, please review.
llvm-svn: 76144
|
|
|
|
| |
llvm-svn: 76064
|
|
|
|
| |
llvm-svn: 76052
|
|
|
|
| |
llvm-svn: 76041
|
|
|
|
|
|
| |
divide problems
llvm-svn: 76011
|
|
|
|
| |
llvm-svn: 76010
|
|
|
|
| |
llvm-svn: 76004
|
|
|
|
| |
llvm-svn: 76003
|
|
|
|
| |
llvm-svn: 76000
|
|
|
|
| |
llvm-svn: 75991
|
|
|
|
| |
llvm-svn: 75990
|
|
|
|
| |
llvm-svn: 75988
|
|
|
|
| |
llvm-svn: 75973
|
|
|
|
|
|
| |
handling of rri and ri addrmodes common
llvm-svn: 75937
|
|
|
|
| |
llvm-svn: 75936
|
|
|
|
| |
llvm-svn: 75935
|
|
|
|
| |
llvm-svn: 75931
|
|
|
|
| |
llvm-svn: 75930
|
|
|
|
|
|
| |
Not tested though.
llvm-svn: 75929
|
|
|
|
| |
llvm-svn: 75927
|
|
|
|
| |
llvm-svn: 75921
|
|
|
|
| |
llvm-svn: 75919
|
|
llvm-svn: 75909
|