From patchwork Tue Oct 3 22:26:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick O'Neill X-Patchwork-Id: 1842913 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=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=FHGo0OKw; 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 (ip-8-43-85-97.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 4S0XXt74KCz1yng for ; Wed, 4 Oct 2023 09:28:46 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 075A43860C2B for ; Tue, 3 Oct 2023 22:28:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by sourceware.org (Postfix) with ESMTPS id 9D378385841E for ; Tue, 3 Oct 2023 22:27:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9D378385841E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-27740ce6c76so974295a91.0 for ; Tue, 03 Oct 2023 15:27:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1696372049; x=1696976849; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J72FDQwRcRQEaQwjBGaKR0iNSkpFBCHHLyBb6r7utWY=; b=FHGo0OKwE5cieCrEB3NUm39/V0ITVO5e8VQs3gY9tNvJKVyv9fraD+CxEXQOagrfOS hHK+6tB+72dTvXMj9qj9it1cFF0au6v8ghztoxRC5WerzVvI4zEHDl+r+2En68mtGPUG rEQdQL4KlTvbUtWXWjIgSftJRJeZQJ4QtViRIsGTr/CFVScsq1astxw/Dn40mJlNzDdn VuIQt/WKBOsYqFQC7tldxu8j2mPWvGRDzfT8cc+0kEcHjEo7N15SoMkhUqRMY3y5uUHH Nlp+tELCuId/v2PuLVvUoF/eznWycbhI4A8ihPqbE44DaQ16ZQ0n72vZPAOYwvrUkMHq ejDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696372049; x=1696976849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J72FDQwRcRQEaQwjBGaKR0iNSkpFBCHHLyBb6r7utWY=; b=lRiZVAjHNz4uIvsdk9PQN0EAAs6PX5n3xzdlbW3K1duKaY4tNuWXRIpPbR+lnKrn9R Z+UhmmQ76hhwvzAMy3EKlf5I38PHTubC9PXAC2iRMFHyJWwjmHR/+UFnB6+nxbADo0eb jBH+/ckUbRkdzthEw6qMWEuqlNSRBDh/KJ0W7d7LOncT9nlhtNJlJflDhCVhqj+T1zht /Fb/DZ75LOsmyNS7H9qFePm8RBRR+dYvam5MKdUA/TtXc0DsVp7RgR+H8IYbk5itbd6r gIZRsGKz0ZHGZuUIzEUE8Zbj90Wf9wiNhLfepABmKyqT38hcUVOriU1Ms34ri6dTuEad BAcg== X-Gm-Message-State: AOJu0YyTIMYgE7238hvG1YrCVpni7QLoU8dLWeU4TexT62AlwKx1R/HB hlvKVAN4IWfud2jloH1FS3Gl21HdVVWgM3FREH0= X-Google-Smtp-Source: AGHT+IGl70Ulwcq2h8DB7xGllobo+PqwXaet5dMLNXn6WWHzsX9MT1plRJ0pDm6dW80Ori6xHUWy9A== X-Received: by 2002:a17:90a:a090:b0:25d:eca9:1621 with SMTP id r16-20020a17090aa09000b0025deca91621mr636855pjp.6.1696372048274; Tue, 03 Oct 2023 15:27:28 -0700 (PDT) Received: from patrick-ThinkPad-X1-Carbon-Gen-8.ba.rivosinc.com ([2601:647:5700:6860:c65d:964:6f26:42e5]) by smtp.gmail.com with ESMTPSA id 20-20020a17090a199400b00278f1512dd9sm103956pji.32.2023.10.03.15.27.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 15:27:27 -0700 (PDT) From: Patrick O'Neill To: gcc-patches@gcc.gnu.org Cc: jeffreyalaw@gmail.com, palmer@rivosinc.com, kito.cheng@gmail.com, gnu-toolchain@rivosinc.com, Patrick O'Neill Subject: [RFC gcc13 backport 1/3] RISC-V: Add Ztso atomic mappings Date: Tue, 3 Oct 2023 15:26:58 -0700 Message-Id: <20231003222700.909771-2-patrick@rivosinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003222700.909771-1-patrick@rivosinc.com> References: <20231003222700.909771-1-patrick@rivosinc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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 The RISC-V Ztso extension currently has no effect on generated code. With the additional ordering constraints guarenteed by Ztso, we can emit more optimized atomic mappings than the RVWMO mappings. This PR implements the Ztso psABI mappings[1]. [1] https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/391 2023-08-08 Patrick O'Neill gcc/ChangeLog: * common/config/riscv/riscv-common.cc: Add Ztso and mark Ztso as dependent on 'a' extension. * config/riscv/riscv-opts.h (MASK_ZTSO): New mask. (TARGET_ZTSO): New target. * config/riscv/riscv.cc (riscv_memmodel_needs_amo_acquire): Add Ztso case. (riscv_memmodel_needs_amo_release): Add Ztso case. (riscv_print_operand): Add Ztso case for LR/SC annotations. * config/riscv/riscv.md: Import sync-rvwmo.md and sync-ztso.md. * config/riscv/riscv.opt: Add Ztso target variable. * config/riscv/sync.md (mem_thread_fence_1): Expand to RVWMO or Ztso specific insn. (atomic_load): Expand to RVWMO or Ztso specific insn. (atomic_store): Expand to RVWMO or Ztso specific insn. * config/riscv/sync-rvwmo.md: New file. Seperate out RVWMO specific load/store/fence mappings. * config/riscv/sync-ztso.md: New file. Seperate out Ztso specific load/store/fence mappings. gcc/testsuite/ChangeLog: * gcc.target/riscv/amo-table-ztso-amo-add-1.c: New test. * gcc.target/riscv/amo-table-ztso-amo-add-2.c: New test. * gcc.target/riscv/amo-table-ztso-amo-add-3.c: New test. * gcc.target/riscv/amo-table-ztso-amo-add-4.c: New test. * gcc.target/riscv/amo-table-ztso-amo-add-5.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-1.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-2.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-3.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-4.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-5.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-6.c: New test. * gcc.target/riscv/amo-table-ztso-compare-exchange-7.c: New test. * gcc.target/riscv/amo-table-ztso-fence-1.c: New test. * gcc.target/riscv/amo-table-ztso-fence-2.c: New test. * gcc.target/riscv/amo-table-ztso-fence-3.c: New test. * gcc.target/riscv/amo-table-ztso-fence-4.c: New test. * gcc.target/riscv/amo-table-ztso-fence-5.c: New test. * gcc.target/riscv/amo-table-ztso-load-1.c: New test. * gcc.target/riscv/amo-table-ztso-load-2.c: New test. * gcc.target/riscv/amo-table-ztso-load-3.c: New test. * gcc.target/riscv/amo-table-ztso-store-1.c: New test. * gcc.target/riscv/amo-table-ztso-store-2.c: New test. * gcc.target/riscv/amo-table-ztso-store-3.c: New test. * gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c: New test. * gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c: New test. * gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c: New test. * gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c: New test. * gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c: New test. Signed-off-by: Patrick O'Neill --- gcc/common/config/riscv/riscv-common.cc | 6 + gcc/config/riscv/riscv-opts.h | 4 + gcc/config/riscv/riscv.cc | 20 +++- gcc/config/riscv/riscv.md | 2 + gcc/config/riscv/riscv.opt | 3 + gcc/config/riscv/sync-rvwmo.md | 96 +++++++++++++++ gcc/config/riscv/sync-ztso.md | 80 +++++++++++++ gcc/config/riscv/sync.md | 111 ++++++------------ .../riscv/amo-table-ztso-amo-add-1.c | 15 +++ .../riscv/amo-table-ztso-amo-add-2.c | 15 +++ .../riscv/amo-table-ztso-amo-add-3.c | 15 +++ .../riscv/amo-table-ztso-amo-add-4.c | 15 +++ .../riscv/amo-table-ztso-amo-add-5.c | 15 +++ .../riscv/amo-table-ztso-compare-exchange-1.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-2.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-3.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-4.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-5.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-6.c | 10 ++ .../riscv/amo-table-ztso-compare-exchange-7.c | 10 ++ .../gcc.target/riscv/amo-table-ztso-fence-1.c | 14 +++ .../gcc.target/riscv/amo-table-ztso-fence-2.c | 14 +++ .../gcc.target/riscv/amo-table-ztso-fence-3.c | 14 +++ .../gcc.target/riscv/amo-table-ztso-fence-4.c | 14 +++ .../gcc.target/riscv/amo-table-ztso-fence-5.c | 15 +++ .../gcc.target/riscv/amo-table-ztso-load-1.c | 16 +++ .../gcc.target/riscv/amo-table-ztso-load-2.c | 16 +++ .../gcc.target/riscv/amo-table-ztso-load-3.c | 17 +++ .../gcc.target/riscv/amo-table-ztso-store-1.c | 16 +++ .../gcc.target/riscv/amo-table-ztso-store-2.c | 16 +++ .../gcc.target/riscv/amo-table-ztso-store-3.c | 17 +++ .../riscv/amo-table-ztso-subword-amo-add-1.c | 10 ++ .../riscv/amo-table-ztso-subword-amo-add-2.c | 10 ++ .../riscv/amo-table-ztso-subword-amo-add-3.c | 10 ++ .../riscv/amo-table-ztso-subword-amo-add-4.c | 10 ++ .../riscv/amo-table-ztso-subword-amo-add-5.c | 10 ++ 36 files changed, 612 insertions(+), 74 deletions(-) create mode 100644 gcc/config/riscv/sync-rvwmo.md create mode 100644 gcc/config/riscv/sync-ztso.md create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c diff --git a/gcc/common/config/riscv/riscv-common.cc b/gcc/common/config/riscv/riscv-common.cc index e19c0985ca0..e5228978e87 100644 --- a/gcc/common/config/riscv/riscv-common.cc +++ b/gcc/common/config/riscv/riscv-common.cc @@ -71,6 +71,8 @@ static const riscv_implied_info_t riscv_implied_info[] = {"zks", "zksed"}, {"zks", "zksh"}, + {"ztso", "a"}, + {"v", "zvl128b"}, {"v", "zve64d"}, @@ -194,6 +196,8 @@ static const struct riscv_ext_version riscv_ext_version_table[] = {"zkn", ISA_SPEC_CLASS_NONE, 1, 0}, {"zks", ISA_SPEC_CLASS_NONE, 1, 0}, + {"ztso", ISA_SPEC_CLASS_NONE, 1, 0}, + {"zve32x", ISA_SPEC_CLASS_NONE, 1, 0}, {"zve32f", ISA_SPEC_CLASS_NONE, 1, 0}, {"zve32d", ISA_SPEC_CLASS_NONE, 1, 0}, @@ -1265,6 +1269,8 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = {"svinval", &gcc_options::x_riscv_sv_subext, MASK_SVINVAL}, {"svnapot", &gcc_options::x_riscv_sv_subext, MASK_SVNAPOT}, + {"ztso", &gcc_options::x_riscv_ztso_subext, MASK_ZTSO}, + {"xtheadba", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBA}, {"xtheadbb", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBB}, {"xtheadbs", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBS}, diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index be8de182312..90cb3fa0616 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -127,6 +127,10 @@ enum riscv_multilib_select_kind { #define TARGET_ZKSH ((riscv_zk_subext & MASK_ZKSH) != 0) #define TARGET_ZKT ((riscv_zk_subext & MASK_ZKT) != 0) +#define MASK_ZTSO (1 << 0) + +#define TARGET_ZTSO ((riscv_ztso_subext & MASK_ZTSO) != 0) + #define MASK_VECTOR_ELEN_32 (1 << 0) #define MASK_VECTOR_ELEN_64 (1 << 1) #define MASK_VECTOR_ELEN_FP_32 (1 << 2) diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 01eebc83cc5..10359c5bd09 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -4320,6 +4320,10 @@ riscv_union_memmodels (enum memmodel model1, enum memmodel model2) static bool riscv_memmodel_needs_amo_acquire (enum memmodel model) { + /* ZTSO amo mappings require no annotations. */ + if (TARGET_ZTSO) + return false; + switch (model) { case MEMMODEL_ACQ_REL: @@ -4343,6 +4347,10 @@ riscv_memmodel_needs_amo_acquire (enum memmodel model) static bool riscv_memmodel_needs_amo_release (enum memmodel model) { + /* ZTSO amo mappings require no annotations. */ + if (TARGET_ZTSO) + return false; + switch (model) { case MEMMODEL_ACQ_REL: @@ -4541,7 +4549,10 @@ riscv_print_operand (FILE *file, rtx op, int letter) case 'I': { const enum memmodel model = memmodel_base (INTVAL (op)); - if (model == MEMMODEL_SEQ_CST) + if (TARGET_ZTSO && model != MEMMODEL_SEQ_CST) + /* LR ops only have an annotation for SEQ_CST in the Ztso mapping. */ + break; + else if (model == MEMMODEL_SEQ_CST) fputs (".aqrl", file); else if (riscv_memmodel_needs_amo_acquire (model)) fputs (".aq", file); @@ -4550,7 +4561,12 @@ riscv_print_operand (FILE *file, rtx op, int letter) case 'J': { const enum memmodel model = memmodel_base (INTVAL (op)); - if (riscv_memmodel_needs_amo_release (model)) + if (TARGET_ZTSO && model == MEMMODEL_SEQ_CST) + /* SC ops only have an annotation for SEQ_CST in the Ztso mapping. */ + fputs (".rl", file); + else if (TARGET_ZTSO) + break; + else if (riscv_memmodel_needs_amo_release (model)) fputs (".rl", file); break; } diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index bc384d9aedf..e002b9dd61d 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -3141,6 +3141,8 @@ (include "bitmanip.md") (include "crypto.md") (include "sync.md") +(include "sync-rvwmo.md") +(include "sync-ztso.md") (include "peephole.md") (include "pic.md") (include "generic.md") diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index bc5e63ab3e6..39840216a2a 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -235,6 +235,9 @@ int riscv_zm_subext TargetVariable int riscv_sv_subext +TargetVariable +int riscv_ztso_subext + TargetVariable int riscv_xthead_subext diff --git a/gcc/config/riscv/sync-rvwmo.md b/gcc/config/riscv/sync-rvwmo.md new file mode 100644 index 00000000000..1fc7cf16b5b --- /dev/null +++ b/gcc/config/riscv/sync-rvwmo.md @@ -0,0 +1,96 @@ +;; Machine description for RISC-V atomic operations. +;; Copyright (C) 2011-2023 Free Software Foundation, Inc. +;; Contributed by Andrew Waterman (andrew@sifive.com). +;; Based on MIPS target for GNU compiler. + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +;; Memory barrier. + +(define_insn "mem_thread_fence_rvwmo" + [(set (match_operand:BLK 0 "" "") + (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) + (match_operand:SI 1 "const_int_operand" "")] ;; model + "!TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[1]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "fence\trw,rw"; + else if (model == MEMMODEL_ACQ_REL) + return "fence.tso"; + else if (model == MEMMODEL_ACQUIRE) + return "fence\tr,rw"; + else if (model == MEMMODEL_RELEASE) + return "fence\trw,w"; + else + gcc_unreachable (); + } + [(set (attr "length") (const_int 4))]) + +;; Atomic memory operations. + +(define_insn "atomic_load_rvwmo" + [(set (match_operand:GPR 0 "register_operand" "=r") + (unspec_volatile:GPR + [(match_operand:GPR 1 "memory_operand" "A") + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPEC_ATOMIC_LOAD))] + "TARGET_ATOMIC && !TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[2]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "fence\trw,rw\;" + "l\t%0,%1\;" + "fence\tr,rw"; + if (model == MEMMODEL_ACQUIRE) + return "l\t%0,%1\;" + "fence\tr,rw"; + else + return "l\t%0,%1"; + } + [(set_attr "type" "atomic") + (set (attr "length") (const_int 12))]) + +;; Implement atomic stores with conservative fences. +;; This allows us to be compatible with the ISA manual Table A.6 and Table A.7. +(define_insn "atomic_store_rvwmo" + [(set (match_operand:GPR 0 "memory_operand" "=A") + (unspec_volatile:GPR + [(match_operand:GPR 1 "reg_or_0_operand" "rJ") + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPEC_ATOMIC_STORE))] + "TARGET_ATOMIC && !TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[2]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "fence\trw,w\;" + "s\t%z1,%0\;" + "fence\trw,rw"; + if (model == MEMMODEL_RELEASE) + return "fence\trw,w\;" + "s\t%z1,%0"; + else + return "s\t%z1,%0"; + } + [(set_attr "type" "atomic") + (set (attr "length") (const_int 12))]) diff --git a/gcc/config/riscv/sync-ztso.md b/gcc/config/riscv/sync-ztso.md new file mode 100644 index 00000000000..91c2a48c069 --- /dev/null +++ b/gcc/config/riscv/sync-ztso.md @@ -0,0 +1,80 @@ +;; Machine description for RISC-V atomic operations. +;; Copyright (C) 2011-2023 Free Software Foundation, Inc. +;; Contributed by Andrew Waterman (andrew@sifive.com). +;; Based on MIPS target for GNU compiler. + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +;; Memory barriers. + +(define_insn "mem_thread_fence_ztso" + [(set (match_operand:BLK 0 "" "") + (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) + (match_operand:SI 1 "const_int_operand" "")] ;; model + "TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[1]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "fence\trw,rw"; + else + gcc_unreachable (); + } + [(set (attr "length") (const_int 4))]) + +;; Atomic memory operations. + +(define_insn "atomic_load_ztso" + [(set (match_operand:GPR 0 "register_operand" "=r") + (unspec_volatile:GPR + [(match_operand:GPR 1 "memory_operand" "A") + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPEC_ATOMIC_LOAD))] + "TARGET_ATOMIC && TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[2]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "fence\trw,rw\;" + "l\t%0,%1\;"; + else + return "l\t%0,%1"; + } + [(set_attr "type" "atomic") + (set (attr "length") (const_int 12))]) + +(define_insn "atomic_store_ztso" + [(set (match_operand:GPR 0 "memory_operand" "=A") + (unspec_volatile:GPR + [(match_operand:GPR 1 "reg_or_0_operand" "rJ") + (match_operand:SI 2 "const_int_operand")] ;; model + UNSPEC_ATOMIC_STORE))] + "TARGET_ATOMIC && TARGET_ZTSO" + { + enum memmodel model = (enum memmodel) INTVAL (operands[2]); + model = memmodel_base (model); + + if (model == MEMMODEL_SEQ_CST) + return "s\t%z1,%0\;" + "fence\trw,rw"; + else + return "s\t%z1,%0"; + } + [(set_attr "type" "atomic") + (set (attr "length") (const_int 8))]) \ No newline at end of file diff --git a/gcc/config/riscv/sync.md b/gcc/config/riscv/sync.md index 9fc626267de..2f85951508f 100644 --- a/gcc/config/riscv/sync.md +++ b/gcc/config/riscv/sync.md @@ -36,88 +36,55 @@ (define_expand "mem_thread_fence" [(match_operand:SI 0 "const_int_operand" "")] ;; model "" -{ - if (INTVAL (operands[0]) != MEMMODEL_RELAXED) - { - rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); - MEM_VOLATILE_P (mem) = 1; - emit_insn (gen_mem_thread_fence_1 (mem, operands[0])); - } - DONE; -}) - -(define_insn "mem_thread_fence_1" - [(set (match_operand:BLK 0 "" "") - (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER)) - (match_operand:SI 1 "const_int_operand" "")] ;; model - "" { - enum memmodel model = (enum memmodel) INTVAL (operands[1]); - model = memmodel_base (model); - if (model == MEMMODEL_SEQ_CST) - return "fence\trw,rw"; - else if (model == MEMMODEL_ACQ_REL) - return "fence.tso"; - else if (model == MEMMODEL_ACQUIRE) - return "fence\tr,rw"; - else if (model == MEMMODEL_RELEASE) - return "fence\trw,w"; - else - gcc_unreachable (); - } - [(set (attr "length") (const_int 4))]) + enum memmodel model = memmodel_base (INTVAL (operands[0])); + + if (TARGET_ZTSO && model == MEMMODEL_SEQ_CST) + { + rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); + MEM_VOLATILE_P (mem) = 1; + emit_insn (gen_mem_thread_fence_ztso (mem, operands[0])); + } + else if (!TARGET_ZTSO && model != MEMMODEL_RELAXED) + { + rtx mem = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode)); + MEM_VOLATILE_P (mem) = 1; + emit_insn (gen_mem_thread_fence_rvwmo (mem, operands[0])); + } + DONE; + }) ;; Atomic memory operations. -(define_insn "atomic_load" - [(set (match_operand:GPR 0 "register_operand" "=r") - (unspec_volatile:GPR - [(match_operand:GPR 1 "memory_operand" "A") - (match_operand:SI 2 "const_int_operand")] ;; model - UNSPEC_ATOMIC_LOAD))] +(define_expand "atomic_load" + [(match_operand:GPR 0 "register_operand") + (match_operand:GPR 1 "memory_operand") + (match_operand:SI 2 "const_int_operand")] ;; model "TARGET_ATOMIC" { - enum memmodel model = (enum memmodel) INTVAL (operands[2]); - model = memmodel_base (model); - - if (model == MEMMODEL_SEQ_CST) - return "fence\trw,rw\;" - "l\t%0,%1\;" - "fence\tr,rw"; - if (model == MEMMODEL_ACQUIRE) - return "l\t%0,%1\;" - "fence\tr,rw"; + if (TARGET_ZTSO) + emit_insn (gen_atomic_load_ztso (operands[0], operands[1], + operands[2])); else - return "l\t%0,%1"; - } - [(set_attr "type" "atomic") - (set (attr "length") (const_int 12))]) - -;; Implement atomic stores with conservative fences. -;; This allows us to be compatible with the ISA manual Table A.6 and Table A.7. -(define_insn "atomic_store" - [(set (match_operand:GPR 0 "memory_operand" "=A") - (unspec_volatile:GPR - [(match_operand:GPR 1 "reg_or_0_operand" "rJ") - (match_operand:SI 2 "const_int_operand")] ;; model - UNSPEC_ATOMIC_STORE))] + emit_insn (gen_atomic_load_rvwmo (operands[0], operands[1], + operands[2])); + DONE; + }) + +(define_expand "atomic_store" + [(match_operand:GPR 0 "memory_operand") + (match_operand:GPR 1 "reg_or_0_operand") + (match_operand:SI 2 "const_int_operand")] ;; model "TARGET_ATOMIC" { - enum memmodel model = (enum memmodel) INTVAL (operands[2]); - model = memmodel_base (model); - - if (model == MEMMODEL_SEQ_CST) - return "fence\trw,w\;" - "s\t%z1,%0\;" - "fence\trw,rw"; - if (model == MEMMODEL_RELEASE) - return "fence\trw,w\;" - "s\t%z1,%0"; + if (TARGET_ZTSO) + emit_insn (gen_atomic_store_ztso (operands[0], operands[1], + operands[2])); else - return "s\t%z1,%0"; - } - [(set_attr "type" "atomic") - (set (attr "length") (const_int 12))]) + emit_insn (gen_atomic_store_rvwmo (operands[0], operands[1], + operands[2])); + DONE; + }) (define_insn "atomic_" [(set (match_operand:GPR 0 "memory_operand" "+A") diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c new file mode 100644 index 00000000000..a7097e9aab9 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** amoadd\.w\tzero,a1,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c new file mode 100644 index 00000000000..8e993903439 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that atomic op mappings the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** amoadd\.w\tzero,a1,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c new file mode 100644 index 00000000000..e1cd209fcb2 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** amoadd\.w\tzero,a1,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c new file mode 100644 index 00000000000..484d11eb100 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** amoadd\.w\tzero,a1,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c new file mode 100644 index 00000000000..2117283fd0d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** amoadd\.w\tzero,a1,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c new file mode 100644 index 00000000000..03247c632fd --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_RELAXED, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c new file mode 100644 index 00000000000..46356747067 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_CONSUME, __ATOMIC_CONSUME); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c new file mode 100644 index 00000000000..cf252dba6ec --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c new file mode 100644 index 00000000000..9a0c86569b5 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_RELEASE, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c new file mode 100644 index 00000000000..750ba89cd74 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c new file mode 100644 index 00000000000..0d0bf26d95a --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_RELEASE, __ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c new file mode 100644 index 00000000000..838568ed588 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that compare exchange mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ + +void foo (int bar, int baz, int qux) +{ + __atomic_compare_exchange_n(&bar, &baz, qux, 1, __ATOMIC_SEQ_CST, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c new file mode 100644 index 00000000000..a9ba4a252e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* Verify that fence mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** ret +*/ +void foo() +{ + __atomic_thread_fence(__ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c new file mode 100644 index 00000000000..9b083431d1a --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* Verify that fence mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** ret +*/ +void foo() +{ + __atomic_thread_fence(__ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c new file mode 100644 index 00000000000..db21ee6f031 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* Verify that fence mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** ret +*/ +void foo() +{ + __atomic_thread_fence(__ATOMIC_RELEASE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c new file mode 100644 index 00000000000..d5bc61b57e8 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* Verify that fence mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** ret +*/ +void foo() +{ + __atomic_thread_fence(__ATOMIC_ACQ_REL); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c new file mode 100644 index 00000000000..e5e5f4e5012 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* Verify that fence mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** fence\trw,rw +** ret +*/ +void foo() +{ + __atomic_thread_fence(__ATOMIC_SEQ_CST); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c new file mode 100644 index 00000000000..be5f8d310a4 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* Verify that load mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** lw\ta[0-9]+,0\(a0\) +** sw\ta[0-9]+,0\(a1\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_load(bar, baz, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c new file mode 100644 index 00000000000..30583841648 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* Verify that load mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** lw\ta[0-9]+,0\(a0\) +** sw\ta[0-9]+,0\(a1\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_load(bar, baz, __ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c new file mode 100644 index 00000000000..c1c3b57bfe5 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* Verify that load mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** fence\trw,rw +** lw\ta[0-9]+,0\(a0\) +** sw\ta[0-9]+,0\(a1\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_load(bar, baz, __ATOMIC_SEQ_CST); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c new file mode 100644 index 00000000000..f5519db22f7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* Verify that store mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** lw\ta[0-9]+,0\(a1\) +** sw\ta[0-9]+,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_store(bar, baz, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c new file mode 100644 index 00000000000..440f407e66a --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* Verify that store mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** lw\ta[0-9]+,0\(a1\) +** sw\ta[0-9]+,0\(a0\) +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_store(bar, baz, __ATOMIC_RELEASE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c new file mode 100644 index 00000000000..a92d4d1ce9a --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* Verify that store mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +/* +** foo: +** lw\ta[0-9]+,0\(a1\) +** sw\ta[0-9]+,0\(a0\) +** fence\trw,rw +** ret +*/ +void foo (int* bar, int* baz) +{ + __atomic_store(bar, baz, __ATOMIC_SEQ_CST); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c new file mode 100644 index 00000000000..e187a6b7335 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that subword atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (short* bar, short* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_RELAXED); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c new file mode 100644 index 00000000000..1e0867624ba --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that subword atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (short* bar, short* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_ACQUIRE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c new file mode 100644 index 00000000000..4b2ef967375 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that subword atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (short* bar, short* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_RELEASE); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c new file mode 100644 index 00000000000..87e5356f0a7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that subword atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ + +void foo (short* bar, short* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_ACQ_REL); +} diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c new file mode 100644 index 00000000000..fd59c8880ec --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* Verify that subword atomic op mappings match the Ztso suggested mapping. */ +/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ +/* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ + +void foo (short* bar, short* baz) +{ + __atomic_add_fetch(bar, baz, __ATOMIC_SEQ_CST); +} From patchwork Tue Oct 3 22:26:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick O'Neill X-Patchwork-Id: 1842912 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=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=tUZ16wZ8; 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 4S0XXH5QY4z1yng for ; Wed, 4 Oct 2023 09:28:15 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BBFC53857033 for ; Tue, 3 Oct 2023 22:28:13 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by sourceware.org (Postfix) with ESMTPS id 63D0D3858431 for ; Tue, 3 Oct 2023 22:27:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 63D0D3858431 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-2774aa96947so1095291a91.2 for ; Tue, 03 Oct 2023 15:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1696372050; x=1696976850; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=AQoE+HvUFl7WVKCYqJYEmbdrWNhrLTsszVzqtURxbmw=; b=tUZ16wZ8RB9VIQP0Se19NJoIf17o62DTexn3bFRRypNwMKVILCwVHe+Uw/44RHik9U 9gb/y/UekdRJaTcrTmF4Jb9V2JJrvmx694uNVDk28SD761XjHFykfqno/Y2mVJZ1fADJ H52tTUQvWxmkqjO78CywK5oHjBkPoIjKEwP7c4CkylxSZ/LSn0mQU1c4/mtTL89IBeit Dk7txaXtypmWr6n3nUPTQ1+ImrYRBlb0hK5RdTpjyUpBBJ/RfPq5ibhmYwmsb5s0rWO5 OUTJitGPUgm30B2+LFGziTM1JdAE88d/lA/cyzMsAPcn7zqxtwKVagL1y8Z02eYCqL5p oVUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696372050; x=1696976850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=AQoE+HvUFl7WVKCYqJYEmbdrWNhrLTsszVzqtURxbmw=; b=n1QntP04Y82MZqUwRUR/vlf74dXV5bnSeOXKSCtszxacJJhrJEFNnulesCbJ1PbtlZ aruSBU8pLQh8ZOfivGKOs3rFxgvZKfZ+jM8b1cueXYRyVaAcFImpJeN1oE4Zsa/+Hy6g QOf6g3l3xATGXEbPKkjScjUCWouxAojYesx9dcTEWpTu4f68+iptJbz07oxt7BWxo3Ss +vcQbkGqnhAT7TavAxR7WIlJ5oyhlmKmWZpZlgwwcLTaYa8POs1nZReJPuy/B9BQXp2c IS5c0cYykIOEVmZlAEhyAgY9ROjVc60KdxPO3dxquClzouqCg6Q+aTdk+Pr+HmOmmre/ C1Ug== X-Gm-Message-State: AOJu0YzZ78fyyzooy4UbFZ5ScOs11CfFUNonD+qewE8/YDrsa/mWFr1M Et4Nm1MOlEJ4mJX5bssxtKu+aAf5a2+Hebd9zmQ= X-Google-Smtp-Source: AGHT+IExbWrf15c3QMDAVSr4wDMo5HLCGfp5Q9VINDgpwRMZQ+u68+E8qN4fH0kLBY3VB7jfIS/TOg== X-Received: by 2002:a17:90a:c711:b0:268:dad:2fdc with SMTP id o17-20020a17090ac71100b002680dad2fdcmr654156pjt.21.1696372049399; Tue, 03 Oct 2023 15:27:29 -0700 (PDT) Received: from patrick-ThinkPad-X1-Carbon-Gen-8.ba.rivosinc.com ([2601:647:5700:6860:c65d:964:6f26:42e5]) by smtp.gmail.com with ESMTPSA id 20-20020a17090a199400b00278f1512dd9sm103956pji.32.2023.10.03.15.27.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 15:27:29 -0700 (PDT) From: Patrick O'Neill To: gcc-patches@gcc.gnu.org Cc: jeffreyalaw@gmail.com, palmer@rivosinc.com, kito.cheng@gmail.com, gnu-toolchain@rivosinc.com, Patrick O'Neill Subject: [RFC gcc13 backport 2/3] RISC-V: Specify -mabi for ztso testcases Date: Tue, 3 Oct 2023 15:26:59 -0700 Message-Id: <20231003222700.909771-3-patrick@rivosinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003222700.909771-1-patrick@rivosinc.com> References: <20231003222700.909771-1-patrick@rivosinc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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 On rv32 targets, this patch fixes ztso testcases errors like this: cc1: error: ABI requires '-march=rv32' 2023-08-11 Patrick O'Neill gcc/testsuite/ChangeLog: * gcc.target/riscv/amo-table-ztso-amo-add-1.c: Add -mabi=lp64d to dg-options. * gcc.target/riscv/amo-table-ztso-amo-add-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-amo-add-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-amo-add-4.c: Ditto. * gcc.target/riscv/amo-table-ztso-amo-add-5.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-1.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-4.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-5.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-6.c: Ditto. * gcc.target/riscv/amo-table-ztso-compare-exchange-7.c: Ditto. * gcc.target/riscv/amo-table-ztso-fence-1.c: Ditto. * gcc.target/riscv/amo-table-ztso-fence-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-fence-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-fence-4.c: Ditto. * gcc.target/riscv/amo-table-ztso-fence-5.c: Ditto. * gcc.target/riscv/amo-table-ztso-load-1.c: Ditto. * gcc.target/riscv/amo-table-ztso-load-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-load-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-store-1.c: Ditto. * gcc.target/riscv/amo-table-ztso-store-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-store-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c: Ditto. * gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c: Ditto. * gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c: Ditto. * gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c: Ditto. * gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c: Ditto. Signed-off-by: Patrick O'Neill --- gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-1.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-2.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-3.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-4.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-5.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-6.c | 2 +- .../gcc.target/riscv/amo-table-ztso-compare-exchange-7.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c | 2 +- gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c | 2 +- .../gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c | 2 +- .../gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c | 2 +- .../gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c | 2 +- .../gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c | 2 +- .../gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c | 2 +- 28 files changed, 28 insertions(+), 28 deletions(-) diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c index a7097e9aab9..a88d08eb3f4 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c index 8e993903439..ebd240f9dd2 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that atomic op mappings the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c index e1cd209fcb2..ee00d222ece 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c index 484d11eb100..ff08811c5d7 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c index 2117283fd0d..b129df4b607 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-amo-add-5.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c index 03247c632fd..9d5b8c2a5f6 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c index 46356747067..57d6746ee22 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c index cf252dba6ec..d0044106d36 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c index 9a0c86569b5..6a53473e26b 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c index 750ba89cd74..80729091c73 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-5.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c index 0d0bf26d95a..731f7f84af4 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-6.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c index 838568ed588..3806d55da1d 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-compare-exchange-7.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that compare exchange mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c index a9ba4a252e7..81f2f9fbbd6 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that fence mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c index 9b083431d1a..8e868890bae 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that fence mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c index db21ee6f031..5eb1aa7f472 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that fence mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c index d5bc61b57e8..3df959a3eb0 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that fence mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c index e5e5f4e5012..731f9a34267 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-fence-5.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that fence mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c index be5f8d310a4..b911a6e3207 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that load mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c index 30583841648..056506f6370 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that load mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c index c1c3b57bfe5..35a301f321d 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-load-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that load mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c index f5519db22f7..f0bda4b2420 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that store mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c index 440f407e66a..45f73056aa4 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that store mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c index a92d4d1ce9a..762468b248e 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-store-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that store mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso -O3" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d -O3" } */ /* { dg-skip-if "" { *-*-* } { "-g" "-flto"} } */ /* { dg-final { check-function-bodies "**" "" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c index e187a6b7335..e9ae506f32c 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that subword atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c index 1e0867624ba..f47922f13e4 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-2.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that subword atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c index 4b2ef967375..296387ad07c 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that subword atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c index 87e5356f0a7..f919ede7303 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that subword atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w\t" 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c index fd59c8880ec..2027a93218c 100644 --- a/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c +++ b/gcc/testsuite/gcc.target/riscv/amo-table-ztso-subword-amo-add-5.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* Verify that subword atomic op mappings match the Ztso suggested mapping. */ -/* { dg-options "-march=rv64id_ztso" } */ +/* { dg-options "-march=rv64id_ztso -mabi=lp64d" } */ /* { dg-final { scan-assembler-times "lr.w.aqrl\t" 1 } } */ /* { dg-final { scan-assembler-times "sc.w.rl\t" 1 } } */ From patchwork Tue Oct 3 22:27:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick O'Neill X-Patchwork-Id: 1842911 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=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=fkESOPyh; dkim-atps=neutral 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=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 [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 (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4S0XWk53RLz1yqD for ; Wed, 4 Oct 2023 09:27:46 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8E21A3857BB2 for ; Tue, 3 Oct 2023 22:27:44 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by sourceware.org (Postfix) with ESMTPS id C46CA38582A9 for ; Tue, 3 Oct 2023 22:27:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C46CA38582A9 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-27752a1e184so1091542a91.3 for ; Tue, 03 Oct 2023 15:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1696372050; x=1696976850; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Zvhtjz2PEBGCSdS6gZ6qwrc9Ph+UE/YLNRJHXttIrY4=; b=fkESOPyh4hzPScZi5odlWSoQfMM2t/uZYreL7bxmhYgkTF1eULQQHeJJsZGLEgXycj WEyjn713zHxo6Sa/MfLeDCghIayMi53oWt6JWizzC5x5H8JbVrI+1Hfmh32Q9gjVriM9 uVHya8OcFch59hqSpAfV8lVBepRFROq393RI88DrJ1kGiJuIMs+CmtcoT+K00WvCOwY1 fgPiWgHoNTjyUQU96PSgyFHbvhVXlukvVf+QWF4Lb3GwfsbuSis0DiQeeh80Nhab+JGS BdoM1oGt47Ojl+5WZ7zI2m6A8jG142fd+Tkdu1KYkjxQJ9P87EMp7eb4IWDICwpgVzKq +8Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696372050; x=1696976850; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zvhtjz2PEBGCSdS6gZ6qwrc9Ph+UE/YLNRJHXttIrY4=; b=iFdZJlCyLaE8pavuOuy7cOdQp4No9v+y5wPtAAbs2sH3kkaT8VHr0UrV1y3XfurEp6 C7NFlPQs3tAHHU9M9rHDPsHnr1UlgccJa0OVgatugNQ/ClEpgG3h1cfI9GymwB/s7zWR 7+IfJag7XM0TCqp+G+/iY2/1WX9xcDXjc6OOlf7bh4iRB9b0ly7cGLziL3THAsqgtap1 uAa1T9uHUEUz5DQrmJIyPTQASOFClV8yGD3w2/C5p9f/FXrSKMwbH4m2Q7USUQ+LFEnD iUHtyhduY7jMDmKlGOi6Iv84Jm00zMhHuhn79Tel8Wr3HPS91+PYO0VFxlqIOHrxROj0 +4/g== X-Gm-Message-State: AOJu0YySe8qtCF2QcMWLDSvGKIy+2Eu/TOcY86jVvp3arMBnsot5tMJT 5zFt8Gqu5gKpUfAg8AV3wi8SBn2+bzRV2uMV3Oc= X-Google-Smtp-Source: AGHT+IFFMFd+xjxJMPoSS9zg6KoKcxTJB6TqUPuamFcIS4ibR1qpFFJn0mNLBh5yjJPVOqFch5NcNg== X-Received: by 2002:a17:90a:f40e:b0:274:67f4:30f1 with SMTP id ch14-20020a17090af40e00b0027467f430f1mr586957pjb.14.1696372050572; Tue, 03 Oct 2023 15:27:30 -0700 (PDT) Received: from patrick-ThinkPad-X1-Carbon-Gen-8.ba.rivosinc.com ([2601:647:5700:6860:c65d:964:6f26:42e5]) by smtp.gmail.com with ESMTPSA id 20-20020a17090a199400b00278f1512dd9sm103956pji.32.2023.10.03.15.27.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Oct 2023 15:27:30 -0700 (PDT) From: Patrick O'Neill To: gcc-patches@gcc.gnu.org Cc: jeffreyalaw@gmail.com, palmer@rivosinc.com, kito.cheng@gmail.com, gnu-toolchain@rivosinc.com, Jeff Law , Patrick O'Neill Subject: [RFC gcc13 backport 3/3] [RISCV][committed] Remove spurious newline in ztso sequence Date: Tue, 3 Oct 2023 15:27:00 -0700 Message-Id: <20231003222700.909771-4-patrick@rivosinc.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231003222700.909771-1-patrick@rivosinc.com> References: <20231003222700.909771-1-patrick@rivosinc.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, 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 From: Jeff Law amo-table-ztso-load-3 the coordination branch after merging up the Ztso changes due to a spurious newline in the output causing scan-function-body to fail. There's probably an over-zealous .* or similar regexp in the framework. I didn't see it in a quick scan, but could have easily missed it. Regardless, fixing the extraneous newline is easy :-) gcc/ * config/riscv/sync-ztso.md (atomic_load_ztso): Avoid extraenous newline. Signed-off-by: Patrick O'Neill --- gcc/config/riscv/sync-ztso.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/config/riscv/sync-ztso.md b/gcc/config/riscv/sync-ztso.md index 91c2a48c069..ed94471b96b 100644 --- a/gcc/config/riscv/sync-ztso.md +++ b/gcc/config/riscv/sync-ztso.md @@ -52,7 +52,7 @@ if (model == MEMMODEL_SEQ_CST) return "fence\trw,rw\;" - "l\t%0,%1\;"; + "l\t%0,%1"; else return "l\t%0,%1"; } @@ -77,4 +77,4 @@ return "s\t%z1,%0"; } [(set_attr "type" "atomic") - (set (attr "length") (const_int 8))]) \ No newline at end of file + (set (attr "length") (const_int 8))])