From patchwork Wed Jul 24 12:49:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robin Dapp X-Patchwork-Id: 1964269 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=C46BQUV0; dkim-atps=neutral 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 4WTYkm2r9Nz1ybY for ; Wed, 24 Jul 2024 22:49:48 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6E4CE3858414 for ; Wed, 24 Jul 2024 12:49:46 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by sourceware.org (Postfix) with ESMTPS id AC14E385841D for ; Wed, 24 Jul 2024 12:49:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AC14E385841D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AC14E385841D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::52b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721825365; cv=none; b=B+iQYXf6c5QnjQJA13JBKgl2P23O8Yh7eBeeBYVFq1RwIsoonqvZrndQBLSjgay+eGQAhgQvHvHNaLYGh9kY3tv6SEkoHPK62i0YbRenOYe2gvqF8PbEUzz+Dbti+5d1a3w3ztwW8OGy1ZEjB81/o9FslEMN5cg4dPLGt3wOcBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1721825365; c=relaxed/simple; bh=LvjP0DPaCngboeZ8djZe+YEwAS4mW6TJ7c8LtJsLp5Q=; h=DKIM-Signature:Mime-Version:Date:Message-Id:Subject:To:From; b=Y3/jutGDdlqbt8rFjya/Fi/D1uoPwhiG50PsY3lj0agmnwliA9xJOQxZy6Ccq+BT/t4ihE4cvZKQ6DdNqjyP1nrIDAJZeJ6KpVdR8Ja2ogTQ4Hg8WZjLfS65rXfbD9aijADwQsLcuENSQoxYQnpl3PcH7tpe/0sb/ghtfX11/8Y= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-5a2ffc34431so2676504a12.0 for ; Wed, 24 Jul 2024 05:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721825355; x=1722430155; darn=gcc.gnu.org; h=from:to:cc:subject:message-id:date:content-transfer-encoding :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=PRJMoWuERctgaFwhbKqJ/JkfEsFWA1RIFmdBS6h6bOM=; b=C46BQUV06XQBnrMiz8QhCT943Sz6BalUe+J6JjEEscwo/13FsC4sSLp+Hq+B7wZgDj GOuRETo9MYQzPIeRBLunjfztXNWD0h4/aJnbHqDHcI6Ip/0SIx89l2Bn4iI9Ru0y2iO1 AtBGqjNr2NOxt/8btbjiZaLtjbUzWpCJSYt/sLfamhM0pMuPd5GwFmhKRIHAX24op/x0 xovJO/LSl1JDkDUiBLUiGG1BEC50EIexRypppWl25iZfta0W0WiTMmox/K2gYdCV43NI N5/lajoQIabb+gfech7zraEpx72IsltB6XOXOxWKth0N8CxArLqMzrh3T5TQkU68k33x ua6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721825355; x=1722430155; h=from:to:cc:subject:message-id:date:content-transfer-encoding :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PRJMoWuERctgaFwhbKqJ/JkfEsFWA1RIFmdBS6h6bOM=; b=mpybX092mwk3J4FFpjF63aa78FIRArcdsrE7Rsl/OKVCpxN3LX5Qy1ltzSKET1iHG3 qIitXBgt77W2Vd2g9P4cORbB7wsnMfe/pPsGdD481DZWhEu/OXbvAIam4BeoGyZP183d fn6OT/BmaESssTkJZcjK84+UENQdKUtu+rViKJuUWIzbccg2+7dqqp3tl3RfUUXKSG5k LUKf14JIQGP2LiBPEzkzl8nFCUdzG2LLnjxnZ+GNdEBqVdGJjUXNle13xTRb2Qx1Nqug 2TDqPO43yZmC2ZPgezlEwW9r/GJZNoTLBhrMjldEdDIyrmL2Lwni2uy38T3j5PwCa5Jz eIZQ== X-Gm-Message-State: AOJu0Yz2NrtWT30AsDWMdLTTPmcsWaSNH1X6qD7luZW/83tIh1EifFl7 8/OktbNMD9QNznvbzo+XHeWyrDUIngbBKmS5dJOax7j1FyVTI6gtLToTfg== X-Google-Smtp-Source: AGHT+IESCOlAEGj3w6SzQYQoSTbsWJn4tO6wpfvQ++840S7BF878lARYIUFQrhOUTrW2cJUIxjidng== X-Received: by 2002:a50:c189:0:b0:5a1:71b2:e9bd with SMTP id 4fb4d7f45d1cf-5aaa55979c5mr2286694a12.34.1721825354284; Wed, 24 Jul 2024 05:49:14 -0700 (PDT) Received: from localhost (ip-149-172-150-237.um42.pools.vodafone-ip.de. [149.172.150.237]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5a30c2f8645sm8852895a12.72.2024.07.24.05.49.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 24 Jul 2024 05:49:13 -0700 (PDT) Mime-Version: 1.0 Date: Wed, 24 Jul 2024 14:49:13 +0200 Message-Id: Subject: [PATCH] RISC-V: Error early with V and no M extension. [PR116036] Cc: , , , , , "Li, Pan2" To: "gcc-patches" From: "Robin Dapp" X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, 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.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, for calculating the value of a poly_int at runtime we use a multiplication instruction that requires the M extension. Instead of just asserting and ICEing this patch emits an early error at option-parsing time. We have several tests that use only "i" (without "m") and I adjusted all of them to "im". For now, I didn't verify if the original error just with "i" still occurs but just added "m". Tested on rv64gcv_zvfh_zvbb. Regards Robin gcc/ChangeLog: PR target/116036 * config/riscv/riscv.cc (riscv_override_options_internal): Error with TARGET_VECTOR && !TARGET_MUL. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/pr116036.c: New test. gcc/testsuite/ChangeLog: * gcc.target/riscv/arch-31.c: Add m to arch string and expect it. * gcc.target/riscv/arch-32.c: Ditto. * gcc.target/riscv/arch-37.c: Ditto. * gcc.target/riscv/arch-38.c: Ditto. * gcc.target/riscv/predef-14.c: Ditto. * gcc.target/riscv/predef-15.c: Ditto. * gcc.target/riscv/predef-16.c: Ditto. * gcc.target/riscv/predef-26.c: Ditto. * gcc.target/riscv/predef-27.c: Ditto. * gcc.target/riscv/predef-32.c: Ditto. * gcc.target/riscv/predef-33.c: Ditto. * gcc.target/riscv/predef-36.c: Ditto. * gcc.target/riscv/predef-37.c: Ditto. * gcc.target/riscv/rvv/autovec/pr111486.c: Add m to arch string. * gcc.target/riscv/compare-debug-1.c: Ditto. * gcc.target/riscv/compare-debug-2.c: Ditto. * gcc.target/riscv/rvv/base/pr116036.c: New test. --- gcc/config/riscv/riscv.cc | 5 +++++ gcc/internal-fn.cc | 3 ++- gcc/testsuite/gcc.target/riscv/arch-31.c | 2 +- gcc/testsuite/gcc.target/riscv/arch-32.c | 2 +- gcc/testsuite/gcc.target/riscv/arch-37.c | 2 +- gcc/testsuite/gcc.target/riscv/arch-38.c | 2 +- gcc/testsuite/gcc.target/riscv/compare-debug-1.c | 2 +- gcc/testsuite/gcc.target/riscv/compare-debug-2.c | 2 +- gcc/testsuite/gcc.target/riscv/predef-14.c | 6 +++--- gcc/testsuite/gcc.target/riscv/predef-15.c | 4 ++-- gcc/testsuite/gcc.target/riscv/predef-16.c | 4 ++-- gcc/testsuite/gcc.target/riscv/predef-26.c | 6 +++++- gcc/testsuite/gcc.target/riscv/predef-27.c | 6 +++++- gcc/testsuite/gcc.target/riscv/predef-32.c | 6 +++++- gcc/testsuite/gcc.target/riscv/predef-33.c | 6 +++++- gcc/testsuite/gcc.target/riscv/predef-36.c | 6 +++++- gcc/testsuite/gcc.target/riscv/predef-37.c | 6 +++++- gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111486.c | 2 +- gcc/testsuite/gcc.target/riscv/rvv/base/pr116036.c | 11 +++++++++++ 19 files changed, 62 insertions(+), 21 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr116036.c diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index ca9ea1b70f3..487698a8e4f 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -9690,6 +9690,11 @@ riscv_override_options_internal (struct gcc_options *opts) else if (!TARGET_MUL_OPTS_P (opts) && TARGET_DIV_OPTS_P (opts)) error ("%<-mdiv%> requires %<-march%> to subsume the % extension"); + /* We might use a multiplication to calculate the scalable vector length at + runtime. Therefore, require the M extension. */ + if (TARGET_VECTOR && !TARGET_MUL) + sorry ("the % extension requires the % extension"); + /* Likewise floating-point division and square root. */ if ((TARGET_HARD_FLOAT_OPTS_P (opts) || TARGET_ZFINX_OPTS_P (opts)) && ((target_flags_explicit & MASK_FDIV) == 0)) diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc index 826d552a6fd..eb6c033535c 100644 --- a/gcc/internal-fn.cc +++ b/gcc/internal-fn.cc @@ -5049,7 +5049,8 @@ internal_len_load_store_bias (internal_fn ifn, machine_mode mode) } /* Return true if the given ELS_VALUE is supported for a - MASK_LOAD or MASK_LEN_LOAD with mode MODE. */ + MASK_LOAD or MASK_LEN_LOAD with mode MODE. The target's + preferred else value is return in ELSVAL. */ bool internal_mask_load_else_supported_p (internal_fn ifn, diff --git a/gcc/testsuite/gcc.target/riscv/arch-31.c b/gcc/testsuite/gcc.target/riscv/arch-31.c index 5180753b905..9b867c5ecd2 100644 --- a/gcc/testsuite/gcc.target/riscv/arch-31.c +++ b/gcc/testsuite/gcc.target/riscv/arch-31.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv32i_zvfbfmin -mabi=ilp32f" } */ +/* { dg-options "-march=rv32im_zvfbfmin -mabi=ilp32f" } */ int foo() { } diff --git a/gcc/testsuite/gcc.target/riscv/arch-32.c b/gcc/testsuite/gcc.target/riscv/arch-32.c index 49616832512..49a3db79489 100644 --- a/gcc/testsuite/gcc.target/riscv/arch-32.c +++ b/gcc/testsuite/gcc.target/riscv/arch-32.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv64iv_zvfbfmin -mabi=lp64d" } */ +/* { dg-options "-march=rv64imv_zvfbfmin -mabi=lp64d" } */ int foo() { } diff --git a/gcc/testsuite/gcc.target/riscv/arch-37.c b/gcc/testsuite/gcc.target/riscv/arch-37.c index 5b19a73c556..b56ba77b973 100644 --- a/gcc/testsuite/gcc.target/riscv/arch-37.c +++ b/gcc/testsuite/gcc.target/riscv/arch-37.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv32i_zvfbfwma -mabi=ilp32f" } */ +/* { dg-options "-march=rv32im_zvfbfwma -mabi=ilp32f" } */ int foo () {} diff --git a/gcc/testsuite/gcc.target/riscv/arch-38.c b/gcc/testsuite/gcc.target/riscv/arch-38.c index cee3efebe75..164a91e38a3 100644 --- a/gcc/testsuite/gcc.target/riscv/arch-38.c +++ b/gcc/testsuite/gcc.target/riscv/arch-38.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv64iv_zvfbfwma -mabi=lp64d" } */ +/* { dg-options "-march=rv64imv_zvfbfwma -mabi=lp64d" } */ int foo () {} diff --git a/gcc/testsuite/gcc.target/riscv/compare-debug-1.c b/gcc/testsuite/gcc.target/riscv/compare-debug-1.c index d65bb287b9a..c22e967f03d 100644 --- a/gcc/testsuite/gcc.target/riscv/compare-debug-1.c +++ b/gcc/testsuite/gcc.target/riscv/compare-debug-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O -fno-tree-ch --param=max-completely-peel-times=0 -march=rv64iv -mabi=lp64d -fcompare-debug" } */ +/* { dg-options "-O -fno-tree-ch --param=max-completely-peel-times=0 -march=rv64imv -mabi=lp64d -fcompare-debug" } */ void diff --git a/gcc/testsuite/gcc.target/riscv/compare-debug-2.c b/gcc/testsuite/gcc.target/riscv/compare-debug-2.c index d87758475e4..be9bda17b59 100644 --- a/gcc/testsuite/gcc.target/riscv/compare-debug-2.c +++ b/gcc/testsuite/gcc.target/riscv/compare-debug-2.c @@ -1,3 +1,3 @@ /* { dg-do compile } */ -/* { dg-options "-O -fno-tree-ch --param=max-completely-peel-times=0 -march=rv64iv -mabi=lp64d -fno-dce -fschedule-insns -fcompare-debug" } */ +/* { dg-options "-O -fno-tree-ch --param=max-completely-peel-times=0 -march=rv64imv -mabi=lp64d -fno-dce -fschedule-insns -fcompare-debug" } */ #include "compare-debug-1.c" diff --git a/gcc/testsuite/gcc.target/riscv/predef-14.c b/gcc/testsuite/gcc.target/riscv/predef-14.c index 4815150ddfa..138209a0169 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-14.c +++ b/gcc/testsuite/gcc.target/riscv/predef-14.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv32iv -mabi=ilp32 -mcmodel=medlow -misa-spec=2.2" } */ +/* { dg-options "-march=rv32imv -mabi=ilp32 -mcmodel=medlow -misa-spec=2.2" } */ int main () { @@ -27,8 +27,8 @@ int main () { #error "__riscv_a" #endif -#if defined(__riscv_m) -#error "__riscv_m" +#if !defined(__riscv_mul) +#error "__riscv_mul" #endif #if !defined(__riscv_f) diff --git a/gcc/testsuite/gcc.target/riscv/predef-15.c b/gcc/testsuite/gcc.target/riscv/predef-15.c index dad14952ade..fd119dc7492 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-15.c +++ b/gcc/testsuite/gcc.target/riscv/predef-15.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv64iv_zvl512b -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ +/* { dg-options "-march=rv64imv_zvl512b -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ int main () { @@ -27,7 +27,7 @@ int main () { #error "__riscv_a" #endif -#if defined(__riscv_m) +#if !defined(__riscv_m) #error "__riscv_m" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-16.c b/gcc/testsuite/gcc.target/riscv/predef-16.c index faebc1ab4f2..d64b8dc56eb 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-16.c +++ b/gcc/testsuite/gcc.target/riscv/predef-16.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv64i_zve64f -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ +/* { dg-options "-march=rv64im_zve64f -mabi=lp64 -mcmodel=medlow -misa-spec=2.2" } */ int main () { @@ -27,7 +27,7 @@ int main () { #error "__riscv_a" #endif -#if defined(__riscv_m) +#if !defined(__riscv_m) #error "__riscv_m" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-26.c b/gcc/testsuite/gcc.target/riscv/predef-26.c index 285f64bd6c0..df0f05e4550 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-26.c +++ b/gcc/testsuite/gcc.target/riscv/predef-26.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv64i_zvfhmin -mabi=lp64f -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv64im_zvfhmin -mabi=lp64f -mcmodel=medlow -misa-spec=20191213" } */ int main () { @@ -15,6 +15,10 @@ int main () { #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-27.c b/gcc/testsuite/gcc.target/riscv/predef-27.c index 0f9ab4417a6..554acf36e5c 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-27.c +++ b/gcc/testsuite/gcc.target/riscv/predef-27.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv64i_zvfh -mabi=lp64f -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv64im_zvfh -mabi=lp64f -mcmodel=medlow -misa-spec=20191213" } */ int main () { @@ -15,6 +15,10 @@ int main () { #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-32.c b/gcc/testsuite/gcc.target/riscv/predef-32.c index 7417e0d996f..6d56f8fe6b8 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-32.c +++ b/gcc/testsuite/gcc.target/riscv/predef-32.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv32i_zvfbfmin -mabi=ilp32f -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv32im_zvfbfmin -mabi=ilp32f -mcmodel=medlow -misa-spec=20191213" } */ int main () { @@ -15,6 +15,10 @@ int main () { #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-33.c b/gcc/testsuite/gcc.target/riscv/predef-33.c index 74d05bc9719..f1da7e582af 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-33.c +++ b/gcc/testsuite/gcc.target/riscv/predef-33.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv64iv_zvfbfmin -mabi=lp64d -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv64imv_zvfbfmin -mabi=lp64d -mcmodel=medlow -misa-spec=20191213" } */ int main () { @@ -15,6 +15,10 @@ int main () { #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-36.c b/gcc/testsuite/gcc.target/riscv/predef-36.c index b0205b08513..7c87a42f3d3 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-36.c +++ b/gcc/testsuite/gcc.target/riscv/predef-36.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv32i_zvfbfwma -mabi=ilp32f -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv32im_zvfbfwma -mabi=ilp32f -mcmodel=medlow -misa-spec=20191213" } */ int main () @@ -16,6 +16,10 @@ main () #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/predef-37.c b/gcc/testsuite/gcc.target/riscv/predef-37.c index b5aa41102f4..150150e3246 100644 --- a/gcc/testsuite/gcc.target/riscv/predef-37.c +++ b/gcc/testsuite/gcc.target/riscv/predef-37.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=rv64iv_zvfbfwma -mabi=lp64d -mcmodel=medlow -misa-spec=20191213" } */ +/* { dg-options "-O2 -march=rv64imv_zvfbfwma -mabi=lp64d -mcmodel=medlow -misa-spec=20191213" } */ int main () @@ -16,6 +16,10 @@ main () #error "__riscv_i" #endif +#if !defined(__riscv_m) +#error "__riscv_m" +#endif + #if !defined(__riscv_f) #error "__riscv_f" #endif diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111486.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111486.c index 2ba2a363399..483e9b931f6 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111486.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr111486.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-march=rv64iv -mabi=lp64d -O2" } */ +/* { dg-options "-march=rv64imv -mabi=lp64d -O2" } */ typedef char __attribute__((__vector_size__ (1))) V; diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/pr116036.c b/gcc/testsuite/gcc.target/riscv/rvv/base/pr116036.c new file mode 100644 index 00000000000..6819a786aec --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/pr116036.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64idv -mabi=lp64d -O3" } */ + +int a[15][15]; +void init() { + for (int i_0 ; i_0 < 15 ; ++i_0) + for (int i_1 = 0; i_1 < 15; ++i_1) + a[i_0][i_1] = 1; +} + +/* { dg-excess-errors "sorry, unimplemented: the 'V' extension requires the 'M' extension" } */