- Dec 14, 2010
-
-
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
-
Rafael Espindola authored
llvm-svn: 121461
-
Rafael Espindola authored
f: .cfi_startproc nop .cfi_endproc assembled (on ELF). llvm-svn: 121434
-
- Dec 09, 2010
-
-
Stuart Hastings authored
Necessary for byval support on ARM. Radar 7662569. llvm-svn: 121412
-
Jakob Stoklund Olesen authored
llvm-svn: 121411
-
Jakob Stoklund Olesen authored
llvm-svn: 121410
-
Andrew Trick authored
heuristic to reshuffle register assignments when we can't find an available reg. llvm-svn: 121388
-
Eric Christopher authored
llvm-svn: 121356
-
Jakob Stoklund Olesen authored
references instead. Similarly, IntervalMap::begin() is almost as expensive as find(), so use find(x) instead of begin().advanceTo(x); This makes RegAllocBasic run another 5% faster. llvm-svn: 121344
-
Devang Patel authored
This fixes radar 8730409. llvm-svn: 121323
-
Jakob Stoklund Olesen authored
llvm-svn: 121319
-
- Dec 08, 2010
-
-
Jakob Stoklund Olesen authored
The hint is simply tried first and then forgotten if it couldn't be allocated immediately. llvm-svn: 121306
-
Jakob Stoklund Olesen authored
abstract priority queue interface in subclasses that want to override the priority calculations. Subclasses must provide a getPriority() implementation instead. This approach requires less code as long as priorities are expressable as simple floats, and it avoids the dangers of defining potentially expensive priority comparison functions. It also should speed up priority_queue operations since they no longer have to chase pointers when comparing registers. This is not measurable, though. Preferably, we shouldn't use floats to guide code generation. The use of floats here is derived from the use of floats for spill weights. Spill weights have a dynamic range that doesn't lend itself easily to a fixpoint implementation. When someone invents a stable spill weight representation, it can be reused for allocation priorities. llvm-svn: 121294
-
Eric Christopher authored
llvm-svn: 121293
-
Eric Christopher authored
llvm-svn: 121285
-
Jakob Stoklund Olesen authored
llvm-svn: 121283
-
Andrew Trick authored
both forward and backward scheduling. Rename it to ScoreboardHazardRecognizer (Scoreboard is one word). Remove integer division from the scoreboard's critical path. llvm-svn: 121274
-
Jakob Stoklund Olesen authored
This new register allocator is initially identical to RegAllocBasic, but it will receive all of the tricks that RegAllocBasic won't get. RegAllocGreedy will eventually replace linear scan. llvm-svn: 121234
-
Jakob Stoklund Olesen authored
Minor optimization to the use of IntervalMap iterators. They are fairly heavyweight, so prefer SI.valid() over SI != end(). llvm-svn: 121217
-
Jakob Stoklund Olesen authored
This speeds up RegAllocBasic by 20%, not counting releaseMemory which becomes way faster. llvm-svn: 121201
-
- Dec 07, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 121162
-
Jay Foad authored
zextOrTrunc(), and APSInt methods extend(), extOrTrunc() and new method trunc(), to be const and to return a new value instead of modifying the object in place. llvm-svn: 121120
-
Jakob Stoklund Olesen authored
llvm-svn: 121098
-
- Dec 06, 2010
-
-
Devang Patel authored
This will be used to truncate live range of DBG_VALUE instruction by register allocator and friends. llvm-svn: 121061
-