- Jun 06, 2012
-
-
Jakob Stoklund Olesen authored
Soon we'll be making LiveIntervalUnions for register units as well. This was the only place using the RepReg member, so just remove it. llvm-svn: 158038
-
Matt Beaumont-Gay authored
llvm-svn: 158037
-
Jakob Stoklund Olesen authored
Don't print out the register number and spill weight, making the TRI argument unnecessary. This allows callers to interpret the reg field. It can currently be a virtual register, a physical register, a spill slot, or a register unit. llvm-svn: 158031
-
Jakob Stoklund Olesen authored
Instead of computing a live interval per physreg, LiveIntervals can compute live intervals per register unit. This makes impossible the confusing situation where aliasing registers could have overlapping live intervals. It should also make fixed interferernce checking cheaper since registers have fewer register units than aliases. Live intervals for regunits are computed on demand, using MRI use-def chains and the new LiveRangeCalc class. Only regunits live in to ABI blocks are precomputed during LiveIntervals::runOnMachineFunction(). The regunit liveness computations don't depend on LiveVariables. llvm-svn: 158029
-
- Jun 05, 2012
-
-
Jakob Stoklund Olesen authored
These LiveRangeCalc methods are to be used when computing a live range from scratch. llvm-svn: 158027
-
Andrew Trick authored
Patch by Ivan Llopard. llvm-svn: 158025
-
Andrew Trick authored
Minimum latency determines per-cycle scheduling groups. Expected latency determines critical path and cost. llvm-svn: 158021
-
Lang Hames authored
expression (a * b + c) that can be implemented as a fused multiply-add (fma) if the target determines that this will be more efficient. This intrinsic will be used to implement FP_CONTRACT support and an aggressive FMA formation mode. If your target has a fast FMA instruction you should override the isFMAFasterThanMulAndAdd method in TargetLowering to return true. llvm-svn: 158014
-
Andrew Trick authored
This allows a subtarget to explicitly specify the issue width and other properties without providing pipeline stage details for every instruction. llvm-svn: 157979
-
Andrew Trick authored
Use ILP heuristics for long latency instrs if no scoreboard exists. llvm-svn: 157978
-
Andrew Trick authored
valid itinerary but no pipeline stages. An itinerary can contain useful scheduling information without specifying pipeline stages for each instruction. llvm-svn: 157977
-
Andrew Trick authored
llvm-svn: 157975
-
Jakob Stoklund Olesen authored
Rematerialization is handled by LiveRangeEdit now. llvm-svn: 157974
-
Jakob Stoklund Olesen authored
It is an old function that does a lot more than required by CalcSpillWeights, which was the only remaining caller. The isRematerializable() function never actually sets the isLoad argument, so don't try to compute that. llvm-svn: 157973
-
Jakob Stoklund Olesen authored
llvm-svn: 157963
-
Jakob Stoklund Olesen authored
No functional change. llvm-svn: 157957
-
- Jun 04, 2012
-
-
Jakob Stoklund Olesen authored
Remove the same pointers from all the other LiveRangeCalc functions, simplifying the interface. llvm-svn: 157941
-
Nadav Rotem authored
llvm-svn: 157925
-
- Jun 02, 2012
-
-
-
Stepan Dyatkovskiy authored
IntRange converted from struct to class. So main change everywhere is replacement of ".Low/High" with ".getLow/getHigh()" llvm-svn: 157884
-
Stepan Dyatkovskiy authored
IntegersSubsetGeneric, IntegersSubsetMapping: added IntTy template parameter, that allows use either APInt or IntItem. This change allows to write unittest for these classes. llvm-svn: 157880
-
Akira Hatanaka authored
Check that the SDValue TargetLowering::LowerOperation returns is not null before replacing the original node with the returned node. llvm-svn: 157873
-
Jakob Stoklund Olesen authored
No functional change intended. Sorry for the churn. The iterator classes are supposed to help avoid giant commits like this one in the future. The TableGen-produced register lists are getting quite large, and it may be necessary to change the table representation. This makes it possible to do so without changing all clients (again). llvm-svn: 157854
-
Jakob Stoklund Olesen authored
After physreg coalescing was disabled, these functions can't do anything useful with physregs anyway. llvm-svn: 157849
-
Jakob Stoklund Olesen authored
MCRegAliasIterator can include Reg itself in the list. llvm-svn: 157848
-
- Jun 01, 2012
-
-
Jakob Stoklund Olesen authored
MCRegAliasIterator can optionally visit the register itself, allowing for simpler code. llvm-svn: 157837
-
Manman Ren authored
Factor out the expansion code into a function. This change is to be enabled in clang. rdar://9877866 llvm-svn: 157830
-
Stepan Dyatkovskiy authored
IntegersSubset devided into IntegersSubsetGeneric and into IntegersSubset itself. The first has no references to ConstantInt and works with IntItem only. IntegersSubsetMapping also made generic. Here added second template parameter "IntegersSubsetTy" that allows to use on of two IntegersSubset types described below. llvm-svn: 157815
-
Chris Lattner authored
llvm-svn: 157813
-
Chris Lattner authored
in multiple-return value scenarios, like what happens on X86-64 when returning small structs. llvm-svn: 157800
-
Chris Lattner authored
types, as well as int<->ptr casts. This allows us to tailcall functions with some trivial casts between the call and return (i.e. because the return types disagree). llvm-svn: 157798
-
Chris Lattner authored
llvm-svn: 157796
-
Eric Christopher authored
Part of rdar://11570854 llvm-svn: 157786
-
- May 31, 2012
-
-
Manman Ren authored
This patch will optimize the following movq %rdi, %rax subq %rsi, %rax cmovsq %rsi, %rdi movq %rdi, %rax to cmpq %rsi, %rdi cmovsq %rsi, %rdi movq %rdi, %rax Perform this optimization if the actual result of SUB is not used. rdar: 11540023 llvm-svn: 157755
-
- May 30, 2012
-
-
Jakob Stoklund Olesen authored
It helps compile exotic inline asm. In the test case, normal GR32 virtual registers use up eax-edx so the final GR32_ABCD live range has no registers left. Since all the live ranges were tiny, we had no way of prioritizing the smaller register class. This patch allows tiny unspillable live ranges to be evicted by tiny unspillable live ranges from a smaller register class. <rdar://problem/11542429> llvm-svn: 157715
-
Owen Anderson authored
Switch the canonical FMA term operand order to match both the comment I wrote and the usual LLVM convention. llvm-svn: 157708
-
Owen Anderson authored
llvm-svn: 157707
-
Chad Rosier authored
llvm-svn: 157706
-
Jakob Stoklund Olesen authored
An empty list is not represented as a null pointer. Let TRI do its own shortcuts. llvm-svn: 157702
-
-