search for: isphysregmodified

Displaying 20 results from an estimated 21 matches for "isphysregmodified".

2016 Jun 26
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...Please follow summary of work done during this week. Implementation: ============ During this week patch for bug fix 28144 is updated after finding more refinement in remarks calculation. As per suggestion from Matthias Braun and Hal Finkel regmask calculation code is same as MachineRegisterInfo::isPhysRegModified() except no check of isNoReturnDef() is required. So we proposed to add a bool argument SkipNoReturnDef with default value false to isPhysRegModified method so that with out breaking current use of isPhysRegModified we can reuse that code for the purpose of IPRA. The patch can be found here : http:...
2016 Jun 21
0
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
On Tue, Jun 21, 2016 at 1:45 AM, Matthias Braun <matze at braunis.de> wrote: > > > On Jun 20, 2016, at 12:53 PM, Sanjoy Das via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > > > > Hi Vivek, > > > > vivek pandya via llvm-dev wrote: > > > int foo() { > > > return 12; > > > } > > > > > >
2016 Jul 10
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...Implementation: >> ============ >> >> During this week patch for bug fix 28144 is updated after finding more >> refinement in remarks calculation. As per suggestion from Matthias Braun >> and Hal Finkel regmask calculation code is same as >> MachineRegisterInfo::isPhysRegModified() except no check of isNoReturnDef() >> is required. So we proposed to add a bool argument SkipNoReturnDef with >> default value false to isPhysRegModified method so that with out breaking >> current use of isPhysRegModified we can reuse that code for the purpose of >> IPRA....
2016 Jul 25
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...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 > isPhysRegModified already take cares of proper aliasing register. A very > simple test...
2016 Jun 20
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
> On Jun 20, 2016, at 12:53 PM, Sanjoy Das via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hi Vivek, > > vivek pandya via llvm-dev wrote: > > int foo() { > > return 12; > > } > > > > int bar(int a) { > > return foo() + a; > > } > > > > int (*fp)() = 0; > > int (*fp1)(int) = 0;
2016 May 24
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...(), e = (*TRI).regclass_end(); i != e; i++ ) { for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = (*i)->end(); pregi != prege; pregi++ ) { DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); } } DEBUG(dbgs() << "\n"); The pass which is executing this code is schedule POST-RA stage but this gives me true for all registers i.e in each function all registers are being used except EBP and some other similar, Is this a correct way to get r...
2016 May 24
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...ass_end(); i != e; i++ ) { > for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = > (*i)->end(); pregi != prege; pregi++ ) { > DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " > is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); Try isPhysRegUsed. > } > } > DEBUG(dbgs() << "\n"); > The pass which is executing this code is schedule POST-RA stage but > this gives me true for all registers i.e in each function all > registers are being used except EBP and...
2016 May 25
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...ass_end(); i != e; i++ ) { > for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = > (*i)->end(); pregi != prege; pregi++ ) { > DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is > modified "<< MRI->isPhysRegModified(*pregi) << " \n"); > > Try isPhysRegUsed. > ok > > } > } > DEBUG(dbgs() << "\n"); > > The pass which is executing this code is schedule POST-RA stage but this > gives me true for all registers i.e in each function all registers are >...
2016 May 25
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...)->begin(), prege = > > > (*i)->end(); pregi != prege; pregi++ ) { > > > > > > DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) > > > << > > > " > > > is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); > > > > > Try isPhysRegUsed. > > ok > > > } > > > > > > } > > > > > > DEBUG(dbgs() << "\n"); > > > > > > The pass which is executing this code is schedule...
2016 May 25
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...e; i++ ) { >> for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = >> (*i)->end(); pregi != prege; pregi++ ) { >> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is >> modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >> >> Try isPhysRegUsed. >> > ok > >> >> } >> } >> DEBUG(dbgs() << "\n"); >> >> The pass which is executing this code is schedule POST-RA stage but this >> gives me true for all regi...
2016 May 18
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...ask from MachineRegisterInfo ?? > > No, like the comment said, UsedPhysRegMask gives only the registers clobbered by calls: > // This bit vector represents all the registers clobbered by function calls. > > You want to build this information yourself on top of MachineRegisterInfo::isPhysRegModified > Ok but then the time complexity will be O(n) n = number of physical register on the target. Am I going correct? Yes, this is correct. >> >> Here getCallPreservedMask will call API provided by MachineRegisterUsageInfo to avail the exact register mask but how it can know that th...
2016 May 18
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...gisterInfo ?? > > > No, like the comment said, UsedPhysRegMask gives only the registers > clobbered by calls: > // This bit vector represents all the registers clobbered by function > calls. > > You want to build this information yourself on top of MachineRegisterInfo:: > isPhysRegModified > Ok but then the time complexity will be O(n) n = number of physical register on the target. Am I going correct? > > Here getCallPreservedMask will call API provided by > MachineRegisterUsageInfo to avail the exact register mask but how it can > know that the function is already co...
2016 May 25
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...gt;> for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = >>> (*i)->end(); pregi != prege; pregi++ ) { >>> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is >>> modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >>> >>> Try isPhysRegUsed. >>> >> ok >> >>> >>> } >>> } >>> DEBUG(dbgs() << "\n"); >>> >>> The pass which is executing this code is schedule POST-RA stage...
2016 May 25
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...regclass_end(); i != e; i++ ) { > for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = (*i)->end(); pregi != prege; pregi++ ) { > DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); > Try isPhysRegUsed. > ok > > } > } > DEBUG(dbgs() << "\n"); > > The pass which is executing this code is schedule POST-RA stage but this gives me true for all registers i.e in each function all registers are being u...
2016 May 25
3
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
..._end(); i != e; i++ ) { >> for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = (*i)->end(); pregi != prege; pregi++ ) { >> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >> Try isPhysRegUsed. >> ok >> >> } >> } >> DEBUG(dbgs() << "\n"); >> >> The pass which is executing this code is schedule POST-RA stage but this gives me true for all registers i.e in each fu...
2016 May 25
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...TargetRegisterClass::iterator pregi = (*i)->begin(), prege = >>>> (*i)->end(); pregi != prege; pregi++ ) { >>>> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " >>>> is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >>>> >>>> Try isPhysRegUsed. >>>> >>> ok >>> >>>> >>>> } >>>> } >>>> DEBUG(dbgs() << "\n"); >>>> >>>> The pass which is ex...
2016 May 25
2
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...>> for(TargetRegisterClass::iterator pregi = (*i)->begin(), prege = (*i)->end(); pregi != prege; pregi++ ) { >>>>>>>> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >>>>>>>> Try isPhysRegUsed. >>>>>>> ok >>>>>>>> >>>>>>>> } >>>>>>>> } >>>>>>>> DEBUG(dbgs() << "\n")...
2016 May 25
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...erClass::iterator pregi = (*i)->begin(), prege = >>>>> (*i)->end(); pregi != prege; pregi++ ) { >>>>> DEBUG( dbgs() << "Physical Register : " << MCRI->getName(*pregi) << " >>>>> is modified "<< MRI->isPhysRegModified(*pregi) << " \n"); >>>>> >>>>> Try isPhysRegUsed. >>>>> >>>> ok >>>> >>>>> >>>>> } >>>>> } >>>>> DEBUG(dbgs() << "\n"); >>>>&g...
2016 May 25
0
[GSoC 2016] Interprocedural Register Allocation - Introduction and Feedback
...lt; > > > > > > > > > > > MCRI->getName(*pregi) > > > > > > > > > > > << > > > > > > > > > > > " > > > > > > > > > > > is modified "<< MRI->isPhysRegModified(*pregi) << > > > > > > > > > > > " > > > > > > > > > > > \n"); > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > &...
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