- Oct 14, 2008
-
-
Evan Cheng authored
llvm-svn: 57508
-
- Oct 13, 2008
-
-
Dan Gohman authored
create a new DAG node to represent the new shift to keep the DAG consistent, even though it'll almost always be folded into the address. If a user of the resulting address has multiple uses, the nodes may get revisited by a later MatchAddress call, in which case DAG inconsistencies do matter. This fixes PR2849. llvm-svn: 57465
-
- Oct 06, 2008
-
-
Devang Patel authored
optimized for size. Set OptForSize for each function separately. llvm-svn: 57182
-
- Oct 04, 2008
-
-
Dale Johannesen authored
Make it all work in non-pic mode. llvm-svn: 57034
-
- Oct 03, 2008
-
-
Dale Johannesen authored
incidentally making the case where the memop is a pointer deref work. Fix cmp-and-swap regression. llvm-svn: 57027
-
Dan Gohman authored
Instead, just create one, and make sure everything that needs it can access it. Previously most of the SelectionDAGISel subclasses all had their own TargetLowering object, which was redundant with the TargetLowering object in the TargetMachine subclasses, except on Sparc, where SparcTargetMachine didn't have a TargetLowering object. Change Sparc to work more like the other targets here. llvm-svn: 57016
-
Dan Gohman authored
llvm-svn: 57014
-
Dan Gohman authored
isReg, etc., from isRegister, etc. llvm-svn: 57006
-
- Oct 02, 2008
-
-
Dale Johannesen authored
llvm-svn: 56963
-
Devang Patel authored
llvm-svn: 56937
-
- Sep 30, 2008
-
-
Dan Gohman authored
Completely eliminate the TopOrder std::vector. Instead, sort the AllNodes list in place. This also eliminates the need to call AllNodes.size(), a linear-time operation, before performing the sort. Also, eliminate the Sources temporary std::vector, since it essentially duplicates the sorted result as it is being built. This also changes the direction of the topological sort from bottom-up to top-down. The AllNodes list starts out in roughly top-down order, so this reduces the amount of reordering needed. Top-down is also more convenient for Legalize, and ISel needed only minor adjustments. llvm-svn: 56867
-
Dan Gohman authored
and X86FastISel.cpp into X86MachineFunction.h, so that it can be shared, instead of having each selector keep track of its own. llvm-svn: 56825
-
- Sep 27, 2008
-
-
Daniel Dunbar authored
llvm-svn: 56727
-
Evan Cheng authored
Implement "punpckldq %xmm0, $xmm0" as "pshufd $0x50, %xmm0, %xmm" unless optimizing for code size. llvm-svn: 56711
-
- Sep 26, 2008
-
-
Dan Gohman authored
consistancy with ConstantInt, and re-implement it in terms of ConstantInt's getSExtValue. llvm-svn: 56700
-
Dan Gohman authored
require RIP-relative addressing and use it to fix a bug in X86FastISel in x86-64 PIC mode, where it was trying to use base/index registers with RIP-relative addresses. This fixes a bunch of x86-64 testsuite failures. llvm-svn: 56676
-
- Sep 24, 2008
-
-
Evan Cheng authored
Properly handle 'm' inline asm constraints. If a GV is being selected for the addressing mode, it requires the same logic for PIC relative addressing, etc. llvm-svn: 56526
-
- Sep 23, 2008
-
-
Dan Gohman authored
llvm-svn: 56495
-
Dan Gohman authored
X86ISelDAGToDAG.cpp and into X86InstrInfo.cpp. This will allow it to be reused by FastISel. llvm-svn: 56494
-
- Sep 17, 2008
-
-
Dan Gohman authored
up some new ascii art to illustrate what it does. This change currently has no effect on generated code. llvm-svn: 56270
-
- Sep 16, 2008
-
-
Bill Wendling authored
Apologies for the thrashing. llvm-svn: 56251
-
Bill Wendling authored
- Add linkage to SymbolSDNode (default to external). - Change ISD::ExternalSymbol to ISD::Symbol. - Change ISD::TargetExternalSymbol to ISD::TargetSymbol These changes pave the way to allowing SymbolSDNodes with non-external linkage. llvm-svn: 56249
-
- Sep 12, 2008
-
-
Dan Gohman authored
with ConstantInt. This led to fixing a bug in TargetLowering.cpp using getValue instead of getAPIntValue. llvm-svn: 56159
-
- Aug 31, 2008
-
-
Gabor Greif authored
llvm-svn: 55588
-
- Aug 28, 2008
-
-
Gabor Greif authored
llvm-svn: 55504
-
- Aug 27, 2008
-
-
Gabor Greif authored
llvm-svn: 55394
-
- Aug 25, 2008
-
-
Evan Cheng authored
Try approach to moving call address load inside of callseq_start. Now it's done during the preprocess of x86 isel. callseq_start's chain is changed to load's chain node; while load's chain is the last of callseq_start or the loads or copytoreg nodes inserted to move arguments to the right spot. llvm-svn: 55338
-
- Aug 23, 2008
-
-
Dan Gohman authored
process up to a higher level. This allows FastISel to leverage more of SelectionDAGISel's infastructure, such as updating Machine PHI nodes. Also, implement transitioning from SDISel back to FastISel in the middle of a block, so it's now possible to go back and forth. This allows FastISel to hand individual CallInsts and other complicated things off to SDISel to handle, while handling the rest of the block itself. To help support this, reorganize the SelectionDAG class so that it is allocated once and reused throughout a function, instead of being completely reallocated for each block. llvm-svn: 55219
-
- Aug 21, 2008
-
-
Dan Gohman authored
from all targets. llvm-svn: 55124
-
- Aug 20, 2008
-
-
Dan Gohman authored
out of X86ISelDAGToDAG.cpp C++ code and into tablegen code. Among other things, using tablegen for these things makes them friendlier to FastISel. Tablegen can handle the case of i8 subregs on x86-32, but currently the C++ code for that case uses MVT::Flag in a tricky way, and it happens to schedule better in some cases. So for now, leave the C++ code in place to handle the i8 case on x86-32. llvm-svn: 55078
-
- Aug 17, 2008
-
-
Evan Cheng authored
Fix a (u)comiss intrinsic lowering bug. It was using anyext which can return junk in higher bits. Patch by Nate Begeman. llvm-svn: 54903
-
- Aug 13, 2008
-
-
Dan Gohman authored
llvm-svn: 54750
-
- Aug 12, 2008
-
-
Dale Johannesen authored
model, except for external calls; this makes addressing modes PC-relative. Incomplete. The assertion at the top of Emitter::runOnMachineFunction was obviously bogus (always true) so I removed it. If someone knows what the correct test should be to cover all the various targets, please fix. llvm-svn: 54656
-
- Jul 27, 2008
-
-
Dan Gohman authored
llvm-svn: 54128
-
Dan Gohman authored
parallel its analogue, Value::value_use_iterator. The operator* method now returns the user, rather than the use. llvm-svn: 54127
-
- Jul 21, 2008
-
-
Dan Gohman authored
that include useful information like the name of the block being viewed and the current phase of compilation. llvm-svn: 53872
-
- Jul 17, 2008
-
-
Dan Gohman authored
replacement of multiple values. This is slightly more efficient than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically could be optimized even further. However, an important property of this new function is that it handles the case where the source value set and destination value set overlap. This makes it feasible for isel to use SelectNodeTo in many very common cases, which is advantageous because SelectNodeTo avoids a temporary node and it doesn't require CSEMap updates for users of values that don't change position. Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to handle operand lists more efficiently, and to correctly handle a number of corner cases to which its new wider use exposes it. This commit also includes a change to the encoding of post-isel opcodes in SDNodes; now instead of being sandwiched between the target-independent pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel opcodes are now represented as negative values. This makes it possible to test if an opcode is pre-isel or post-isel without having to know the size of the current target's post-isel instruction set. These changes speed up llc overall by 3% and reduce memory usage by 10% on the InstructionCombining.cpp testcase with -fast and -regalloc=local. llvm-svn: 53728
-
- Jul 16, 2008
-
-
Dan Gohman authored
llvm-svn: 53688
-
- Jul 01, 2008
-
-
Evan Cheng authored
llvm-svn: 52971
-
- Jun 30, 2008
-
-
Evan Cheng authored
llvm-svn: 52923
-