| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
is a leaf node. Patch by Brandner!
llvm-svn: 62361
|
| |
|
|
|
|
|
| |
adding more information to the temporary variables names so that
they don't conflict.
llvm-svn: 62296
|
| |
|
|
|
|
| |
suggested by Chris.
llvm-svn: 62099
|
| |
|
|
|
|
|
| |
llvm.memcpy/memset/memmove. This allows removal of some
hackish code from basicaa.
llvm-svn: 62071
|
| |
|
|
|
|
| |
change.
llvm-svn: 62067
|
| |
|
|
|
|
| |
not a random piece of it. No functionality change.
llvm-svn: 62066
|
| |
|
|
|
|
| |
parse them. tblgen doesn't yet do anything with this info though.
llvm-svn: 62065
|
| |
|
|
|
|
|
|
| |
to handle LLVMMatchType intrinsic parameters, and by adding new subclasses
of LLVMMatchType to match vector types with integral elements that are
either twice as wide or half as wide as the elements of the matched type.
llvm-svn: 61834
|
| |
|
|
| |
llvm-svn: 61732
|
| |
|
|
| |
llvm-svn: 61713
|
| |
|
|
| |
llvm-svn: 61702
|
| |
|
|
|
|
| |
reduces the amount of code slightly when assertions are enabled.
llvm-svn: 61249
|
| |
|
|
| |
llvm-svn: 61209
|
| |
|
|
| |
llvm-svn: 61191
|
| |
|
|
|
|
| |
Add (error) and (empty).
llvm-svn: 61117
|
| |
|
|
|
|
| |
Prevents conflicts between plugins.
llvm-svn: 60871
|
| |
|
|
|
|
| |
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: 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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
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
|