Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.2/patches/2234614/?format=api
{ "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" ] }