- Dec 17, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 122073
-
Jakob Stoklund Olesen authored
This is a three-way interval list intersection between a virtual register, a live interval union, and a loop. It will be used to identify interference-free loops for live range splitting. llvm-svn: 122034
-
Bob Wilson authored
Radar 8776599 llvm-svn: 122018
-
Bob Wilson authored
llvm-svn: 122016
-
- Dec 16, 2010
-
-
Daniel Dunbar authored
- Treaty talks on the non-proliferation of MC objects broke down. llvm-svn: 121949
-
Jakob Stoklund Olesen authored
live range splitting around loops guided by register pressure. So far, trySplit() simply prints a lot of debug output. llvm-svn: 121918
-
Jakob Stoklund Olesen authored
A MachineLoopRange contains the intervals of slot indexes covered by the blocks in a loop. This representation of the loop blocks is more efficient to compare against interfering registers during register coalescing. llvm-svn: 121917
-
- Dec 15, 2010
-
-
Evan Cheng authored
llvm-svn: 121903
-
Dan Gohman authored
function so that it can live in Analysis instead of VMCore. llvm-svn: 121885
-
Jakob Stoklund Olesen authored
llvm-svn: 121872
-
Jakob Stoklund Olesen authored
Bypass loops have the current live range live through, but contain no uses or defs. Splitting around a bypass loop can free registers for other uses inside the loop by spilling the split range. llvm-svn: 121871
-
Jakob Stoklund Olesen authored
This method returns the set of loops with uses that are candidates for splitting. llvm-svn: 121870
-
Chris Lattner authored
a wider mul if the wider mul is legal. llvm-svn: 121848
-
Chris Lattner authored
result, the top bits are truncated off anyway, just use SRL. llvm-svn: 121846
-
Jakob Stoklund Olesen authored
llvm-svn: 121807
-
Jakob Stoklund Olesen authored
llvm-svn: 121806
-
Jakob Stoklund Olesen authored
llvm-svn: 121805
-
Jakob Stoklund Olesen authored
llvm-svn: 121801
-
- Dec 14, 2010
-
-
Evan Cheng authored
regB = move RCX regA = op regB, regC RAX = move regA where both regB and regC are killed. If regB is constrainted to non-compatible physical registers but regC is not constrainted at all, then it's better to commute the instruction. movl %edi, %eax shlq $32, %rcx leaq (%rcx,%rax), %rax => movl %edi, %eax shlq $32, %rcx orq %rcx, %rax rdar://8762995 llvm-svn: 121793
-
Matt Beaumont-Gay authored
warning in the opt build. llvm-svn: 121791
-
Jakob Stoklund Olesen authored
llvm-svn: 121783
-
Jakob Stoklund Olesen authored
LiveIntervalUnions. llvm-svn: 121781
-
Jakob Stoklund Olesen authored
llvm-svn: 121774
-
Jakob Stoklund Olesen authored
llvm-svn: 121741
-
Jakob Stoklund Olesen authored
spill weight. Filter out fixed registers instead. Add support for reassigning an interference that was assigned to an alias. llvm-svn: 121737
-
Jakob Stoklund Olesen authored
llvm-svn: 121736
-
- Dec 13, 2010
-
-
Chris Lattner authored
when the wider type is legal. This allows us to compile: define zeroext i16 @test1(i16 zeroext %x) nounwind { entry: %div = udiv i16 %x, 33 ret i16 %div } into: test1: # @test1 movzwl 4(%esp), %eax imull $63551, %eax, %eax # imm = 0xF83F shrl $21, %eax ret instead of: test1: # @test1 movw $-1985, %ax # imm = 0xFFFFFFFFFFFFF83F mulw 4(%esp) andl $65504, %edx # imm = 0xFFE0 movl %edx, %eax shrl $5, %eax ret Implementing rdar://8760399 and example #4 from: http://blog.regehr.org/archives/320 We should implement the same thing for [su]mul_hilo, but I don't have immediate plans to do this. llvm-svn: 121696
-
Chris Lattner authored
for each constant pool entry. Using WriteTypeSymbolic here takes time proportional to the size of the module, for each constant pool entry. This speeds up -verbose-asm llc on 252.eon (a random testcase at my disposal) from 4.4s to 2.137s. llc takes 2.11s with asm-verbose off, so this is now a pretty reasonable cost for verbose comments. llvm-svn: 121691
-
Chris Lattner authored
llvm-svn: 121662
-
- Dec 12, 2010
-
-
Duncan Sands authored
catch this here rather than later after accessing uninitialized memory etc. Fires when compiling the testcase in PR8237. llvm-svn: 121635
-
- Dec 11, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 121604
-
Jakob Stoklund Olesen authored
llvm-svn: 121599
-
Nick Lewycky authored
Fix build breakage. llvm-svn: 121596
-
Nick Lewycky authored
lib/CodeGen/RegAllocGreedy.cpp:233: error: unused variable 'TRC' [-Wunused-variable] llvm-svn: 121594
-
- Dec 10, 2010
-
-
Jakob Stoklund Olesen authored
Soon, RegAllocGreedy will start splitting live ranges, and then deferred spilling won't work anyway. llvm-svn: 121591
-
Jakob Stoklund Olesen authored
The spiller should only spill. The register allocator will drive live range splitting, it has the needed information about register pressure and interferences. llvm-svn: 121590
-
Jakob Stoklund Olesen authored
llvm-svn: 121584
-
Jakob Stoklund Olesen authored
interference check. llvm-svn: 121519
-
Jakob Stoklund Olesen authored
registers for a given virtual register. Reserved registers are filtered from the allocation order, and any valid hint is returned as the first suggestion. For target dependent hints, a number of arcane target hooks are invoked. llvm-svn: 121497
-
Rafael Espindola authored
llvm-svn: 121471
-