aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineInstrBundle.cpp
AgeCommit message (Collapse)AuthorFilesLines
2012-11-20Fix physical register liveness calculations:Tim Northover1-2/+4
+ Take account of clobbers + Give outputs priority over inputs since they happen later. llvm-svn: 168360
2012-09-17Increase the static sizes of some SmallSets. finalizeBundle() is very ↵Michael Ilseman1-4/+4
frequently called for some backends, and growing into an std::set is overkill for these numbers. llvm-svn: 164044
2012-09-17whitespaceMichael Ilseman1-1/+1
llvm-svn: 164043
2012-09-12Add an analyzePhysReg() function to MachineOperandIteratorBase that analyses ↵James Molloy1-2/+52
an instruction's use of a physical register, analogous to analyzeVirtReg. Rename RegInfo to VirtRegInfo so as not to be confused with the new PhysRegInfo. llvm-svn: 163694
2012-06-01Switch all register list clients to the new MC*Iterator interface.Jakob Stoklund Olesen1-2/+2
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
2012-03-06Avoid finalizeBundles infinite looping.Evan Cheng1-0/+2
llvm-svn: 152089
2012-03-05Convert more GenRegisterInfo tables from unsigned to uint16_t to reduce ↵Craig Topper1-1/+1
static data size. llvm-svn: 152016
2012-02-29Add an analyzeVirtReg() function.Jakob Stoklund Olesen1-0/+33
This function does more or less the same as MI::readsWritesVirtualRegister(), but it supports bundles as well. It also determines if any constraint requires reading and writing operands to use the same register. Most clients want to know. Use the more modern MO.readsReg() instead of trying to sort out undefs and partial redefines. Stop supporting the extra full <imp-def> operand as an alternative to <def,undef> sub-register defines. llvm-svn: 151690
2012-02-08Codegen pass definition cleanup. No functionality.Andrew Trick1-8/+2
Moving toward a uniform style of pass definition to allow easier target configuration. Globally declare Pass ID. Globally declare pass initializer. Use INITIALIZE_PASS consistently. Add a call to the initializer from CodeGen.cpp. Remove redundant "createPass" functions and "getPassName" methods. While cleaning up declarations, cleaned up comments (sorry for large diff). llvm-svn: 150100
2012-01-19More bundle related API additions.Evan Cheng1-1/+52
llvm-svn: 148465
2012-01-19Enhance finalizeBundle to return end of bundle iterator because it makes sense.Evan Cheng1-3/+6
llvm-svn: 148462
2012-01-19- Slight change to finalizeBundle() interface. LastMI is not exclusive (pointingEvan Cheng1-3/+18
to instruction right after the last instruction in the bundle. - Add a finalizeBundle() variant that doesn't specify LastMI. Instead, the code will find the last instruction in the bundle by following the 'InsideBundle' marker. This is useful in case bundles are formed early (i.e. during MI scheduling) but finalized later (i.e. after register allocator has finished rewriting virtual registers with physical registers). llvm-svn: 148444
2012-01-19Rename Finalizebundle to finalizeBundle to conform to coding guideline.Evan Cheng1-2/+2
llvm-svn: 148440
2011-12-14- Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a functionEvan Cheng1-0/+180
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def and use lists of the BUNDLE instruction) and a pass to unpack bundles. - Teach more of MachineBasic and MachineInstr methods to be bundle aware. - Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to prevent IT blocks from being broken apart. llvm-svn: 146542