| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the start of an array and a count of operands where applicable. In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap. In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time. The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566
|
| |
|
|
| |
llvm-svn: 29490
|
| |
|
|
| |
llvm-svn: 29471
|
| |
|
|
|
|
| |
scheduler creator.
llvm-svn: 29452
|
| |
|
|
|
|
|
|
|
|
|
| |
2. Added argument to instruction scheduler creators so the creators can do
special things.
3. Repaired target hazard code.
4. Misc.
More to follow.
llvm-svn: 29450
|
| |
|
|
| |
llvm-svn: 29434
|
| |
|
|
| |
llvm-svn: 29422
|
| |
|
|
| |
llvm-svn: 29347
|
| |
|
|
| |
llvm-svn: 29318
|
| |
|
|
|
|
| |
PR833
llvm-svn: 29224
|
| |
|
|
|
|
| |
dropped. This shrinks libllvmgcc.dylib another 67K
llvm-svn: 28975
|
| |
|
|
| |
llvm-svn: 28795
|
| |
|
|
|
|
| |
This fixes CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
llvm-svn: 28755
|
| |
|
|
|
|
| |
truncated.
llvm-svn: 28733
|
| |
|
|
|
|
| |
implement extension of a register.
llvm-svn: 28731
|
| |
|
|
|
|
|
| |
instead of MVT::i1. Either is fine except MVT::i32 is probably a legal type
for most (if not all) platforms while MVT::i1 is not.
llvm-svn: 28511
|
| |
|
|
|
|
| |
RET chain, value1, sign1, value2, sign2
llvm-svn: 28509
|
| |
|
|
| |
llvm-svn: 28461
|
| |
|
|
| |
llvm-svn: 28437
|
| |
|
|
| |
llvm-svn: 28435
|
| |
|
|
| |
llvm-svn: 28433
|
| |
|
|
|
|
| |
use getPackedTypeBreakdown at all here.
llvm-svn: 28365
|
| |
|
|
| |
llvm-svn: 28364
|
| |
|
|
|
|
|
|
| |
VBIT_VECTOR nodes. There were some confusion about the semantics of
getPackedTypeBreakdown(). e.g. for <4 x f32> it returns 1 and v4f32, not 4,
and f32.
llvm-svn: 28352
|
| |
|
|
| |
llvm-svn: 28340
|
| |
|
|
|
|
| |
produce it.
llvm-svn: 28338
|
| |
|
|
|
|
|
| |
it doesn't currently use/maintain the chain properly. Also, make the
X86ISelLowering.cpp file 80-col clean.
llvm-svn: 28320
|
| |
|
|
|
|
|
|
|
| |
This code should be emitted after legalize, so it can't be in sdisel.
Note that the EmitFunctionEntryCode hook should be updated to operate on the
DAG. The X86 backend is the only one currently using this hook.
llvm-svn: 28315
|
| |
|
|
| |
llvm-svn: 28278
|
| |
|
|
| |
llvm-svn: 28255
|
| |
|
|
|
|
|
| |
separate file. Added an initial implementation of top-down register pressure
reduction list scheduler.
llvm-svn: 28226
|
| |
|
|
|
|
| |
to be only 31.25% dense, rather than 75% dense.
llvm-svn: 28165
|
| |
|
|
|
|
|
|
| |
a cast immediately before a PHI node.
This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
llvm-svn: 28143
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generated:
movl 8(%esp), %eax
movl %eax, %edx
addl $4316, %edx
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, (%edx)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
movl %edx, 4460(%eax)
ret
...
Now we generate:
movl 8(%esp), %eax
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, 4316(%eax)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
movl %ecx, 4460(%eax)
ret
... which uses one fewer register.
llvm-svn: 28129
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of cross-block live ranges, and allows the bb-at-a-time selector to always
coallesce these away, at isel time.
This reduces the load on the coallescer and register allocator. For example
on a codec on X86, we went from:
1643 asm-printer - Number of machine instrs printed
419 liveintervals - Number of loads/stores folded into instructions
1144 liveintervals - Number of identity moves eliminated after coalescing
1022 liveintervals - Number of interval joins performed
282 liveintervals - Number of intervals after coalescing
1304 liveintervals - Number of original intervals
86 regalloc - Number of times we had to backtrack
1.90232 regalloc - Ratio of intervals processed over total intervals
40 spiller - Number of values reused
182 spiller - Number of loads added
121 spiller - Number of stores added
132 spiller - Number of register spills
6 twoaddressinstruction - Number of instructions commuted to coalesce
360 twoaddressinstruction - Number of two-address instructions
to:
1636 asm-printer - Number of machine instrs printed
403 liveintervals - Number of loads/stores folded into instructions
1155 liveintervals - Number of identity moves eliminated after coalescing
1033 liveintervals - Number of interval joins performed
279 liveintervals - Number of intervals after coalescing
1312 liveintervals - Number of original intervals
76 regalloc - Number of times we had to backtrack
1.88998 regalloc - Ratio of intervals processed over total intervals
1 spiller - Number of copies elided
41 spiller - Number of values reused
191 spiller - Number of loads added
114 spiller - Number of stores added
128 spiller - Number of register spills
4 twoaddressinstruction - Number of instructions commuted to coalesce
356 twoaddressinstruction - Number of two-address instructions
On this testcase, this change provides a modest reduction in spill code,
regalloc iterations, and total instructions emitted. It increases the number
of register coallesces.
llvm-svn: 28115
|
| |
|
|
|
|
|
| |
not be 100% dense. Increase the minimum threshold for the number of cases
in a switch statement from 4 to 6 in order to create a jump table.
llvm-svn: 28079
|
| |
|
|
|
|
|
|
| |
target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.
This fixes PR 759.
llvm-svn: 28074
|
| |
|
|
| |
llvm-svn: 28012
|
| |
|
|
|
|
| |
FORMAL_ARGUMENTS SDOperand in the return result vector.
llvm-svn: 28009
|
| |
|
|
|
|
| |
node can be folded.
llvm-svn: 28003
|
| |
|
|
|
|
| |
(VAND, VADD, etc.). Legalizer will assert otherwise.
llvm-svn: 27991
|
| |
|
|
| |
llvm-svn: 27974
|
| |
|
|
|
|
|
| |
the jump table's range check block. This re-enables 100% dense jump tables
by default on PPC & x86
llvm-svn: 27952
|
| |
|
|
|
|
| |
updating the machine CFG.
llvm-svn: 27949
|
| |
|
|
|
|
|
|
| |
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
llvm-svn: 27947
|
| |
|
|
|
|
| |
miscompares). Switch RISC targets to use the list-td scheduler, which isn't.
llvm-svn: 27933
|
| |
|
|
|
|
| |
shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload
llvm-svn: 27604
|
| |
|
|
| |
llvm-svn: 27542
|
| |
|
|
| |
llvm-svn: 27529
|
| |
|
|
| |
llvm-svn: 27514
|