From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x533.google.com (mail-pg1-x533.google.com [IPv6:2607:f8b0:4864:20::533]) by sourceware.org (Postfix) with ESMTPS id ED745383F431 for ; Mon, 12 Jul 2021 09:18:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org ED745383F431 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com Received: by mail-pg1-x533.google.com with SMTP id y17so17561712pgf.12 for ; Mon, 12 Jul 2021 02:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=dJyrmbcM65/LUf3pzxynBg3VIf2FS1TVPvNXRaobP2g=; b=O8TUVY34m9XcdYzMUP3mOQ0EbL0Q7+eQzg8iudWkiKGArKlBXSR1cjO2um48yf60fk pxlaessbQ2b6F9n2a9hOT9/LZzJC/newO3ldAvA2bBNgfQ7oDgUaixhCAllwzvQye1nP gqU+xkYTYWjmEImhCEeQEJVUUINRO2Pebl3BQvTdbHf3UfamuuQl6pSAC4tigEj+n6QQ 5b0vHx+LdXQPLhRDQ21/zgEDgZQfX6HjI2jjMFknHNMqg8qgCYZ9yxqS7vwdWIzTjCUb a7YPQhOF3KTj+w+r4qzKhqyZG4/Vd7vkLLHn2NSPIi2pwjlAmIJW7SZS7vjzyq4pZTvd SdRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=dJyrmbcM65/LUf3pzxynBg3VIf2FS1TVPvNXRaobP2g=; b=c7pYtFR8lGmDwhivLjAp8dX8wGbryqp1fWzgXDCaFOVTL+2nKSxtaefQ2jlE57I/RS WJ0dT3D7uBZiNituF4ay4r+lko/YvfyKNxI9MbW7q+7fYAsjRXCclPUIYWEByft2AObD NSYe/FXJo6b8fMZbB/jqia9i1qMbLkVZGYg33BJjRY4PBl/YT+c6F/tiRCfQ+fdNpUd8 ID+UiHzzs03KfSoUr/MgPaDXbnBvLguvwkgn6Uz5BhHWIXIDwn+1DbvdB5nnHEzzY0na MUtObo25pmFXO0qb53RW5tpuzTnix0YX6NmOrvlT9KYobbz+oNw+FjeZfI3G6Mm10pyN bR7g== X-Gm-Message-State: AOAM533VrYuaqAxu4FNfN4ODO3cfzEAgZXjjbZ0azVqPuHaPbdxrHGXn 3n+N8c2tDJ3mj51JglbfiL1edjyMh7lXzA== X-Google-Smtp-Source: ABdhPJysI68H3ZAwdbMrZ5fZseDYcgRMVlJTOhNp7J6OQWCzkQ9cqPqBt6aVsYG0lNTdkByi+sBF6g== X-Received: by 2002:a62:dd83:0:b029:30f:d69:895f with SMTP id w125-20020a62dd830000b029030f0d69895fmr52286159pff.17.1626081480759; Mon, 12 Jul 2021 02:18:00 -0700 (PDT) Received: from hsinchu02.internal.sifive.com (59-124-168-89.HINET-IP.hinet.net. [59.124.168.89]) by smtp.gmail.com with ESMTPSA id 10sm15356447pfh.174.2021.07.12.02.17.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jul 2021 02:17:59 -0700 (PDT) From: Kito Cheng To: newlib@sourceware.org, kito.cheng@gmail.com Cc: Kito Cheng , "Howland, Craig D" Subject: [PATCH v2] Minimal support for ISO/IEC TS 18661-3. Date: Mon, 12 Jul 2021 17:17:21 +0800 Message-Id: <20210712091721.46737-1-kito.cheng@sifive.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Jul 2021 09:18:03 -0000 - GCC will set __FLT_EVAL_METHOD__ to 16 if __fp16 supported, e.g. cortex-a55/aarch64. - $ aarch64-unknown-elf-gcc -v 2>&1 |grep version gcc version 9.2.0 (GCC) - $ aarch64-unknown-elf-gcc -E -dM -mcpu=cortex-a55 - < /dev/null |grep FLT_EVAL_METHOD #define __FLT_EVAL_METHOD__ 16 #define __FLT_EVAL_METHOD_TS_18661_3__ 16 #define __FLT_EVAL_METHOD_C99__ 16 - The behavior of __FLT_EVAL_METHOD__ == 16 is same as __FLT_EVAL_METHOD__ == 0 except for float16_t, but newlib didn't support float16_t. ISO/IEC TS 18661-3: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2405.pdf V2 Changes: - List Howland, Craig D as co-author since he provide the draft of comment in math.h. Co-authored-by: "Howland, Craig D" --- newlib/libc/include/math.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/newlib/libc/include/math.h b/newlib/libc/include/math.h index ba1a8a17e..0b6494e6a 100644 --- a/newlib/libc/include/math.h +++ b/newlib/libc/include/math.h @@ -146,7 +146,17 @@ extern int isnan (double); #define __TMP_FLT_EVAL_METHOD #endif /* FLT_EVAL_METHOD */ #if defined FLT_EVAL_METHOD - #if FLT_EVAL_METHOD == 0 +/* FLT_EVAL_METHOD == 16 has meaning as defined in ISO/IEC TS 18661-3, + * which provides non-compliant extensions to C and POSIX (by adding + * additional positive values for FLT_EVAL_METHOD). It effectively has + * same meaning as the C99 and C11 definitions for value 0, while also + * serving as a flag that the _Float16 (float16_t) type exists. + * + * FLT_EVAL_METHOD could be any number of bits of supported floating point + * format (e.g. 32, 64, 128), but currently only AArch64 and few other targets + * might define that as 16. */ + #if (FLT_EVAL_METHOD == 0) \ + || (FLT_EVAL_METHOD == 16) typedef float float_t; typedef double double_t; #elif FLT_EVAL_METHOD == 1 -- 2.31.1