[PATCH] S390: Allow "v" constraint for long double math_opt_barrier and math_force_eval with GCC 11.
Stefan Liebler
stli@linux.ibm.com
Wed Mar 31 14:17:41 GMT 2021
On 31/03/2021 11:34, Florian Weimer wrote:
> * Stefan Liebler via Libc-alpha:
>> +/* Starting with gcc 11, long double values can also be processed in vector
>> + registers if build with -march >= z14. Then GCC defines the
>> + __LONG_DOUBLE_VX__ macro. */
>> +#ifdef __LONG_DOUBLE_VX__
>> +# define ASM_LONG_DOUBLE_IN_VR 1
>> +#else
>> +# define ASM_LONG_DOUBLE_IN_VR 0
>> +#endif
>
> Above that there is:
>
> #ifdef HAVE_S390_VX_GCC_SUPPORT
> # define ASM_CONSTRAINT_VR "v"
> #else
> # define ASM_CONSTRAINT_VR
> #endif
>
> I think conceptually, ASM_LONG_DOUBLE_IN_VR should be set under
> HAVE_S390_VX_GCC_SUPPORT, right?
Hi Florian,
yes, you are right. GCC will only define __LONG_DOUBLE_VX__ if it knows
about vector registers and HAVE_S390_VX_GCC_SUPPORT will always be
defined in this case.
If HAVE_S390_VX_GCC_SUPPORT would not be defined, but
__LONG_DOUBLE_VX__, then the constraint "fm" will be used in all asm
statements.
But nevertheless, setting ASM_LONG_DOUBLE_IN_VR under
HAVE_S390_VX_GCC_SUPPORT makes it more cleanly. I've just posted a v2:
https://sourceware.org/pipermail/libc-alpha/2021-March/124606.html
Thanks,
Stefan
More information about the Libc-alpha
mailing list