| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
ExternalSymbol to TargetExternalSymbol.
llvm-svn: 25252
|
| |
|
|
| |
llvm-svn: 25245
|
| |
|
|
| |
llvm-svn: 25227
|
| |
|
|
| |
llvm-svn: 25218
|
| |
|
|
|
|
| |
patterns.
llvm-svn: 25194
|
| |
|
|
| |
llvm-svn: 25181
|
| |
|
|
|
|
|
|
|
| |
SNDPOutFlag to DAG nodes. These properties do not belong to target specific
instructions.
* Added DAG node property SNDPOptInFlag. It's same as SNDPInFlag except it's
optional. Used by ret / call, etc.
llvm-svn: 25154
|
| |
|
|
| |
llvm-svn: 25133
|
| |
|
|
| |
llvm-svn: 25122
|
| |
|
|
| |
llvm-svn: 25115
|
| |
|
|
|
|
| |
Also note that GCC 4.1 also correctly flags the syntax error.
llvm-svn: 25076
|
| |
|
|
|
|
|
|
|
| |
SDOperand Tmp0,Tmp1,Tmp2,Tmp3,;
GCC has a bug (24907) in which is fails to catch this, but VC++ correctly
notes its illegality, so tblgen must be taught to only generate legal C++.
llvm-svn: 25075
|
| |
|
|
| |
llvm-svn: 25070
|
| |
|
|
|
|
| |
case of the switch statement into its own method.
llvm-svn: 25069
|
| |
|
|
|
|
| |
of SelectCode to make way for a better solution.
llvm-svn: 25068
|
| |
|
|
| |
llvm-svn: 25052
|
| |
|
|
| |
llvm-svn: 25051
|
| |
|
|
| |
llvm-svn: 25046
|
| |
|
|
| |
llvm-svn: 25029
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Currently tblgen cannot tell which operands in the operand list are results so
it assumes the first one is a result. This is bad. Ideally we would fix this
by separating results from inputs, e.g. (res R32:$dst),
(ops R32:$src1, R32:$src2). But that's a more distruptive change. Adding
'let noResults = 1' is the workaround to tell tblgen that the instruction does
not produces a result. It works for now since tblgen does not support
instructions which produce multiple results.
llvm-svn: 25017
|
| |
|
|
| |
llvm-svn: 25014
|
| |
|
|
| |
llvm-svn: 25005
|
| |
|
|
|
|
|
| |
support which is fragile.
* Fixed a number of bugs.
llvm-svn: 24996
|
| |
|
|
| |
llvm-svn: 24962
|
| |
|
|
| |
llvm-svn: 24936
|
| |
|
|
|
|
|
| |
either an operand or a result.
* Fixed some more flag / chain bugs.
llvm-svn: 24933
|
| |
|
|
|
|
| |
an implicit flag operand.
llvm-svn: 24916
|
| |
|
|
| |
llvm-svn: 24897
|
| |
|
|
| |
llvm-svn: 24883
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
use too much stack space, overflowing the stack for large functions. Instead
of emitting new SDOperands in each match block, we emit some common ones at
the top of SelectCode then reuse them when possible.
This reduces the stack size of SelectCode from 28K to 21K. Note that GCC
compiles it to 512 bytes :-/
I've filed GCC PR 25505 to track this.
llvm-svn: 24882
|
| |
|
|
| |
llvm-svn: 24878
|
| |
|
|
|
|
|
|
|
|
| |
it keeps it from trying to add the same node to the node set
over and over if it matches multiple given patterns. Also in cases where there
are a lot of patterns to be matched, and it matches an early one, this
will make the script run slightly faster. It's more there because it logically
should be, than anything else, I mean, Python is never going to be fast ;-)
llvm-svn: 24876
|
| |
|
|
| |
llvm-svn: 24873
|
| |
|
|
| |
llvm-svn: 24868
|
| |
|
|
|
|
| |
may not all have ResNo == 0.
llvm-svn: 24858
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
from a dot file that is the output of DSA. Nodes to extract
are specified by giving the name of the node seen in the graphical
representation, i.e. in the .ps if the node is specified %xyz
asking for just x, xy, or xyz will retain it in the output file.
Because it operates on substrings underspecifying may result
in additional unexpected nodes. Be as specific as possible.
Obviously, however, if you ask for %xyz and there is a
getelementptr of %xyz you will get both nodes. Some manual
editing may still be necessary because of this, but this script
can pare down 10,000 line files to 20 line files, making like easier.
llvm-svn: 24851
|
| |
|
|
| |
llvm-svn: 24833
|
| |
|
|
| |
llvm-svn: 24829
|
| |
|
|
| |
llvm-svn: 24827
|
| |
|
|
| |
llvm-svn: 24753
|
| |
|
|
| |
llvm-svn: 24715
|
| |
|
|
| |
llvm-svn: 24704
|
| |
|
|
| |
llvm-svn: 24680
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if (!N.Val->hasOneUse()) {
std::map<SDOperand, SDOperand>::iterator CGMI = CodeGenMap.find(N);
if (CGMI != CodeGenMap.end()) return CGMI->second;
}
Suppose a DAG like this:
X
^ ^
/ \
USE1 USE2
Suppose USE1 is being selected first and during which X is selected and
returned a new node. After this, USE1 is no longer an use of X. During USE2
selection, X will be selected again since it has only one use!
The fix is to always query CodeGenMap.
llvm-svn: 24679
|
| |
|
|
|
|
| |
operand. And a minor change to make output code slightly more readible.
llvm-svn: 24669
|
| |
|
|
| |
llvm-svn: 24665
|
| |
|
|
|
|
|
| |
them in the PPC backend, to simplify some logic out of Select and
SelectAddr.
llvm-svn: 24657
|
| |
|
|
| |
llvm-svn: 24655
|
| |
|
|
| |
llvm-svn: 24652
|
| |
|
|
|
|
| |
the same type as the pointer type for a target.
llvm-svn: 24649
|