similar to: [LLVMdev] Possible bug in x86 code generation for fastcall on gnu/linux

Displaying 20 results from an estimated 5000 matches similar to: "[LLVMdev] Possible bug in x86 code generation for fastcall on gnu/linux"

2008 Sep 30
0
[LLVMdev] Possible bug in x86 code generation for fastcall on gnu/linux
Hi, I don't see this with llvm from svn, so it looks like it has been fixed. Ciao, Duncan. PS: Tested at -O1 and -O3, with and without a frame pointer.
2012 Oct 19
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
Personally, I'd love to see a setup where instead of LLVM implementing each calling convention and ABI hack, we provide a means of actually describing this. Specifically, I'd love to see a design for how to specify in the IR which register(s) (if any register(s)) a particular value should be placed into. Don't get me wrong, I don't have any good ideas about how to do this, I'm
2012 Oct 19
4
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
Functions with __attribute__((fastcall)) pop their arguments and take up to two arguments in ecx and edx. Currently we represent them by just setting the x86_fastcallcc calling convention. The problem is that the ABI has some strange conventions on when a register is used or not. For example: void __attribute__((fastcall)) foo1(int y); will take 'y' in ecx, but struct S1 { int x; };
2019 Sep 20
2
About detailed rule of fastcall
Hello. I'm trying to understand how fastcall works. As far as I know, first two integer type arguments are passed in ecx and edx. I tested several test, but the result was different from what I expected #1 typedef struct _data_t { int d; } data_t; void __attribute__((fastcall)) test_suuu(data_t s, unsigned int a, unsigned int b, unsigned int c); unsigned int a is passed
2007 Apr 18
5
[PATCH] paravirt.h
This version over last version: (1) Gets rid of the no_paravirt.h header and leaves native ops in place (with some reshuffling to keep then under one #ifdef). (2) Fixes the "X crashes with CONFIG_PARAVIRT=y" bug. (3) Puts __ex_table entry in paravirt iret. Another followup patch implements binary patching... Rusty. === Create a paravirt.h header for all the critical operations which
2007 Apr 18
5
[PATCH] paravirt.h
This version over last version: (1) Gets rid of the no_paravirt.h header and leaves native ops in place (with some reshuffling to keep then under one #ifdef). (2) Fixes the "X crashes with CONFIG_PARAVIRT=y" bug. (3) Puts __ex_table entry in paravirt iret. Another followup patch implements binary patching... Rusty. === Create a paravirt.h header for all the critical operations which
2007 Apr 18
3
[PATCH 1/2] paravirt.h header
OK, this is the revised paravirt.h (Andi has seen this before), then the second is the binary patching stuff. More things get added to the paravirt struct in future patches, but this basic stuff hasn't changed for some time. ==== This patch does the dumbest possible replacement of paravirtualized instructions: calls through a "paravirt_ops" structure. Currently these are function
2012 Oct 20
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
On Sat, Oct 20, 2012 at 10:37 AM, Renato Golin <rengolin at systemcall.org> wrote: > On 19 October 2012 17:00, Duncan Sands <baldrick at free.fr> wrote: >> That said, I also don't like the idea of filling the IR with tons of target >> specific stuff. > > In this case, I think it's even worse than "aapcs" or "fastcall", that > are
2012 Oct 20
4
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
On 19 October 2012 17:00, Duncan Sands <baldrick at free.fr> wrote: > That said, I also don't like the idea of filling the IR with tons of target > specific stuff. In this case, I think it's even worse than "aapcs" or "fastcall", that are target dependent, but at a higher level. Proposing at which register each variable will be, forces the front-ends to
2012 Oct 19
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
Hi Renato, > On 19 October 2012 16:40, Chandler Carruth <chandlerc at google.com> wrote: >> Don't get me wrong, I don't have any good ideas about how to do this, I'm >> just hoping someone does. End result might allow something like: >> >> declare void @foo(double inreg <eax,edx> %x) > > Hi Chandler, > > We were discussing about this
2008 Oct 06
2
[LLVMdev] -instcombine broken with fastcall
I found this with LLVM 2.3 and reproduced with svn as of about thirty minutes ago and they both fail in the same way. If you run this code through opt -instcombine define fastcc i64 @fibo(i64) { switch i64 %0, label %2 [ i64 0, label %8 i64 1, label %8 ] ; <label>:2 ; preds = %1 %3 = sub i64 %0, 1 ; <i64> [#uses=1] %4 = call i64 @fibo(i64 %3) ; <i64> [#uses=1] %5 =
2008 Oct 06
0
[LLVMdev] -instcombine broken with fastcall
On Oct 5, 2008, at 10:55 PM, Arnaud Bergeron wrote: > I found this with LLVM 2.3 and reproduced with svn as of about thirty > minutes ago and they both fail in the same way. > > If you run this code through opt -instcombine Your input code has undefined behavior. You have to mark the callsite as fastcc also. -Chris
2012 Oct 20
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
Hi Rafael, On 19/10/12 18:27, Rafael EspĂ­ndola wrote: >> Don't get me wrong, I don't have any good ideas about how to do this, I'm >> just hoping someone does. End result might allow something like: >> >> declare void @foo(double inreg <eax,edx> %x) > > Not sure I would go all the way to specifying registers in the IL > (although I liked it at
2012 Oct 22
0
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
>>> Not sure I would go all the way to specifying registers in the IL >>> (although I liked it at some point). What I like most right now is >>> something along the lines of >>> http://llvm.org/pr12193. That makes it explicit if something is on the >>> stack or in registers and that information is correct for both the >>> caller and callee.
2012 Oct 19
2
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
> Don't get me wrong, I don't have any good ideas about how to do this, I'm > just hoping someone does. End result might allow something like: > > declare void @foo(double inreg <eax,edx> %x) Not sure I would go all the way to specifying registers in the IL (although I liked it at some point). What I like most right now is something along the lines of
2012 Oct 20
2
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
On Oct 20, 2012, at 12:58 AM, Duncan Sands <baldrick at free.fr> wrote: > Hi Rafael, > > On 19/10/12 18:27, Rafael EspĂ­ndola wrote: >>> Don't get me wrong, I don't have any good ideas about how to do this, I'm >>> just hoping someone does. End result might allow something like: >>> >>> declare void @foo(double inreg <eax,edx>
2007 Apr 18
1
[PATCH] paravirt build fix
Currently, 020-paravirt-xen.patch contains inconsistent declarations for a bunch of native_read/write functions. This patch updates the declarations to use unsigned long for register values. Signed-off-by: James Morris <jmorris@redhat.com> --- include/asm-i386/paravirt.h | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff -purN -X dontdiff
2007 Apr 18
1
[PATCH] paravirt build fix
Currently, 020-paravirt-xen.patch contains inconsistent declarations for a bunch of native_read/write functions. This patch updates the declarations to use unsigned long for register values. Signed-off-by: James Morris <jmorris@redhat.com> --- include/asm-i386/paravirt.h | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff -purN -X dontdiff
2012 Oct 19
2
[LLVMdev] How to represent __attribute__((fastcall)) functions in the IL
On 19 October 2012 16:40, Chandler Carruth <chandlerc at google.com> wrote: > Don't get me wrong, I don't have any good ideas about how to do this, I'm > just hoping someone does. End result might allow something like: > > declare void @foo(double inreg <eax,edx> %x) Hi Chandler, We were discussing about this on the Cambridge LLVM Social a while ago, and we
2017 Oct 20
0
[PATCH v1 01/27] x86/crypto: Adapt assembly for PIE support
* Thomas Garnier <thgarnie at google.com> wrote: > Change the assembly code to use only relative references of symbols for the > kernel to be PIE compatible. > > Position Independent Executable (PIE) support will allow to extended the > KASLR randomization range below the -2G memory limit. > diff --git a/arch/x86/crypto/aes-x86_64-asm_64.S