get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/2234614/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2234614,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2234614/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260507221717.486023-7-richard.henderson@linaro.org/",
    "project": {
        "id": 14,
        "url": "http://patchwork.ozlabs.org/api/1.2/projects/14/?format=api",
        "name": "QEMU Development",
        "link_name": "qemu-devel",
        "list_id": "qemu-devel.nongnu.org",
        "list_email": "qemu-devel@nongnu.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20260507221717.486023-7-richard.henderson@linaro.org>",
    "list_archive_url": null,
    "date": "2026-05-07T22:17:05",
    "name": "[06/18] fpu: Use of {get, set}_floatx80_rounding_precision everywhere",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "022608cd97fb4a395b16e9c79a195867693f99a0",
    "submitter": {
        "id": 72104,
        "url": "http://patchwork.ozlabs.org/api/1.2/people/72104/?format=api",
        "name": "Richard Henderson",
        "email": "richard.henderson@linaro.org"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260507221717.486023-7-richard.henderson@linaro.org/mbox/",
    "series": [
        {
            "id": 503289,
            "url": "http://patchwork.ozlabs.org/api/1.2/series/503289/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=503289",
            "date": "2026-05-07T22:16:59",
            "name": "fpu: Compress float_status",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/503289/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2234614/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2234614/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>",
        "X-Original-To": "incoming@patchwork.ozlabs.org",
        "Delivered-To": "patchwork-incoming@legolas.ozlabs.org",
        "Authentication-Results": [
            "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=A0mOch3+;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"
        ],
        "Received": [
            "from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBRVW2XbDz1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 08 May 2026 08:18:59 +1000 (AEST)",
            "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wL72E-0000pm-9w; Thu, 07 May 2026 18:17:34 -0400",
            "from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)\n id 1wL72D-0000pU-JE\n for qemu-devel@nongnu.org; Thu, 07 May 2026 18:17:33 -0400",
            "from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <richard.henderson@linaro.org>)\n id 1wL729-0003Ci-CK\n for qemu-devel@nongnu.org; Thu, 07 May 2026 18:17:33 -0400",
            "by mail-oo1-xc2a.google.com with SMTP id\n 006d021491bc7-696ad0c2c2dso758082eaf.0\n for <qemu-devel@nongnu.org>; Thu, 07 May 2026 15:17:29 -0700 (PDT)",
            "from stoup.attlocal.net ([2600:381:c938:6375:9641:bbb2:a93a:bb4c])\n by smtp.gmail.com with ESMTPSA id\n 586e51a60fabf-435573e7254sm45037fac.14.2026.05.07.15.17.26\n for <qemu-devel@nongnu.org>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Thu, 07 May 2026 15:17:27 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1778192248; x=1778797048; darn=nongnu.org;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:from:to:cc:subject:date:message-id\n :reply-to; bh=KCo+wD8N44ZCWiLcNlX2vFV691X/Knl4fAZ2l88NYrw=;\n b=A0mOch3+1/VpDEaYCnVZxn+2jFOkOTma/JNS/OdVA6GjdXBBj58uwTIN5uMRqTB6it\n OZuuCLbJpQPpXnwNmX/Wrgii3dRWZlxW9fJIsQWPaIdvzs8IvveHfPBgRxc/yUT/8knx\n K56gWjSDWZJmwyHiA1XZ9IHqZnf64QtEd4lMyfuW+a1iNdXaodO1BNvS3vKDP/e3SOoE\n S49XWviZWQkW9wzxGwwR89q1737/fXzroiuQUgYD+He3VKiPKM3i4he95tWReszpN7Cu\n WLjPp7CeRLbPJ+gxC8+u5JxBm9M0+Rcx4uP/rbUeJouP+nB3jGMD/W4BMQ5ViD/zDTWm\n nmAQ==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1778192248; x=1778797048;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=KCo+wD8N44ZCWiLcNlX2vFV691X/Knl4fAZ2l88NYrw=;\n b=VWTFdnTYUl9KBr2Ky/4prMWCe+Y2bZ18kEagg6wXelZ/P4YGiNdD6fVw+IHsFf3i2u\n brwjS2paGMY/GyyFWqr0alIcMsryQOY8N0N4gttyhvkwOSXDouM8zoDhxzyYDZzp/dhT\n wzUWnZ2obOHmEXsF5ByKH8pGF/doU8psv2TzGPPfVar0SAGYp+5YtjDUe0EKje3GgXKn\n rEF7fRLibiOUeJDj+eyWbpIAa9CkThRDbttQdqnVSylnG5UFOBIVBzB6Tn3m2WiwfWcq\n NRTqU4uyDzQ28YQ90gdtk4xro3+vVuv2dritWCI8E42Qxd8t4dKjVYvLgy0+vowSmGd3\n 1rEg==",
        "X-Gm-Message-State": "AOJu0YxN2gaWy9hWh6FMxX9H6tiorU9Tgea05lzfmoTn7lObdzO1gybS\n GOZ6tu9v8f+QaFwEW+pzhjQqVEpJgrarlDrk4X34i9ILOdexnocWI1wnfFvyAvV+JTTwxqrgBQg\n RxfZ8",
        "X-Gm-Gg": "AeBDievHd+5biRgnnAVoz027HzTnA9jERjuB9DD5uFjHiAtJMpYxfAQVY6trqHlyGbu\n VHAuGAJq63h/vP17v9KW410ptc4x4xT4FcG7TAy7wa4Qn+qLLhklYeZN4YRIsZqATlmyJPTV1bJ\n t6TspeBvZhJNMpHWak/QB/Y94v143ChT5tCFvEdqGcS6UAoMeGA46I1qZxuXsha8YsVTdxWuJYT\n ID4xe63uElXEbTrJ1+RhOikFR1pxSNQj7gJ3IDFwtOoPvPKBgXmB1ae9EjhXnHkMSMOQGfdalRk\n U+2b5MZil/2rQVxJAS3KPf5/gmWe/bBS0jhYeLv+6CNW2t6SfADlsDYloSkh7vCt0EwCAILevhk\n 0jHkyD3lah+ZRYL3KlUGg2qw020f3r/NZm4UGX/z5AU7PHoclvXgy8tFftTiVGvcq/ytPz8QGuE\n KEPdIOqb3HcZjsNWbvuRuyhxjIpMFBfA0ym5HvDlg2TZ6XoQ==",
        "X-Received": "by 2002:a05:6820:1c91:b0:67e:ae5:732e with SMTP id\n 006d021491bc7-69998cfe0e9mr5068968eaf.36.1778192247771;\n Thu, 07 May 2026 15:17:27 -0700 (PDT)",
        "From": "Richard Henderson <richard.henderson@linaro.org>",
        "To": "qemu-devel@nongnu.org",
        "Subject": "[PATCH 06/18] fpu: Use of {get,\n set}_floatx80_rounding_precision everywhere",
        "Date": "Thu,  7 May 2026 17:17:05 -0500",
        "Message-ID": "<20260507221717.486023-7-richard.henderson@linaro.org>",
        "X-Mailer": "git-send-email 2.43.0",
        "In-Reply-To": "<20260507221717.486023-1-richard.henderson@linaro.org>",
        "References": "<20260507221717.486023-1-richard.henderson@linaro.org>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Received-SPF": "pass client-ip=2607:f8b0:4864:20::c2a;\n envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc2a.google.com",
        "X-Spam_score_int": "-20",
        "X-Spam_score": "-2.1",
        "X-Spam_bar": "--",
        "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no",
        "X-Spam_action": "no action",
        "X-BeenThere": "qemu-devel@nongnu.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "qemu development <qemu-devel.nongnu.org>",
        "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>",
        "List-Post": "<mailto:qemu-devel@nongnu.org>",
        "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>",
        "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>",
        "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org",
        "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"
    },
    "content": "Signed-off-by: Richard Henderson <richard.henderson@linaro.org>\n---\n fpu/softfloat.c              |  10 +-\n target/i386/tcg/fpu_helper.c |  37 ++++---\n target/m68k/softfloat.c      | 208 ++++++++++++++++++-----------------\n tests/fp/fp-test.c           |   2 +-\n 4 files changed, 130 insertions(+), 127 deletions(-)",
    "diff": "diff --git a/fpu/softfloat.c b/fpu/softfloat.c\nindex 231b308b50..11ab26c7f6 100644\n--- a/fpu/softfloat.c\n+++ b/fpu/softfloat.c\n@@ -1503,7 +1503,7 @@ float128 float128_round_pack_canonical(FloatParts128 *p, float_status *s)\n bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status *s)\n {\n     /* Ensure rounding precision is set before beginning. */\n-    switch (s->floatx80_rounding_precision) {\n+    switch (get_floatx80_rounding_precision(s)) {\n     case floatx80_precision_x:\n     case floatx80_precision_d:\n     case floatx80_precision_s:\n@@ -1538,14 +1538,14 @@ bool floatx80_unpack_canonical(FloatParts128 *p, floatx80 f, float_status *s)\n \n floatx80 floatx80_round_pack_canonical(FloatParts128 *p, float_status *s)\n {\n-    const FloatFmt *fmt = &floatx80_params[s->floatx80_rounding_precision];\n+    const FloatFmt *fmt = &floatx80_params[get_floatx80_rounding_precision(s)];\n     uint64_t frac;\n     int exp;\n \n     switch (p->cls) {\n     case float_class_normal:\n     case float_class_denormal:\n-        if (s->floatx80_rounding_precision == floatx80_precision_x) {\n+        if (get_floatx80_rounding_precision(s) == floatx80_precision_x) {\n             parts128_uncanon_normal(p, s, fmt, false);\n             frac = p->frac_hi;\n             exp = p->exp;\n@@ -2841,7 +2841,7 @@ floatx80 floatx80_round_to_int(floatx80 a, float_status *status)\n     }\n \n     p = parts128_round_to_int(&p, get_float_rounding_mode(status), 0, status,\n-                              &floatx80_params[status->floatx80_rounding_precision]);\n+                              &floatx80_params[get_floatx80_rounding_precision(status)]);\n     return floatx80_round_pack_canonical(&p, status);\n }\n \n@@ -4491,7 +4491,7 @@ floatx80 floatx80_sqrt(floatx80 a, float_status *s)\n     if (!floatx80_unpack_canonical(&p, a, s)) {\n         return floatx80_default_nan(s);\n     }\n-    parts128_sqrt(&p, s, &floatx80_params[s->floatx80_rounding_precision]);\n+    parts128_sqrt(&p, s, &floatx80_params[get_floatx80_rounding_precision(s)]);\n     return floatx80_round_pack_canonical(&p, s);\n }\n \ndiff --git a/target/i386/tcg/fpu_helper.c b/target/i386/tcg/fpu_helper.c\nindex 7b0b0dd520..978eb1411b 100644\n--- a/target/i386/tcg/fpu_helper.c\n+++ b/target/i386/tcg/fpu_helper.c\n@@ -1185,9 +1185,9 @@ void helper_f2xm1(CPUX86State *env)\n         uint64_t asig0, asig1, asig2, bsig0, bsig1;\n         FloatRoundMode save_mode = get_float_rounding_mode(&env->fp_status);\n         FloatX80RoundPrec save_prec =\n-            env->fp_status.floatx80_rounding_precision;\n+            get_floatx80_rounding_precision(&env->fp_status);\n         set_float_rounding_mode(float_round_nearest_even, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+        set_floatx80_rounding_precision(floatx80_precision_x, &env->fp_status);\n \n         /* Find the nearest multiple of 1/32 to the argument.  */\n         tmp = floatx80_scalbn(ST0, 5, &env->fp_status);\n@@ -1290,7 +1290,7 @@ void helper_f2xm1(CPUX86State *env)\n                                                 &env->fp_status);\n         }\n \n-        env->fp_status.floatx80_rounding_precision = save_prec;\n+        set_floatx80_rounding_precision(save_prec, &env->fp_status);\n     }\n     merge_exception_flags(env, old_flags);\n }\n@@ -1406,10 +1406,10 @@ void helper_fpatan(CPUX86State *env)\n          * (and underflowing where appropriate).\n          */\n         FloatX80RoundPrec save_prec =\n-            env->fp_status.floatx80_rounding_precision;\n-        env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+            get_floatx80_rounding_precision(&env->fp_status);\n+        set_floatx80_rounding_precision(floatx80_precision_x, &env->fp_status);\n         ST1 = floatx80_div(ST1, ST0, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = save_prec;\n+        set_floatx80_rounding_precision(save_prec, &env->fp_status);\n         if (!floatx80_is_zero(ST1) &&\n             !(get_float_exception_flags(&env->fp_status) &\n               float_flag_inexact)) {\n@@ -1485,9 +1485,10 @@ void helper_fpatan(CPUX86State *env)\n             floatx80 x8;\n             FloatRoundMode save_mode = get_float_rounding_mode(&env->fp_status);\n             FloatX80RoundPrec save_prec =\n-                env->fp_status.floatx80_rounding_precision;\n+                get_floatx80_rounding_precision(&env->fp_status);\n             set_float_rounding_mode(float_round_nearest_even, &env->fp_status);\n-            env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+            set_floatx80_rounding_precision(floatx80_precision_x,\n+                                            &env->fp_status);\n \n             if (arg0_exp == 0) {\n                 normalizeFloatx80Subnormal(arg0_sig, &arg0_exp, &arg0_sig);\n@@ -1794,7 +1795,7 @@ void helper_fpatan(CPUX86State *env)\n             }\n \n             set_float_rounding_mode(save_mode, &env->fp_status);\n-            env->fp_status.floatx80_rounding_precision = save_prec;\n+            set_floatx80_rounding_precision(save_prec, &env->fp_status);\n         }\n         /* This result is inexact.  */\n         rsig1 |= 1;\n@@ -2123,9 +2124,9 @@ void helper_fyl2xp1(CPUX86State *env)\n         uint64_t asig0, asig1, asig2;\n         FloatRoundMode save_mode = get_float_rounding_mode(&env->fp_status);\n         FloatX80RoundPrec save_prec =\n-            env->fp_status.floatx80_rounding_precision;\n+            get_floatx80_rounding_precision(&env->fp_status);\n         set_float_rounding_mode(float_round_nearest_even, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+        set_floatx80_rounding_precision(floatx80_precision_x, &env->fp_status);\n \n         helper_fyl2x_common(env, ST0, &aexp, &asig0, &asig1);\n         /*\n@@ -2143,7 +2144,7 @@ void helper_fyl2xp1(CPUX86State *env)\n         ST1 = normalizeRoundAndPackFloatx80(floatx80_precision_x,\n                                             arg0_sign ^ arg1_sign, aexp,\n                                             asig0, asig1, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = save_prec;\n+        set_floatx80_rounding_precision(save_prec, &env->fp_status);\n     }\n     fpop(env);\n     merge_exception_flags(env, old_flags);\n@@ -2226,9 +2227,9 @@ void helper_fyl2x(CPUX86State *env)\n         floatx80 arg0_m1;\n         FloatRoundMode save_mode = get_float_rounding_mode(&env->fp_status);\n         FloatX80RoundPrec save_prec =\n-            env->fp_status.floatx80_rounding_precision;\n+            get_floatx80_rounding_precision(&env->fp_status);\n         set_float_rounding_mode(float_round_nearest_even, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+        set_floatx80_rounding_precision(floatx80_precision_x, &env->fp_status);\n \n         if (arg0_exp == 0) {\n             normalizeFloatx80Subnormal(arg0_sig, &arg0_exp, &arg0_sig);\n@@ -2290,7 +2291,7 @@ void helper_fyl2x(CPUX86State *env)\n                                                 asig0, asig1, &env->fp_status);\n         }\n \n-        env->fp_status.floatx80_rounding_precision = save_prec;\n+        set_floatx80_rounding_precision(save_prec, &env->fp_status);\n     }\n     fpop(env);\n     merge_exception_flags(env, old_flags);\n@@ -2368,14 +2369,14 @@ void helper_fscale(CPUX86State *env)\n         }\n     } else {\n         int n;\n-        FloatX80RoundPrec save = env->fp_status.floatx80_rounding_precision;\n+        FloatX80RoundPrec save = get_floatx80_rounding_precision(&env->fp_status);\n         int save_flags = get_float_exception_flags(&env->fp_status);\n         set_float_exception_flags(0, &env->fp_status);\n         n = floatx80_to_int32_round_to_zero(ST1, &env->fp_status);\n         set_float_exception_flags(save_flags, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = floatx80_precision_x;\n+        set_floatx80_rounding_precision(floatx80_precision_x, &env->fp_status);\n         ST0 = floatx80_scalbn(ST0, n, &env->fp_status);\n-        env->fp_status.floatx80_rounding_precision = save;\n+        set_floatx80_rounding_precision(save, &env->fp_status);\n     }\n     merge_exception_flags(env, old_flags);\n }\ndiff --git a/target/m68k/softfloat.c b/target/m68k/softfloat.c\nindex 51706f6db8..f5d683bcc5 100644\n--- a/target/m68k/softfloat.c\n+++ b/target/m68k/softfloat.c\n@@ -72,7 +72,8 @@ floatx80 floatx80_getman(floatx80 a, float_status *status)\n         normalizeFloatx80Subnormal(aSig, &aExp, &aSig);\n     }\n \n-    return roundAndPackFloatx80(status->floatx80_rounding_precision, aSign,\n+    return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                aSign,\n                                 0x3FFF, aSig, 0, status);\n }\n \n@@ -160,7 +161,7 @@ floatx80 floatx80_scale(floatx80 a, floatx80 b, float_status *status)\n \n     if (0x400F < bExp) {\n         aExp = bSign ? -0x6001 : 0xE000;\n-        return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+        return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                     aSign, aExp, aSig, 0, status);\n     }\n \n@@ -168,7 +169,7 @@ floatx80 floatx80_scale(floatx80 a, floatx80 b, float_status *status)\n     bSig >>= shiftCount;\n     aExp = bSign ? (aExp - bSig) : (aExp + bSig);\n \n-    return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+    return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                 aSign, aExp, aSig, 0, status);\n }\n \n@@ -192,10 +193,11 @@ floatx80 floatx80_move(floatx80 a, float_status *status)\n         if (aSig == 0) {\n             return a;\n         }\n-        normalizeRoundAndPackFloatx80(status->floatx80_rounding_precision,\n+        normalizeRoundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                       aSign, aExp, aSig, 0, status);\n     }\n-    return roundAndPackFloatx80(status->floatx80_rounding_precision, aSign,\n+    return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                aSign,\n                                 aExp, aSig, 0, status);\n }\n \n@@ -267,9 +269,9 @@ floatx80 floatx80_lognp1(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -337,7 +339,7 @@ floatx80 floatx80_lognp1(floatx80 a, float_status *status)\n         fp0 = floatx80_add(fp0, fp1, status); /* FP0 IS LOG(F) + LOG(1+U) */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(fp0, klog2, status);\n \n@@ -403,7 +405,7 @@ floatx80 floatx80_lognp1(floatx80 a, float_status *status)\n                            status); /* U*V*([B1+W*(B3+W*B5)] + [V*(B2+W*B4)]) */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(fp0, saveu, status);\n \n@@ -465,9 +467,9 @@ floatx80 floatx80_logn(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -524,7 +526,7 @@ floatx80 floatx80_logn(floatx80 a, float_status *status)\n         fp0 = floatx80_add(fp0, fp1, status); /* FP0 IS LOG(F) + LOG(1+U) */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(fp0, klog2, status);\n \n@@ -570,7 +572,7 @@ floatx80 floatx80_logn(floatx80 a, float_status *status)\n                            status); /* U*V*([B1+W*(B3+W*B5)] + [V*(B2+W*B4)]) */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(fp0, saveu, status);\n \n@@ -621,15 +623,15 @@ floatx80 floatx80_log10(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     fp0 = floatx80_logn(a, status);\n     fp1 = packFloatx80(0, 0x3FFD, UINT64_C(0xDE5BD8A937287195)); /* INV_L10 */\n \n     set_float_rounding_mode(user_rnd_mode, status);\n-    status->floatx80_rounding_precision = user_rnd_prec;\n+    set_floatx80_rounding_precision(user_rnd_prec, status);\n \n     a = floatx80_mul(fp0, fp1, status); /* LOGN(X)*INV_L10 */\n \n@@ -680,13 +682,13 @@ floatx80 floatx80_log2(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     if (aSig == one_sig) { /* X is 2^k */\n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = int32_to_floatx80(aExp - 0x3FFF, status);\n     } else {\n@@ -694,7 +696,7 @@ floatx80 floatx80_log2(floatx80 a, float_status *status)\n         fp1 = packFloatx80(0, 0x3FFF, UINT64_C(0xB8AA3B295C17F0BC)); /* INV_L2 */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_mul(fp0, fp1, status); /* LOGN(X)*INV_L2 */\n     }\n@@ -740,9 +742,9 @@ floatx80 floatx80_etox(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     adjflag = 0;\n \n@@ -818,7 +820,7 @@ floatx80 floatx80_etox(floatx80 a, float_status *status)\n             }\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_mul(fp0, scale, status);\n \n@@ -828,15 +830,13 @@ floatx80 floatx80_etox(floatx80 a, float_status *status)\n         } else { /* |X| >= 16380 log2 */\n             if (compact > 0x400CB27C) { /* |X| >= 16480 log2 */\n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n                 if (aSign) {\n-                    a = roundAndPackFloatx80(\n-                                           status->floatx80_rounding_precision,\n-                                           0, -0x1000, aSig, 0, status);\n+                    a = roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                             0, -0x1000, aSig, 0, status);\n                 } else {\n-                    a = roundAndPackFloatx80(\n-                                           status->floatx80_rounding_precision,\n-                                           0, 0x8000, aSig, 0, status);\n+                    a = roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                             0, 0x8000, aSig, 0, status);\n                 }\n                 float_raise(float_flag_inexact, status);\n \n@@ -877,7 +877,7 @@ floatx80 floatx80_etox(floatx80 a, float_status *status)\n         }\n     } else { /* |X| < 2^(-65) */\n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(a, float32_to_floatx80(make_float32(0x3F800000),\n                          status), status); /* 1 + X */\n@@ -923,9 +923,9 @@ floatx80 floatx80_twotox(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     fp0 = a;\n \n@@ -935,18 +935,18 @@ floatx80 floatx80_twotox(floatx80 a, float_status *status)\n         /* |X| > 16480 or |X| < 2^(-70) */\n         if (compact > 0x3FFF8000) { /* |X| > 16480 */\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             if (aSign) {\n-                return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+                return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                             0, -0x1000, aSig, 0, status);\n             } else {\n-                return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+                return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                             0, 0x8000, aSig, 0, status);\n             }\n         } else { /* |X| < 2^(-70) */\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, float32_to_floatx80(\n                              make_float32(0x3F800000), status),\n@@ -1028,7 +1028,7 @@ floatx80 floatx80_twotox(floatx80 a, float_status *status)\n         fp0 = floatx80_add(fp0, fact1, status);\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_mul(fp0, adjfact, status);\n \n@@ -1073,9 +1073,9 @@ floatx80 floatx80_tentox(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     fp0 = a;\n \n@@ -1085,18 +1085,18 @@ floatx80 floatx80_tentox(floatx80 a, float_status *status)\n         /* |X| > 16480 LOG2/LOG10 or |X| < 2^(-70) */\n         if (compact > 0x3FFF8000) { /* |X| > 16480 */\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             if (aSign) {\n-                return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+                return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                             0, -0x1000, aSig, 0, status);\n             } else {\n-                return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+                return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                             0, 0x8000, aSig, 0, status);\n             }\n         } else { /* |X| < 2^(-70) */\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, float32_to_floatx80(\n                              make_float32(0x3F800000), status),\n@@ -1183,7 +1183,7 @@ floatx80 floatx80_tentox(floatx80 a, float_status *status)\n         fp0 = floatx80_add(fp0, fact1, status);\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_mul(fp0, adjfact, status);\n \n@@ -1228,9 +1228,9 @@ floatx80 floatx80_tan(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -1295,7 +1295,7 @@ floatx80 floatx80_tan(floatx80 a, float_status *status)\n             goto loop;\n         } else {\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_move(a, status);\n \n@@ -1355,7 +1355,7 @@ floatx80 floatx80_tan(floatx80 a, float_status *status)\n             fp1 = packFloatx80(xSign, xExp, xSig);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_div(fp0, fp1, status);\n \n@@ -1393,7 +1393,7 @@ floatx80 floatx80_tan(floatx80 a, float_status *status)\n                                status); /* 1+S(Q1+S(Q2+S(Q3+SQ4))) */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_div(fp0, fp1, status);\n \n@@ -1439,9 +1439,9 @@ floatx80 floatx80_sin(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -1510,7 +1510,7 @@ floatx80 floatx80_sin(floatx80 a, float_status *status)\n                                       status); /* 1 */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             /* SINTINY */\n             a = floatx80_move(a, status);\n@@ -1583,7 +1583,7 @@ floatx80 floatx80_sin(floatx80 a, float_status *status)\n             fp0 = floatx80_mul(fp0, x, status);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, float32_to_floatx80(posneg1, status), status);\n \n@@ -1633,7 +1633,7 @@ floatx80 floatx80_sin(floatx80 a, float_status *status)\n             fp0 = floatx80_mul(fp0, fp1, status); /* SIN(R')-R' */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, x, status);\n \n@@ -1679,9 +1679,9 @@ floatx80 floatx80_cos(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -1749,7 +1749,7 @@ floatx80 floatx80_cos(floatx80 a, float_status *status)\n             fp0 = float32_to_floatx80(make_float32(0x3F800000), status); /* 1 */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             /* COSTINY */\n             a = floatx80_sub(fp0, float32_to_floatx80(\n@@ -1823,7 +1823,7 @@ floatx80 floatx80_cos(floatx80 a, float_status *status)\n             fp0 = floatx80_mul(fp0, x, status);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, float32_to_floatx80(posneg1, status), status);\n \n@@ -1871,7 +1871,7 @@ floatx80 floatx80_cos(floatx80 a, float_status *status)\n             fp0 = floatx80_mul(fp0, fp1, status); /* SIN(R')-R' */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, x, status);\n \n@@ -1918,9 +1918,9 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n     compact = floatx80_make_compact(aExp, aSig);\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     if (compact < 0x3FFB8000 || compact > 0x4002FFFF) {\n         /* |X| >= 16 or |X| < 1/16 */\n@@ -1930,7 +1930,7 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n                 fp1 = packFloatx80(aSign, 0x0001, one_sig);\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_sub(fp0, fp1, status);\n \n@@ -1970,7 +1970,7 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n                 fp1 = packFloatx80(aSign, piby2_exp, pi_sig);\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp0, fp1, status);\n \n@@ -1981,7 +1981,7 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n         } else { /* |X| < 1/16 */\n             if (compact < 0x3FD78000) { /* |X| < 2^(-40) */\n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_move(a, status);\n \n@@ -2021,7 +2021,7 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n                 fp0 = floatx80_mul(fp0, fp1, status);\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp0, xsave, status);\n \n@@ -2070,7 +2070,7 @@ floatx80 floatx80_atan(floatx80 a, float_status *status)\n         fp0 = floatx80_add(fp0, fp1, status); /* ATAN(U) */\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_add(fp0, fp3, status); /* ATAN(X) */\n \n@@ -2123,9 +2123,9 @@ floatx80 floatx80_asin(floatx80 a, float_status *status)\n     } /* |X| < 1 */\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     one = packFloatx80(0, one_exp, one_sig);\n     fp0 = a;\n@@ -2137,7 +2137,7 @@ floatx80 floatx80_asin(floatx80 a, float_status *status)\n     fp0 = floatx80_div(fp0, fp1, status);   /* X/SQRT((1+X)*(1-X)) */\n \n     set_float_rounding_mode(user_rnd_mode, status);\n-    status->floatx80_rounding_precision = user_rnd_prec;\n+    set_floatx80_rounding_precision(user_rnd_prec, status);\n \n     a = floatx80_atan(fp0, status);         /* ATAN(X/SQRT((1+X)*(1-X))) */\n \n@@ -2171,7 +2171,8 @@ floatx80 floatx80_acos(floatx80 a, float_status *status)\n     }\n     if (aExp == 0 && aSig == 0) {\n         float_raise(float_flag_inexact, status);\n-        return roundAndPackFloatx80(status->floatx80_rounding_precision, 0,\n+        return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                    0,\n                                     piby2_exp, pi_sig, 0, status);\n     }\n \n@@ -2193,9 +2194,9 @@ floatx80 floatx80_acos(floatx80 a, float_status *status)\n     } /* |X| < 1 */\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     one = packFloatx80(0, one_exp, one_sig);\n     fp0 = a;\n@@ -2207,7 +2208,7 @@ floatx80 floatx80_acos(floatx80 a, float_status *status)\n     fp0 = floatx80_atan(fp0, status);       /* ATAN(SQRT((1-X)/(1+X))) */\n \n     set_float_rounding_mode(user_rnd_mode, status);\n-    status->floatx80_rounding_precision = user_rnd_prec;\n+    set_floatx80_rounding_precision(user_rnd_prec, status);\n \n     a = floatx80_add(fp0, fp0, status);     /* 2 * ATAN(SQRT((1-X)/(1+X))) */\n \n@@ -2257,9 +2258,9 @@ floatx80 floatx80_atanh(floatx80 a, float_status *status)\n     } /* |X| < 1 */\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     one = packFloatx80(0, one_exp, one_sig);\n     fp2 = packFloatx80(aSign, 0x3FFE, one_sig); /* SIGN(X) * (1/2) */\n@@ -2271,7 +2272,7 @@ floatx80 floatx80_atanh(floatx80 a, float_status *status)\n     fp0 = floatx80_lognp1(fp0, status); /* LOG1P(Z) */\n \n     set_float_rounding_mode(user_rnd_mode, status);\n-    status->floatx80_rounding_precision = user_rnd_prec;\n+    set_floatx80_rounding_precision(user_rnd_prec, status);\n \n     a = floatx80_mul(fp0, fp2,\n                      status); /* ATANH(X) = SIGN(X) * (1/2) * LOG1P(Z) */\n@@ -2316,9 +2317,9 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     if (aExp >= 0x3FFD) { /* |X| >= 1/4 */\n         compact = floatx80_make_compact(aExp, aSig);\n@@ -2411,7 +2412,7 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n             sc = packFloatx80(0, m + 0x3FFF, one_sig);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_mul(fp0, sc, status);\n \n@@ -2424,7 +2425,7 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n                       status); /* -1 */\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp0, float32_to_floatx80(\n                                  make_float32(0x00800000), status),\n@@ -2435,7 +2436,7 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n                 return a;\n             } else {\n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 return floatx80_etox(a, status);\n             }\n@@ -2496,7 +2497,7 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n             fp0 = floatx80_add(fp0, fp1, status); /* S*B1+Q */\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_add(fp0, a, status);\n \n@@ -2514,14 +2515,14 @@ floatx80 floatx80_etoxm1(floatx80 a, float_status *status)\n                 fp0 = floatx80_add(fp0, sc, status);\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_mul(fp0, float64_to_floatx80(\n                                  make_float64(0x3730000000000000), status),\n                                  status);\n             } else {\n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp0, sc, status);\n             }\n@@ -2566,9 +2567,9 @@ floatx80 floatx80_tanh(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -2577,7 +2578,7 @@ floatx80 floatx80_tanh(floatx80 a, float_status *status)\n         if (compact < 0x3FFF8000) {\n             /* TANHSM */\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_move(a, status);\n \n@@ -2594,7 +2595,7 @@ floatx80 floatx80_tanh(floatx80 a, float_status *status)\n                 sign ^= 0x80800000; /* -SIGN(X)*EPS */\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp0, float32_to_floatx80(make_float32(sign),\n                                  status), status);\n@@ -2616,7 +2617,7 @@ floatx80 floatx80_tanh(floatx80 a, float_status *status)\n                                           status); /* SIGN */\n \n                 set_float_rounding_mode(user_rnd_mode, status);\n-                status->floatx80_rounding_precision = user_rnd_prec;\n+                set_floatx80_rounding_precision(user_rnd_prec, status);\n \n                 a = floatx80_add(fp1, fp0, status);\n \n@@ -2639,7 +2640,7 @@ floatx80 floatx80_tanh(floatx80 a, float_status *status)\n         fp1 = packFloatx80(vSign ^ aSign, vExp, vSig);\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_div(fp0, fp1, status);\n \n@@ -2682,9 +2683,9 @@ floatx80 floatx80_sinh(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n@@ -2692,9 +2693,9 @@ floatx80 floatx80_sinh(floatx80 a, float_status *status)\n         /* SINHBIG */\n         if (compact > 0x400CB2B3) {\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n-            return roundAndPackFloatx80(status->floatx80_rounding_precision,\n+            return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n                                         aSign, 0x8000, aSig, 0, status);\n         } else {\n             fp0 = floatx80_abs(a); /* Y = |X| */\n@@ -2708,7 +2709,7 @@ floatx80 floatx80_sinh(floatx80 a, float_status *status)\n             fp2 = packFloatx80(aSign, 0x7FFB, one_sig);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_mul(fp0, fp2, status);\n \n@@ -2728,7 +2729,7 @@ floatx80 floatx80_sinh(floatx80 a, float_status *status)\n         fact = packFloat32(aSign, 0x7E, 0);\n \n         set_float_rounding_mode(user_rnd_mode, status);\n-        status->floatx80_rounding_precision = user_rnd_prec;\n+        set_floatx80_rounding_precision(user_rnd_prec, status);\n \n         a = floatx80_mul(fp0, float32_to_floatx80(fact, status), status);\n \n@@ -2768,17 +2769,18 @@ floatx80 floatx80_cosh(floatx80 a, float_status *status)\n     }\n \n     user_rnd_mode = get_float_rounding_mode(status);\n-    user_rnd_prec = status->floatx80_rounding_precision;\n+    user_rnd_prec = get_floatx80_rounding_precision(status);\n     set_float_rounding_mode(float_round_nearest_even, status);\n-    status->floatx80_rounding_precision = floatx80_precision_x;\n+    set_floatx80_rounding_precision(floatx80_precision_x, status);\n \n     compact = floatx80_make_compact(aExp, aSig);\n \n     if (compact > 0x400CB167) {\n         if (compact > 0x400CB2B3) {\n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n-            return roundAndPackFloatx80(status->floatx80_rounding_precision, 0,\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n+            return roundAndPackFloatx80(get_floatx80_rounding_precision(status),\n+                                        0,\n                                         0x8000, one_sig, 0, status);\n         } else {\n             fp0 = packFloatx80(0, aExp, aSig);\n@@ -2792,7 +2794,7 @@ floatx80 floatx80_cosh(floatx80 a, float_status *status)\n             fp1 = packFloatx80(0, 0x7FFB, one_sig);\n \n             set_float_rounding_mode(user_rnd_mode, status);\n-            status->floatx80_rounding_precision = user_rnd_prec;\n+            set_floatx80_rounding_precision(user_rnd_prec, status);\n \n             a = floatx80_mul(fp0, fp1, status);\n \n@@ -2810,7 +2812,7 @@ floatx80 floatx80_cosh(floatx80 a, float_status *status)\n     fp1 = floatx80_div(fp1, fp0, status); /* 1/(2*EXP(|X|)) */\n \n     set_float_rounding_mode(user_rnd_mode, status);\n-    status->floatx80_rounding_precision = user_rnd_prec;\n+    set_floatx80_rounding_precision(user_rnd_prec, status);\n \n     a = floatx80_add(fp0, fp1, status);\n \ndiff --git a/tests/fp/fp-test.c b/tests/fp/fp-test.c\nindex fdb0cccf14..326a1201f3 100644\n--- a/tests/fp/fp-test.c\n+++ b/tests/fp/fp-test.c\n@@ -996,7 +996,7 @@ void run_test(void)\n \n                 verCases_roundingPrecision = 0;\n                 slow_extF80_roundingPrecision = prec80;\n-                qsf.floatx80_rounding_precision = qsf_prec80;\n+                set_floatx80_rounding_precision(qsf_prec80, &qsf);\n \n                 if (attrs & FUNC_EFF_ROUNDINGPRECISION) {\n                     verCases_roundingPrecision = prec80;\n",
    "prefixes": [
        "06/18"
    ]
}