| #
41bea872 |
| 07-Mar-2016 |
Quentin Colombet <[email protected]> |
[MachineInstr] Get rid of some GlobalISel ifdefs.
Now the type API is always available, but when global-isel is not built the implementation does nothing.
Note: The implementation free of ifdefs is
[MachineInstr] Get rid of some GlobalISel ifdefs.
Now the type API is always available, but when global-isel is not built the implementation does nothing.
Note: The implementation free of ifdefs is WIP and tracked here in PR26576. llvm-svn: 262873
show more ...
|
|
Revision tags: llvmorg-3.8.0 |
|
| #
fd8cc232 |
| 27-Feb-2016 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: Change MachineInstr to use MachineInstr&, NFC
Change MachineInstr API to prefer MachineInstr& over MachineInstr* whenever the parameter is expected to be non-null. Slowly inching toward be
CodeGen: Change MachineInstr to use MachineInstr&, NFC
Change MachineInstr API to prefer MachineInstr& over MachineInstr* whenever the parameter is expected to be non-null. Slowly inching toward being able to fix PR26753.
llvm-svn: 262149
show more ...
|
| #
f9ab416d |
| 27-Feb-2016 |
Duncan P. N. Exon Smith <[email protected]> |
WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC
Update APIs in MachineInstrBundle.h to take and return MachineInstr& instead of MachineInstr* when the instruction cannot be null. Besid
WIP: CodeGen: Use MachineInstr& in MachineInstrBundle.h, NFC
Update APIs in MachineInstrBundle.h to take and return MachineInstr& instead of MachineInstr* when the instruction cannot be null. Besides being a nice cleanup, this is tacking toward a fix for PR26753.
llvm-svn: 262141
show more ...
|
| #
820e3926 |
| 26-Feb-2016 |
Junmo Park <[email protected]> |
Minor code cleanups. NFC.
llvm-svn: 261955
|
| #
aca625a4 |
| 24-Feb-2016 |
Matthias Braun <[email protected]> |
MachineInstr: Respect register aliases in clearRegiserKills()
This fixes bugs in copy elimination code in llvm. It slightly changes the semantics of clearRegisterKills(). This is appropriate because
MachineInstr: Respect register aliases in clearRegiserKills()
This fixes bugs in copy elimination code in llvm. It slightly changes the semantics of clearRegisterKills(). This is appropriate because: - Users in lib/CodeGen/MachineCopyPropagation.cpp and lib/Target/AArch64RedundantCopyElimination.cpp and lib/Target/SystemZ/SystemZElimCompare.cpp are incorrect without it (see included testcase). - All other users in llvm are unaffected (they pass TRI==nullptr) - (Kill flags are optional anyway so removing too many shouldn't hurt.)
Differential Revision: http://reviews.llvm.org/D17554
llvm-svn: 261763
show more ...
|
|
Revision tags: llvmorg-3.8.0-rc3 |
|
| #
c5b668de |
| 22-Feb-2016 |
Duncan P. N. Exon Smith <[email protected]> |
Revert "CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC"
This reverts commit r261504, since it's not obvious the new name is better: http://lists.llvm.org/pipermail/llvm-commits/Week
Revert "CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC"
This reverts commit r261504, since it's not obvious the new name is better: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160222/334298.html
I'll recommit if we get consensus that it's the right direction.
llvm-svn: 261567
show more ...
|
| #
dc0848c0 |
| 21-Feb-2016 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC
Delete MachineInstr::getIterator(), since the term "iterator" is overloaded when talking about MachineInstr.
- Downcast to ilist_node
CodeGen: MachineInstr::getIterator() => getInstrIterator(), NFC
Delete MachineInstr::getIterator(), since the term "iterator" is overloaded when talking about MachineInstr.
- Downcast to ilist_node in iplist::getNextNode() and getPrevNode() so that ilist_node::getIterator() is still available. - Add it back as MachineInstr::getInstrIterator(). This matches the naming in MachineBasicBlock. - Add MachineInstr::getBundleIterator(). This is explicitly called "bundle" (not matching MachineBasicBlock) to disintinguish it clearly from ilist_node::getIterator(). - Update all calls. Some of these I switched to `auto` to remove boiler-plate, since the new name is clear about the type.
There was one call I updated that looked fishy, but it wasn't clear what the right answer was. This was in X86FrameLowering::inlineStackProbe(), added in r252578 in lib/Target/X86/X86FrameLowering.cpp. I opted to leave the behaviour unchanged, but I'll reply to the original commit on the list in a moment.
llvm-svn: 261504
show more ...
|
| #
7a083814 |
| 18-Feb-2016 |
Richard Trieu <[email protected]> |
Remove uses of builtin comma operator.
Cleanup for upcoming Clang warning -Wcomma. No functionality change intended.
llvm-svn: 261270
|
| #
9855111b |
| 11-Feb-2016 |
Quentin Colombet <[email protected]> |
[GlobalISel] Add a type to MachineInstr. We actually need that information only for generic instructions, therefore it would be nice not to have to pay the extra memory consumption for all instructio
[GlobalISel] Add a type to MachineInstr. We actually need that information only for generic instructions, therefore it would be nice not to have to pay the extra memory consumption for all instructions. Especially because a typed non-generic instruction does not make sense.
The question is then, is it possible to have that information in a union or something? My initial thought was that we could have a derived class GenericMachineInstr with additional information, but in practice it makes little to no sense since generic MachineInstrs are likely turned into non-generic ones by just switching the opcode. In other words, we don't want to go through the process of creating a new, non-generic MachineInstr, object each time we do this switch. The memory benefit probably is not worth the extra compile time.
Another option would be to keep the type of the MachineInstr in a side table. This would induce an extra indirection though.
Anyway, I will file a PR to discuss about it and remember we need to come back to it at some point.
llvm-svn: 260558
show more ...
|
| #
e1494c35 |
| 11-Feb-2016 |
Quentin Colombet <[email protected]> |
[GlobalISel][MachineRegisterInfo] Add a method to create generic vregs. For now, generic virtual registers will not have a register class. We may want to change that. For instance, if we want to use
[GlobalISel][MachineRegisterInfo] Add a method to create generic vregs. For now, generic virtual registers will not have a register class. We may want to change that. For instance, if we want to use all the methods from TargetRegisterInfo with generic virtual registers, we need to either have some sort of generic register classes that do what we want, or teach those methods how to deal with nullptr register class.
Although the latter seems easy enough to do, we may still want to differenciate generic register classes from nullptr to catch cases where nullptr gets introduced by a bug of some sort.
Anyway, I will file a PR to keep track of that.
llvm-svn: 260474
show more ...
|
| #
36ce1b01 |
| 10-Feb-2016 |
Quentin Colombet <[email protected]> |
[GlobalISel] Remember the size of generic virtual registers
llvm-svn: 260468
|
| #
5923973f |
| 05-Feb-2016 |
Matt Arsenault <[email protected]> |
Fix printing of f16 machine operands
Only single and double FP immediates are correctly printed by MachineInstr::print() during debug output. Half float type goes to APFloat::convertToDouble() and h
Fix printing of f16 machine operands
Only single and double FP immediates are correctly printed by MachineInstr::print() during debug output. Half float type goes to APFloat::convertToDouble() and hits assertion it is not a double semantics. This diff prints half machine operands correctly.
This cannot currently be hit by any in-tree target.
Patch by Stanislav Mekhanoshin
llvm-svn: 259857
show more ...
|
|
Revision tags: llvmorg-3.8.0-rc2 |
|
| #
eb2a2546 |
| 29-Jan-2016 |
Yaron Keren <[email protected]> |
Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. clang part in r259232, this is the LLVM part of the patch.
llvm-svn: 259240
|
|
Revision tags: llvmorg-3.8.0-rc1 |
|
| #
5eb90a78 |
| 06-Jan-2016 |
Philip Reames <[email protected]> |
Consolidate MemRefs handling from BranchFolding and correct latent bug
Move the logic from BranchFolding to use the shared infrastructure for merging MMOs introduced in 256909. This has the effect o
Consolidate MemRefs handling from BranchFolding and correct latent bug
Move the logic from BranchFolding to use the shared infrastructure for merging MMOs introduced in 256909. This has the effect of making BranchFolding more capable.
In the process, fix a latent bug. The existing handling for merging didn't handle the case where one of the instructions being merged had overflowed and dropped MemRefs. This was a latent bug in the places the code was commoned from, but potentially reachable in BranchFolding.
Once this is in, we're left with a single place to consider implementing MMO unique-ing as proposed in http://reviews.llvm.org/D15230.
Differential Revision: http://reviews.llvm.org/D15913
llvm-svn: 256966
show more ...
|
| #
2d2fc4ad |
| 06-Jan-2016 |
Philip Reames <[email protected]> |
Fix a warning [NFC]
llvm-svn: 256916
|
| #
c86ed005 |
| 06-Jan-2016 |
Philip Reames <[email protected]> |
Extract helper function to merge MemoryOperand lists [NFC]
In the discussion on http://reviews.llvm.org/D15730, Andy pointed out we had a utility function for merging MMO lists. Since it turned we a
Extract helper function to merge MemoryOperand lists [NFC]
In the discussion on http://reviews.llvm.org/D15730, Andy pointed out we had a utility function for merging MMO lists. Since it turned we actually had two copies and there's another review in progress (http://reviews.llvm.org/D15230) which needs the same, extract it into a utility function and clean up the interfaces to make it easier to use with a MachineInstBuilder.
I introduced a pair here to track size and allocation together. I think we should probably move in the direction of the MachineOperandsRef helper class, but I'm leaving that for further work. I want to get the poison state introduced before I make major changes to the interface.
Differential Revision: http://reviews.llvm.org/D15757
llvm-svn: 256909
show more ...
|
| #
c47c6ac0 |
| 02-Jan-2016 |
Yaron Keren <[email protected]> |
Correct misleading formatting of several ifs followed by two statements without braces. While the original code would work with or without braces, it makes sense to set HaveSemi to true only if (!Hav
Correct misleading formatting of several ifs followed by two statements without braces. While the original code would work with or without braces, it makes sense to set HaveSemi to true only if (!HaveSemi), otherwise it's already true, so I put the assignment inside the if block. This addresses PR25998.
llvm-svn: 256688
show more ...
|
| #
e5e035a3 |
| 05-Dec-2015 |
Craig Topper <[email protected]> |
Replace uint16_t with the MCPhysReg typedef in many places. A lot of physical register arrays already use this typedef.
llvm-svn: 254843
|
|
Revision tags: llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
| #
2c98d0f4 |
| 11-Nov-2015 |
Matthias Braun <[email protected]> |
MachineInstr: addRegisterDefReadUndef() => setRegisterDefReadUndef()
This way we can not only add but also remove read undef flags.
llvm-svn: 252678
|
| #
5ec1568c |
| 09-Oct-2015 |
Duncan P. N. Exon Smith <[email protected]> |
CodeGen: Continue removing ilist iterator implicit conversions
llvm-svn: 249884
|
| #
0a7d0ad9 |
| 22-Sep-2015 |
NAKAMURA Takumi <[email protected]> |
Untabify.
llvm-svn: 248264
|
| #
a9cb538a |
| 22-Sep-2015 |
NAKAMURA Takumi <[email protected]> |
Reformat blank lines.
llvm-svn: 248263
|
| #
098cd9fb |
| 16-Sep-2015 |
Michael Kuperstein <[email protected]> |
[X86] Fix emitEpilogue() to make less assumptions about pops
This is the mirror image of r242395. When X86FrameLowering::emitEpilogue() looks for where to insert the %esp addition that deallocates s
[X86] Fix emitEpilogue() to make less assumptions about pops
This is the mirror image of r242395. When X86FrameLowering::emitEpilogue() looks for where to insert the %esp addition that deallocates stack space used for local allocations, it assumes that any sequence of pop instructions from function exit backwards consists purely of restoring callee-save registers.
This may be false, since from some point backward, the pops may be clean-up of stack space allocated for arguments to a call.
Patch by: [email protected] Differential Revision: http://reviews.llvm.org/D12688
llvm-svn: 247784
show more ...
|
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3 |
|
| #
1e97a0b3 |
| 19-Aug-2015 |
Daniel Sanders <[email protected]> |
Emit <regmask R1 R2 R3 ...> instead of just <regmask> in IR dumps.
Reviewers: qcolombet
Subscribers: kparzysz, qcolombet, llvm-commits
Differential Revision: http://reviews.llvm.org/D11644
llvm-s
Emit <regmask R1 R2 R3 ...> instead of just <regmask> in IR dumps.
Reviewers: qcolombet
Subscribers: kparzysz, qcolombet, llvm-commits
Differential Revision: http://reviews.llvm.org/D11644
llvm-svn: 245433
show more ...
|
| #
bc7f99a3 |
| 12-Aug-2015 |
Michael Kuperstein <[email protected]> |
[X86] Allow x86 call frame optimization to fold more loads into pushes
This abstracts away the test for "when can we fold across a MachineInstruction" into the the MI interface, and changes call-fra
[X86] Allow x86 call frame optimization to fold more loads into pushes
This abstracts away the test for "when can we fold across a MachineInstruction" into the the MI interface, and changes call-frame optimization use the same test the peephole optimizer users.
Differential Revision: http://reviews.llvm.org/D11945
llvm-svn: 244729
show more ...
|