Displaying 20 results from an estimated 200 matches similar to: "[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan"
2011 Dec 05
1
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
Hi Alok,
Echoing Anton's statements, please provide a testcase! :)
Apart from that, looking at your patch and description I actually think that it is estimateRSStackSizeLimit that is wrong.
It is performing a check for a Thumb2 addressing mode whether the target has a FP register. That's the main check - for some reason it is appending another check AFI->hasStackFrame() which seems
2011 Dec 05
0
[LLVMdev] bug in ARMFrameLowering.cpp:processFunctionBeforeCalleeSavedScan
Hello Alok,
> I fixed this by performing the CanEliminateFrame and
> RegInfo->cannotEliminateFrame checks before the call to
> estimateRSSStackSizeLimit, since these values are available before BigStack
> is initialized. Does that sound reasonable? I’ve attached a patch with my
> change.
Will you please provide a testcase which reproduces the problem?
Thanks!
--
With best
2013 Oct 21
1
[LLVMdev] [PATCH] Unwanted r11 in push/pop on Cortex-M.
To recap, this is what I was trying to solve:
This C code:
int bar(int a, int b, int c, int d, int e, int f);
int foo(int a, int b, int c, int d, int e )
{
int x = 3*a;
return bar3(a,b,c,d,e,x);
}
Produced the following assembly output:
foo:
push {r11, lr}
sub sp, #8
bl bar
add sp, #8
pop {r11, pc}
The part I didn't like is that push/pop become
2012 Dec 07
0
[LLVMdev] Increase the number of registers in ARM
> I almost change all the instruction formats. It was a huge work. I am going
> to compile and run it now.
We have done the similar work[1] on this topic by gcc and we have
start migrate our platform to LLVM.
In my experience, you need to take care the follow part:
* ARMBaseRegisterInfo::getRegPressureLimit
* ARMBaseRegisterInfo::getRawAllocationOrder
* CalleeSavedRegs
*
2013 Oct 15
2
[LLVMdev] Unwanted push/pop on Cortex-M.
Hi Andrea,
That is because the LR is the fixed register as per the
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042e/IHI0042E_aapcs.pdf
and out_char() function is not the leaf function ,Hence compiler
tends to save and restore the LR and the save and restore of
register r11 is to align stack for 8 bytes as per ARM EABI.
Thanks
~Umesh
On Tuesday, October 15, 2013, Umesh Kalappa
2013 Oct 15
1
[LLVMdev] Unwanted push/pop on Cortex-M.
Hi andrea,
R11 treated as frame pointer at arm backend , which is fixed again .
Thanks
Umesh
On Tuesday, October 15, 2013, Andrea Mucignat <andrea at nestlabs.com> wrote:
> Umesh,
> Makes some sort of sense to me, OTOH:
> If instead of choosing r11 as a "dummy" to align the stack we had chosen
some other register in the range r0-r7 then we could have emitted the PUSH
2013 Oct 15
0
[LLVMdev] Unwanted push/pop on Cortex-M.
Umesh,
Makes some sort of sense to me, OTOH:
If instead of choosing r11 as a "dummy" to align the stack we had chosen
some other register in the range r0-r7 then we could have emitted the PUSH
encoding T1 (2 bytes opcode) as opposed to the encoding T2 (which is a 4
bytes opcode).
A
On Tue, Oct 15, 2013 at 2:59 AM, Umesh Kalappa <umesh.kalappa0 at gmail.com>wrote:
> Hi
2010 Mar 29
3
[LLVMdev] Patch - Big stacks on SPU, take 2
Hi,
attached is a second try for the bigstack patch for SPU, with testcase. It is
essentially the patch committed as 97091, and reverted as 97099, but with the
following additions:
-in vararg handling, registers are marked to be live, to not confuse the
register scavenger
-function prologue and epilogue are not emitted, if the stack size is 16. 16
means it is empty - there is only the
2012 Dec 07
2
[LLVMdev] Increase the number of registers in ARM
I almost change all the instruction formats. It was a huge work. I am going
to compile and run it now.
Best Regards,
A. Yazdanbakhsh
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
PhD. Student
School of Electrical and Computer Engineering
University of Wisconsin-Madison
E-mail: yazdanbakhsh
2019 Jul 17
2
Custom calling convention & ARM target
Hi Tim,
Thank you for your reply.
Actually, I already played with various target triples including what
sys::getProcessTriple() returns when I tried to compile it on
a Raspberry Pi 3 device.
Yes, changing the triple to armv7-unknown-linux-gnueabi changes the
emitted return instruction to
'bx lr'. But this is not the issue.
Let me describe it based on an example I prepared to demonstrate
2013 Jan 28
0
[LLVMdev] morestack for ARM
I wonder if any body tried implementing morestack for ARM.
[ARMFrameLowering.cpp file does not have implementation for
adjustForSegmentedStacks
method]
More I study more I get lost, Any help or input is highly appreciated.
TIA,
Amit
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2010 Feb 26
3
[LLVMdev] Patch - big stackframes on SPU
Chris Lattner skrev:
> On Feb 22, 2010, at 6:08 AM, Kalle.Raiskila at nokia.com wrote:
>> currently the SPU backend does not handle big stack frames (>16*511
>> bytes) nicely. llc asserts on malformed machine instructions.
>> (Assertion `MI->getOperand(OpNo).isImm() && "printDFormAddr first
>> operand is not immediate")
>
> Sounds fine
2009 Feb 17
1
[LLVMdev] ARM backend playing with alternative jump table implementations
Hi list:
I have been trying to get my feet wet with the ARM backend.
As a warmup exercise I wanted to be able to move
jumptables especially large ones out of the code section.
Currently the idiom for jump tables loooks like this
// .set PCRELV0, (.LJTI9_0_0-(.LPCRELL0+8))
// .LPCRELL0:
// add r3, pc, #PCRELV0
// ldr pc, [r3, +r0, lsl #2]
// .LJTI9_0_0:
//
2010 Mar 29
0
[LLVMdev] Patch - Big stacks on SPU, take 2
On Mar 29, 2010, at 6:50 AM, Kalle Raiskila wrote:
> attached is a second try for the bigstack patch for SPU, with testcase. It is essentially the patch committed as 97091, and reverted as 97099, but with the following additions:
> -in vararg handling, registers are marked to be live, to not confuse the register scavenger
Looks good. You can try running with -verify-machineinstrs to detect
2013 Oct 15
0
[LLVMdev] Unwanted push/pop on Cortex-M.
Hi,
I have this code:
void platform_putchar(int, char);
void out_char( char ch );
void out_char( char ch )
{
platform_putchar (0, ch);
}
I'm compiling with the following clang invocation:
$ /usr/local/vendor/toolchains/llvm/3.3/armv7m/bin/armv7m-none-eabi-clang
-mcpu=cortex-m4 -mfloat-abi=soft -mthumb -nostdinc -ffreestanding
-ffunction-sections -fdata-sections -fno-exceptions
2015 Jan 11
3
[LLVMdev] [RFC] [PATCH] add tail call optimization to thumb1-only targets
Hello,
find enclosed a first patch for adding tail call optimizations for
thumb1 targets.
I assume that this list is the right place for publishing patches for
review?
Since this is my first proposal for LLVM, I'd very much appreciate your
feedback.
What the patch is meant to do:
For Tail calls identified during DAG generation, the target address will
be loaded into a register
by use
2009 Jun 03
5
[LLVMdev] patch for llc/ARM: added mechanism to move switch tables from .text -> .data; also cleanup and documentation
Hi:
This is my first patch submission. Hopefully, this is the proper the protocol.
Attached is a patch for the llc ARM backend:
Added mechanism to generate switch table in a data section
rather than having it interleaved with the code.
This is controlled by command line flags and off by default.
Also, tried to document and improve the code where I modified it.
Robert
-------------- next part
2012 Oct 22
0
[LLVMdev] register scavenger
I have a question about register scavenger.
I am considering using register scavenger for MIPS to free up register AT
which is currently reserved to load large immediates.
All targets which currently use register scavenger to search for a scratch
register (ARM, CellSPU, PowerPC and XCore)
override function processFunctionBeforeCalleeSavedScan and call
RegisterScavenger::setScavengingFrameIndex
2008 Dec 29
2
[LLVMdev] Controlling the stack layout
Hi Anton,
Anton Korobeynikov wrote:
> I don't see any huge problems with writing such pass: just create
> stack frame objects at fixed offsets inside your MF pass - and you'll
> done. The only problem is that you need to do this early - before
> prologue / epilogue inserter code runs, since afterwards stack frame
> layout is almostly finalized (at "high level")
2008 Dec 29
0
[LLVMdev] Controlling the stack layout
Hi, Nicolas
> Could you point me where those hooks are in the llvm code? I didn't find
> any.
Look into PrologEpilogInserter.cpp::PEI::runOnMachineFunction(). There
are calls to hooks inside TargetRegisterInfo:
TargetRegisterInfo::processFunctionBeforeCalleeSavedScan() and
TargetRegisterInfo::processFunctionBeforeFrameFinalized().
Maybe they are not so convenient when working via JIT