| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Important, for example, when calling 'gcc a.o b.o c.o -lD -lE -lF'.
llvm-svn: 83524
|
| |
|
|
|
|
|
|
|
|
| |
set, these flags indicate the instructions source / def operands have special
register allocation requirement that are not captured in their register classes.
Post-allocation passes (e.g. post-alloc scheduler) should not change their
allocations. e.g. ARM::LDRD require the two definitions to be allocated
even / odd register pair.
llvm-svn: 83196
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 82957
|
| |
|
|
| |
llvm-svn: 82955
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.
Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.
llvm-svn: 82794
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 82709
|
| |
|
|
| |
llvm-svn: 82456
|
| |
|
|
| |
llvm-svn: 82244
|
| |
|
|
| |
llvm-svn: 82236
|
| |
|
|
| |
llvm-svn: 81742
|
| |
|
|
| |
llvm-svn: 81741
|
| |
|
|
| |
llvm-svn: 81740
|
| |
|
|
|
|
| |
the encoding of the AsmStrs table saving a byte or two.
llvm-svn: 81739
|
| |
|
|
|
|
| |
this table.
llvm-svn: 81728
|
| |
|
|
|
|
| |
the object, make it static instead of const.
llvm-svn: 81711
|
| |
|
|
|
|
| |
Nothing is using this info yet.
llvm-svn: 81707
|
| |
|
|
|
|
| |
Partial fix for PR4946.
llvm-svn: 81518
|
| |
|
|
|
|
| |
out an illegal "PHINODE" instruction.
llvm-svn: 81495
|
| |
|
|
| |
llvm-svn: 81448
|
| |
|
|
| |
llvm-svn: 81447
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
the MCInst path of the asmprinter. Instead, pull comment printing
out of the autogenerated asmprinter into each target that uses the
autogenerated asmprinter. This causes code duplication into each
target, but in a way that will be easier to clean up later when more
asmprinter stuff is commonized into the base AsmPrinter class.
This also fixes an xcore strangeness where it inserted two tabs
before every instruction.
llvm-svn: 81396
|
| |
|
|
|
|
|
|
| |
a return in one case. Instead of sprinking return handling code
throughout the asmprinter generator, just treat it like any other
normal statement.
llvm-svn: 81395
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
asm printer into the "printInstruction" routine. This
fixes a problem where the experimental asmprinter would
drop debug labels in some cases, and fixes issues on ppc/xcore
where pseudo instructions like "mr" didn't get debug locs properly.
It is annoying that this moves the call from one place into each
target, but a future set of more invasive refactorings will fix
that problem.
llvm-svn: 81377
|
| |
|
|
|
|
| |
icc (#177, partial). Patch by Erick Tryzelaar.
llvm-svn: 81106
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
inferencing. As far as I can tell, these are equivalent to the existing
MVT::fAny, iAny and vAny types, and having both of them makes it harder
to reason about and modify the type inferencing code.
The specific problem in PR4795 occurs when updating a vAny type to be fAny
or iAny, or vice versa. Both iAny and fAny include vector types -- they
intersect with the set of types represented by vAny. When merging them,
choose fAny/iAny to represent the intersection. This is not perfect, since
fAny/iAny also include scalar types, but it is good enough for TableGen's
type inferencing.
llvm-svn: 80423
|
| |
|
|
|
|
| |
attempt more than 2 constraints on an instruction.
llvm-svn: 80169
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is conventional command-line tool behavior. -f now just means
"enable binary output on terminals".
Add a -f option to llvm-extract and llvm-link, for consistency.
Remove F_Force from raw_fd_ostream and enable overwriting and
truncating by default. Introduce an F_Excl flag to permit users to
enable a failure when the file already exists. This flag is
currently unused.
Update Makefiles and documentation accordingly.
llvm-svn: 79990
|
| |
|
|
|
|
|
| |
member out of line. ftostr is not particularly speedy,
so that method is presumably not perf sensitive.
llvm-svn: 79885
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
forcing them down into various .cpp files.
This change also:
1. Renames TimeValue::toString() and Path::toString() to ::str()
for similarity with the STL.
2. Removes all stream insertion support for sys::Path, forcing
clients to call .str().
3. Removes a use of Config/alloca.h from bugpoint, using smallvector
instead.
4. Weans llvm-db off <iostream>
sys::Path really needs to be gutted, but I don't have the desire to
do it at this point.
llvm-svn: 79869
|
| |
|
|
| |
llvm-svn: 79850
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- This manifested as non-determinism in the .inc output in rare cases (when two
distinct patterns ended up being equivalent, which is rather rare). That
meant the pattern matching was non-deterministic, which could eventually mean
the code generator selected different instructions based on the arch.
- It's probably worth making the DAGISel ensure a total ordering (or force the
user to), but the simple fix here is to totally order the Record* maps based
on a unique ID.
- PR4672, PR4711.
Yay:
--
ddunbar@giles:~$ cat ~/llvm.obj.64/lib/Target/*/*.inc | shasum
d1099ff34b21459a5a3e7021c225c080e6017ece -
ddunbar@giles:~$ cat ~/llvm.obj.ppc/lib/Target/*/*.inc | shasum
d1099ff34b21459a5a3e7021c225c080e6017ece -
--
llvm-svn: 79846
|
| |
|
|
|
|
| |
update all code that this affects.
llvm-svn: 79830
|
| |
|
|
| |
llvm-svn: 79821
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of as two bools. Use this to add a F_Append flag
which has the obvious behavior.
Other unrelated changes conflated into this patch:
1. REmove EH stuff from llvm-dis and llvm-as, the try blocks
are dead.
2. Simplify the filename inference code in llvm-as/llvm-dis,
because raw_fd_ostream does the right thing with '-'.
3. Switch machine verifier to use raw_ostream instead of ostream
(Which is the thing that needed append in the first place).
llvm-svn: 79807
|
| |
|
|
| |
llvm-svn: 79742
|
| |
|
|
|
|
| |
the def and use cycle for each operand. This additional information is optional, so existing itineraries do not need to be changed.
llvm-svn: 79247
|
| |
|
|
|
|
| |
just remove the argument and replace it with 1.
llvm-svn: 79246
|
| |
|
|
| |
llvm-svn: 78948
|
| |
|
|
|
|
|
|
| |
There have been a few times where I've wanted this but ended up leaving the
operand type unconstrained. It is easy to add this now and should help
catch errors in the future.
llvm-svn: 78849
|
| |
|
|
| |
llvm-svn: 78848
|
| |
|
|
|
|
| |
with overlapping stages. The default is to maintain the current behavior that the "next" stage immediately follows the previous one.
llvm-svn: 78827
|
| |
|
|
|
|
| |
infrastructure work needed to get the contexts to where they need to be first.
llvm-svn: 78759
|
| |
|
|
|
|
| |
We now match all of 403.gcc (as emitted by clang). :)
llvm-svn: 78750
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Used to mark fake instructions which don't correspond to an actual machine
instruction (or are duplicates of a real instruction). This is to be used for
"special cases" in the .td files, which should be ignored by things like the
assembler and disassembler. We still need a good solution to handle pervasive
duplication, like with the Int_ instructions.
- Set the bit on fake "mov 0" style instructions, which allows turning an
assembler matcher warning into a hard error.
- -2 FIXMEs.
llvm-svn: 78731
|
| |
|
|
|
|
| |
used to strip hard coded comments out of .td assembly strings.
llvm-svn: 78716
|
| |
|
|
|
|
|
|
| |
while
the latter is capable of representing either a primitive or an extended type.
llvm-svn: 78713
|
| |
|
|
|
|
| |
related.
llvm-svn: 78706
|
| |
|
|
| |
llvm-svn: 78643
|