| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Remove const qualifiers from Init references, per Chris' request.
llvm-svn: 136531
|
| |
|
|
|
|
|
| |
Replace uses of new *Init with *Init::get. This hides the allocation
implementation so that we can unique Inits in various ways.
llvm-svn: 136486
|
| |
|
|
|
|
|
| |
Make references to Inits const everywhere. This is the final step
before making them unique.
llvm-svn: 136485
|
| |
|
|
|
|
|
| |
Get rid of all Init members that modify internal state. This is in
preparation for making references to Inits const.
llvm-svn: 136483
|
| |
|
|
|
|
| |
in multiple buildbots.
llvm-svn: 134936
|
| |
|
|
|
|
| |
Respond to some feedback asking for a name change.
llvm-svn: 134921
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Manage Inits in a FoldingSet. This provides several benefits:
- Memory for Inits is properly managed
- Duplicate Inits are folded into Flyweights, saving memory
- It enforces const-correctness, protecting against certain classes
of bugs
The above benefits allow Inits to be used in more contexts, which in
turn provides more dynamism to TableGen. This enhanced capability
will be used by the AVX code generator to a fold common patterns
together.
llvm-svn: 134907
|
| |
|
|
|
|
|
|
|
|
| |
For now this is distinct from isCodeGenOnly, as code-gen-only
instructions can (and often do) still have encoding information
associated with them. Once we've migrated all of them over to true
pseudo-instructions that are lowered to real instructions prior to
the printer/emitter, we can remove isCodeGenOnly and just use isPseudo.
llvm-svn: 134539
|
| |
|
|
|
|
|
|
|
| |
specified operands with "bit" instead of "bits<1>".
Unfortunately, my only testcase for this is fragile, and the ARM AsmParser can't round trip the instruction in question.
<rdar://problem/9345702>
llvm-svn: 130410
|
| |
|
|
| |
llvm-svn: 124832
|
| |
|
|
| |
llvm-svn: 124450
|
| |
|
|
|
|
|
| |
new gcc warning that complains on self-assignments and
self-initializations.
llvm-svn: 122458
|
| |
|
|
| |
llvm-svn: 121661
|
| |
|
|
| |
llvm-svn: 121659
|
| |
|
|
| |
llvm-svn: 119130
|
| |
|
|
| |
llvm-svn: 119129
|
| |
|
|
| |
llvm-svn: 119128
|
| |
|
|
|
|
| |
Switch the ARM backend to use 'let' instead of 'set' with this change.
llvm-svn: 119120
|
| |
|
|
|
|
|
|
| |
post-processing after the automated encoding of an instruction.
Not yet used.
llvm-svn: 118759
|
| |
|
|
|
|
|
| |
Fixups list for the instruction so the operand encoders can add to it as
needed.
llvm-svn: 118206
|
| |
|
|
|
|
| |
assumptions about stack layout. Specifically, LR must be saved next to FP.
llvm-svn: 118026
|
| |
|
|
| |
llvm-svn: 117987
|
| |
|
|
|
|
| |
CodeGenInstruction into its own helper class. No functionality change.
llvm-svn: 117893
|
| |
|
|
|
|
|
|
| |
operand values. This is useful for operands which require additional trickery
to encode into the instruction. For example, the ARM shifted immediate and
shifted register operands.
llvm-svn: 116353
|
| |
|
|
| |
llvm-svn: 116243
|
| |
|
|
|
|
| |
map one-to-one with the CodeGenInstruction operand number.
llvm-svn: 116238
|
| |
|
|
|
|
|
| |
try to match them by name first. If there is no by-name match, fall back to
assuming they are in order (this was the previous behavior).
llvm-svn: 116211
|
| |
|
|
| |
llvm-svn: 116018
|
| |
|
|
| |
llvm-svn: 115923
|
| |
|
|
|
|
|
|
|
| |
list of predefined instructions appear. Add some consistency checks.
Ideally, TargetOpcodes.h should be produced by TableGen from Target.td, but it
is hardly worth the effort.
llvm-svn: 107520
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
sub-register indices and outputs a single super register which is formed from
a consecutive sequence of registers.
This is used as register allocation / coalescing aid and it is useful to
represent instructions that output register pairs / quads. For example,
v1024, v1025 = vload <address>
where v1024 and v1025 forms a register pair.
This really should be modelled as
v1024<3>, v1025<4> = vload <address>
but it would violate SSA property before register allocation is done.
Currently we use insert_subreg to form the super register:
v1026 = implicit_def
v1027 - insert_subreg v1026, v1024, 3
v1028 = insert_subreg v1027, v1025, 4
...
= use v1024
= use v1028
But this adds pseudo live interval overlap between v1024 and v1025.
We can now modeled it as
v1024, v1025 = vload <address>
v1026 = REG_SEQUENCE v1024, 3, v1025, 4
...
= use v1024
= use v1026
After coalescing, it will be
v1026<3>, v1025<4> = vload <address>
...
= use v1026<3>
= use v1026
llvm-svn: 102815
|
| |
|
|
| |
llvm-svn: 100709
|
| |
|
|
|
|
|
| |
to a vector that CGT stores instead of synthesizing it on every
call.
llvm-svn: 98910
|
| |
|
|
| |
llvm-svn: 98904
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Also, DEBUG_VALUE has side effects.
llvm-svn: 93498
|
| |
|
|
| |
llvm-svn: 93040
|
| |
|
|
| |
llvm-svn: 93030
|
| |
|
|
| |
llvm-svn: 91448
|
| |
|
|
| |
llvm-svn: 90628
|
| |
|
|
|
|
|
|
|
|
| |
unused DECLARE instruction.
KILL is not yet used anywhere, it will replace TargetInstrInfo::IMPLICIT_DEF
in the places where IMPLICIT_DEF is just used to alter liveness of physical
registers.
llvm-svn: 83006
|
| |
|
|
|
|
| |
Also remove trailing semicolon.
llvm-svn: 75027
|
| |
|
|
|
|
|
|
| |
- Sorry, I can't help myself.
- No intended functionality change.
llvm-svn: 74742
|
| |
|
|
|
|
|
| |
it accordingly. Thanks to Jakob Stoklund Olesen for pointing
out how this might be useful.
llvm-svn: 68986
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will be used to replace things like X86's MOV32to32_.
Enhance ScheduleDAGSDNodesEmit to be more flexible and robust
in the presense of subregister superclasses and subclasses. It
can now cope with the definition of a virtual register being in
a subclass of a use.
Re-introduce the code for recording register superreg classes and
subreg classes. This is needed because when subreg extracts and
inserts get coalesced away, the virtual registers are left in
the correct subclass.
llvm-svn: 68961
|
| |
|
|
|
|
|
| |
in tblgen. This is PR2827, thanks to Waldemar Knorr for tracking this
down.
llvm-svn: 57124
|
| |
|
|
| |
llvm-svn: 56275
|
| |
|
|
| |
llvm-svn: 55878
|
| |
|
|
|
|
| |
be const. Make corresponding changes.
llvm-svn: 55623
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.
Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.
This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.
llvm-svn: 52943
|