From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by sourceware.org (Postfix) with ESMTPS id 9DB2C3858D20 for ; Tue, 8 Aug 2023 21:56:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9DB2C3858D20 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-pf1-x432.google.com with SMTP id d2e1a72fcca58-686e29b058cso4440451b3a.1 for ; Tue, 08 Aug 2023 14:56:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1691531811; x=1692136611; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=jxvCaSJ3p9wiAYVY7sWxPiVNGGo6obFyHcBxtCN20PE=; b=i7FzaojjEEtO40D1TNF8P9jNMKTlkO1ro+AgN2n89ExdO+u1LVCm+JNgkEt4fMEHp3 0j5/NJNXc3BujorjCKYYVLWH2f9bnRiiZkASXojYDCh3zVPExT81kSfLYzJK288Tmjtr xk3wNUIUzsxMY4OaU0oyfsHuErolphn91VsjeTeWekn8PmqMqmKs32TPO1hvofKHhOt9 Z55KZ5WIW8KoyrHMx3mvEPHo256bYQ6v7XB8Dufo7ESmK+iyDgTLULx4pOwHJJ4CqUnk SXGwD9RnUFwsEqXv7y2DWTPupTifn+vNDm+u6AGXOCpALZe4CpFPi6dC+5uEsOh6v/ce rdyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691531811; x=1692136611; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jxvCaSJ3p9wiAYVY7sWxPiVNGGo6obFyHcBxtCN20PE=; b=IzZdk/SuQWYWPNSGl/WqgshXIFmKBaKkBKqZ3GfTjz93vXlIrollkXZ4UIwU6/OW1H gPH/u/fXY1M41/7N62TZRBy8SR35/wKJeGA6CltE0Aa1Yh14s3eNMe3lcCTF9kyH6XdQ F/HVy1Ju5HSN6yB4wD0IcdXDUcFBaBB7COdfIXl+1E2Y7iBjnvytpBHOeKooIiSoa5Wc fzLBN6bbepHjEtSbtS7dYaDkD6NiCC4yXLntRl8YiXeScrzzvxu8q+ihNZTvxzqTubpE LkSiMl36etzuO6UH25KAMTZZ5+hAq/6z48ysAi+jBHYj5ZrywS4yvnZYct8bOVyxlnr0 5FHw== X-Gm-Message-State: AOJu0Yy1IY7a2bUaa9hrUOvK12wUFOlWK6fJlpL8r8+lqSdPmONAKUtp xw6fO6Il8V1dujHHT+CPbEV2kw== X-Google-Smtp-Source: AGHT+IHnbGa9vRda8GBnCq03fXUu5sDp50pBBy+Lv2dcExuaSVNhSfExHkbMEhxjpNjdZfeUbMTVFA== X-Received: by 2002:a05:6a00:892:b0:687:2e0b:228 with SMTP id q18-20020a056a00089200b006872e0b0228mr797962pfj.11.1691531811472; Tue, 08 Aug 2023 14:56:51 -0700 (PDT) Received: from [192.168.68.52] (c-71-231-145-0.hsd1.wa.comcast.net. [71.231.145.0]) by smtp.gmail.com with ESMTPSA id ff17-20020a056a002f5100b00682ad247e5fsm8852586pfb.179.2023.08.08.14.56.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 08 Aug 2023 14:56:51 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------tIazgrD0MoNWAzBUMLohbrGi" Message-ID: <54988fbb-11de-8641-b898-ca6fa548405c@rivosinc.com> Date: Tue, 8 Aug 2023 14:56:49 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: [RFC v2] RISC-V: Add Ztso atomic mappings Content-Language: en-US To: Jeff Law , gcc-patches@gcc.gnu.org Cc: palmer@rivosinc.com, kito.cheng@gmail.com, vineetg@rivosinc.com, andrew@sifive.com, gnu-toolchain@rivosinc.com, dlustig@nvidia.com, cmuellner@gcc.gnu.org, andrea@rivosinc.com, hboehm@google.com References: <20230505171256.1380528-1-patrick@rivosinc.com> <20230717212836.23056-1-patrick@rivosinc.com> <6f0ec7dd-c316-7114-bce2-6cc66206fe1c@gmail.com> From: Patrick O'Neill In-Reply-To: <6f0ec7dd-c316-7114-bce2-6cc66206fe1c@gmail.com> X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,NICE_REPLY_A,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 List-Id: This is a multi-part message in MIME format. --------------tIazgrD0MoNWAzBUMLohbrGi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 7/31/23 22:04, Jeff Law wrote: > > > On 7/17/23 15:28, Patrick O'Neill wrote: >> 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 defines a strengthened version of Andrea Parri's proposed >> Ztso mappings ("Proposed Mapping") [1]. The changes were discussed by >> Andrea Parri and Hans Boehm on the GCC mailing list and are required >> in order to be compatible with the RVWMO ABI [2]. >> >> This change corresponds to the Ztso psABI proposal[3]. >> >> [1] >> https://github.com/preames/public-notes/blob/master/riscv-tso-mappings.rst >> [2] >> https://inbox.sourceware.org/gcc-patches/ZFV8pNAstwrF2qBb@andrea/T/#t >> [3] https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/391 >> >> gcc/ChangeLog: >> >> 2023-07-17  Patrick O'Neill >> >>     * 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: >> >> 2023-07-17  Patrick O'Neill >> >>     * 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 >> --- > > > >> diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc >> index 195f0019e06..432d4389985 100644 >> --- a/gcc/config/riscv/riscv.cc >> +++ b/gcc/config/riscv/riscv.cc >> @@ -4483,6 +4483,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; > Formatting nit.  Should be indented two spaces from the open curley. I think this is just some git format-patch weirdness. When I apply the patch it gives me two spaces as expected: {   /* ZTSO amo mappings require no annotations.  */ > >> + >>     switch (model) >>       { >>         case MEMMODEL_ACQ_REL: >> @@ -4506,6 +4510,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; > Likewise. > > > > > >> + >> +(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 > Just another formatting nit.  The (unspec... should line up with the > preceeding (match_operand.. > > Similarly for the other new patterns/expanders you've created. Fixing > those may in turn require further indention of sub-rtxes. > > No concerns on implementation.  So consider it pre-approved with the > formatting fixes.  Just post the final patch for archival purposes. > > Sorry for the long wait. > > jeff > I revised the patterns/expanders in v3. Thanks! Patrick --------------tIazgrD0MoNWAzBUMLohbrGi--