"llvm/lib/Target/Sparc/SparcInstrInfo.td" did not exist on "cb34968d19e407547396e33493042cc19d37571d"
- Oct 12, 2011
-
-
Evan Cheng authored
Also teach MachineLICM to avoid "speculation" when register pressure is high. llvm-svn: 141744
-
Bill Wendling authored
The blocks with invokes have branches to the dispatch block, because that more correctly models the behavior of the CFG. The dispatch of course has edges to the landing pads. Those landing pads could contain invokes, which then have branches back to the dispatch. This creates a loop. The machine LICM pass looks at this loop and thinks it can hoist elements out of it. But because the dispatch is an alternate entry point into the program, the hoisted instructions won't be executed. I wasn't able to get a testcase which was small and could reproduce all of the time. The function_try_block.cpp in llvm-test was where this showed up. llvm-svn: 141726
-
- Oct 11, 2011
-
-
Devang Patel authored
For example, MachineLICM should not hoist a load that is not guaranteed to be executed. Radar 10254254. llvm-svn: 141689
-
Devang Patel authored
llvm-svn: 141594
-
- Oct 10, 2011
-
-
Devang Patel authored
llvm-svn: 141576
-
Devang Patel authored
For example, MachineLICM should not hoist a load that is not guaranteed to be executed. Radar 10254254. llvm-svn: 141569
-
- Sep 01, 2011
-
-
Evan Cheng authored
Teach MachineLICM reg pressure tracking code to deal with MVT::untyped. Sorry, I can't come up with a small test case. rdar://10043690 llvm-svn: 138934
-
- Jun 29, 2011
-
-
Evan Cheng authored
llvm-svn: 134049
-
- Jun 28, 2011
-
-
Evan Cheng authored
sink them into MC layer. - Added MCInstrInfo, which captures the tablegen generated static data. Chang TargetInstrInfo so it's based off MCInstrInfo. llvm-svn: 134021
-
- Jun 27, 2011
-
-
Evan Cheng authored
llvm-svn: 133944
-
- Apr 11, 2011
-
-
Evan Cheng authored
Look pass copies when determining whether hoisting would end up inserting more copies. rdar://9266679 llvm-svn: 129297
-
- Mar 07, 2011
-
-
Cameron Zwarich authored
llvm-svn: 127175
-
- Jan 20, 2011
-
-
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
-
- Jan 10, 2011
-
-
Jakob Stoklund Olesen authored
These functions not longer assert when passed 0, but simply return false instead. No functional change intended. llvm-svn: 123155
-
- Nov 11, 2010
-
-
Dan Gohman authored
llvm-svn: 118803
-
- Nov 02, 2010
-
-
Jakob Stoklund Olesen authored
edges on demand. llvm-svn: 117982
-
- Oct 26, 2010
-
-
Evan Cheng authored
llvm-svn: 117348
-
- Oct 21, 2010
-
-
Evan Cheng authored
- Initial register pressure in the loop should be all the live defs into the loop. Not just those from loop preheader which is often empty. - When an instruction is hoisted, update register pressure from loop preheader to the original BB. - Treat only use of a virtual register as kill since the code is still SSA. llvm-svn: 116956
-
- Oct 20, 2010
-
-
Dan Gohman authored
llvm-svn: 116890
-
- Oct 19, 2010
-
-
Evan Cheng authored
erased the instruction during LICM so UpdateRegPressureAfter() should not reference it afterwards. llvm-svn: 116845
-
Owen Anderson authored
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize the pass's dependencies. Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h before parsing commandline arguments. I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass registration/creation, please send the testcase to me directly. llvm-svn: 116820
-
Daniel Dunbar authored
is", which breaks some nightly tests. llvm-svn: 116816
-
Andrew Trick authored
in MultiSource/Benchmarks/VersaBench/beamformer/beamformer. SmallSet.insert returns true if the element is inserted. llvm-svn: 116790
-
Evan Cheng authored
"long latency" enough to hoist even if it may increase spilling. Reloading a value from spill slot is often cheaper than performing an expensive computation in the loop. For X86, that means machine LICM will hoist SQRT, DIV, etc. ARM will be somewhat aggressive with VFP and NEON instructions. - Enable register pressure aware machine LICM by default. llvm-svn: 116781
-
- Oct 16, 2010
-
-
Evan Cheng authored
More machine LICM work. It now tracks register pressure for path from preheader to current BB and use the information determine whether hoisting is worthwhile. llvm-svn: 116654
-
- Oct 14, 2010
-
-
Evan Cheng authored
llvm-svn: 116465
-
- Oct 12, 2010
-
-
Owen Anderson authored
perform initialization without static constructors AND without explicit initialization by the client. For the moment, passes are required to initialize both their (potential) dependencies and any passes they preserve. I hope to be able to relax the latter requirement in the future. llvm-svn: 116334
-
- Oct 08, 2010
-
-
Evan Cheng authored
llvm-svn: 116081
-
Owen Anderson authored
llvm-svn: 115996
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 29, 2010
-
-
Dale Johannesen authored
llvm-svn: 109765
-
- Jul 22, 2010
-
-
Owen Anderson authored
llvm-svn: 109045
-
- Jul 20, 2010
-
-
Dale Johannesen authored
threshold a bit per experimentation. llvm-svn: 108935
-
Dale Johannesen authored
loop, for the reasons in the comments. This is a major win on 253.perlbmk on ARM Darwin. I expect it to be a good heuristic in general, but it's possible some things will regress; I'll be watching. 7940152. llvm-svn: 108792
-
- Jul 14, 2010
-
-
Evan Cheng authored
Teach ProcessImplicitDefs to transform more COPY instructions into IMPLICIT_DEF (and subsequently eliminate them). This allows machine LICM to hoist IMPLICIT_DEF's. PR7620. llvm-svn: 108304
-
- Jul 12, 2010
-
-
Chris Lattner authored
intended functionality change. The avoidance of hoistiing implicitdef seems wrong though. llvm-svn: 108109
-
- Jul 09, 2010
-
-
Dan Gohman authored
llvm-svn: 108001
-
- Jun 22, 2010
-
-
Dan Gohman authored
into a utility routine, teach it how to update MachineLoopInfo, and make use of it in MachineLICM to split critical edges on demand. llvm-svn: 106555
-