Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] Calling Conventions, function prologs and epilogs."
2009 Apr 09
2
[LLVMdev] Calling Conventions, function prologs and epilogs.
On Thu, Apr 9, 2009 at 4:34 PM, Anton Korobeynikov
<anton at korobeynikov.info>wrote:
> Hello, Aaron
>
> > How/where are function prologs and epilogs generated, is it bespoke C++
> code
> > or TableGen generated ?
> >
> > If someone could point me in the right direction please.
> Calling convention is really-really far from prologue/epilogue emission :)
2009 Apr 09
0
[LLVMdev] Calling Conventions, function prologs and epilogs.
Hello, Aaron
> How/where are function prologs and epilogs generated, is it bespoke C++ code
> or TableGen generated ?
>
> If someone could point me in the right direction please.
Calling convention is really-really far from prologue/epilogue emission :) So:
1. Calling conventions
Partly tablegen / partly C++ code. Look for
CodeGen/SelectionDAG/CallingConvLower.cpp,
2009 Apr 09
0
[LLVMdev] Calling Conventions, function prologs and epilogs.
On Apr 9, 2009, at 11:11 AMPDT, Aaron Gray wrote:
> On Thu, Apr 9, 2009 at 4:34 PM, Anton Korobeynikov <anton at korobeynikov.info
> > wrote:
> Hello, Aaron
>
> > How/where are function prologs and epilogs generated, is it
> bespoke C++ code
> > or TableGen generated ?
> >
> > If someone could point me in the right direction please.
> Calling
2020 Mar 24
2
[RFC][AArch64] Homogeneous Prolog and Epilog for Size Optimization
Hello,
I'd like to upstream our work over the time which the community would
benefit from.
This is a part of effort toward minimizing code size presented in here
<https://llvm.org/devmtg/2020-02-23/slides/Kyungwoo-GlobalMachineOutlinerForThinLTO.pdf>.
In particular, this RFC is about optimizing prolog and epilog for size.
*Homogeneous Prolog and Epilog for Size Optimization, D76570
2020 Mar 24
2
[RFC][AArch64] Homogeneous Prolog and Epilog for Size Optimization
Hi Vedant,
Thanks for your interest and comment.
Size-optimization improves page-faults and a start-up time for a large
application, which this enabling also followed.
Even though I didn't see a large regression/complaint on a CPU-bound case,
which is not a typical case for mobile workload, I wanted to be precautious
of enabling it by default.
However, as with default outlining case, I
2003 Dec 24
2
[LLVMdev] main, prologue & call
hi,
I don't understand exactlly the difference among main function, prologue
code, and call function.
how the llvm JIT process them in details?
the main function is a program start entry
prologue code
call
yueqiang
2003/12/25
2019 Jul 16
2
MachinePipeliner refactoring
Hi James,
I also think that refactoring the code generation part is a great idea. That code is very complicated and difficult to maintain. I’ve wanted to rewrite that code for a long time, but just have never got to it. There are quite a few edge cases to handle (at least in the current code). I’ll take a deeper look at your patch. The abstractions that you mention, Stage and Block, are good
2003 Dec 25
0
[LLVMdev] main, prologue & call
> I don't understand exactlly the difference among main function, prologue
> code, and call function.
I'm not sure that I understand your question. LLVM abstracts away
target-specific information like function prologs and epilogs.
If you are curious about the typical arrangement used by unix systems with
_start and main, LLVM does not have that. Basically it uses 'main'
2017 Jun 09
2
Question about Prolog/Epilog Code Insertion
Hi All,
When seeing the title "Prolog/Epilog Code Insertion", I'd expect
something about XXXFrameLowering.cpp
(particular about emitPrologue/emitEpilogue). But the document [1] is about
unwind. Is it placed at the right
place/section?
Thanks.
[1] http://llvm.org/docs/CodeGenerator.html#prolog-epilog-code-insertion
Regards,
chenwj
--
Wei-Ren Chen (陳韋任)
Homepage:
2010 Apr 12
1
[LLVMdev] Question. about Machinefunction pass, funtion Prolog/Epilog code, stack frame
I am new to the LLVM, and need some help with this points.
1. how can we add special code for the Prolog/Epilog for some
certain functions, this should be done with machinefunction pass, rt?
2. Basically, I want to get the function stack frame, that is the size and
the initial position.
I found
int64_t llvm::MachineFrameInfo::getObjectSize ( int *ObjectIdx* )
const[inline]
This method is
2009 Jan 03
0
[LLVMdev] Using CallingConvLower in ARM target
On Dec 27, 2008, at 4:30 AM, Sandeep Patel wrote:
> Attached is a prototype patch that uses CCState to lower RET nodes in
> the ARM target. Lowering CALL nodes will come later.
>
> This patch does not handle f64 and i64 types. For these types, it
> would be ideal to request the conversions below:
i64 isn't Legal on ARM, so it should already be handled.
>
>
> def
2007 Sep 06
1
[LLVMdev] Prolog/Epilog Insertion Question
I've been looking through the code for pologue/epilogoue generation and
noticed this oddity:
void PEI::replaceFrameIndices(MachineFunction &Fn) {
[...]
for (MachineBasicBlock::iterator I = BB->begin(); I != BB->end(); ) {
[...]
if (I->getOpcode() == FrameSetupOpcode ||
I->getOpcode() == FrameDestroyOpcode) {
[...]
} else {
2012 Oct 02
4
[LLVMdev] Handling SRet on Windows x86
Hello Aaron, Anton, LLVM-dev,
While working on http://llvm.org/PR13676#c6
I found out that whenever I compile code with class methods returning
structures it get generated incompatible with MSVC.
Looking at lib/Target/X86/X86CallingConv.td, I found out that
CC_X86_32_ThisCall maps SRet to EAX but in fact it should push
the address of the return temp on stack.
The following patch fixes the issue
2009 Sep 16
2
[LLVMdev] struct returns
> I recently made a major reorganization of the calling-convention
> lowering code which cleared away one of the major obstacles to
> doing this within codegen.
>
> Dan
So what was the obstacle, and how was it cleared? And how do you see
the large struct return working in codegen?
Anything you care to tell me would be welcome. I will be starting on
this today or tomorrow.
2008 Dec 27
3
[LLVMdev] Using CallingConvLower in ARM target
Attached is a prototype patch that uses CCState to lower RET nodes in
the ARM target. Lowering CALL nodes will come later.
This patch does not handle f64 and i64 types. For these types, it
would be ideal to request the conversions below:
def RetCC_ARM_APCS : CallingConv<[
CCIfType<[f32], CCBitConvertToType<i32>>,
CCIfType<[f64], CCBitConvertToType<i64>>,
2014 Mar 03
2
Re: 'virsh capabilities' on Debian Wheezy-amd64 reports different cpu to Wheezy-i386 (on same hardware)
On 03/03/2014 10:44, Martin Kletzander wrote:
> On Mon, Mar 03, 2014 at 10:30:11AM +0000, Struan Bartlett wrote:
>> Hi Martin
>>
>> Thanks for your response. Here's the output of that grep:
>>
>> # grep ^flags /proc/cpuinfo | sort -u
>> flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
>> cmov pat pse36 clflush dts acpi mmx
2014 May 30
2
[LLVMdev] Question about callee saved registers in x86
On 31.5.2014 2:04, Pasi Parviainen wrote:
> On 28.5.2014 2:57, Sanjoy Das wrote:
>> Hi llvmdev,
>>
>> I'm trying to figure how llvm remembers stack slots allotted to callee
>> saved registers on x86. In particular, llvm pushes registers in
>> decreasing order of FrameIdxs [1], so the offsets they get (as
>> returned by MFI->getObjectOffset) don't
2014 May 27
3
[LLVMdev] Question about callee saved registers in x86
Hi llvmdev,
I'm trying to figure how llvm remembers stack slots allotted to callee
saved registers on x86. In particular, llvm pushes registers in
decreasing order of FrameIdxs [1], so the offsets they get (as
returned by MFI->getObjectOffset) don't directly correspond to their
actual stack locations. In X86FrameLowering's
emitCalleeSavedFrameMoves, when emitting DWARF
2016 Jan 13
2
Allowing virtual registers after register allocation
We had some additional discussion on this. There is a lot of concern
generally about post-RA passes which do not expect to have to handle
virtual registers; specifically if they unexpectedly start seeing virtual
registers, or if they work today but start making assumptions in the
future. We discussed considering a mechanism that would require
MachineFunctionPasses to "opt-in" and declare
2014 Mar 03
2
Re: 'virsh capabilities' on Debian Wheezy-amd64 reports different cpu to Wheezy-i386 (on same hardware)
Hi Martin
Thanks for your response. Here's the output of that grep:
# grep ^flags /proc/cpuinfo | sort -u
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall
nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl
xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor