- Jun 18, 2010
-
-
Dan Gohman authored
to track a node over CSE events. This fixes PR7368. llvm-svn: 106266
-
- Jun 03, 2010
-
-
Eric Christopher authored
llvm-svn: 105381
-
- May 24, 2010
-
-
Jakob Stoklund Olesen authored
Use the tablegen-produced enums. llvm-svn: 104493
-
- Apr 30, 2010
-
-
Dan Gohman authored
print randomly in debug output. llvm-svn: 102668
-
- Apr 28, 2010
-
-
Evan Cheng authored
llvm-svn: 102493
-
- Apr 21, 2010
-
-
Chris Lattner authored
(shl (or x,c), 3) the same as (shl (add x, c), 3) when x doesn't have any bits from c set. This finishes off PR1135. Before we compiled the block to: to: LBB0_3: ## %bb cmpb $4, %dl sete %dl addb %dl, %cl movb %cl, %dl shlb $2, %dl addb %r8b, %dl shlb $2, %dl movzbl %dl, %edx movl %esi, (%rdi,%rdx,4) leaq 2(%rdx), %r9 movl %esi, (%rdi,%r9,4) leaq 1(%rdx), %r9 movl %esi, (%rdi,%r9,4) addq $3, %rdx movl %esi, (%rdi,%rdx,4) incb %r8b decb %al movb %r8b, %dl jne LBB0_1 Now we produce: LBB0_3: ## %bb cmpb $4, %dl sete %dl addb %dl, %cl movb %cl, %dl shlb $2, %dl addb %r8b, %dl shlb $2, %dl movzbl %dl, %edx movl %esi, (%rdi,%rdx,4) movl %esi, 8(%rdi,%rdx,4) movl %esi, 4(%rdi,%rdx,4) movl %esi, 12(%rdi,%rdx,4) incb %r8b decb %al movb %r8b, %dl jne LBB0_1 llvm-svn: 101958
-
- Apr 17, 2010
-
-
Dan Gohman authored
const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
-
- Apr 15, 2010
-
-
Dan Gohman authored
llvm-svn: 101334
-
- Apr 14, 2010
-
-
Dan Gohman authored
llvm-svn: 101276
-
- Apr 02, 2010
-
-
Chris Lattner authored
llvm-svn: 100214
-
- Mar 18, 2010
-
-
Evan Cheng authored
X86 address mode matching code MatchAddressRecursively does some aggressive hack which require doing a RAUW. It may end up deleting some SDNode up stream. It should avoid referencing deleted nodes. llvm-svn: 98780
-
- Mar 14, 2010
-
-
Evan Cheng authored
Do not force indirect tailcall through fixed registers: eax, r11. Add support to allow loads to be folded to tail call instructions. llvm-svn: 98465
-
- Mar 04, 2010
-
-
Chris Lattner authored
llvm-svn: 97709
-
- Mar 03, 2010
-
-
Chris Lattner authored
that they are not destination type specific. This allows tblgen to factor them and the type check is redundant with what the isel does anyway. llvm-svn: 97629
-
Chris Lattner authored
llvm-svn: 97606
-
- Mar 02, 2010
-
-
Chris Lattner authored
We still preprocess calls and fp return stuff. llvm-svn: 97598
-
Chris Lattner authored
CopyToReg/CopyFromReg/INLINEASM. These are annoying because they have the same opcode before an after isel. Fix this by setting their NodeID to -1 to indicate that they are selected, just like what automatically happens when selecting things that end up being machine nodes. With that done, give IsLegalToFold a new flag that causes it to ignore chains. This lets the HandleMergeInputChains routine be the one place that validates chains after a match is successful, enabling the new hotness in chain processing. This smarter chain processing eliminates the need for "PreprocessRMW" in the X86 and MSP430 backends and enables MSP to start matching it's multiple mem operand instructions more aggressively. I currently #if out the dead code in the X86 backend and MSP backend, I'll remove it for real in a follow-on patch. The testcase changes are: test/CodeGen/X86/sse3.ll: we generate better code test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was miscompiling this before, we now generate correct code Convert it to filecheck while I'm at it. test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem folding to make anton happy. :) llvm-svn: 97596
-
Chris Lattner authored
DoInstructionSelection. Inline "SelectRoot" into it from DAGISelHeader. Sink some other stuff out of DAGISelHeader into SDISel. Eliminate the various 'Indent' stuff from various targets, which dates to when isel was recursive. 17 files changed, 114 insertions(+), 430 deletions(-) llvm-svn: 97555
-
- Mar 01, 2010
-
-
Chris Lattner authored
now that it is gone. llvm-svn: 97516
-
Chris Lattner authored
problems. rdar://7697850. llvm-svn: 97500
-
- Feb 23, 2010
-
-
Chris Lattner authored
disables load folding at -O0. llvm-svn: 96973
-
- Feb 21, 2010
-
-
Chris Lattner authored
llvm-svn: 96720
-
Chris Lattner authored
it to follow the mode needed by the new isel. Instead of returning the input and output chains, it just returns the (currently only one, which is a silly limitation) node that has input and output chains. Since we want the old thing to still work, add a new SelectScalarSSELoad to emulate the old interface. The XXX suffix and the wrapper will eventually go away. llvm-svn: 96715
-
- Feb 17, 2010
-
-
Chris Lattner authored
reverse engineering what they are. llvm-svn: 96456
-
- Feb 16, 2010
-
-
rdar://7653908Chris Lattner authored
into a roundss intrinsic, producing a cyclic dag. The root cause of this is badness handling ComplexPattern nodes in the old dagisel that I noticed through inspection. Eliminate a copy of the of the code that handled ComplexPatterns by making EmitChildMatchCode call into EmitMatchCode. llvm-svn: 96408
-
- Feb 15, 2010
-
-
Evan Cheng authored
IsLegalToFold and IsProfitableToFold. The generic version of the later simply checks whether the folding candidate has a single use. This allows the target isel routines more flexibility in deciding whether folding makes sense. The specific case we are interested in is folding constant pool loads with multiple uses. llvm-svn: 96255
-
David Greene authored
Remove an assumption of default arguments. This is in anticipation of a change to SelectionDAG build APIs. llvm-svn: 96239
-
- Feb 11, 2010
-
-
Chris Lattner authored
use a multipattern that generates both the 1-byte and 4-byte versions from the same defm llvm-svn: 95901
-
- Feb 09, 2010
-
-
Chris Lattner authored
into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
-
- Jan 21, 2010
-
-
Dan Gohman authored
This new version is much more aggressive about doing "full" reduction in cases where it reduces register pressure, and also more aggressive about rewriting induction variables to count down (or up) to zero when doing so reduces register pressure. It currently uses fairly simplistic algorithms for finding reuse opportunities, but it introduces a new framework allows it to combine multiple strategies at once to form hybrid solutions, instead of doing all full-reduction or all base+index. llvm-svn: 94061
-
- Jan 20, 2010
-
-
David Greene authored
When XDEBUG is enabled, check for SelectionDAG cycles at some key points. This will help us find future problems like the one described in PR6019. llvm-svn: 94019
-
- Jan 16, 2010
-
-
David Greene authored
Fix PR6019. A load has more than one use if it feeds a bitconvert that has more than one use. llvm-svn: 93576
-
- Jan 12, 2010
-
-
Dan Gohman authored
llvm-svn: 93229
-
- Jan 11, 2010
-
-
Evan Cheng authored
llvm-svn: 93185
-
Dan Gohman authored
new AsmPrinter. This is perhaps less elegant than describing them in terms of MOV32r0 and subreg operations, but it allows the current register to rematerialize them. llvm-svn: 93158
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92647
-
Dan Gohman authored
clear what information these functions are actually using. This is also a micro-optimization, as passing a SDNode * around is simpler than passing a { SDNode *, int } by value or reference. llvm-svn: 92564
-
- Jan 04, 2010
-
-
Dan Gohman authored
rules as normal add, and, or, etc. llvm-svn: 92507
-
- Dec 23, 2009
-
-
Chris Lattner authored
interesting part of this is the divrem changes, which are already tested by CodeGen/X86/divrem.ll. llvm-svn: 91975
-
- Dec 18, 2009
-
-
Evan Cheng authored
llvm-svn: 91655
-