search for: regusageinfocollector

Displaying 20 results from an estimated 23 matches for "regusageinfocollector".

2016 Jun 25
3
Tail call optimization is getting affected due to local function related optimization with IPRA
...local). To achive it I have modified TargetFrameLowering::determineCalleeSaves() to return early for function which satisfies if (F->hasLocalLinkage() && !F->hasAddressTaken()) and also reflecting 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 calle...
2016 Jun 25
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...odified TargetFrameLowering::determineCalleeSaves() to return > early for > function which satisfies if (F->hasLocalLinkage() && > !F->hasAddressTaken()) and > also reflecting 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()->getCalli...
2016 Jun 26
3
Tail call optimization is getting affected due to local function related optimization with IPRA
...ing::determineCalleeSaves() to return >> early for >> function which satisfies if (F->hasLocalLinkage() && >> !F->hasAddressTaken()) and >> also reflecting 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.ge...
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
...t > I have modified TargetFrameLowering::determineCalleeSaves() to return early for > function which satisfies if (F->hasLocalLinkage() && !F->hasAddressTaken()) and > also reflecting 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()->getCallingCo...
2016 Jun 27
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...s() to return >>> early for >>> function which satisfies if (F->hasLocalLinkage() && >>> !F->hasAddressTaken()) and >>> also reflecting 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->getCal...
2016 Jun 28
0
Tail call optimization is getting affected due to local function related optimization with IPRA
...t;> early for >>>> function which satisfies if (F->hasLocalLinkage() && >>>> !F->hasAddressTaken()) and >>>> also reflecting 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 = >>>&gt...
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
...aves() to return early for >>>>>> function which satisfies if (F->hasLocalLinkage() && !F->hasAddressTaken()) and >>>>>> also reflecting 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 =...
2017 Jan 11
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
...nctional issue. The analysis must run in order to be compatible with other compilers. 2. IPRA passes are not enabled by default and when they are enabled many tests fail due to various reasons (mainly because the CallGraph bottom up approach). 3. The manipulated RegMasks generated using RegUsageInfoCollector are very different than the manipulated RegMasks that I need. It will be an abuse to change the current pass implementation. So new pass is required. 4. When dumping the MIR after running IPRA passes, assertion is raised because the RegMask name is unknown (same issue that I face with my solu...
2017 Jan 12
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
...nctional issue. The analysis must run in order to be compatible with other compilers. 2. IPRA passes are not enabled by default and when they are enabled many tests fail due to various reasons (mainly because the CallGraph bottom up approach). 3. The manipulated RegMasks generated using RegUsageInfoCollector are very different than the manipulated RegMasks that I need. It will be an abuse to change the current pass implementation. So new pass is required. 4. When dumping the MIR after running IPRA passes, assertion is raised because the RegMask name is unknown (same issue that I face with my solu...
2016 Jun 12
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...st part for this week was to get lit and FileCheck work as you > expect them to work, specially when analysis pass prints info on stdio and > there is also a output file generated by llc or opt command. > > So here is brief summary : > > Implementation: > ============ > > RegUsageInfoCollector is now Calling Convention aware so that RegMask does > not mark callee saved register as clobbered register. Due to this register > allocator can use callee saved register for caller. > PhysicalRegisterUsageInfo.cpp renamed to RegisterUsageInfo.cpp. > StringMap used in RegisterUsageInfo...
2016 May 28
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
Dear community, This is to brief you the progress of Interprocedural Register Allocation, for those who are interested to see the progress in terms of code please consider http://reviews.llvm.org/D20769 This patch contains simple infrastructure to propagate register usage information of callee to caller in call graph. The code generation order is changed to follow bottom up order on call graph ,
2016 Jun 29
0
Tail call optimization is getting affected due to local function related optimization with IPRA
I have tried out the following code which examines each call site in a module for tail call and do not perform optimization in such case: On Wed, Jun 29, 2016 at 12:34 AM, Mehdi Amini <mehdi.amini at apple.com> wrote: > > On Jun 28, 2016, at 3:01 PM, Matthias Braun <matze at braunis.de> wrote: > > > On Jun 28, 2016, at 11:34 AM, Mehdi Amini via llvm-dev < >
2016 Jun 15
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...and FileCheck work as you >> expect them to work, specially when analysis pass prints info on stdio and >> there is also a output file generated by llc or opt command. >> >> So here is brief summary : >> >> Implementation: >> ============ >> >> RegUsageInfoCollector is now Calling Convention aware so that RegMask >> does not mark callee saved register as clobbered register. Due to this >> register allocator can use callee saved register for caller. >> PhysicalRegisterUsageInfo.cpp renamed to RegisterUsageInfo.cpp. >> StringMap used in R...
2017 Jan 12
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
...nctional issue. The analysis must run in order to be compatible with other compilers. 2. IPRA passes are not enabled by default and when they are enabled many tests fail due to various reasons (mainly because the CallGraph bottom up approach). 3. The manipulated RegMasks generated using RegUsageInfoCollector are very different than the manipulated RegMasks that I need. It will be an abuse to change the current pass implementation. So new pass is required. 4. When dumping the MIR after running IPRA passes, assertion is raised because the RegMask name is unknown (same issue that I face with my solu...
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
> On Jun 28, 2016, at 3:01 PM, Matthias Braun <matze at braunis.de> wrote: > >> >> On Jun 28, 2016, at 11:34 AM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: >> >> >> >> Sent from my iPhone >> >> On Jun 28, 2016, at 2:27 PM, Matthias Braun <matze at braunis.de
2017 Jan 12
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
...nctional issue. The analysis must run in order to be compatible with other compilers. 2. IPRA passes are not enabled by default and when they are enabled many tests fail due to various reasons (mainly because the CallGraph bottom up approach). 3. The manipulated RegMasks generated using RegUsageInfoCollector are very different than the manipulated RegMasks that I need. It will be an abuse to change the current pass implementation. So new pass is required. 4. When dumping the MIR after running IPRA passes, assertion is raised because the RegMask name is unknown (same issue that I face with my solu...
2016 Jun 19
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...ly when analysis pass prints info on stdio >>>> and there is also a output file generated by llc or opt command. >>>> >>>> So here is brief summary : >>>> >>>> Implementation: >>>> ============ >>>> >>>> RegUsageInfoCollector is now Calling Convention aware so that RegMask >>>> does not mark callee saved register as clobbered register. Due to this >>>> register allocator can use callee saved register for caller. >>>> PhysicalRegisterUsageInfo.cpp renamed to RegisterUsageInfo.cpp. >...
2016 Jul 13
6
IPRA, interprocedural register allocation, question
Vivek, I apologize if you took my original email as a request for implementation, I meant to be asking what is already available, I think the answer to that is the ‘preserves_most’ and ‘preserves_all’ attributes, but I will also Use ‘regmask’ if those prove to be too sub-optimal. I am still interested in figuring out the necessary and sufficient conditions For LLC to do optimal IPRA
2016 Jul 25
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...at gmail.com> for bringing this > to notice. > > For example if CL is only clobbered than CH should not be marked clobbered > but CX, RCX and ECX should be mark clobbered. Previously for each modified > register all of its aliases are marked clobbered by markRegClobbred() in > RegUsageInfoCollector.cpp but that is wrong because when CL is clobbered > then MRI::isPhysRegModified() will return true for CL, CX, ECX, RCX which > is correct behavior but then for CX, EXC, RCX we mark CH also clobbered as > CH is aliased to CX,ECX,RCX so markRegClobbred() is not required because > isPhys...
2016 Jul 10
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
Hello LLVM Developers, Please feel free to send any ideas that you can think to improve current IPRA. I will work on it and if possible I will implement that. Please consider summary of work done during this week. Implementation: ============ The reviews requests has been updated to reflect the reviews. Testing: ===== To get more benefit from IPRA I experimented it with LTO and results