- Jan 20, 2011
-
-
Bruno Cardoso Lopes authored
llvm-svn: 123919
-
Bruno Cardoso Lopes authored
llvm-svn: 123917
-
Michael J. Spencer authored
usese 100% CPU and times out, so it's annoying to run it. llvm-svn: 123915
-
Kalle Raiskila authored
llvm-svn: 123912
-
Duncan Sands authored
auto-simplier the transform most missed by early-cse is (zext X) != 0 -> X != 0. This patch adds this transform and some related logic to InstructionSimplify and removes some of the logic from instcombine (unfortunately not all because there are several situations in which instcombine can improve things by making new instructions, whereas instsimplify is not allowed to do this). At -O2 this often results in more than 15% more simplifications by early-cse, and results in hundreds of lines of bitcode being eliminated from the testsuite. I did see some small negative effects in the testsuite, for example a few additional instructions in three programs. One program, 483.xalancbmk, got an additional 35 instructions, which seems to be due to a function getting an additional instruction and then being inlined all over the place. llvm-svn: 123911
-
Bruno Cardoso Lopes authored
llvm-svn: 123910
-
Eric Christopher authored
llvm-svn: 123909
-
Eric Christopher authored
to add/sub by doing the normal operation and then checking for overflow afterwards. This generally relies on the DAG handling the later invalid operations as well. Fixes the 64-bit part of rdar://8622122 and rdar://8774702. llvm-svn: 123908
-
Evan Cheng authored
llvm-svn: 123907
-
Evan Cheng authored
llvm-svn: 123906
-
Evan Cheng authored
TargetInstrInfo: Change produceSameValue() to take MachineRegisterInfo as an optional argument. When in SSA form, targets can use it to make more aggressive equality analysis. Machine LICM: 1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead. 2. Fix a bug which prevent CSE of instructions which are not re-materializable. 3. Use improved form of produceSameValue. ARM: 1. Teach ARM produceSameValue to look pass some PIC labels. 2. Look for operands from different loads of different constant pool entries which have same values. 3. Re-implement PIC GA materialization using movw + movt. Combine the pair with a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible to re-materialize the instruction, allow machine LICM to hoist the set of instructions out of the loop and make it possible to CSE them. It's a bit hacky, but it significantly improve code quality. 4. Some minor bug fixes as well. With the fixes, using movw + movt to materialize GAs significantly outperform the load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap and 176.gcc ~10%. llvm-svn: 123905
-
Michael J. Spencer authored
llvm-svn: 123902
-
Michael J. Spencer authored
llvm-svn: 123901
-
Michael J. Spencer authored
llvm-svn: 123899
-
Michael J. Spencer authored
llvm-svn: 123898
-
Michael J. Spencer authored
llvm-svn: 123897
-
Michael J. Spencer authored
llvm-svn: 123896
-
Michael J. Spencer authored
llvm-svn: 123895
-
Andrew Trick authored
Added a check for already live regs before claiming HighRegPressure. Fixed a few cases of checking the wrong number of successors. Added some tracing until these heuristics are better understood. llvm-svn: 123892
-
Jakob Stoklund Olesen authored
The live range may have been deleted earlier because of rematerialization. llvm-svn: 123891
-
Jakob Stoklund Olesen authored
register coalescing. llvm-svn: 123890
-
Michael J. Spencer authored
llvm-svn: 123886
-
Venkatraman Govindaraju authored
with useful instructions. llvm-svn: 123884
-
Cameron Zwarich authored
llvm-svn: 123879
-
Cameron Zwarich authored
llvm-svn: 123877
-
Jakob Stoklund Olesen authored
llvm-svn: 123872
-
Eric Christopher authored
llvm-svn: 123866
-
Eric Christopher authored
with an invalid type then split the result and perform the overflow check normally. Fixes the 32-bit parts of rdar://8622122 and rdar://8774702. llvm-svn: 123864
-
Devang Patel authored
llvm-svn: 123862
-
Jakob Stoklund Olesen authored
llvm-svn: 123859
-
Jakob Stoklund Olesen authored
interval after an instruction. The leaveIntvAfter() method only adds liveness from the instruction's boundary index to the inserted copy. Ideally, SplitKit should be smarter about this, perhaps by combining useIntv() and leaveIntvAfter() into one method that guarantees continuity. llvm-svn: 123858
-
Jim Grosbach authored
llvm-svn: 123857
-
Devang Patel authored
llvm-svn: 123856
-
- Jan 19, 2011
-
-
Jakob Stoklund Olesen authored
Region splitting includes loop splitting as a subset, and it is more generic. The splitting heuristics for variables that are live in more than one block are now: 1. Try to create a region that covers multiple basic blocks. 2. Try to create a new live range for each block with multiple uses. 3. Spill. Steps 2 and 3 are similar to what the standard spiller is doing. llvm-svn: 123853
-
Nick Lewycky authored
llvm-svn: 123842
-
Nick Lewycky authored
by indvars through the scev expander. trunc(add x, y) --> add(trunc x, y). Currently SCEV largely folds the other way which is probably wrong, but preserved to minimize churn. Instcombine doesn't do this fold either, demonstrating a missed optz'n opportunity on code doing add+trunc+add. llvm-svn: 123838
-
Bruno Cardoso Lopes authored
llvm-svn: 123837
-
Rafael Espindola authored
llvm-svn: 123834
-
Douglas Gregor authored
llvm-svn: 123833
-
Nick Lewycky authored
llvm-svn: 123832
-