| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Makes (forward) work better.
llvm-svn: 60667
|
| |
|
|
| |
llvm-svn: 60664
|
| |
|
|
|
|
|
| |
Use B instead of Beg (for consistency), but NodeA and NodeB instead of A
and B.
llvm-svn: 60663
|
| |
|
|
|
|
|
| |
This would be much easier to do if the CommandLine library didn't use
global state. Global state is evil.
llvm-svn: 60659
|
| |
|
|
| |
llvm-svn: 60658
|
| |
|
|
|
|
|
| |
Also includes a major refactoring. See documentation for more
information.
llvm-svn: 60656
|
| |
|
|
|
|
|
|
| |
for(Type1 B = ...;;) { Type2 B ; ... }
is bad: code is hard to read and VS VS don't like it (it ignore the second declaration of B).
This patch fix the problem in tablegen. Please don't write code like this.
llvm-svn: 60590
|
| |
|
|
| |
llvm-svn: 60487
|
| |
|
|
|
|
|
|
|
|
|
|
| |
foldMemoryOperand how to "fold" them, by converting them into constant-pool
loads. When they aren't folded, they use xorps/cmpeqd, but for example when
register pressure is high, they may now be folded as memory operands, which
reduces register pressure.
Also, mark V_SET0 isAsCheapAsAMove so that two-address-elimination will
remat it instead of copying zeros around (V_SETALLONES was already marked).
llvm-svn: 60461
|
| |
|
|
|
|
|
|
|
| |
is set but mayLoad is not set. Fix all the problems this turned up.
Change code to not use isSimpleLoad instead of mayLoad unless it
really wants isSimpleLoad.
llvm-svn: 60459
|
| |
|
|
|
|
| |
makes the code more generic.
llvm-svn: 60199
|
| |
|
|
| |
llvm-svn: 60198
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
add, and, xor, etc.) because materializing an immediate in a register is expensive in turns of code size.
e.g.
movl 4(%esp), %eax
addl $4, %eax
is 2 bytes shorter than
movl $4, %eax
addl 4(%esp), %eax
llvm-svn: 60139
|
| |
|
|
| |
llvm-svn: 60099
|
| |
|
|
| |
llvm-svn: 59681
|
| |
|
|
| |
llvm-svn: 59449
|
| |
|
|
|
|
| |
compilation graph.
llvm-svn: 59448
|
| |
|
|
|
|
|
| |
Use strings instead of TableGen defs in the compilation graph
definition. Makes it easier for the plugins to modify an existing graph.
llvm-svn: 59447
|
| |
|
|
| |
llvm-svn: 59242
|
| |
|
|
| |
llvm-svn: 59241
|
| |
|
|
|
|
|
|
|
|
| |
"parameter" types. An intrinsic can now return a multiple return values like
this:
def add_with_overflow : Intrinsic<[llvm_i32_ty, llvm_i1_ty],
[LLVMMatchType<0>, LLVMMatchType<0>]>;
llvm-svn: 59237
|
| |
|
|
| |
llvm-svn: 59158
|
| |
|
|
|
|
|
|
|
| |
When constructing std::strings from C strings, we should check the input
value to be not NULL so that the std::string constructor does not
segfault.
Fixes #3047.
llvm-svn: 59131
|
| |
|
|
|
|
|
|
| |
Only the tools that are mentioned in the compilation graph definition
are now inserted by PopulateCompilationGraph(). This should cut down
plugin loading time a little.
llvm-svn: 59097
|
| |
|
|
| |
llvm-svn: 59096
|
| |
|
|
| |
llvm-svn: 58922
|
| |
|
|
|
|
| |
Patch by Patrick Walton!
llvm-svn: 58901
|
| |
|
|
|
|
| |
exception, like it does for a std::string exception.
llvm-svn: 58865
|
| |
|
|
|
|
| |
nodes that are already selected.
llvm-svn: 58763
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
priority function. Instead, just iterate over the AllNodes list, which is
already in topological order. This eliminates a fair amount of bookkeeping,
and speeds up the isel phase by about 15% on many testcases.
The impact on most targets is that AddToISelQueue calls can be simply removed.
In the x86 target, there are two additional notable changes.
The rule-bending AND+SHIFT optimization in MatchAddress that creates new
pre-isel nodes during isel is now a little more verbose, but more robust.
Instead of either creating an invalid DAG or creating an invalid topological
sort, as it has historically done, it can now just insert the new nodes into
the node list at a position where they will be consistent with the topological
ordering.
Also, the address-matching code has logic that checked to see if a node was
"already selected". However, when a node is selected, it has all its uses
taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
further visits from MatchAddress. This code is now removed.
llvm-svn: 58748
|
| |
|
|
|
|
|
| |
"Type has virtual functions but non-virtual destructor"
warnings.
llvm-svn: 58710
|
| |
|
|
| |
llvm-svn: 58701
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bits, use a union of a SimpleValueType enum and a regular Type*.
This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits.
In most cases, this doesn't add significant overhead. There are places
in codegen that use arrays of MVTs, so these are now larger, but
they're small in common cases.
This eliminates restrictions on the size of integer types and vector
types that can be represented in codegen. As the included testcase
demonstrates, it's now possible to codegen very large add operations.
There are still some complications with using very large types. PR2880
is still open so they can't be used as return values on normal targets,
there are no libcalls defined for very large integers so operations
like multiply and divide aren't supported.
This also introduces a minimal tablgen Type library, capable of
handling IntegerType and VectorType. This will allow parts of
TableGen that don't depend on using SimpleValueType values to handle
arbitrary integer and vector types.
llvm-svn: 58623
|
| |
|
|
| |
llvm-svn: 58413
|
| |
|
|
|
|
|
|
| |
- Add VERBOSE=1 flag.
- Specify the LLVM_SUBMIT_VERSION when doing the "make install".
The libLTO.dylib relies upon this flag during that time.
llvm-svn: 58298
|
| |
|
|
|
|
|
|
| |
flag. Then in a debugger developers can set breakpoints at these calls
to see waht is about to be selected and what the resulting subgraph
looks like. This really helps when debugging instruction selection.
llvm-svn: 58278
|
| |
|
|
| |
llvm-svn: 58263
|
| |
|
|
| |
llvm-svn: 58250
|
| |
|
|
|
|
| |
(AsmWriterOperand is used in a std::pair, and VS need to generate the default constructor of this pair).
llvm-svn: 58185
|
| |
|
|
|
|
|
| |
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull
llvm-svn: 57970
|
| |
|
|
|
|
|
|
| |
instruction can "clobber". For example, on x86 the call instruction can modify all of the XMM and fp stack registers.
TableGen has been taught to generate the lists from instruction definitions.
llvm-svn: 57722
|
| |
|
|
|
|
|
|
| |
constants that don't fit in an int. This fixes
"this decimal constant is unsigned only in ISO C90"
warnings.
llvm-svn: 57668
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
use a SUB instruction instead of an ADD, because -128 can be
encoded in an 8-bit signed immediate field, while +128 can't be.
This avoids the need for a 32-bit immediate field in this case.
A similar optimization applies to 64-bit adds with 0x80000000,
with the 32-bit signed immediate field.
To support this, teach tablegen how to handle 64-bit constants.
llvm-svn: 57663
|
| |
|
|
|
|
|
|
| |
This will allow predicates to be composed, which will allow the
predicate definitions to become less redundant, and eventually
will allow DAGISelEmitter.cpp to emit less redundant code.
llvm-svn: 57562
|
| |
|
|
|
|
| |
Patch by Samuel Tardieu.
llvm-svn: 57291
|
| |
|
|
|
|
| |
Fixes build failure when target is i386.
llvm-svn: 57211
|
| |
|
|
|
|
|
| |
in tblgen. This is PR2827, thanks to Waldemar Knorr for tracking this
down.
llvm-svn: 57124
|
| |
|
|
|
|
| |
Patch by Kenneth Boyd!
llvm-svn: 57057
|
| |
|
|
| |
llvm-svn: 56963
|
| |
|
|
|
|
| |
they'll be a little more visible. Also, update and reword them a bit.
llvm-svn: 56877
|