diff mbox series

[v2] powerpc: Update ULPs and output for j0 with ibm128

Message ID 20200909165830.64343-1-msc@linux.ibm.com
State New
Headers show
Series [v2] powerpc: Update ULPs and output for j0 with ibm128 | expand

Commit Message

Matheus Castanho Sept. 9, 2020, 4:58 p.m. UTC
This is a follow up based on the discussion on [1]. This time I
regenerated the ULPs using the libgcc patch Tulio mentioned and added a
brief explanation of the problem in the commit message.

[1] https://sourceware.org/pipermail/libc-alpha/2020-August/117156.html

--- 8< ---

Before this patch, the following tests were failing:

ppc and ppc64:
    FAIL: math/test-ldouble-j0

ppc64le:
    FAIL: math/test-float128-j0
    FAIL: math/test-float64x-j0
    FAIL: math/test-ibm128-j0
    FAIL: math/test-ldouble-j0

Currently libgcc has an inherent loss of precision for some rounding
modes for ibm128, which leads to higher ULPs than the theoretical
minimum.  There is a patch to fix this issue [1], but is has not been
integrated into upstream GCC due to performance issues.

Instead of updating the ldouble ULPs for j0 with an upstream GCC,
constantly increasing their values, this patch regenerates them with a
GCC compiled with the patch mentioned above. This way we have the actual
precise ULPs listed in libm-test-ulps.  Of course, when compiling with
an upstream compiler some tests will fail as the calculated ULPs will be
higher than the expected ones.  For such tests, we mark the
corresponding entries in math/auto-libm-test-in with
xfail-rounding:ibm128-libgcc.

[1] https://github.com/tuliom/gcc/commit/ca42479cae3c2b56651c3e97bb5eeaf24ca4bb61
---
 math/auto-libm-test-in             |  20 +-
 math/auto-libm-test-out-j0         | 560 ++++++++++++++---------------
 sysdeps/powerpc/fpu/libm-test-ulps |   8 +-
 3 files changed, 294 insertions(+), 294 deletions(-)

Comments

Joseph Myers Sept. 9, 2020, 5:17 p.m. UTC | #1
On Wed, 9 Sep 2020, Matheus Castanho wrote:

> Instead of updating the ldouble ULPs for j0 with an upstream GCC,
> constantly increasing their values, this patch regenerates them with a
> GCC compiled with the patch mentioned above. This way we have the actual
> precise ULPs listed in libm-test-ulps.  Of course, when compiling with
> an upstream compiler some tests will fail as the calculated ULPs will be
> higher than the expected ones.  For such tests, we mark the
> corresponding entries in math/auto-libm-test-in with
> xfail-rounding:ibm128-libgcc.

xfail-rounding:ibm128-libgcc is intended for the sort of edge cases where 
upstream GCC produces results that are wildly off.  It's not intended for 
these sorts of cases where it gives slightly bigger ulps that are still 
within the accepted bounds.
Tulio Magno Quites Machado Filho Sept. 10, 2020, 1:40 p.m. UTC | #2
Joseph Myers <joseph@codesourcery.com> writes:

> On Wed, 9 Sep 2020, Matheus Castanho wrote:
>
>> Instead of updating the ldouble ULPs for j0 with an upstream GCC,
>> constantly increasing their values, this patch regenerates them with a
>> GCC compiled with the patch mentioned above. This way we have the actual
>> precise ULPs listed in libm-test-ulps.  Of course, when compiling with
>> an upstream compiler some tests will fail as the calculated ULPs will be
>> higher than the expected ones.  For such tests, we mark the
>> corresponding entries in math/auto-libm-test-in with
>> xfail-rounding:ibm128-libgcc.
>
> xfail-rounding:ibm128-libgcc is intended for the sort of edge cases where 
> upstream GCC produces results that are wildly off.  It's not intended for 
> these sorts of cases where it gives slightly bigger ulps that are still 
> within the accepted bounds.

Carlos, Joseph,

I'm afraid that Matheus is either in a deadlock or we need a clearer
explanation of what is acceptable for ibm128.

Notice that Matheus' first patch was rejected because results were greater
than 9.

With that said, would both of you accept the first version of this patch?
https://patchwork.sourceware.org/project/glibc/patch/20200820183700.115087-1-msc@linux.ibm.com/
Joseph Myers Sept. 10, 2020, 3:07 p.m. UTC | #3
On Thu, 10 Sep 2020, Tulio Magno Quites Machado Filho via Libc-alpha wrote:

> Carlos, Joseph,
> 
> I'm afraid that Matheus is either in a deadlock or we need a clearer
> explanation of what is acceptable for ibm128.
> 
> Notice that Matheus' first patch was rejected because results were greater
> than 9.
> 
> With that said, would both of you accept the first version of this patch?
> https://patchwork.sourceware.org/project/glibc/patch/20200820183700.115087-1-msc@linux.ibm.com/

The first version is appropriate.  The bigger limits for ibm128 are 
deliberate.  An architecture-specific ulps update should not be rejected 
just because it increases ulps within the bounds accepted for that format 
(and you shouldn't be able to get an update that increases them outside 
those bounds unless you edit the ulps file manually, and if you do edit it 
manually then the ulps it lists outside those bounds will be ignored 
anyway).

The most likely reason for rejecting an ulps update is that new ulps are 
greater than for other architectures using the same code in glibc for the 
same functions for the same format, suggesting that the update is actually 
covering up a bug somewhere else.  This doesn't apply in this case.

(If an ulps increase results from a change to the implementation of a libm 
functions that makes it less accurate in some cases, we need to consider 
if we want that change, but that's deciding whether we want the libm 
change, not deciding whether we want the ulps updates consequent on it.)
Carlos O'Donell Sept. 10, 2020, 5:08 p.m. UTC | #4
On 9/10/20 9:40 AM, Tulio Magno Quites Machado Filho wrote:
> Joseph Myers <joseph@codesourcery.com> writes:
> 
>> On Wed, 9 Sep 2020, Matheus Castanho wrote:
>>
>>> Instead of updating the ldouble ULPs for j0 with an upstream GCC,
>>> constantly increasing their values, this patch regenerates them with a
>>> GCC compiled with the patch mentioned above. This way we have the actual
>>> precise ULPs listed in libm-test-ulps.  Of course, when compiling with
>>> an upstream compiler some tests will fail as the calculated ULPs will be
>>> higher than the expected ones.  For such tests, we mark the
>>> corresponding entries in math/auto-libm-test-in with
>>> xfail-rounding:ibm128-libgcc.
>>
>> xfail-rounding:ibm128-libgcc is intended for the sort of edge cases where 
>> upstream GCC produces results that are wildly off.  It's not intended for 
>> these sorts of cases where it gives slightly bigger ulps that are still 
>> within the accepted bounds.
> 
> Carlos, Joseph,
> 
> I'm afraid that Matheus is either in a deadlock or we need a clearer
> explanation of what is acceptable for ibm128.
> 
> Notice that Matheus' first patch was rejected because results were greater
> than 9.

It was later shown to me that >9 ULPs was acceptable for ibm128, my apologies
for not being clearer that I was withdrawing my objection.
 
> With that said, would both of you accept the first version of this patch?
> https://patchwork.sourceware.org/project/glibc/patch/20200820183700.115087-1-msc@linux.ibm.com/

Yes.

Patsy Griffin from my team also suggested this on September 2nd, she
is seeing these failures in our own testing. It would be good to have
them resolved.
Matheus Castanho Sept. 10, 2020, 5:29 p.m. UTC | #5
On 9/10/20 2:08 PM, Carlos O'Donell wrote:
> On 9/10/20 9:40 AM, Tulio Magno Quites Machado Filho wrote:
>> Joseph Myers <joseph@codesourcery.com> writes:
>>
>>> On Wed, 9 Sep 2020, Matheus Castanho wrote:
>>>
>>>> Instead of updating the ldouble ULPs for j0 with an upstream GCC,
>>>> constantly increasing their values, this patch regenerates them with a
>>>> GCC compiled with the patch mentioned above. This way we have the actual
>>>> precise ULPs listed in libm-test-ulps.  Of course, when compiling with
>>>> an upstream compiler some tests will fail as the calculated ULPs will be
>>>> higher than the expected ones.  For such tests, we mark the
>>>> corresponding entries in math/auto-libm-test-in with
>>>> xfail-rounding:ibm128-libgcc.
>>>
>>> xfail-rounding:ibm128-libgcc is intended for the sort of edge cases where 
>>> upstream GCC produces results that are wildly off.  It's not intended for 
>>> these sorts of cases where it gives slightly bigger ulps that are still 
>>> within the accepted bounds.
>>
>> Carlos, Joseph,
>>
>> I'm afraid that Matheus is either in a deadlock or we need a clearer
>> explanation of what is acceptable for ibm128.
>>
>> Notice that Matheus' first patch was rejected because results were greater
>> than 9.
> 
> It was later shown to me that >9 ULPs was acceptable for ibm128, my apologies
> for not being clearer that I was withdrawing my objection.
>  
>> With that said, would both of you accept the first version of this patch?
>> https://patchwork.sourceware.org/project/glibc/patch/20200820183700.115087-1-msc@linux.ibm.com/
> 
> Yes.
> 
> Patsy Griffin from my team also suggested this on September 2nd, she
> is seeing these failures in our own testing. It would be good to have
> them resolved.
> 

Thank you all for the feedback and clarification.

In this case, I have a slightly updated version of that initial patch,
which also updates the ULPs for float128 to fix other failing tests.

Just need someone to push it for me.

Thanks,
Matheus Castanho

--- 8< ---

From c55d5ab5f386a85f04dcc3b9b71b92ac6523e321 Mon Sep 17 00:00:00 2001
From: Matheus Castanho <msc@linux.ibm.com>
Date: Thu, 20 Aug 2020 15:37:00 -0300
Subject: [PATCH] Update powerpc libm-test-ulps

Before this patch, the following tests were failing:

ppc and ppc64:
    FAIL: math/test-ldouble-j0

ppc64le:
    FAIL: math/test-float128-j0
    FAIL: math/test-float64x-j0
    FAIL: math/test-ibm128-j0
    FAIL: math/test-ldouble-j0
---
 sysdeps/powerpc/fpu/libm-test-ulps | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sysdeps/powerpc/fpu/libm-test-ulps
b/sysdeps/powerpc/fpu/libm-test-ulps
index cd2a5fed45..fa2555f22b 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1317,13 +1317,13 @@ Function: "j0_downward":
 double: 2
 float: 4
 float128: 4
-ldouble: 11
+ldouble: 12

 Function: "j0_towardzero":
 double: 5
 float: 6
-float128: 2
-ldouble: 8
+float128: 4
+ldouble: 16

 Function: "j0_upward":
 double: 4
Tulio Magno Quites Machado Filho Sept. 10, 2020, 6:52 p.m. UTC | #6
Joseph Myers <joseph@codesourcery.com> writes:

> The first version is appropriate.  The bigger limits for ibm128 are 
> deliberate.  An architecture-specific ulps update should not be rejected 
> just because it increases ulps within the bounds accepted for that format 
> (and you shouldn't be able to get an update that increases them outside 
> those bounds unless you edit the ulps file manually, and if you do edit it 
> manually then the ulps it lists outside those bounds will be ignored 
> anyway).
>
> The most likely reason for rejecting an ulps update is that new ulps are 
> greater than for other architectures using the same code in glibc for the 
> same functions for the same format, suggesting that the update is actually 
> covering up a bug somewhere else.  This doesn't apply in this case.
>
> (If an ulps increase results from a change to the implementation of a libm 
> functions that makes it less accurate in some cases, we need to consider 
> if we want that change, but that's deciding whether we want the libm 
> change, not deciding whether we want the ulps updates consequent on it.)

Ack.
Thanks for clarifying!

Carlos O'Donell via Libc-alpha <libc-alpha@sourceware.org> writes:

> It was later shown to me that >9 ULPs was acceptable for ibm128, my apologies
> for not being clearer that I was withdrawing my objection.

Actually, I should be the one apologizing.

> Patsy Griffin from my team also suggested this on September 2nd, she
> is seeing these failures in our own testing. It would be good to have
> them resolved.

Especially after Patsy's message.

> Before this patch, the following tests were failing:
>
> ppc and ppc64:
>     FAIL: math/test-ldouble-j0
>
> ppc64le:
>     FAIL: math/test-float128-j0
>     FAIL: math/test-float64x-j0
>     FAIL: math/test-ibm128-j0
>     FAIL: math/test-ldouble-j0

Tested and pushed as c71d13a0984f6.

Thank you all!!
diff mbox series

Patch

diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 5d488a8711..4472d1229b 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -5737,19 +5737,19 @@  j0 0.75
 j0 1.0
 j0 1.5
 j0 2.0
-j0 8.0
-j0 10.0
-j0 4.0
-j0 -4.0
-j0 0x1.d7ce3ap+107
-j0 -0x1.001000001p+593
-j0 0x1p1023
-j0 0x1p16382
-j0 0x1p16383
+j0 8.0 xfail-rounding:ibm128-libgcc
+j0 10.0 xfail-rounding:ibm128-libgcc
+j0 4.0 xfail-rounding:ibm128-libgcc
+j0 -4.0 xfail-rounding:ibm128-libgcc
+j0 0x1.d7ce3ap+107 xfail-rounding:ibm128-libgcc
+j0 -0x1.001000001p+593 xfail-rounding:ibm128-libgcc
+j0 0x1p1023 xfail-rounding:ibm128-libgcc
+j0 0x1p16382 xfail-rounding:ibm128-libgcc
+j0 0x1p16383 xfail-rounding:ibm128-libgcc
 # the next value generates larger error bounds on x86_64 (binary32)
 j0 0x2.602774p+0 xfail-rounding:ibm128-libgcc
 # the next value exercises the flt-32 code path for x >= 2^127
-j0 0x8.2f4ecp+124
+j0 0x8.2f4ecp+124 xfail-rounding:ibm128-libgcc
 
 j1 -1.0
 j1 0.0
diff --git a/math/auto-libm-test-out-j0 b/math/auto-libm-test-out-j0
index cc1fea074e..43953d51e2 100644
--- a/math/auto-libm-test-out-j0
+++ b/math/auto-libm-test-out-j0
@@ -989,351 +989,351 @@  j0 2.0
 = j0 tonearest ibm128 0x2p+0 : 0x3.950e7f6499def91adac0afbc5ep-4 : inexact-ok
 = j0 towardzero ibm128 0x2p+0 : 0x3.950e7f6499def91adac0afbc5dp-4 : inexact-ok
 = j0 upward ibm128 0x2p+0 : 0x3.950e7f6499def91adac0afbc5ep-4 : inexact-ok
-j0 8.0
-= j0 downward binary32 0x8p+0 : 0x2.bf14e8p-4 : inexact-ok
+j0 8.0 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0x8p+0 : 0x2.bf14e8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0x8p+0 : 0x2.bf14ecp-4 : inexact-ok
-= j0 towardzero binary32 0x8p+0 : 0x2.bf14e8p-4 : inexact-ok
-= j0 upward binary32 0x8p+0 : 0x2.bf14ecp-4 : inexact-ok
-= j0 downward binary64 0x8p+0 : 0x2.bf14eaafce04ap-4 : inexact-ok
+= j0 towardzero binary32 0x8p+0 : 0x2.bf14e8p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0x8p+0 : 0x2.bf14ecp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0x8p+0 : 0x2.bf14eaafce04ap-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0x8p+0 : 0x2.bf14eaafce04ap-4 : inexact-ok
-= j0 towardzero binary64 0x8p+0 : 0x2.bf14eaafce04ap-4 : inexact-ok
-= j0 upward binary64 0x8p+0 : 0x2.bf14eaafce04cp-4 : inexact-ok
-= j0 downward intel96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : inexact-ok
+= j0 towardzero binary64 0x8p+0 : 0x2.bf14eaafce04ap-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0x8p+0 : 0x2.bf14eaafce04cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : inexact-ok
-= j0 towardzero intel96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : inexact-ok
-= j0 upward intel96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : inexact-ok
-= j0 downward m68k96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : inexact-ok
+= j0 towardzero intel96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : inexact-ok
-= j0 towardzero m68k96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : inexact-ok
-= j0 upward m68k96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : inexact-ok
-= j0 downward binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82082p-4 : inexact-ok
+= j0 towardzero m68k96 0x8p+0 : 0x2.bf14eaafce04a584p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x8p+0 : 0x2.bf14eaafce04a588p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82082p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82084p-4 : inexact-ok
-= j0 towardzero binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82082p-4 : inexact-ok
-= j0 upward binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82084p-4 : inexact-ok
-= j0 downward ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82p-4 : inexact-ok
+= j0 towardzero binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82082p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82084p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e821p-4 : inexact-ok
-= j0 towardzero ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82p-4 : inexact-ok
-= j0 upward ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e821p-4 : inexact-ok
-j0 10.0
-= j0 downward binary32 0xap+0 : -0x3.ef5a58p-4 : inexact-ok
+= j0 towardzero ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e82p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0x8p+0 : 0x2.bf14eaafce04a587ded211e821p-4 : xfail:ibm128-libgcc inexact-ok
+j0 10.0 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0xap+0 : -0x3.ef5a58p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0xap+0 : -0x3.ef5a58p-4 : inexact-ok
-= j0 towardzero binary32 0xap+0 : -0x3.ef5a54p-4 : inexact-ok
-= j0 upward binary32 0xap+0 : -0x3.ef5a54p-4 : inexact-ok
-= j0 downward binary64 0xap+0 : -0x3.ef5a5713c3ca8p-4 : inexact-ok
+= j0 towardzero binary32 0xap+0 : -0x3.ef5a54p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0xap+0 : -0x3.ef5a54p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xap+0 : -0x3.ef5a5713c3ca8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xap+0 : -0x3.ef5a5713c3ca8p-4 : inexact-ok
-= j0 towardzero binary64 0xap+0 : -0x3.ef5a5713c3ca6p-4 : inexact-ok
-= j0 upward binary64 0xap+0 : -0x3.ef5a5713c3ca6p-4 : inexact-ok
-= j0 downward intel96 0xap+0 : -0x3.ef5a5713c3ca7068p-4 : inexact-ok
+= j0 towardzero binary64 0xap+0 : -0x3.ef5a5713c3ca6p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xap+0 : -0x3.ef5a5713c3ca6p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xap+0 : -0x3.ef5a5713c3ca7068p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 towardzero intel96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 upward intel96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 downward m68k96 0xap+0 : -0x3.ef5a5713c3ca7068p-4 : inexact-ok
+= j0 towardzero intel96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xap+0 : -0x3.ef5a5713c3ca7068p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 towardzero m68k96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 upward m68k96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : inexact-ok
-= j0 downward binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022888p-4 : inexact-ok
+= j0 towardzero m68k96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xap+0 : -0x3.ef5a5713c3ca7064p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022888p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022886p-4 : inexact-ok
-= j0 towardzero binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022886p-4 : inexact-ok
-= j0 upward binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022886p-4 : inexact-ok
-= j0 downward ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70229p-4 : inexact-ok
+= j0 towardzero binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022886p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xap+0 : -0x3.ef5a5713c3ca70644304d7022886p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70229p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70229p-4 : inexact-ok
-= j0 towardzero ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70228p-4 : inexact-ok
-= j0 upward ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70228p-4 : inexact-ok
-j0 4.0
-= j0 downward binary32 0x4p+0 : -0x6.5ab9c8p-4 : inexact-ok
+= j0 towardzero ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70228p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xap+0 : -0x3.ef5a5713c3ca70644304d70228p-4 : xfail:ibm128-libgcc inexact-ok
+j0 4.0 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0x4p+0 : -0x6.5ab9c8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 towardzero binary32 0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 upward binary32 0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 downward binary64 0x4p+0 : -0x6.5ab9c24fa53e8p-4 : inexact-ok
+= j0 towardzero binary32 0x4p+0 : -0x6.5ab9cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0x4p+0 : -0x6.5ab9cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0x4p+0 : -0x6.5ab9c24fa53e8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 towardzero binary64 0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 upward binary64 0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 downward intel96 0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : inexact-ok
+= j0 towardzero binary64 0x4p+0 : -0x6.5ab9c24fa53e4p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0x4p+0 : -0x6.5ab9c24fa53e4p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 towardzero intel96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 upward intel96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 downward m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : inexact-ok
+= j0 towardzero intel96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 towardzero m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 upward m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 downward binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : inexact-ok
+= j0 towardzero m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : inexact-ok
-= j0 towardzero binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : inexact-ok
-= j0 upward binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : inexact-ok
-= j0 downward ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : inexact-ok
+= j0 towardzero binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : inexact-ok
-= j0 towardzero ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : inexact-ok
-= j0 upward ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : inexact-ok
-j0 -4.0
-= j0 downward binary32 -0x4p+0 : -0x6.5ab9c8p-4 : inexact-ok
+= j0 towardzero ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : xfail:ibm128-libgcc inexact-ok
+j0 -4.0 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 -0x4p+0 : -0x6.5ab9c8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 -0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 towardzero binary32 -0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 upward binary32 -0x4p+0 : -0x6.5ab9cp-4 : inexact-ok
-= j0 downward binary64 -0x4p+0 : -0x6.5ab9c24fa53e8p-4 : inexact-ok
+= j0 towardzero binary32 -0x4p+0 : -0x6.5ab9cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 -0x4p+0 : -0x6.5ab9cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 -0x4p+0 : -0x6.5ab9c24fa53e8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 -0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 towardzero binary64 -0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 upward binary64 -0x4p+0 : -0x6.5ab9c24fa53e4p-4 : inexact-ok
-= j0 downward intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : inexact-ok
+= j0 towardzero binary64 -0x4p+0 : -0x6.5ab9c24fa53e4p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 -0x4p+0 : -0x6.5ab9c24fa53e4p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 towardzero intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 upward intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 downward m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : inexact-ok
+= j0 towardzero intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cd8p-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 towardzero m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 upward m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : inexact-ok
-= j0 downward binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : inexact-ok
+= j0 towardzero m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 -0x4p+0 : -0x6.5ab9c24fa53e5cdp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d9cp-4 : inexact-ok
-= j0 towardzero binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : inexact-ok
-= j0 upward binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : inexact-ok
-= j0 downward ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : inexact-ok
+= j0 towardzero binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87d98p-4 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87ep-4 : inexact-ok
-= j0 towardzero ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : inexact-ok
-= j0 upward ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : inexact-ok
-j0 0x1.d7ce3ap+107
-= j0 downward binary32 0xe.be71dp+104 : 0x1.fffe66p-56 : inexact-ok
+= j0 towardzero ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 -0x4p+0 : -0x6.5ab9c24fa53e5cd1657dfde87cp-4 : xfail:ibm128-libgcc inexact-ok
+j0 0x1.d7ce3ap+107 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0xe.be71dp+104 : 0x1.fffe66p-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0xe.be71dp+104 : 0x1.fffe66p-56 : inexact-ok
-= j0 towardzero binary32 0xe.be71dp+104 : 0x1.fffe66p-56 : inexact-ok
-= j0 upward binary32 0xe.be71dp+104 : 0x1.fffe68p-56 : inexact-ok
-= j0 downward binary64 0xe.be71dp+104 : 0x1.fffe660069bbbp-56 : inexact-ok
+= j0 towardzero binary32 0xe.be71dp+104 : 0x1.fffe66p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0xe.be71dp+104 : 0x1.fffe68p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xe.be71dp+104 : 0x1.fffe660069bbbp-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xe.be71dp+104 : 0x1.fffe660069bbbp-56 : inexact-ok
-= j0 towardzero binary64 0xe.be71dp+104 : 0x1.fffe660069bbbp-56 : inexact-ok
-= j0 upward binary64 0xe.be71dp+104 : 0x1.fffe660069bbcp-56 : inexact-ok
-= j0 downward intel96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
+= j0 towardzero binary64 0xe.be71dp+104 : 0x1.fffe660069bbbp-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xe.be71dp+104 : 0x1.fffe660069bbcp-56 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
-= j0 towardzero intel96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
-= j0 upward intel96 0xe.be71dp+104 : 0x1.fffe660069bbb662p-56 : inexact-ok
-= j0 downward m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
+= j0 towardzero intel96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xe.be71dp+104 : 0x1.fffe660069bbb662p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
-= j0 towardzero m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : inexact-ok
-= j0 upward m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb662p-56 : inexact-ok
-= j0 downward binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b59p-56 : inexact-ok
+= j0 towardzero m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb66p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xe.be71dp+104 : 0x1.fffe660069bbb662p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b59p-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b59p-56 : inexact-ok
-= j0 towardzero binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b59p-56 : inexact-ok
-= j0 upward binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b5ap-56 : inexact-ok
-= j0 downward ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510bp-56 : inexact-ok
+= j0 towardzero binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b59p-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b5ap-56 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510bp-56 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b8p-56 : inexact-ok
-= j0 towardzero ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510bp-56 : inexact-ok
-= j0 upward ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b8p-56 : inexact-ok
-j0 -0x1.001000001p+593
-= j0 downward binary32 -0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
+= j0 towardzero ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510bp-56 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xe.be71dp+104 : 0x1.fffe660069bbb660b03a17510b8p-56 : xfail:ibm128-libgcc inexact-ok
+j0 -0x1.001000001p+593 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 -0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 -0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 towardzero binary32 -0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 upward binary32 -0xf.fffffp+124 : 0x2.fd3facp-68 : inexact-ok
-= j0 downward binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
+= j0 towardzero binary32 -0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 -0xf.fffffp+124 : 0x2.fd3facp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 towardzero binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
-= j0 upward binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 downward intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 -0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 -0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
+= j0 towardzero m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 -0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 towardzero binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 upward binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : inexact-ok
-= j0 downward ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
+= j0 towardzero binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 towardzero ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 upward ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : inexact-ok
-= j0 downward binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea2cp-300 : inexact-ok
+= j0 towardzero ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 -0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea2cp-300 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea2cp-300 : inexact-ok
-= j0 towardzero binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea28p-300 : inexact-ok
-= j0 upward binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea28p-300 : inexact-ok
-= j0 downward intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : inexact-ok
+= j0 towardzero binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea28p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 -0x2.002000002p+592 : -0x7.ffff5bc14ea28p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : inexact-ok
-= j0 towardzero intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : inexact-ok
-= j0 upward intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : inexact-ok
-= j0 downward m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : inexact-ok
+= j0 towardzero intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a99p-300 : inexact-ok
-= j0 towardzero m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : inexact-ok
-= j0 upward m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : inexact-ok
-= j0 downward binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8cp-300 : inexact-ok
+= j0 towardzero m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a988p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8cp-300 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8cp-300 : inexact-ok
-= j0 towardzero binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8bcp-300 : inexact-ok
-= j0 upward binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8bcp-300 : inexact-ok
-= j0 downward ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03eap-300 : inexact-ok
+= j0 towardzero binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8bcp-300 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8bcp-300 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03eap-300 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8p-300 : inexact-ok
-= j0 towardzero ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8p-300 : inexact-ok
-= j0 upward ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8p-300 : inexact-ok
-j0 0x1p1023
-= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
+= j0 towardzero ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8p-300 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 -0x2.002000002p+592 : -0x7.ffff5bc14ea2a98c2c8b9c03e8p-300 : xfail:ibm128-libgcc inexact-ok
+j0 0x1p1023 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : inexact-ok
-= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
+= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
-= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
+= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : inexact-ok
-= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
+= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : inexact-ok
-= j0 downward binary64 0x8p+1020 : -0x3.5c4f847797f3p-516 : inexact-ok
+= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0x8p+1020 : -0x3.5c4f847797f3p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0x8p+1020 : -0x3.5c4f847797f3p-516 : inexact-ok
-= j0 towardzero binary64 0x8p+1020 : -0x3.5c4f847797f2ep-516 : inexact-ok
-= j0 upward binary64 0x8p+1020 : -0x3.5c4f847797f2ep-516 : inexact-ok
-= j0 downward intel96 0x8p+1020 : -0x3.5c4f847797f2fb08p-516 : inexact-ok
+= j0 towardzero binary64 0x8p+1020 : -0x3.5c4f847797f2ep-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0x8p+1020 : -0x3.5c4f847797f2ep-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x8p+1020 : -0x3.5c4f847797f2fb08p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 towardzero intel96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 upward intel96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 downward m68k96 0x8p+1020 : -0x3.5c4f847797f2fb08p-516 : inexact-ok
+= j0 towardzero intel96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x8p+1020 : -0x3.5c4f847797f2fb08p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 towardzero m68k96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 upward m68k96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : inexact-ok
-= j0 downward binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca02ap-516 : inexact-ok
+= j0 towardzero m68k96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x8p+1020 : -0x3.5c4f847797f2fb04p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca02ap-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca028p-516 : inexact-ok
-= j0 towardzero binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca028p-516 : inexact-ok
-= j0 upward binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca028p-516 : inexact-ok
-= j0 downward ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca1p-516 : inexact-ok
+= j0 towardzero binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca028p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca028p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82ca1p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82cap-516 : inexact-ok
-= j0 towardzero ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82cap-516 : inexact-ok
-= j0 upward ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82cap-516 : inexact-ok
-j0 0x1p16382
-= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
+= j0 towardzero ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82cap-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0x8p+1020 : -0x3.5c4f847797f2fb0411a8a82cap-516 : xfail:ibm128-libgcc inexact-ok
+j0 0x1p16382 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : inexact-ok
-= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
+= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
-= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
+= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : inexact-ok
-= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
+= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : inexact-ok
-= j0 downward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : inexact-ok
+= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : inexact-ok
-= j0 towardzero binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : inexact-ok
-= j0 upward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : inexact-ok
-= j0 downward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
+= j0 towardzero binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
-= j0 towardzero intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 upward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 downward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
+= j0 towardzero intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
-= j0 towardzero m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 upward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 downward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe2708p-516 : inexact-ok
+= j0 towardzero m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe2708p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 towardzero binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 upward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 downward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : inexact-ok
+= j0 towardzero binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : inexact-ok
-= j0 towardzero ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : inexact-ok
-= j0 upward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : inexact-ok
-= j0 downward intel96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : inexact-ok
+= j0 towardzero ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : inexact-ok
-= j0 towardzero intel96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : inexact-ok
-= j0 upward intel96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : inexact-ok
-= j0 downward m68k96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : inexact-ok
+= j0 towardzero intel96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x4p+16380 : -0x1.547d24fb1319013p-8192 : inexact-ok
-= j0 towardzero m68k96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : inexact-ok
-= j0 upward m68k96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : inexact-ok
-= j0 downward binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96322p-8192 : inexact-ok
+= j0 towardzero m68k96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x4p+16380 : -0x1.547d24fb1319012ep-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96322p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96322p-8192 : inexact-ok
-= j0 towardzero binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96321p-8192 : inexact-ok
-= j0 upward binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96321p-8192 : inexact-ok
-= j0 downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019024p-516 : inexact-ok
+= j0 towardzero binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96321p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x4p+16380 : -0x1.547d24fb1319012fae0dc6c96321p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019024p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok
+= j0 towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok
-= j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
-= j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
-j0 0x1p16383
-= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
+= j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : xfail:ibm128-libgcc inexact-ok
+j0 0x1p16383 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : inexact-ok
-= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : inexact-ok
-= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
+= j0 towardzero binary32 0xf.fffffp+124 : 0x2.fd3fa8p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0xf.fffffp+124 : 0x2.fd3facp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : inexact-ok
-= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : inexact-ok
-= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero binary64 0xf.fffffp+124 : 0x2.fd3fa9dee0898p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xf.fffffp+124 : 0x2.fd3fa9dee089ap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
+= j0 towardzero intel96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : inexact-ok
-= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : inexact-ok
-= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
+= j0 towardzero m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee089929p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xf.fffffp+124 : 0x2.fd3fa9dee0899294p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : inexact-ok
-= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : inexact-ok
-= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
+= j0 towardzero binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5614p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc5616p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : inexact-ok
-= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : inexact-ok
-= j0 downward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : inexact-ok
+= j0 towardzero ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc56p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.fffffp+124 : 0x2.fd3fa9dee0899291bc853ffc57p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f338p-516 : inexact-ok
-= j0 towardzero binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : inexact-ok
-= j0 upward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : inexact-ok
-= j0 downward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
+= j0 towardzero binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
-= j0 towardzero intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 upward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 downward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
+= j0 towardzero intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33634p-516 : inexact-ok
-= j0 towardzero m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 upward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : inexact-ok
-= j0 downward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe2708p-516 : inexact-ok
+= j0 towardzero m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe2708p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 towardzero binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 upward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : inexact-ok
-= j0 downward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : inexact-ok
+= j0 towardzero binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe27p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe28p-516 : inexact-ok
-= j0 towardzero ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : inexact-ok
-= j0 upward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : inexact-ok
-= j0 downward intel96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : inexact-ok
+= j0 towardzero ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.ffffffffffff8p+1020 : -0x8.fb6ce7294f33633a6933acbe24p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : inexact-ok
-= j0 towardzero intel96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : inexact-ok
-= j0 upward intel96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : inexact-ok
-= j0 downward m68k96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : inexact-ok
+= j0 towardzero intel96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : inexact-ok
-= j0 towardzero m68k96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : inexact-ok
-= j0 upward m68k96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : inexact-ok
-= j0 downward binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c49p-8192 : inexact-ok
+= j0 towardzero m68k96 0x8p+16380 : 0x1.0bab81cdff92082p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x8p+16380 : 0x1.0bab81cdff920822p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c49p-8192 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c49p-8192 : inexact-ok
-= j0 towardzero binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c49p-8192 : inexact-ok
-= j0 upward binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c4ap-8192 : inexact-ok
-= j0 downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019024p-516 : inexact-ok
+= j0 towardzero binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c49p-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x8p+16380 : 0x1.0bab81cdff9208215a7577214c4ap-8192 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019024p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : inexact-ok
-= j0 downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok
+= j0 towardzero binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f0190238p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok
-= j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
-= j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
+= j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : xfail:ibm128-libgcc inexact-ok
 j0 0x2.602774p+0 xfail-rounding:ibm128-libgcc
 = j0 downward binary32 0x2.602774p+0 : 0x3.e83778p-8 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok
@@ -1359,28 +1359,28 @@  j0 0x2.602774p+0 xfail-rounding:ibm128-libgcc
 = j0 tonearest ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
 = j0 towardzero ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : xfail:ibm128-libgcc inexact-ok
 = j0 upward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab8p-8 : xfail:ibm128-libgcc inexact-ok
-j0 0x8.2f4ecp+124
-= j0 downward binary32 0x8.2f4ecp+124 : 0xd.331efp-68 : inexact-ok
+j0 0x8.2f4ecp+124 xfail-rounding:ibm128-libgcc
+= j0 downward binary32 0x8.2f4ecp+124 : 0xd.331efp-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary32 0x8.2f4ecp+124 : 0xd.331efp-68 : inexact-ok
-= j0 towardzero binary32 0x8.2f4ecp+124 : 0xd.331efp-68 : inexact-ok
-= j0 upward binary32 0x8.2f4ecp+124 : 0xd.331fp-68 : inexact-ok
-= j0 downward binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f46p-68 : inexact-ok
+= j0 towardzero binary32 0x8.2f4ecp+124 : 0xd.331efp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary32 0x8.2f4ecp+124 : 0xd.331fp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f46p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f468p-68 : inexact-ok
-= j0 towardzero binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f46p-68 : inexact-ok
-= j0 upward binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f468p-68 : inexact-ok
-= j0 downward intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : inexact-ok
+= j0 towardzero binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f46p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary64 0x8.2f4ecp+124 : 0xd.331ef7d26f468p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : inexact-ok
-= j0 towardzero intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : inexact-ok
-= j0 upward intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : inexact-ok
-= j0 downward m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : inexact-ok
+= j0 towardzero intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward intel96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : inexact-ok
-= j0 towardzero m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : inexact-ok
-= j0 upward m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : inexact-ok
-= j0 downward binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73402f8p-68 : inexact-ok
+= j0 towardzero m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cap-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward m68k96 0x8.2f4ecp+124 : 0xd.331ef7d26f466cbp-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73402f8p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73403p-68 : inexact-ok
-= j0 towardzero binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73402f8p-68 : inexact-ok
-= j0 upward binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73403p-68 : inexact-ok
-= j0 downward ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c734p-68 : inexact-ok
+= j0 towardzero binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73402f8p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward binary128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73403p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 downward ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c734p-68 : xfail:ibm128-libgcc inexact-ok
 = j0 tonearest ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73404p-68 : inexact-ok
-= j0 towardzero ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c734p-68 : inexact-ok
-= j0 upward ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73404p-68 : inexact-ok
+= j0 towardzero ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c734p-68 : xfail:ibm128-libgcc inexact-ok
+= j0 upward ibm128 0x8.2f4ecp+124 : 0xd.331ef7d26f466caca081c73404p-68 : xfail:ibm128-libgcc inexact-ok
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index cd2a5fed45..43db384407 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1317,19 +1317,19 @@  Function: "j0_downward":
 double: 2
 float: 4
 float128: 4
-ldouble: 11
+ldouble: 1
 
 Function: "j0_towardzero":
 double: 5
 float: 6
-float128: 2
-ldouble: 8
+float128: 4
+ldouble: 2
 
 Function: "j0_upward":
 double: 4
 float: 5
 float128: 5
-ldouble: 6
+ldouble: 2
 
 Function: "j1":
 double: 2