Date: Tue, 28 Feb 2012 20:45:56 -0800 From: Steve Kargl <sgk@troutmask.apl.washington.edu> To: "Thomas D. Dean" <tomdean@speakeasy.org> Cc: freebsd-amd64@freebsd.org Subject: Re: Gcc46 and 128 Bit Floating Point Message-ID: <20120229044556.GA29229@troutmask.apl.washington.edu> In-Reply-To: <4F4DA398.6070703@speakeasy.org> References: <4F3EA37F.9010207@speakeasy.org> <CAGE5yCpvF0-b1iKAVGbya=fUNaYbGyrpj1PHSQxw4BvycNMLDg@mail.gmail.com> <4F3EC0B4.6050107@speakeasy.org> <4F4DA398.6070703@speakeasy.org>
index | next in thread | previous in thread | raw e-mail
On Tue, Feb 28, 2012 at 08:03:36PM -0800, Thomas D. Dean wrote:
> On 02/17/12 13:03, Thomas D. Dean wrote:
>
> Or, am I missing something?
I think the answer to you question is 'maybe'.
> #include <quadmath.h>
> #include <stdio.h>
> int main() {
> char buf[128];
> __float128 x = sqrtq(2.0Q);
> quadmath_snprintf(buf, sizeof buf, "%.45Qf",x);
> printf("sin(%s) = ",buf);
> quadmath_snprintf(buf, sizeof buf, "%.45Qf",sinq(x));
> printf("%s\n",buf);
> return 0;
> }
>
> gcc46 math.c -o math /usr/local/lib/gcc46/libquadmath.a /usr/lib/libm.a
You probably want to add -O here.
> Looking at the output of objdump -d math shows software implementation
> of sqrtq() and sinq(). gcc46 does use the fsqrt instruction but not fsin.
Huh? gcc46 -S gives
.file "a.c"
.section .rodata
.LC1:
.string "%.45Qf"
.LC2:
.string "sin(%s) = "
.text
.globl main
.type main, @function
main:
.LFB4:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $144, %rsp
movdqa .LC0(%rip), %xmm0
call sqrtq
movdqa %xmm0, -16(%rbp)
movdqa -16(%rbp), %xmm0
leaq -144(%rbp), %rax
movl $.LC1, %edx
movl $128, %esi
movq %rax, %rdi
movl $1, %eax
call quadmath_snprintf
leaq -144(%rbp), %rax
movq %rax, %rsi
movl $.LC2, %edi
movl $0, %eax
call printf
movdqa -16(%rbp), %xmm0
call sinq
leaq -144(%rbp), %rax
movl $.LC1, %edx
movl $128, %esi
movq %rax, %rdi
movl $1, %eax
call quadmath_snprintf
leaq -144(%rbp), %rax
movq %rax, %rdi
call puts
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE4:
.size main, .-main
.section .rodata
.align 16
.LC0:
.long 0
.long 0
.long 0
.long 1073741824
.ident "GCC: (FreeBSD Ports Collection) 4.6.2"
I don't see fsqrt.
--
Steve
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120229044556.GA29229>
