Displaying 20 results from an estimated 20 matches for "lfb0".
Did you mean:
fb0
2012 Apr 27
2
[LLVMdev] complex library functions (creal and cimag)
...}
clang emits a call to crealf,
$ clang foo1.c -S -o - -O3
foo1: # @foo1
.cfi_startproc
# BB#0: # %entry
jmp crealf # TAILCALL
while gcc does it in two move instructions:
$ gcc foo1.c -S -o -O3
foo1:
.LFB0:
.cfi_startproc
movq %xmm0, -8(%rsp)
movss -8(%rsp), %xmm0
Is this an optimization which is missing in llvm?
Or is it making a deliberate decision not to expand the call to move
instructions?
-------------- next part --------------
An HTML attachment was scrubbed...
UR...
2012 Mar 02
3
[LLVMdev] how to annotate assembler
Hi,
In GCC there is one useful option -dp (or -dP for more verbose output)
to annotate assembler with instruction patterns, that was used when
assembler was generated. For example:
double
test(long long s)
{
return s;
}
gcc -S -dp -O0 test.c
test:
.LFB0:
.cfi_startproc
pushq %rbp # 18 *pushdi2_rex64/1 [length = 1]
.cfi_def_cfa_offset 16
movq %rsp, %rbp # 19 *movdi_1_rex64/2 [length = 3]
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movq %rdi, -8(%rbp) # 2 *movdi_1_rex64/4 [length = 4]
cvtsi2sdq -8(%rbp), %xmm0 # 6 *floatdidf...
2012 Apr 27
0
[LLVMdev] complex library functions (creal and cimag)
...c -S -o - -O3
> foo1: # @foo1
> .cfi_startproc
> # BB#0: # %entry
> jmp crealf # TAILCALL
>
> while gcc does it in two move instructions:
>
> $ gcc foo1.c -S -o -O3
> foo1:
> .LFB0:
> .cfi_startproc
> movq %xmm0, -8(%rsp)
> movss -8(%rsp), %xmm0
>
> Is this an optimization which is missing in llvm?
Missing optimization. There isn't any reason to avoid inlining the
implementation.
Probably the simplest place to implement this...
2012 Apr 28
1
[LLVMdev] complex library functions (creal and cimag)
On Apr 27, 2012, at 2:02 PM, Eli Friedman wrote:
> On Fri, Apr 27, 2012 at 12:09 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
>> while gcc does it in two move instructions:
>>
>> $ gcc foo1.c -S -o -O3
>> foo1:
>> .LFB0:
>> .cfi_startproc
>> movq %xmm0, -8(%rsp)
>> movss -8(%rsp), %xmm0
>>
>> Is this an optimization which is missing in llvm?
>
> Missing optimization. There isn't any reason to avoid inlining the
> implementation.
>
>...
2018 Sep 20
3
Comparing Clang and GCC: only clang stores updated value in each iteration.
...globl a
.p2align 2
a:
.long 1 # 0x1
.size a, 4
gcc -O3 -march=z13:
.file "testfun.i"
.machinemode zarch
.machine "z13"
.text
.align 8
.globl b
.type b, @function
b:
.LFB0:
.cfi_startproc
larl %r1,a
lt %r1,0(%r1)
je .L1
larl %r1,a
mvhi 0(%r1),0
.L1:
br %r14
.cfi_endproc
.LFE0:
.size b, .-b
.globl a
.data
.align 4
.type a, @object
.s...
2010 Sep 10
4
[LLVMdev] using GCC LTO files as a frontend to dragonegg?
...negg]$ gcc-4.5 -flto -c hello.c[mdaniels at dn002
dragonegg]$ gcc-4.5 -S -x lto hello.o
[mdaniels at dn002 dragonegg]$ cat hello.s
.file "hello.o"
.section .rodata
.LC0:
.string "Hello World"
.text
.globl hello
.type hello, @function
hello:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
movq %rsp, %rbp
.cfi_offset 6, -16
.cfi_def_cfa_register 6
movl $.LC0, %edi
call puts
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size hello, .-hello
.ident...
2012 Mar 02
0
[LLVMdev] how to annotate assembler
...st #2000 POP64r
## <MCOperand Reg:106>>
ret ## <MCInst #2227 RET>
.cfi_endproc
- Ben
>
> double
> test(long long s)
> {
> return s;
> }
>
> gcc -S -dp -O0 test.c
>
> test:
> .LFB0:
> .cfi_startproc
> pushq %rbp # 18 *pushdi2_rex64/1 [length = 1]
> .cfi_def_cfa_offset 16
> movq %rsp, %rbp # 19 *movdi_1_rex64/2 [length = 3]
> .cfi_offset 6, -16
> .cfi_def_cfa_register 6
> movq %rdi, -8(%rbp) # 2 *movdi_1_rex64/4 [length = 4]
> cvtsi2sd...
2014 Sep 02
3
[LLVMdev] LICM promoting memory to scalar
...globalvar += incr;
}
return;
}
GCC output:
$ aarch64-linux-gnu-g++ -S -o - -O3 -ffast-math -march=armv8-a+simd test.cpp
.arch armv8-a+fp+simd
.file "test.cpp"
.text
.align 2
.global _Z3fooii
.type _Z3fooii, %function
_Z3fooii:
.LFB0:
.cfi_startproc
cbz w0, .L1
adrp x6, globalvar
add w5, w0, w0, lsr 31
ldr w3, [x6,#:lo12:globalvar] <== hoist load of globalvar
mov w2, 0
asr w5, w5, 1
.L4:
cmp w5, w2
add w2, w2, w1...
2018 Sep 20
3
Aliasing rules difference between GCC and Clang
... sllg %r3, %r0, 3
std %f0, 0(%r3,%r2) // STORE F ELEMENT
ld %f0, 0(%r1) // 2nd LOAD E <<<<<<<
cfdbr %r0, 5, %f0 // CONVERT
strl %r0, g // 2nd USE
br %r14
gcc -O3-march=z13 :
h:
.LFB0:
.cfi_startproc
larl %r1,e
ld %f0,0(%r1) // LOAD E
lrl %r2,g
lgrl %r3,f
cfdbr %r1,5,%f0 // CONVERT E
cdfbr %f0,%r2
lgfr %r2,%r1 // EXTEND E
sllg %r2,%r2,3
std ...
2018 Sep 21
2
Aliasing rules difference between GCC and Clang
...E F ELEMENT
> ld %f0, 0(%r1) // 2nd LOAD E <<<<<<<
> cfdbr %r0, 5, %f0 // CONVERT
> strl %r0, g // 2nd USE
> br %r14
>
> gcc -O3-march=z13 :
>
> h:
> .LFB0:
> .cfi_startproc
> larl %r1,e
> ld %f0,0(%r1) // LOAD E
> lrl %r2,g
> lgrl %r3,f
> cfdbr %r1,5,%f0 // CONVERT E
> cdfbr %f0,%r2
> lgfr %r2,%r...
2014 Sep 02
2
[LLVMdev] LICM promoting memory to scalar
...+ -S -o - -O3 -ffast-math -march=armv8-a+simd test.cpp
>> .arch armv8-a+fp+simd
>> .file "test.cpp"
>> .text
>> .align 2
>> .global _Z3fooii
>> .type _Z3fooii, %function
>> _Z3fooii:
>> .LFB0:
>> .cfi_startproc
>> cbz w0, .L1
>> adrp x6, globalvar
>> add w5, w0, w0, lsr 31
>> ldr w3, [x6,#:lo12:globalvar] <== hoist load of globalvar
>> mov w2, 0
>>...
2013 Jan 27
0
[LLVMdev] Code compiling in gcc but not llvm
$ gcc -S test.c
$ cat test.s
.file "test.c"
.text
.globl __GI___testfunc
.hidden __GI___testfunc
.type __GI___testfunc, @function
__GI___testfunc:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size __GI___testfunc, .-__GI___testfunc
.globl __test...
2013 Sep 04
6
[LLVMdev] Aliasing of volatile and non-volatile
...nd
ret
.Ltmp0:
.size foo, .Ltmp0-foo
.cfi_endproc
.section ".note.GNU-stack","", at progbits
For comparison, GCC has only one load in the loop:
.text
.p2align 4,,15
.globl foo
.type foo, @function
foo:
.LFB0:
.cfi_startproc
xorl %eax, %eax
testl %edx, %edx
jle .L3
movl (%rdi), %r8d
xorl %ecx, %ecx
.p2align 4,,10
.p2align 3
.L4:
movl (%rsi), %edi
addl $1, %ecx
addl %r8d, %edi...
2013 Jan 26
2
[LLVMdev] Code compiling in gcc but not llvm
Hi,
This is my first post, sorry if not in the right format.
I am stuck at a place where I have a code fragment that runs in normal gcc
but fails when I give -fplugin=dragonegg.so
extern int *testfunc();
extern __typeof (testfunc) testfunc __asm__ ("" "__GI_testfunc")
__attribute__ ((visibility ("hidden")));
extern __typeof(testfunc) __testfunc;
extern __typeof
2014 Sep 03
3
[LLVMdev] LICM promoting memory to scalar
... globalvar += incr;
}
return;
}
GCC output:
$ aarch64-linux-gnu-g++ -S -o - -O3 -ffast-math -march=armv8-a+simd
test.cpp
.arch armv8-a+fp+simd
.file "test.cpp"
.text
.align 2
.global _Z3fooii
.type _Z3fooii, %function
_Z3fooii:
.LFB0:
.cfi_startproc
cbz w0, .L1
adrp x6, globalvar
add w5, w0, w0, lsr 31
ldr w3, [x6,#:lo12:globalvar] <== hoist
load of globalvar
mov w2, 0
asr w5, w5, 1
.L4:
cmp w5, w2
add ...
2012 Mar 02
2
[LLVMdev] how to annotate assembler
...g:106>>
> ret ## <MCInst #2227 RET>
> .cfi_endproc
>
> - Ben
>
>>
>> double
>> test(long long s)
>> {
>> return s;
>> }
>>
>> gcc -S -dp -O0 test.c
>>
>> test:
>> .LFB0:
>> .cfi_startproc
>> pushq %rbp # 18 *pushdi2_rex64/1 [length = 1]
>> .cfi_def_cfa_offset 16
>> movq %rsp, %rbp # 19 *movdi_1_rex64/2 [length = 3]
>> .cfi_offset 6, -16
>> .cfi_def_cfa_register 6
>> movq %rdi, -8(%rbp) # 2 *movdi_1_rex64/4...
2013 Sep 07
0
[LLVMdev] Aliasing of volatile and non-volatile
...-foo
> .cfi_endproc
> .section ".note.GNU-stack","", at progbits
>
>
> For comparison, GCC has only one load in the loop:
>
> .text
> .p2align 4,,15
> .globl foo
> .type foo, @function
> foo:
> .LFB0:
> .cfi_startproc
> xorl %eax, %eax
> testl %edx, %edx
> jle .L3
> movl (%rdi), %r8d
> xorl %ecx, %ecx
> .p2align 4,,10
> .p2align 3
> .L4:
> movl (%rsi), %edi
> addl...
2009 Sep 25
2
[LLVMdev] MinGW/MSVC++ uses different ABI for sret
Let's go directly to the example
struct S {
double dummy1;
double dummy2;
};
S bar();
S foo() {
return bar();
}
This is the result of g++ -c -S -O2 (focus on the final `ret'):
__Z3foov:
LFB0:
pushl %ebp
LCFI0:
movl %esp, %ebp
LCFI1:
pushl %ebx
LCFI2:
subl $20, %esp
LCFI3:
movl 8(%ebp), %ebx
movl %ebx, (%esp)
call __Z3barv
pushl %eax
movl %ebx, %eax
movl -4(%ebp), %ebx
leave
ret $4
This is the result of cl -O2 -c -Fa (again, focus on the final `ret')
PUBLIC ?foo@@YA?A...
2018 Sep 21
2
Comparing Clang and GCC: only clang stores updated value in each iteration.
...gt;>
>>
>> gcc -O3 -march=z13:
>>
>> .file "testfun.i"
>> .machinemode zarch
>> .machine "z13"
>> .text
>> .align 8
>> .globl b
>> .type b, @function
>> b:
>> .LFB0:
>> .cfi_startproc
>> larl %r1,a
>> lt %r1,0(%r1)
>> je .L1
>> larl %r1,a
>> mvhi 0(%r1),0
>> .L1:
>> br %r14
>> .cfi_endproc
>> .LFE0:
>> ...
2018 Sep 07
1
[PATCH net-next v2 3/5] virtio_ring: add packed ring support
On Wed, Jul 11, 2018 at 10:27:09AM +0800, Tiwei Bie wrote:
> This commit introduces the support (without EVENT_IDX) for
> packed ring.
>
> Signed-off-by: Tiwei Bie <tiwei.bie at intel.com>
> ---
> drivers/virtio/virtio_ring.c | 495 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 487 insertions(+), 8 deletions(-)
>
> diff --git