Hello. I tried to check the values for significand words using _Float128 using a test program with value larger than 64 bit. Test program :
int main () { _Float128 x = 18446744073709551617.5; (i.e. 2^64 + 1.5 which is certainly longer than 64-bit) _Float128 y = __builtin_roundf128 (x); } The lower words of significand (sig[1] and sig[0] for 64-bit system) are still being zero. I haven't included the roundevenf128 yet but inspecting this on real_round function. Am I missing something here? Thanks. On Wed, 29 May 2019 at 16:56, Tejas Joshi <tejasjoshi9...@gmail.com> wrote: > > Hello. > My exams are finally over and I have started to address these points now. I > intend to give my most of the time cause of holidays and will try to consider > most of the cases for the patch this time . > > Thanks, > -Tejas > > On Tue, 21 May 2019 at 03:18, Joseph Myers <jos...@codesourcery.com> wrote: >> >> On Mon, 20 May 2019, Martin Jambor wrote: >> >> > in addition to the things already pointed out by Joseph, I have the >> > following comments. But as Joseph has already pointed out, you should >> > also test your patch on __float128 types, so please make sure your code >> > gets invoked and works for something like: >> > >> > if (__builtin_roundevenf128 (0x1p64q+0.5) != (0x1p64q)) >> > link_error (__LINE__); >> >> ... but with the f128 constant suffix not q, so it works on more >> architectures (all those with _Float128 support, not just those with older >> __float128 support). >> >> > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVEN, "roundeven", >> > > BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) >> > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVENF, "roundevenf", >> > > BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) >> > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVENL, "roundevenl", >> > > BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) >> > >> > ...and for the code to trigger for __builtin_roundevenf128 you have to >> > define this builtin function too. The easiest way is to do it in the >> > same way it is done for BUILTIN_ROUND and many other functions, i.e. use >> > DEF_EXT_LIB_FLOATN_NX_BUILTINS. >> >> Also note that TS 18661-1 has been merged into C2X. I haven't yet updated >> glibc headers to reflect this, but this means a new DEF_C2X_BUILTIN should >> be added similar to DEF_C11_BUILTIN, and used for those three new >> functions, instead of DEF_EXT_LIB_BUILTIN. (And for the strdup and >> strndup built-in functions, also added to C2X, but that's independent of >> the present project.) >> >> -- >> Joseph S. Myers >> jos...@codesourcery.com