Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <alpine.LRH.2.02.2002231819190.25353@key0.esi.com.au>
Date: Sun, 23 Feb 2020 19:35:03 +1100 (AEDT)
From: Damian McGuckin <damianm@....com.au>
To: musl@...ts.openwall.com
Subject: Re: Considering x86-64 fenv.s to C

On Sun, 23 Feb 2020, Rich Felker wrote:

> On Sun, Feb 23, 2020 at 04:41:31PM +1100, Damian McGuckin wrote:
>> On Sat, 22 Feb 2020, Rich Felker wrote:
>>
>>> First comment: I couldn't find (maybe I missed?) what you intend fore
>>> the contents of fenv-generic.c and fenv-trivial.c to be, but I don't
>>> see what you want them for. fenv.c should just use the macros/inlines
>>> the fenv_arch.h defines, naturally collapsing to empty functions when
>>> they do nothing (for softfloat archs).
>>
>> I agree. I was seduced by what I thought was a better way.
>>
>> I assume that I can also have a
>>
>> 	fenv_arch_soft_float.h
>
> I don't follow what this would be for. Presumably 
> arch/generic/fenv_arch.h would be empty and the internal header that 
> includes fenv_arch.h would define dummy fenv accessor helpers in the 
> absence of any defined by fenv_arch.h, or similar.

In
 	arch/generic/bits/fenv.h

You have

 	#define FE_ALL_EXCEPT 0
 	#define FE_TONEAREST  0

 	typedef unsigned long fexcept_t;

 	typedef struct { unsigned long __cw; } fenv_t;

 	#define FE_DFL_ENV      ((const fenv_t *) -1)

If you effectively #include this file into the generic code, it should do 
as you suggest. I think. See below. It does rely on FE_INVALID not being 
defined.

If I fudge it on my X86_64, every routine just does

 	xorl	%eax, %eax
i.e.
 	return 0

except for

fesetround:
.LFB12:
     .cfi_startproc
     cmpl    $1, %edi
     sbbl    %eax, %eax
     notl    %eax
     ret

fegetexceptflag:
.LFB18:
     .cfi_startproc
     movq    $0, (%rdi)
     xorl    %eax, %eax
     ret

Also
 	__flt_rounds()

returns 1 which means round to nearest style which it should.

Regards - Damian

Pacific Engineering Systems International, 277-279 Broadway, Glebe NSW 2037
Ph:+61-2-8571-0847 .. Fx:+61-2-9692-9623 | unsolicited email not wanted here
Views & opinions here are mine and not those of any past or present employer

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.