Displaying 6 results from an estimated 6 matches for "modifiesregister".
2009 Mar 12
4
[LLVMdev] Shrink Wrapping - RFC and initial implementation
...MBB->end
(); ++I) {
+ for (unsigned i = 0, e = CSI.size(); i != e; ++i) {
+ unsigned Reg = CSI[i].getReg();
+ // If instruction I reads or modifies Reg, add it to
UsedCSRegs,
+ // CSRUsed map for the current block.
+ if (I->readsRegister(Reg, TRI) || I->modifiesRegister(Reg,
TRI)) {
readsRegister and modifiesRegister both scan the operands. It's
probably better to manually walk through the operands.
9.
+ // If all uses of CSRegs are in the entry block, there is nothing
+ // to shrink wrap: spills go in entry block, restores go in exiting
+ // blocks,...
2009 Mar 05
0
[LLVMdev] Shrink Wrapping - RFC and initial implementation
Here is an updated patch for shrink wrapping with:
- spills/restores done with stack slot stores/loads
- stack adjustment removed
- refactoring (but still in need of more)
- spill/restore insertion code unified with spill/restore placement code
Documentation available
here<http://wiki.github.com/jdmdj/llvm-work/shrink-wrapping-work>
illustrates shrink
wrapping with loops and discusses a
2009 Mar 03
2
[LLVMdev] Shrink Wrapping - RFC and initial implementation
On Mon, Mar 2, 2009 at 10:35 AM, Evan Cheng <echeng at apple.com> wrote:
>
> On Mar 1, 2009, at 2:57 PM, John Mosby wrote:
>
> Obviously, all of this applies only when spills are done with push/pop,
> which is the case on x86. I used this issue to start looking at generalizing
> how spills and restores are handled, before looking too closely at other
> targets, and
2009 Mar 13
0
[LLVMdev] Shrink Wrapping - RFC and initial implementation
...SI.size(); i != e; ++i) {
>
>
> + unsigned Reg = CSI[i].getReg();
>
>
> + // If instruction I reads or modifies Reg, add it to UsedCSRegs,
>
>
> + // CSRUsed map for the current block.
>
>
> + if (I->readsRegister(Reg, TRI) || I->modifiesRegister(Reg, TRI)) {
>
> readsRegister and modifiesRegister both scan the operands. It's probably
> better to manually walk through the operands.
>
Ok, that helps. I read the code but could not decide which way to do it at
first.
> 9.
> + // If all uses of CSRegs are in the entry...
2009 Mar 18
1
[LLVMdev] Shrink Wrapping - RFC and initial implementation
...> + unsigned Reg = CSI[i].getReg();
>>
>>
>> + // If instruction I reads or modifies Reg, add it to UsedCSRegs,
>>
>>
>> + // CSRUsed map for the current block.
>>
>>
>> + if (I->readsRegister(Reg, TRI) || I->modifiesRegister(Reg, TRI))
>> {
>> readsRegister and modifiesRegister both scan the operands. It's probably
>> better to manually walk through the operands.
>
> Ok, that helps. I read the code but could not decide which way to do it at
> first.
>
>>
>> 9.
>> + /...
2012 Apr 19
0
[LLVMdev] Target Dependent Hexagon Packetizer patch
...>> +static bool DoesModifyCalleeSavedReg(MachineInstr *MI,
>> + const TargetRegisterInfo *TRI) {
>> + for (const uint16_t *CSR = TRI->getCalleeSavedRegs(); *CSR; ++CSR) {
>> + unsigned CalleeSavedReg = *CSR;
>> + if (MI->modifiesRegister(CalleeSavedReg, TRI))
>> + return true;
>> + }
>> + return false;
>> +}
>> +
>> +// Return the new value instruction for a given store.
>> +static int GetDotNewOp(const int opc) {
>> + switch (opc) {
>> + default: llvm_unreachable("...