From patchwork Tue Apr 2 01:16:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xiao Zeng X-Patchwork-Id: 1918596 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V7qby4M7Bz1yY4 for ; Tue, 2 Apr 2024 12:12:14 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BB3D93858D32 for ; Tue, 2 Apr 2024 01:12:12 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from azure-sdnproxy.icoremail.net (azure-sdnproxy.icoremail.net [20.231.56.155]) by sourceware.org (Postfix) with ESMTP id 4A02C3858D20 for ; Tue, 2 Apr 2024 01:11:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4A02C3858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eswincomputing.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eswincomputing.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4A02C3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=20.231.56.155 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712020309; cv=none; b=jSHj/5FthptUgMjW474tRiJ0ElnQzgxQ6DOrTXCP0MNtjwUvfE9gt4QUEOeJ462rBWESnCqipyV2SZ+WnWRH8uhl3BSrsTHD6ynzYW5MPzAttsBtVlDDZO3dx58iBi7yeSVQF9iY90QHgTvB4YFTMGfdpT6YvWvIE+ImyjlHyOU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712020309; c=relaxed/simple; bh=kbnRyRFio88x4WWFad8ENT5XobLSy5Sp+pK370dn4S8=; h=From:To:Subject:Date:Message-Id; b=PwSFc7jjo0SS66YFgoNaEyqoBojSulU5chQOXMUGwMW5qh7FNGr4y8cabeYum6mkNjEIMAdSFyZWhk/YtPySBP2d4Xrz9pKLBzYkLzT8PjVCeW97lw7+IOnA0zga+qCVMEOKXTgtY0ckdFMyG7c4w/2opGdYFtbtiKkVvSuNTnA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost.localdomain (unknown [10.12.130.38]) by app2 (Coremail) with SMTP id TQJkCgDn+bsWWwtmCFkEAA--.36963S4; Tue, 02 Apr 2024 09:10:47 +0800 (CST) From: Xiao Zeng To: gcc-patches@gcc.gnu.org Cc: jeffreyalaw@gmail.com, research_trasio@irq.a4lg.com, kito.cheng@gmail.com, zhengyu@eswincomputing.com, jinma@linux.alibaba.com, Xiao Zeng Subject: [PATCH 0/1] [RISC-V] Add support for _Bfloat16 Date: Tue, 2 Apr 2024 09:16:08 +0800 Message-Id: <20240402011609.73076-1-zengxiao@eswincomputing.com> X-Mailer: git-send-email 2.17.1 X-CM-TRANSID: TQJkCgDn+bsWWwtmCFkEAA--.36963S4 X-Coremail-Antispam: 1UD129KBjvJXoW7CF18AFW7Gr1xArWxXrWUurg_yoW8ur4fpa 1UGw1Yvr98AF93Jrs3tF1UXw45Aa4fWrW5uwn7Xr47A3yFyrWUKF1kK3W7Aw47Za4rXrsr Cr42kFy5uw1jvrDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkF14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4U JVW0owA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oV Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY02Avz4vE-syl42xK 82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGw C20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI48J MIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMI IF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E 87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x0JUdHUDUUUUU= X-CM-SenderInfo: p2hqw5xldrqvxvzl0uprps33xlqjhudrp/ X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Hi all RISC-V folks: This patch completes the support for the bf16 data type in the riscv architecture.On this basis, there will be a series of patches in the future to strengthen support for BF16. It is recommended to first review this patch from the testcases, where detailed explanations have been provided on the flow of data type conversion. The basis of this patch is: The website for the first patch submission is: However, considering the non-standard commit information, this submission was made. Xiao Zeng (1): [RISC-V] Add support for _Bfloat16 gcc/config/riscv/iterators.md | 2 + gcc/config/riscv/riscv-builtins.cc | 16 ++++ gcc/config/riscv/riscv-modes.def | 3 + gcc/config/riscv/riscv.cc | 64 ++++++++++----- gcc/config/riscv/riscv.md | 24 +++--- .../gcc.target/riscv/bf16_arithmetic.c | 42 ++++++++++ gcc/testsuite/gcc.target/riscv/bf16_call.c | 12 +++ .../gcc.target/riscv/bf16_comparison.c | 36 +++++++++ .../riscv/bf16_float_libcall_convert.c | 57 +++++++++++++ .../riscv/bf16_integer_libcall_convert.c | 81 +++++++++++++++++++ libgcc/config/riscv/sfp-machine.h | 3 + libgcc/config/riscv/t-softfp32 | 10 ++- libgcc/config/riscv/t-softfp64 | 3 +- libgcc/soft-fp/floatsibf.c | 45 +++++++++++ libgcc/soft-fp/floatunsibf.c | 45 +++++++++++ 15 files changed, 407 insertions(+), 36 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/bf16_arithmetic.c create mode 100644 gcc/testsuite/gcc.target/riscv/bf16_call.c create mode 100644 gcc/testsuite/gcc.target/riscv/bf16_comparison.c create mode 100644 gcc/testsuite/gcc.target/riscv/bf16_float_libcall_convert.c create mode 100644 gcc/testsuite/gcc.target/riscv/bf16_integer_libcall_convert.c create mode 100644 libgcc/soft-fp/floatsibf.c create mode 100644 libgcc/soft-fp/floatunsibf.c