[{"id":1763244,"web_url":"http://patchwork.ozlabs.org/comment/1763244/","msgid":"<CAFiYyc3pr12=k+s+f2yOUrVxHuo=s1AB2aFhAsacsD0JJoF5bA@mail.gmail.com>","list_archive_url":null,"date":"2017-09-05T11:24:02","subject":"Re: [3/9] (decimal_)float_mode_for_size in real.h","submitter":{"id":1765,"url":"http://patchwork.ozlabs.org/api/people/1765/","name":"Richard Biener","email":"richard.guenther@gmail.com"},"content":"On Mon, Sep 4, 2017 at 1:31 PM, Richard Sandiford\n<richard.sandiford@linaro.org> wrote:\n> This patch makes the binary float macros in real.h use\n> float_mode_for_size and adds a corresponding decimal_float_mode_for_size\n> for the decimal macros.\n\nOk.\n\nRichard.\n\n> 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>\n>\n> gcc/\n>         * machmode.h (decimal_float_mode_for_size): New function.\n>         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.\n>         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.\n>         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.\n>         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.\n>         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.\n>         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.\n>\n> Index: gcc/machmode.h\n> ===================================================================\n> --- gcc/machmode.h      2017-08-30 12:20:57.010045759 +0100\n> +++ gcc/machmode.h      2017-09-04 12:18:47.820398622 +0100\n> @@ -652,6 +652,15 @@ float_mode_for_size (unsigned int size)\n>    return dyn_cast <scalar_float_mode> (mode_for_size (size, MODE_FLOAT, 0));\n>  }\n>\n> +/* Likewise for MODE_DECIMAL_FLOAT.  */\n> +\n> +inline opt_scalar_float_mode\n> +decimal_float_mode_for_size (unsigned int size)\n> +{\n> +  return dyn_cast <scalar_float_mode>\n> +    (mode_for_size (size, MODE_DECIMAL_FLOAT, 0));\n> +}\n> +\n>  /* Similar to mode_for_size, but find the smallest mode for a given width.  */\n>\n>  extern machine_mode smallest_mode_for_size (unsigned int, enum mode_class);\n> Index: gcc/real.h\n> ===================================================================\n> --- gcc/real.h  2017-08-30 12:09:02.416468293 +0100\n> +++ gcc/real.h  2017-09-04 12:18:47.820398622 +0100\n> @@ -383,27 +383,28 @@ #define REAL_VALUE_MINUS_ZERO(x)  real_is\n>  /* IN is a REAL_VALUE_TYPE.  OUT is an array of longs.  */\n>  #define REAL_VALUE_TO_TARGET_LONG_DOUBLE(IN, OUT)                      \\\n>    real_to_target (OUT, &(IN),                                          \\\n> -                 mode_for_size (LONG_DOUBLE_TYPE_SIZE, MODE_FLOAT, 0))\n> +                 float_mode_for_size (LONG_DOUBLE_TYPE_SIZE).require ())\n>\n>  #define REAL_VALUE_TO_TARGET_DOUBLE(IN, OUT) \\\n> -  real_to_target (OUT, &(IN), mode_for_size (64, MODE_FLOAT, 0))\n> +  real_to_target (OUT, &(IN), float_mode_for_size (64).require ())\n>\n>  /* IN is a REAL_VALUE_TYPE.  OUT is a long.  */\n>  #define REAL_VALUE_TO_TARGET_SINGLE(IN, OUT) \\\n> -  ((OUT) = real_to_target (NULL, &(IN), mode_for_size (32, MODE_FLOAT, 0)))\n> +  ((OUT) = real_to_target (NULL, &(IN), float_mode_for_size (32).require ()))\n>\n>  /* Real values to IEEE 754 decimal floats.  */\n>\n>  /* IN is a REAL_VALUE_TYPE.  OUT is an array of longs.  */\n>  #define REAL_VALUE_TO_TARGET_DECIMAL128(IN, OUT) \\\n> -  real_to_target (OUT, &(IN), mode_for_size (128, MODE_DECIMAL_FLOAT, 0))\n> +  real_to_target (OUT, &(IN), decimal_float_mode_for_size (128).require ())\n>\n>  #define REAL_VALUE_TO_TARGET_DECIMAL64(IN, OUT) \\\n> -  real_to_target (OUT, &(IN), mode_for_size (64, MODE_DECIMAL_FLOAT, 0))\n> +  real_to_target (OUT, &(IN), decimal_float_mode_for_size (64).require ())\n>\n>  /* IN is a REAL_VALUE_TYPE.  OUT is a long.  */\n>  #define REAL_VALUE_TO_TARGET_DECIMAL32(IN, OUT) \\\n> -  ((OUT) = real_to_target (NULL, &(IN), mode_for_size (32, MODE_DECIMAL_FLOAT, 0)))\n> +  ((OUT) = real_to_target (NULL, &(IN), \\\n> +                          decimal_float_mode_for_size (32).require ()))\n>\n>  extern REAL_VALUE_TYPE real_value_truncate (format_helper, REAL_VALUE_TYPE);\n>","headers":{"Return-Path":"<gcc-patches-return-461490-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-461490-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"RaKK1jsc\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xmkrn4Mt6z9s3T\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue,  5 Sep 2017 21:24:39 +1000 (AEST)","(qmail 1206 invoked by alias); 5 Sep 2017 11:24:30 -0000","(qmail 1110 invoked by uid 89); 5 Sep 2017 11:24:20 -0000","from mail-wm0-f45.google.com (HELO mail-wm0-f45.google.com)\n\t(74.125.82.45) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tTue, 05 Sep 2017 11:24:15 +0000","by mail-wm0-f45.google.com with SMTP id h144so3873336wme.0 for\n\t<gcc-patches@gcc.gnu.org>; Tue, 05 Sep 2017 04:24:04 -0700 (PDT)","by 10.80.180.205 with HTTP; Tue, 5 Sep 2017 04:24:02 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:content-type; q=dns; s=default; b=IcDtyHmN71/SJVVrhY\n\t0dS3iQRKI4SXmoZvtWrh3vkDeVBHFcX3i6umLmFpqjVHYqbC2wX0xWtiy+QGZna9\n\tjKZ9Kab+Clf5zbkKD1sSrgrHr6JjQIpUkJAB6NpE3rlh1ZOfKiJIkDs2qUeQd21h\n\t1oGt4KLXFAjCzH0wNPPEbCRjA=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:mime-version:in-reply-to:references:from:date:message-id\n\t:subject:to:content-type; s=default; bh=XT/c+1lNS1mRrRcSJfKm6cRN\n\teLU=; b=RaKK1jscAKEoC62KXSDy2XeRvPALHonwqrgMkVMToVs1m2997rG/hNon\n\tPmplXbAnOMmTX7P/6lv1pT2GLYMRjezI3SDPsdBETroPeU4vA5+Y1zhkdNx99ous\n\tRvjz6QIfUhf+W0kbGB1SpUDGb1Nm16fO/QwXLREjxjUEkm0omcQ=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-10.2 required=5.0 tests=AWL, BAYES_00,\n\tFREEMAIL_FROM, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS,\n\tRCVD_IN_DNSWL_NONE,\n\tSPF_PASS autolearn=ham version=3.3.2 spammy=","X-HELO":"mail-wm0-f45.google.com","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net;\n\ts=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to;\n\tbh=5NizQaEXu1tmb4oeogBRaOWZ1NfScUjAhNYWyFF+aZY=;\n\tb=Xp83bklMZc8m5XPKCKATyUUj9LKygB+R4dvjVCjE0OJFas8WEeBv/jYgrKy6LzKWS2\n\tBj+gZ5j/qphIfQSkR/q9E4WXdgscskLJ9Ff1XRlwBb404/74/ixqG1c/FQdyINbkr3yn\n\tQtD2oq1iV1ywJ+E5m9JWJy90mTsM3mSlpaP9iZ/Gy5+zVkbh98uIIo1La44DdJvKRMgR\n\tEOuqs8+DgIPrTOUB3sV+6GvBuZijss7iqvkHwvrD7C4LJrDw5G2RjyazXyE/H91XyKer\n\ttbgJSkCR+E6Yq53LEPBh3sbhdz7UVuGsQSO7SeFwNCKGi9SdWjrfxxZxSfz31kyr1E2D\n\tAA+A==","X-Gm-Message-State":"AHPjjUhu8+eo9WrC5Wot222TlGpFt/jgyDA+giOcUoKad+sLaEGwTkRT\tT23RqKYJuOzE2AiyjrBs/p0Vm4v0Uo6I","X-Google-Smtp-Source":"ADKCNb61CfUj8G9t09N4VBEjlI1ZMnz0sC7sILW7JPxeo/R4ELp1rhSboRikIbA6LIlk7PCe5GAIVFZoU4zpSuVDGD0=","X-Received":"by 10.80.146.9 with SMTP id i9mr3176041eda.148.1504610642761;\n\tTue, 05 Sep 2017 04:24:02 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<87h8wiitsg.fsf@linaro.org>","References":"<87tw0iiu51.fsf@linaro.org> <87h8wiitsg.fsf@linaro.org>","From":"Richard Biener <richard.guenther@gmail.com>","Date":"Tue, 5 Sep 2017 13:24:02 +0200","Message-ID":"<CAFiYyc3pr12=k+s+f2yOUrVxHuo=s1AB2aFhAsacsD0JJoF5bA@mail.gmail.com>","Subject":"Re: [3/9] (decimal_)float_mode_for_size in real.h","To":"GCC Patches <gcc-patches@gcc.gnu.org>,\n\tRichard Sandiford <richard.sandiford@linaro.org>","Content-Type":"text/plain; charset=\"UTF-8\"","X-IsSubscribed":"yes"}}]