search for: preserve_all

Displaying 20 results from an estimated 20 matches for "preserve_all".

2016 Jul 28
1
A thought to improve IPRA
...e i.e saving and restoring all used register by such cold function so caller of that function will have more free registers. So here I am changing standard callee saved registers set to a set which will be decided dynamically based on the actual register usage. Is it different from something like “preserve_all”? > > I am facing few problems to get this working: > 1 ) While generating CFI for such function it requires to map Dwarf register to LLVM register and even if we force LLVM to use Dwarf register number for CFI then also it will be wrong for some register for which currently we don'...
2016 Jul 08
2
IPRA, interprocedural register allocation, question
On Fri, Jul 8, 2016 at 9:47 AM, Lawrence, Peter <c_plawre at qca.qualcomm.com> wrote: > Vivek, > > I am looking into these function attributes in the clang docs > > Preserve_most > > Preserve_all > > They are not available in the 3.6.2 that I am currently using, but I hope > they exist in 3.8 > > > > These should provide enough info to solve my problem, > > at the MC level calls to functions with these attributes > > with be code-gen’ed through different “c...
2016 Jul 09
3
IPRA, interprocedural register allocation, question
...pandya at gmail.com>> wrote: On Fri, Jul 8, 2016 at 9:47 AM, Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>> wrote: Vivek, I am looking into these function attributes in the clang docs Preserve_most Preserve_all They are not available in the 3.6.2 that I am currently using, but I hope they exist in 3.8 These should provide enough info to solve my problem, at the MC level calls to functions with these attributes with be code-gen’ed through different “calling conventions”, and CALL instructions to them sho...
2016 Jul 08
2
IPRA, interprocedural register allocation, question
> On Jul 7, 2016, at 9:17 PM, Lawrence, Peter via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Vivek, > I am looking into these function attributes in the clang docs > Preserve_most > Preserve_all > They are not available in the 3.6.2 that I am currently using, but I hope they exist in 3.8 > > These should provide enough info to solve my problem, > at the MC level calls to functions with these attributes > with be code-gen’ed through different “calling conventions”, > an...
2016 Jul 12
2
IPRA, interprocedural register allocation, question
...pandya at gmail.com>> wrote: On Fri, Jul 8, 2016 at 9:47 AM, Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>> wrote: Vivek, I am looking into these function attributes in the clang docs Preserve_most Preserve_all They are not available in the 3.6.2 that I am currently using, but I hope they exist in 3.8 These should provide enough info to solve my problem, at the MC level calls to functions with these attributes with be code-gen’ed through different “calling conventions”, and CALL instructions to them sho...
2016 Jul 12
3
IPRA, interprocedural register allocation, question
...pandya at gmail.com>> wrote: On Fri, Jul 8, 2016 at 9:47 AM, Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>> wrote: Vivek, I am looking into these function attributes in the clang docs Preserve_most Preserve_all They are not available in the 3.6.2 that I am currently using, but I hope they exist in 3.8 These should provide enough info to solve my problem, at the MC level calls to functions with these attributes with be code-gen’ed through different “calling conventions”, and CALL instructions to them sho...
2016 Jul 06
3
IPRA, interprocedural register allocation, question
Hello Peter, Thanks to pointing out this interesting case. > Vivek, > I have an application where many of the leaf functions are > Hand-coded assembly language, because they use special IO instructions > That only the assembler knows about. These functions typically don't > Use any registers besides the incoming argument registers, IE they don't > Need to
2016 Jul 12
3
IPRA, interprocedural register allocation, question
...pandya at gmail.com>> wrote: On Fri, Jul 8, 2016 at 9:47 AM, Lawrence, Peter <c_plawre at qca.qualcomm.com<mailto:c_plawre at qca.qualcomm.com>> wrote: Vivek, I am looking into these function attributes in the clang docs Preserve_most Preserve_all They are not available in the 3.6.2 that I am currently using, but I hope they exist in 3.8 These should provide enough info to solve my problem, at the MC level calls to functions with these attributes with be code-gen’ed through different “calling conventions”, and CALL instructions to them sho...
2016 Jul 15
4
RFC: To add __attribute__((regmask("preserve/clobbered list here"))) in clang
Hello Clang and LLVM Devs, I have been working to add support for an attribute in clang and LLVM that helps user to guide interprocedural register allocation. But the use case I am having is very limited and thus I belieave it is good to have discussion on this before sending a patch. So for IPRA we have a situation where a function is calling a function which is written in assembly and it is
2018 Nov 02
2
XMMs unused
On Fri, Nov 2, 2018 at 3:31 PM Anton Korobeynikov <anton at korobeynikov.info> wrote: > > Yes, I am compiling for linux system. > > So the RA will not consider assigning a scratch register to a live range > crossing function call, though it may reduce spills? > Well, it has to spill the register – otherwise it could be clobbered by a > call. May be, I haven't
2016 Jul 25
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...lared in the module. One such case > is when functions written in pure assembly is used inside current module > because in such a case if this attribute is not present IPRA will use CC so > it will limit performance benefits from IPRA. Alternatively in this > particular case one can use preserve_all or preserve_most attribute > specified with clang to help IPRA but I believe in some case user may not > be able to describe register usage with such CC then attribute “regmask” > can help. > > For this support I needed to hack clang and LLVM both. How ever it seems > that applica...
2016 Jul 29
0
A thought to improve IPRA
...s it will add 8 only once. > > > > > 2) R8D is a 48 bit register > > Why do you say that? For one thing, it is in a register class GR32 and > holds only 32-bit values. > Sorry this is my bad R8D is 32 bit value. To get this working changing CC for cold functions to "preserve_all" seems to be easy and safe way. Let me know your thought about this. -Vivek > > -Hal > > > but pushing and popping such register is > > not allowed and current implementation for CalleeSaved Register also > > uses either 64 bit or 32 bit version of X86 instruction...
2016 Jul 29
2
A thought to improve IPRA
...t; > > > > > 2) R8D is a 48 bit register > > > Why do you say that? For one thing, it is in a register class GR32 > > and holds only 32-bit values. > > Sorry this is my bad R8D is 32 bit value. To get this working > changing CC for cold functions to "preserve_all" seems to be easy > and safe way. Let me know your thought about this. Sounds like a reasonable thing to try. -Hal > -Vivek > > -Hal > > > > but pushing and popping such register is > > > > not allowed and current implementation for CalleeSaved Regist...
2016 Jul 28
0
A thought to improve IPRA
I have been working on PGO driven IPRA and I want to measure if this help to reduce execution time. So as mentioned earlier the idea is to make cold function register usage free i.e saving and restoring all used register by such cold function so caller of that function will have more free registers. So here I am changing standard callee saved registers set to a set which will be decided
2016 Aug 05
2
A thought to improve IPRA
...t will add 8 only once. > > > > > > 2) R8D is a 48 bit register > > Why do you say that? For one thing, it is in a register class GR32 and holds only 32-bit values. > Sorry this is my bad R8D is 32 bit value. To get this working changing CC for cold functions to "preserve_all" seems to be easy and safe way. Let me know your thought about this. > Sounds like a reasonable thing to try. > > -Hal > > > -Vivek > > -Hal > > > but pushing and popping such register is > > not allowed and current implementation for CalleeSaved R...
2016 Jul 29
2
A thought to improve IPRA
----- Original Message ----- > From: "vivek pandya" <vivekvpandya at gmail.com> > To: "Mehdi Amini" <mehdi.amini at apple.com> > Cc: "llvm-dev" <llvm-dev at lists.llvm.org>, "Hal Finkel" <hfinkel at anl.gov>, "Quentin Colombet" <qcolombet at apple.com> > Sent: Thursday, July 28, 2016 2:59:02 PM >
2016 Jul 08
3
A thought to improve IPRA
On Sat, Jul 9, 2016 at 12:18 AM, Mehdi Amini <mehdi.amini at apple.com> wrote: > > On Jul 8, 2016, at 11:41 AM, vivek pandya <vivekvpandya at gmail.com> wrote: > > > > On Fri, Jul 8, 2016 at 11:46 PM, Mehdi Amini <mehdi.amini at apple.com> > wrote: > >> >> On Jul 8, 2016, at 11:12 AM, vivek pandya <vivekvpandya at gmail.com> wrote:
2016 Aug 16
2
A thought to improve IPRA
...gister >>>> >>>> Why do you say that? For one thing, it is in a register class GR32 and >>>> holds only 32-bit values. >>>> >>> Sorry this is my bad R8D is 32 bit value. To get this working changing >>> CC for cold functions to "preserve_all" seems to be easy and safe way. Let >>> me know your thought about this. >>> >>> Sounds like a reasonable thing to try. >>> >>> -Hal >>> >>> >>> -Vivek >>> >>>> >>>> -Hal >>>>...
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 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