Displaying 20 results from an estimated 3000 matches similar to: "[LLVMdev] Register mask operands"
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
2016 Jun 28
0
Tail call optimization is getting affected due to local function related optimization with IPRA
> On Jun 28, 2016, at 10:09 AM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
>
>
> Sent from my iPhone
>
> On Jun 28, 2016, at 12:53 PM, vivek pandya <vivekvpandya at gmail.com <mailto:vivekvpandya at gmail.com>> wrote:
>
>>
>>
>> On Tue, Jun 28, 2016 at 8:11 PM, Mehdi Amini <mehdi.amini at apple.com
2015 Aug 27
2
preserve registers across function call
Dear there,
I was wondering how to preserve registers (caller saved) across calls. I
implemented getCalleeSavedRegs and getCallPreservedMask. But the
non-callee-saved registers are still not saved by caller. I want to spill
these registers in use on stack right before the call. From my
understanding, the register allocator in llvm will do the spill and
restoring automatically? Is there anything I
2020 Apr 15
4
[ARM] Register pressure with -mthumb forces register reload before each call
Hi,
I have attached WIP patch for adding foldMemoryOperand to Thumb1InstrInfo.
For the following case:
void f(int x, int y, int z)
{
void bar(int, int, int);
bar(x, y, z);
bar(x, z, y);
bar(y, x, z);
bar(y, y, x);
}
it calls foldMemoryOperand twice, and thus converts two calls from blx to bl.
callMI->dump() shows the function name "bar" correctly, however in
generated
2016 Jun 28
2
Tail call optimization is getting affected due to local function related optimization with IPRA
Sent from my iPhone
> On Jun 28, 2016, at 2:27 PM, Matthias Braun <matze at braunis.de> wrote:
>
>
>> On Jun 28, 2016, at 10:09 AM, Mehdi Amini via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>
>>
>>
>> Sent from my iPhone
>>
>>> On Jun 28, 2016, at 12:53 PM, vivek pandya <vivekvpandya at gmail.com> wrote:
2020 Mar 31
2
[ARM] Register pressure with -mthumb forces register reload before each call
Hi,
Compiling attached test-case, which is reduced version of of
uECC_shared_secret from tinycrypt library [1], with
--target=arm-linux-gnueabi -march=armv6-m -Oz -S
results in reloading of register holding function's address before
every call to blx:
ldr r3, .LCPI0_0
blx r3
mov r0, r6
mov r1, r5
mov r2, r4
ldr r3,
2012 Dec 17
0
[LLVMdev] Query Regarding instruction ordering of passive nodes
Hi All,
I'm trying to compile the attached code(gdb11531.c) with latest clang with -O0 on ARM.
Clang seems to be reordering the instructions in case of constant nodes(for ARM) even when O0 is specified resulting in few wrong information when debugging through GDB.
I had few queries,would be great if someone could clarify the same -
In the given assembly code, the instructions where constant
2012 Aug 01
0
[LLVMdev] Request for merge: GHC/ARM calling convention.
On Jun 24, 2012, at 7:18 AM, Karel Gardas <karel.gardas at centrum.cz> wrote:
>
> Hello,
>
> first of all: one of the LLVM 3.0 new feature was a support for GHC specific calling convention on ARM platform. It looks like this support was merged just into 3.0 branch, specifically it appeared in 3.0 RC2.
> Anyway, I hope this is just a mistake or omission that such support was
2010 Oct 20
0
[LLVMdev] llvm register reload/spilling around calls
On Oct 19, 2010, at 6:37 PM, Roland Scheidegger wrote:
> Thanks for giving it a look!
>
> On 19.10.2010 23:21, Jakob Stoklund Olesen wrote:
>> On Oct 19, 2010, at 11:40 AM, Roland Scheidegger wrote:
>>
>>> So I saw that the code is doing lots of register
>>> spilling/reloading. Now I understand that due to calling
>>> conventions, there's not
2012 Jun 24
4
[LLVMdev] Request for merge: GHC/ARM calling convention.
Hello,
first of all: one of the LLVM 3.0 new feature was a support for GHC
specific calling convention on ARM platform. It looks like this support
was merged just into 3.0 branch, specifically it appeared in 3.0 RC2.
Anyway, I hope this is just a mistake or omission that such support was
merged only into 3.0 and not also into HEAD. I've just found it by
testing LLVM 3.1 with GHC 7.4.2 and
2012 Apr 20
2
[LLVMdev] CriticalAntiDepBreaker rewrites a register operand of a call instruction
I am running into a problem when I turn on post-RA scheduler with mode
"ANTIDEP_CRITICAL" for mips.
I'd appreciate if someone could explain what is going wrong here.
This is the basic block before post RA scheduling (at
PostRASchedulerList.cpp:322):
*(gdb)
#3 0x0000000000ed3d26 in runOnMachineFunction (this=0x20aa470, Fn=...)
at lib/CodeGen/PostRASchedulerList.cpp:322
322
2016 May 28
1
Updating RegMask inline
Sent from my iPhone
> On May 27, 2016, at 6:55 PM, vivek pandya <vivekvpandya at gmail.com> wrote:
>
>
>
>> On Sat, May 28, 2016 at 12:23 AM, vivek pandya <vivekvpandya at gmail.com> wrote:
>>
>>
>>> On Sat, May 28, 2016 at 12:21 AM, Mehdi Amini <mehdi.amini at apple.com> wrote:
>>>
>>> > On May 27, 2016, at 11:49
2016 May 28
1
Updating RegMask inline
Sent from my iPhone
> On May 27, 2016, at 7:02 PM, vivek pandya <vivekvpandya at gmail.com> wrote:
>
>
>
>> On Sat, May 28, 2016 at 7:29 AM, Matthias Braun <matze at braunis.de> wrote:
>>
>>> On May 27, 2016, at 6:55 PM, vivek pandya via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>>
>>>
>>>
>>> On
2016 May 27
0
Updating RegMask inline
> On May 27, 2016, at 11:49 AM, vivek pandya <vivekvpandya at gmail.com> wrote:
>
> Hello Mentors,
>
> I have completed writing simple register mask calculator pass, an immutable pass that stores RegMasks and provides API to query them, and a target specific pass for X86 target which currently iterates through all MI in given MF and if a call instruction is found then it
2016 May 27
2
Updating RegMask inline
Hello Mentors,
I have completed writing simple register mask calculator pass, an immutable
pass that stores RegMasks and provides API to query them, and a target
specific pass for X86 target which currently iterates through all MI in
given MF and if a call instruction is found then it quires for RegMask to
Immutable pass and prints which registers are clobbered and preserved as
per actual
2016 May 28
0
Updating RegMask inline
On Sat, May 28, 2016 at 12:23 AM, vivek pandya <vivekvpandya at gmail.com>
wrote:
>
>
> On Sat, May 28, 2016 at 12:21 AM, Mehdi Amini <mehdi.amini at apple.com>
> wrote:
>
>>
>> > On May 27, 2016, at 11:49 AM, vivek pandya <vivekvpandya at gmail.com>
>> wrote:
>> >
>> > Hello Mentors,
>> >
>> > I have
2017 Jan 11
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
Hi Mehdi,
I wasn’t familiar with IPRA before, thank you for bringing it up.
After studying it, I have to say that IPRA is a wonderful idea and is well implemented.
I tried to reuse the mechanism for the last couple of days.
I implemented a solution using IPRA mechanism and encountered few issues:
1. IPRA uses immutable analysis pass called “PhysicalRegisterUsageInfo”. The usage of such
2017 Jan 12
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
Here in an example that explains the difference.
// Only declaration – No implementation
// Assume that the value is returned in EAX and the arguments are passed in EAX, ECX, EDX, ESI, EDI.
int __regcall callee (int a, int b, int c, int d, int e);
// implemented in a different module
void caller() {
…
x = callee(1,2,3,4,5);
…
}
What will be RegMask using IPRA register usage collector?
Callee
2017 Jan 12
2
RFC: Dynamically Allocated "Callee Saved Registers" Lists
Hi Mehdi,
I think that the subject of the RFC is misleading.
The true problem that we are trying to solve is to remove returned/passed arguments from the regmask (According to the calling convention).
IPRA and CC updated RegMask can’t use the same mechanism because they contradict each other.
I think that the following analog will help to explain why I think that a reuse is redundant:
Let’s
2013 Nov 22
0
[LLVMdev] PrologEpilogProblems;
After PrologEpilogCodeInserter I found that the instructions that restore callee saved registers S0,S1,LR are in the wrong location ,the instructions are:
%S0<def> = LD %SP, 36; mem:LD4[FixedStack2]
%S1<def> = LD %SP, 40; mem:LD4[FixedStack1]
%LR<def> = LD %SP, 44; mem:LD4[FixedStack0]
(LR is the Return address register)
the whole code of print-machineinstrs are:
# After