From patchwork Tue Mar 28 14:26:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kito Cheng X-Patchwork-Id: 1762346 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=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=XfW981im; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4PmBpn3hmDz1yYS for ; Wed, 29 Mar 2023 01:27:29 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5513D3858417 for ; Tue, 28 Mar 2023 14:27:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5513D3858417 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1680013647; bh=VUJOAKfIGoxF59YGAN+/Ss9tIBoVB+/VEfbcfjToQe8=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=XfW981imZDOcPiiDXeQfyl4NMWHcNhSP/gx66AU7B3QdYNZjkccFdoDhK37U/kwLN s7yJjRaP/qWwCMSD7Q1HEM/tGu/7X8VjY6SNyMChkZmn0ZcWgKj/UAz1l0SzEy1mBm 7bKbQ/RsqXLWRwbG8mDphFmGv6wHztUk/dnEBlso= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by sourceware.org (Postfix) with ESMTPS id C2B573858D39 for ; Tue, 28 Mar 2023 14:27:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C2B573858D39 Received: by mail-pj1-x1032.google.com with SMTP id p3-20020a17090a74c300b0023f69bc7a68so12713992pjl.4 for ; Tue, 28 Mar 2023 07:27:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680013622; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VUJOAKfIGoxF59YGAN+/Ss9tIBoVB+/VEfbcfjToQe8=; b=RtDwzdKuK9U7ALFn5yYwhPRLAL6+yJoE/mtUNl2Hdt6tRuI+itR2en63p0+ukAe9Kt UBmgQfoO4Hk6HVf/3hVGevoTUUtjpZ2AgodPAhS4NqSVH0jqHZQlXx8UZoOUv+7E6jxb QTVHFQDno5KHkRLNdUrA55BZb7Xec/e/vBwPKiGBB7eWnCPFax41nofOui7ZOgDQhnjb E0tExsdrh1JmS4+DOsJnAGBcHy3bEOwHDHRAdgNYu/jRfQrgMT35P0E7rAzUVIzKjF49 rLegp0pxcepinN+BJHaXD4I8D7YSpiaxOXJ9jhjvJYizHM7z9JV3wTlWVlKq6roH5kJH ypCA== X-Gm-Message-State: AAQBX9dWXvWer6lKJI3MzQievUeortVRFAYjYTbosNNlMFUWKrgxx8X4 YhgQRfdSOvthkPztjPl9dX461tiZuBOzZSGmO3RpU/jrH1iemDtxo5G9aW4D934jL2B0I20WZ1G 0mOxi0r4hcQ38X+cA87cZCsaHkKNtcJmRD3sqx47yldDYdi1SDaMnMQos4W9nTmpWEqwt8rP0Rv yBcLU= X-Google-Smtp-Source: AKy350ZLAk6nKsYXDo9OncJKzfWVXafP6DWY84PdREzV/dyiPfyFLxErZErmqZQjvX/usfGtCc9eSA== X-Received: by 2002:a17:90a:1906:b0:23c:fa83:2a7d with SMTP id 6-20020a17090a190600b0023cfa832a7dmr18806173pjg.12.1680013622007; Tue, 28 Mar 2023 07:27:02 -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 jw20-20020a170903279400b001a0428bd8c4sm21175788plb.289.2023.03.28.07.27.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 07:27:01 -0700 (PDT) To: gcc-patches@gcc.gnu.org, kito.cheng@gmail.com, jim.wilson.gcc@gmail.com, palmer@dabbelt.com, andrew@sifive.com, juzhe.zhong@rivai.ai, jeffreyalaw@gmail.com Cc: Kito Cheng Subject: [PATCH] RISC-V: Define __riscv_v_intrinsic [PR109312] Date: Tue, 28 Mar 2023 22:26:57 +0800 Message-Id: <20230328142657.53724-1-kito.cheng@sifive.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Kito Cheng via Gcc-patches From: Kito Cheng Reply-To: Kito Cheng Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" RVV intrinsic has defined a macro to identity the version of RVV intrinsic spec, we missed that before, thanksful we are catch this before release. gcc/ChangeLog: PR target/109312 * config/riscv/riscv-c.cc (riscv_ext_version_value): New. (riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and minor refactor. gcc/testsuite/ChangeLog: PR target/109312 * gcc.target/riscv/predef-__riscv_v_intrinsic.c: New test. --- gcc/config/riscv/riscv-c.cc | 18 ++++++++++++++---- .../riscv/predef-__riscv_v_intrinsic.c | 11 +++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/predef-__riscv_v_intrinsic.c diff --git a/gcc/config/riscv/riscv-c.cc b/gcc/config/riscv/riscv-c.cc index ff07d319d0b..6ad562dcb8b 100644 --- a/gcc/config/riscv/riscv-c.cc +++ b/gcc/config/riscv/riscv-c.cc @@ -34,6 +34,12 @@ along with GCC; see the file COPYING3. If not see #define builtin_define(TXT) cpp_define (pfile, TXT) +static int +riscv_ext_version_value (unsigned major, unsigned minor) +{ + return (major * 1000000) + (minor * 1000); +} + /* Implement TARGET_CPU_CPP_BUILTINS. */ void @@ -118,7 +124,11 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile) builtin_define_with_int_value ("__riscv_v_elen_fp", 0); if (TARGET_MIN_VLEN) - builtin_define ("__riscv_vector"); + { + builtin_define ("__riscv_vector"); + builtin_define_with_int_value ("__riscv_v_intrinsic", + riscv_ext_version_value (0, 11)); + } /* Define architecture extension test macros. */ builtin_define_with_int_value ("__riscv_arch_test", 1); @@ -141,13 +151,13 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile) subset != subset_list->end (); subset = subset->next) { - int version_value = (subset->major_version * 1000000) - + (subset->minor_version * 1000); + int version_value = riscv_ext_version_value (subset->major_version, + subset->minor_version); /* Special rule for zicsr and zifencei, it's used for ISA spec 2.2 or earlier. */ if ((subset->name == "zicsr" || subset->name == "zifencei") && version_value == 0) - version_value = 2000000; + version_value = riscv_ext_version_value (2, 0); sprintf (buf, "__riscv_%s", subset->name.c_str ()); builtin_define_with_int_value (buf, version_value); diff --git a/gcc/testsuite/gcc.target/riscv/predef-__riscv_v_intrinsic.c b/gcc/testsuite/gcc.target/riscv/predef-__riscv_v_intrinsic.c new file mode 100644 index 00000000000..dbbedf54f87 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/predef-__riscv_v_intrinsic.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64imafdcv -mabi=lp64d" } */ + +int main () { + +#if __riscv_v_intrinsic != 11000 +#error "__riscv_v_intrinsic" +#endif + + return 0; +}