#
71c30a14 |
| 15-Jul-2016 |
Jacques Pienaar <jpienaar@google.com> |
Rename AnalyzeBranch* to analyzeBranch*.
Summary: NFC. Rename AnalyzeBranch/AnalyzeBranchPredicate to analyzeBranch/analyzeBranchPredicate to follow LLVM coding style and be consistent with TargetIn
Rename AnalyzeBranch* to analyzeBranch*.
Summary: NFC. Rename AnalyzeBranch/AnalyzeBranchPredicate to analyzeBranch/analyzeBranchPredicate to follow LLVM coding style and be consistent with TargetInstrInfo's analyzeCompare and analyzeSelect.
Reviewers: tstellarAMD, mcrosier
Subscribers: mcrosier, jholewinski, jfb, arsenm, dschuff, jyknight, dsanders, nemanjai
Differential Revision: https://reviews.llvm.org/D22409
llvm-svn: 275564
show more ...
|
#
db5e6663 |
| 15-Jul-2016 |
Daniel Sanders <daniel.sanders@imgtec.com> |
Revert r275141 - Mips: Avoid implicit iterator conversions, NFC
It appears to have caused some failures in our buildbots.
llvm-svn: 275562
|
#
fdd30c62 |
| 12-Jul-2016 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
Mips: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to MachineInstr* in the Mips backend, mainly by preferring MachineInstr& over MachineInstr*
Mips: Avoid implicit iterator conversions, NFC
Avoid implicit conversions from MachineInstrBundleIterator to MachineInstr* in the Mips backend, mainly by preferring MachineInstr& over MachineInstr* when a pointer isn't nullable and using range-based for loops.
llvm-svn: 275141
show more ...
|
#
bdc4956b |
| 12-Jun-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Pass DebugLoc and SDLoc by const ref.
This used to be free, copying and moving DebugLocs became expensive after the metadata rewrite. Passing by reference eliminates a ton of track/untrack operation
Pass DebugLoc and SDLoc by const ref.
This used to be free, copying and moving DebugLocs became expensive after the metadata rewrite. Passing by reference eliminates a ton of track/untrack operations. No functionality change intended.
llvm-svn: 272512
show more ...
|
Revision tags: llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
8d8f2f8b |
| 17-May-2016 |
Simon Dardis <simon.dardis@imgtec.com> |
[mips] Compact branch policy control for MIPSR6
This patch adds the commandline option -mips-compact-branches={never,optimal,always), which controls how LLVM generates compact branches for MIPS targ
[mips] Compact branch policy control for MIPSR6
This patch adds the commandline option -mips-compact-branches={never,optimal,always), which controls how LLVM generates compact branches for MIPS targets. By default, the compact branch policy is 'optimal' where LLVM will (hopefully) pick the optimal branch for any situation. The 'never' policy will disable the generation of compact branches and 'always' will generate compact branches wherever possible.
Reviewers: dsanders
Differential Review: http://reviews.llvm.org/D20167
llvm-svn: 269753
show more ...
|
#
d9d41f53 |
| 05-Apr-2016 |
Simon Dardis <simon.dardis@imgtec.com> |
[mips] MIPSR6 Compact jump support
This patch adds support for compact jumps similiar to the previous compact branch support for MIPSR6. Unlike compact branches, compact jumps do not have a forbidde
[mips] MIPSR6 Compact jump support
This patch adds support for compact jumps similiar to the previous compact branch support for MIPSR6. Unlike compact branches, compact jumps do not have a forbidden slot.
As MipsInstrInfo::getEquivalentCompactForm can determine the correct expansion for jumps and branches for both microMIPS and MIPSR6, remove the unnecessary distinction in the delay slot filler.
Reviewers: vkalintiris
Subscribers: llvm-commits, dsanders llvm-svn: 265390
show more ...
|
#
1dbf7a57 |
| 04-Apr-2016 |
Derek Schuff <dschuff@google.com> |
Add MachineFunctionProperty checks for AllVRegsAllocated for target passes
Summary: This adds the same checks that were added in r264593 to all target-specific passes that run after register allocat
Add MachineFunctionProperty checks for AllVRegsAllocated for target passes
Summary: This adds the same checks that were added in r264593 to all target-specific passes that run after register allocation.
Reviewers: qcolombet
Subscribers: jyknight, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D18525
llvm-svn: 265313
show more ...
|
#
c45baf21 |
| 23-Mar-2016 |
Hrvoje Varga <Hrvoje.Varga@imgtec.com> |
[mips][microMIPS] Delay slot filler modifications Differential Revision: http://reviews.llvm.org/D18181
llvm-svn: 264147
|
#
e8efff37 |
| 14-Mar-2016 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] MIPS32R6 compact branch support
Summary: MIPSR6 introduces a class of branches called compact branches. Unlike the traditional MIPS branches which have a delay slot, compact branches do not h
[mips] MIPS32R6 compact branch support
Summary: MIPSR6 introduces a class of branches called compact branches. Unlike the traditional MIPS branches which have a delay slot, compact branches do not have a delay slot. The instruction following the compact branch is only executed if the branch is not taken and must not be a branch.
It works by generating compact branches for MIPS32R6 when the delay slot filler cannot fill a delay slot. Then, inspecting the generated code for forbidden slot hazards (a compact branch with an adjacent branch or other CTI) and inserting nops to clear this hazard.
Patch by Simon Dardis.
Reviewers: vkalintiris, dsanders
Subscribers: MatzeB, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D16353
llvm-svn: 263444
show more ...
|
Revision tags: llvmorg-3.8.0, llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2, llvmorg-3.8.0-rc1, llvmorg-3.7.1 |
|
#
1938f2eb |
| 24-Nov-2015 |
Cong Hou <congh@google.com> |
Let SelectionDAG start to use probability-based interface to add successors.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes. 2.
Let SelectionDAG start to use probability-based interface to add successors.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes. 2. Use new interfaces in SelectionDAG, while in other passes treat probabilities as weights. 3. Use new interfaces in all other passes. 4. Remove old interfaces.
This the second patch above. In this patch SelectionDAG starts to use probability-based interfaces in MBB to add successors but other MC passes are still using weight-based interfaces. Therefore, we need to maintain correct weight list in MBB even when probability-based interfaces are used. This is done by updating weight list in probability-based interfaces by treating the numerator of probabilities as weights. This change affects many test cases that check successor weight values. I will update those test cases once this patch looks good to you.
Differential revision: http://reviews.llvm.org/D14361
llvm-svn: 253965
show more ...
|
Revision tags: llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
7869148c |
| 20-Oct-2015 |
Duncan P. N. Exon Smith <dexonsmith@apple.com> |
Mips: Remove implicit ilist iterator conversions, NFC
llvm-svn: 250769
|
#
d9da1627 |
| 09-Sep-2015 |
Matthias Braun <matze@braunis.de> |
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only
Save LaneMask with livein registers
With subregister liveness enabled we can detect the case where only parts of a register are live in, this is expressed as a 32bit lanemask. The current code only keeps registers in the live-in list and therefore enumerated all subregisters affected by the lanemask. This turned out to be too conservative as the subregister may also cover additional parts of the lanemask which are not live. Expressing a given lanemask by enumerating a minimum set of subregisters is computationally expensive so the best solution is to simply change the live-in list to store the lanemasks as well. This will reduce memory usage for targets using subregister liveness and slightly increase it for other targets
Differential Revision: http://reviews.llvm.org/D12442
llvm-svn: 247171
show more ...
|
#
0e288234 |
| 27-Aug-2015 |
Reid Kleckner <rnk@google.com> |
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-sv
[WinEH] Add some support for code generating catchpad
We can now run 32-bit programs with empty catch bodies. The next step is to change PEI so that we get funclet prologues and epilogues.
llvm-svn: 246235
show more ...
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4 |
|
#
b2b7ef1d |
| 24-Aug-2015 |
Matthias Braun <matze@braunis.de> |
MachineBasicBlock: Add liveins() method returning an iterator_range
llvm-svn: 245895
|
Revision tags: llvmorg-3.7.0-rc3, studio-1.4 |
|
#
e40c8a2b |
| 11-Aug-2015 |
Alex Lorenz <arphaman@gmail.com> |
PseudoSourceValue: Replace global manager with a manager in a machine function.
This commit removes the global manager variable which is responsible for storing and allocating pseudo source values a
PseudoSourceValue: Replace global manager with a manager in a machine function.
This commit removes the global manager variable which is responsible for storing and allocating pseudo source values and instead it introduces a new manager class named 'PseudoSourceValueManager'. Machine functions now own an instance of the pseudo source value manager class.
This commit also modifies the 'get...' methods in the 'MachinePointerInfo' class to construct pseudo source values using the instance of the pseudo source value manager object from the machine function.
This commit updates calls to the 'get...' methods from the 'MachinePointerInfo' class in a lot of different files because those calls now need to pass in a reference to a machine function to those methods.
This change will make it easier to serialize pseudo source values as it will enable me to transform the mips specific MipsCallEntry PseudoSourceValue subclass into two target independent subclasses.
Reviewers: Akira Hatanaka llvm-svn: 244693
show more ...
|
Revision tags: llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1 |
|
#
bd7287eb |
| 16-Jul-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
Move most user of TargetMachine::getDataLayout to the Module one
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one
Move most user of TargetMachine::getDataLayout to the Module one
Summary: This change is part of a series of commits dedicated to have a single DataLayout during compilation by using always the one owned by the module.
This patch is quite boring overall, except for some uglyness in ASMPrinter which has a getDataLayout function but has some clients that use it without a Module (llmv-dsymutil, llvm-dwarfdump), so some methods are taking a DataLayout as parameter.
Reviewers: echristo
Subscribers: yaron.keren, rafael, llvm-commits, jholewinski
Differential Revision: http://reviews.llvm.org/D11090
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 242386
show more ...
|
Revision tags: llvmorg-3.6.2, llvmorg-3.6.2-rc1, llvmorg-3.6.1 |
|
#
70b744e4 |
| 14-May-2015 |
Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> |
[mips] Do not place users of $ra in the delay slot of call instructions.
Summary: When we are trying to fill the delay slot of a call instruction, we must avoid filler instructions that use the $ra
[mips] Do not place users of $ra in the delay slot of call instructions.
Summary: When we are trying to fill the delay slot of a call instruction, we must avoid filler instructions that use the $ra register. This fixes the test MultiSource/Applications/JM/lencod when we enable the forward delay slot filler.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9670
llvm-svn: 237362
show more ...
|
Revision tags: llvmorg-3.6.1-rc1 |
|
#
bb60cfb5 |
| 17-Apr-2015 |
Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> |
[mips] Teach the delay slot filler to remove needless KILL instructions.
Summary: Previously, the presence of KILL instructions would block valid candidates from filling a specific delay slot. With
[mips] Teach the delay slot filler to remove needless KILL instructions.
Summary: Previously, the presence of KILL instructions would block valid candidates from filling a specific delay slot. With the elimination of the KILL instructions, in the appropriate range, we are able to fill more slots and keep the information from future def/use analysis consistent.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: hfinkel, llvm-commits
Differential Revision: http://reviews.llvm.org/D7724
llvm-svn: 235183
show more ...
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1 |
|
#
7af95287 |
| 11-Mar-2015 |
Eric Christopher <echristo@gmail.com> |
Have getCalleeSavedRegs take a non-null MachineFunction all the time. The target independent code was passing in one all the time and targets weren't checking validity before using. Update a few call
Have getCalleeSavedRegs take a non-null MachineFunction all the time. The target independent code was passing in one all the time and targets weren't checking validity before using. Update a few calls to pass in a MachineFunction where necessary.
llvm-svn: 231970
show more ...
|
#
a28d91d8 |
| 10-Mar-2015 |
Mehdi Amini <mehdi.amini@apple.com> |
DataLayout is mandatory, update the API to reflect it with references.
Summary: Now that the DataLayout is a mandatory part of the module, let's start cleaning the codebase. This patch is a first at
DataLayout is mandatory, update the API to reflect it with references.
Summary: Now that the DataLayout is a mandatory part of the module, let's start cleaning the codebase. This patch is a first attempt at doing that.
This patch is not exactly NFC as for instance some places were passing a nullptr instead of the DataLayout, possibly just because there was a default value on the DataLayout argument to many functions in the API. Even though it is not purely NFC, there is no change in the validation.
I turned as many pointer to DataLayout to references, this helped figuring out all the places where a nullptr could come up.
I had initially a local version of this patch broken into over 30 independant, commits but some later commit were cleaning the API and touching part of the code modified in the previous commits, so it seemed cleaner without the intermediate state.
Test Plan:
Reviewers: echristo
Subscribers: llvm-commits
From: Mehdi Amini <mehdi.amini@apple.com> llvm-svn: 231740
show more ...
|
#
8761490d |
| 04-Mar-2015 |
Vasileios Kalintiris <Vasileios.Kalintiris@imgtec.com> |
[mips] Keep the parameter list of Filler::searchRange() consistent. NFC.
Summary: Move the "Filler" parameter to the end of the parameter list as it is, conceptually, the only output parameter of th
[mips] Keep the parameter list of Filler::searchRange() consistent. NFC.
Summary: Move the "Filler" parameter to the end of the parameter list as it is, conceptually, the only output parameter of that function.
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7726
llvm-svn: 231239
show more ...
|
Revision tags: llvmorg-3.6.0, llvmorg-3.6.0-rc4 |
|
#
650a61a9 |
| 13-Feb-2015 |
Jozef Kolek <jozef.kolek@imgtec.com> |
[mips][microMIPS] Delay slot filler: Replace the microMIPS JR with the JRC
This patch adds functionality in MIPS delay slot filler such as if delay slot filler have to put NOP instruction into the d
[mips][microMIPS] Delay slot filler: Replace the microMIPS JR with the JRC
This patch adds functionality in MIPS delay slot filler such as if delay slot filler have to put NOP instruction into the delay slot of microMIPS JR instruction, then instead of emitting NOP this instruction is replaced by compact jump instruction JRC.
Differential Revision: http://reviews.llvm.org/D7522
llvm-svn: 229128
show more ...
|
Revision tags: llvmorg-3.6.0-rc3 |
|
#
6b6db778 |
| 02-Feb-2015 |
Eric Christopher <echristo@gmail.com> |
Use the function template getSubtarget off of the machine function, and use it in all locations.
llvm-svn: 227890
|
Revision tags: llvmorg-3.6.0-rc2 |
|
#
96e72c6a |
| 29-Jan-2015 |
Eric Christopher <echristo@gmail.com> |
Remove most of the TargetMachine::getSubtarget/getSubtargetImpl calls that don't take a Function argument from Mips. Notable exceptions: the AsmPrinter and MipsTargetObjectFile. The latter needs to b
Remove most of the TargetMachine::getSubtarget/getSubtargetImpl calls that don't take a Function argument from Mips. Notable exceptions: the AsmPrinter and MipsTargetObjectFile. The latter needs to be fixed, and the former will be fixed when the general AsmPrinter changes happen.
llvm-svn: 227512
show more ...
|
Revision tags: llvmorg-3.6.0-rc1 |
|
#
e7cad7a1 |
| 13-Jan-2015 |
Jozef Kolek <jozef.kolek@imgtec.com> |
[mips][microMIPS] Fix issue with 16b instructions in jr instruction delay slot
16 bit instructions are not allowed in jr delay slot. Same stands for PseudoIndirectBranch and PseudoReturn.
Different
[mips][microMIPS] Fix issue with 16b instructions in jr instruction delay slot
16 bit instructions are not allowed in jr delay slot. Same stands for PseudoIndirectBranch and PseudoReturn.
Differential Revision: http://reviews.llvm.org/D6815
llvm-svn: 225798
show more ...
|