[Bug target/92168] Poor code generation for addcarry / subborrow
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Oct 21 20:55:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92168
--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-cfl-1 gcc]$ cat c.c
#include <x86intrin.h>
unsigned char
foo (unsigned long long HxL0, unsigned long long LxH0,
unsigned long long HxL1, unsigned long long LxH1)
{
unsigned char carry;
carry = _addcarry_u64(0, HxL0, LxH0, &HxL0);
carry = _addcarry_u64(carry, HxL1, LxH1, &HxL1);
return carry;
}
[hjl@gnu-cfl-1 gcc]$ gcc -S -O2 c.c
[hjl@gnu-cfl-1 gcc]$ cat c.s
.file "c.c"
.text
.p2align 4
.globl foo
.type foo, @function
foo:
.LFB5519:
.cfi_startproc
addq %rsi, %rdi
setc %al
addb $-1, %al
adcq %rdx, %rcx
setc %al
ret
.cfi_endproc
.LFE5519:
.size foo, .-foo
.ident "GCC: (GNU) 9.2.1 20190827 (Red Hat 9.2.1-1)"
.section .note.GNU-stack,"",@progbits
[hjl@gnu-cfl-1 gcc]$ clang -S -O2 c.c
[hjl@gnu-cfl-1 gcc]$ cat c.s
.text
.file "c.c"
.globl foo # -- Begin function foo
.p2align 4, 0x90
.type foo,@function
foo: # @foo
.cfi_startproc
# %bb.0:
addq %rsi, %rdi
adcq %rcx, %rdx
setb %al
retq
.Lfunc_end0:
.size foo, .Lfunc_end0-foo
.cfi_endproc
# -- End function
.ident "clang version 8.0.0 (Fedora 8.0.0-1.fc30)"
.section ".note.GNU-stack","",@progbits
.addrsig
[hjl@gnu-cfl-1 gcc]$
More information about the Gcc-bugs
mailing list