Displaying 10 results from an estimated 10 matches for "callpreservedmask".
2016 Jun 25
3
Tail call optimization is getting affected due to local function related optimization with IPRA
...eflecting the fact that for local function there are no caller saved
registers
I am also changing RegUsageInfoCollector.cpp to not to mark regiseters as
callee
saved in RegMask due to CC with follwoing change in code:
if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
const uint32_t *CallPreservedMask =
TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
// Set callee saved register as preserved.
for (unsigned i = 0; i < RegMaskSize; ++i)
RegMask[i] = RegMask[i] | CallPreservedMask[i];
}
For more details please follow following link.
https...
2016 Jun 25
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...function there are no caller saved
> registers
> I am also changing RegUsageInfoCollector.cpp to not to mark regiseters as
> callee
> saved in RegMask due to CC with follwoing change in code:
>
> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
> const uint32_t *CallPreservedMask =
> TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
> // Set callee saved register as preserved.
> for (unsigned i = 0; i < RegMaskSize; ++i)
> RegMask[i] = RegMask[i] | CallPreservedMask[i];
> }
>
> For more details p...
2016 Jun 26
3
Tail call optimization is getting affected due to local function related optimization with IPRA
...>> saved registers
>> I am also changing RegUsageInfoCollector.cpp to not to mark regiseters as
>> callee
>> saved in RegMask due to CC with follwoing change in code:
>>
>> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
>> const uint32_t *CallPreservedMask =
>> TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
>> // Set callee saved register as preserved.
>> for (unsigned i = 0; i < RegMaskSize; ++i)
>> RegMask[i] = RegMask[i] | CallPreservedMask[i];
>> }
>>...
2016 Jun 24
2
Suggestion / Help regarding new calling convention
...gUsageInfoCalculator.cpp is having regmask that will make caller to save
restore registers if both callee and caller is using any common register
but this would require following change in RegUsageInfoCalculator.cpp :
if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
const uint32_t *CallPreservedMask =
TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
// Set callee saved register as preserved.
for (unsigned i = 0; i < RegMaskSize; ++i)
RegMask[i] = RegMask[i] | CallPreservedMask[i];
}
because RegUsageInfoCalculator.cpp marks register as p...
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
...or local function there are no caller saved registers
> I am also changing RegUsageInfoCollector.cpp to not to mark regiseters as callee
> saved in RegMask due to CC with follwoing change in code:
>
> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
> const uint32_t *CallPreservedMask =
> TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
> // Set callee saved register as preserved.
> for (unsigned i = 0; i < RegMaskSize; ++i)
> RegMask[i] = RegMask[i] | CallPreservedMask[i];
> }
>
> For more details...
2016 Jun 27
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...s
>>> I am also changing RegUsageInfoCollector.cpp to not to mark regiseters
>>> as callee
>>> saved in RegMask due to CC with follwoing change in code:
>>>
>>> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
>>> const uint32_t *CallPreservedMask =
>>> TRI->getCallPreservedMask(MF,
>>> MF.getFunction()->getCallingConv());
>>> // Set callee saved register as preserved.
>>> for (unsigned i = 0; i < RegMaskSize; ++i)
>>> RegMask[i] = RegMask[i] | CallPreservedMas...
2016 Jun 28
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...also changing RegUsageInfoCollector.cpp to not to mark regiseters
>>>> as callee
>>>> saved in RegMask due to CC with follwoing change in code:
>>>>
>>>> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
>>>> const uint32_t *CallPreservedMask =
>>>> TRI->getCallPreservedMask(MF,
>>>> MF.getFunction()->getCallingConv());
>>>> // Set callee saved register as preserved.
>>>> for (unsigned i = 0; i < RegMaskSize; ++i)
>>>> RegMask[i] = RegMask[i...
2015 Aug 27
2
preserve registers across function call
Hi Marcello,
Thanks for your reply. I will try to pass down the mask!
I have one more question. In my backend I return CSR_RegMask in
getCallPreservedMask and return CSR_SaveList in getCalleeSavedRegs. Is that
a correct setup? I dumped the regmask and found that callee saved regs are
marked 1 and non-callee saved regs are 0.
Thanks,
Xiaochu
On Wed, Aug 26, 2015 at 5:58 PM Marcello Maggioni <mmaggioni at apple.com>
wrote:
> Is the preser...
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
...gUsageInfoCollector.cpp to not to mark regiseters as callee
>>>>>> saved in RegMask due to CC with follwoing change in code:
>>>>>>
>>>>>> if (!F->hasLocalLinkage() || F->hasAddressTaken()) {
>>>>>> const uint32_t *CallPreservedMask =
>>>>>> TRI->getCallPreservedMask(MF, MF.getFunction()->getCallingConv());
>>>>>> // Set callee saved register as preserved.
>>>>>> for (unsigned i = 0; i < RegMaskSize; ++i)
>>>>>> RegMask...
2016 Jun 20
7
Suggestion / Help regarding new calling convention
Dear Community,
To improve current interprocedural register allocation (IPRA) , we have
planned to set callee saved registers to none for local functions,
currently I am doing it in following way:
if (F->hasLocalLinkage() && !F->hasAddressTaken()) {
DEBUG(dbgs() << "Function has LocalLinkage \n");
F->setCallingConv(CallingConv::GHC);
}
but we think threre