summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GlobalISel/MachineLegalizePass.cpp
Commit message (Collapse)AuthorAgeFilesLines
* GlobalISel: rename legalizer components to match others.Tim Northover2016-10-141-181/+0
| | | | | | | | | | The previous names were both misleading (the MachineLegalizer actually contained the info tables) and inconsistent with the selector & translator (in having a "Machine") prefix. This should make everything sensible again. The only functional change is the name of a couple of command-line options. llvm-svn: 284287
* GlobalISel: move type information to MachineRegisterInfo.Tim Northover2016-09-091-3/+7
| | | | | | | | | | | | | | | | | We want each register to have a canonical type, which means the best place to store this is in MachineRegisterInfo rather than on every MachineInstr that happens to use or define that register. Most changes following from this are pretty simple (you need an MRI anyway if you're going to be doing any transformations, so just check the type there). But legalization doesn't really want to check redundant operands (when, for example, a G_ADD only ever has one type) so I've made use of MCInstrDesc's operand type field to encode these constraints and limit legalization's work. As an added bonus, more validation is possible, both in MachineVerifier and MachineIRBuilder (coming soon). llvm-svn: 281035
* GlobalISel: combine extracts & sequences created for legalizationTim Northover2016-08-301-0/+79
| | | | | | | | Legalization ends up creating many G_SEQUENCE/G_EXTRACT pairs which leads to inefficient codegen (even for -O0), so add a quick pass over the function to remove them again. llvm-svn: 280155
* [MachineLegalize] Do not abort when the target wants to fall back.Quentin Colombet2016-08-271-4/+20
| | | | llvm-svn: 279904
* [GlobalISel] Teach the core pipeline not to run if ISel failed.Quentin Colombet2016-08-271-0/+4
| | | | llvm-svn: 279889
* [GlobalISel] Don't legalize non-generic instructions.Ahmed Bougacha2016-08-021-0/+6
| | | | | | They don't have types and should be legal. llvm-svn: 277446
* GlobalISel: remove redundant ';'s. NFCTim Northover2016-07-261-1/+1
| | | | llvm-svn: 276723
* GlobalISel: implement legalization pass, with just one transformation.Tim Northover2016-07-221-0/+72
This adds the actual MachineLegalizeHelper to do the work and a trivial pass wrapper that legalizes all instructions in a MachineFunction. Currently the only transformation supported is splitting up a vector G_ADD into one acting on smaller vectors. llvm-svn: 276461
OpenPOWER on IntegriCloud