public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: Pierre-Marie de Rodat <pmderodat@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r12-6440] [Ada] Use atomic builtins for atomic counters on x86 (32bit)
Date: Tue, 11 Jan 2022 13:26:02 +0000 (GMT)	[thread overview]
Message-ID: <20220111132602.DCFD938A9426@sourceware.org> (raw)

https://gcc.gnu.org/g:4180f273c59cf9d01b675830bce1fe6825b1008c

commit r12-6440-g4180f273c59cf9d01b675830bce1fe6825b1008c
Author: Piotr Trojanek <trojanek@adacore.com>
Date:   Thu Dec 30 18:05:48 2021 +0100

    [Ada] Use atomic builtins for atomic counters on x86 (32bit)
    
    gcc/ada/
    
            * Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of
            System.Atomic_Counters.
            * libgnat/s-atocou__x86.adb: Remove.

Diff:
---
 gcc/ada/Makefile.rtl              |   2 +-
 gcc/ada/libgnat/s-atocou__x86.adb | 112 --------------------------------------
 2 files changed, 1 insertion(+), 113 deletions(-)

diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index 7d319eaedf2..1b066ad6b14 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -898,7 +898,7 @@ ATOMICS_BUILTINS_TARGET_PAIRS = \
 
 X86_TARGET_PAIRS = \
   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
-  s-atocou.adb<libgnat/s-atocou__x86.adb
+  s-atocou.adb<libgnat/s-atocou__builtin.adb
 
 X86_64_TARGET_PAIRS = \
   a-nuauco.ads<libgnat/a-nuauco__x86.ads \
diff --git a/gcc/ada/libgnat/s-atocou__x86.adb b/gcc/ada/libgnat/s-atocou__x86.adb
deleted file mode 100644
index 8704d9df3e0..00000000000
--- a/gcc/ada/libgnat/s-atocou__x86.adb
+++ /dev/null
@@ -1,112 +0,0 @@
-------------------------------------------------------------------------------
---                                                                          --
---                         GNAT RUN-TIME COMPONENTS                         --
---                                                                          --
---               S Y S T E M . A T O M I C _ C O U N T E R S                --
---                                                                          --
---                                 B o d y                                  --
---                                                                          --
---          Copyright (C) 2011-2021, Free Software Foundation, Inc.         --
---                                                                          --
--- GNAT is free software;  you can  redistribute it  and/or modify it under --
--- terms of the  GNU General Public License as published  by the Free Soft- --
--- ware  Foundation;  either version 3,  or (at your option) any later ver- --
--- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
---                                                                          --
--- As a special exception under Section 7 of GPL version 3, you are granted --
--- additional permissions described in the GCC Runtime Library Exception,   --
--- version 3.1, as published by the Free Software Foundation.               --
---                                                                          --
--- You should have received a copy of the GNU General Public License and    --
--- a copy of the GCC Runtime Library Exception along with this program;     --
--- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
--- <http://www.gnu.org/licenses/>.                                          --
---                                                                          --
--- GNAT was originally developed  by the GNAT team at  New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc.      --
---                                                                          --
-------------------------------------------------------------------------------
-
---  This implementation of the package for x86 processor. GCC can't generate
---  code for atomic builtins for 386 CPU. Only increment/decrement instructions
---  are supported, thus this implementaton uses machine code insertions to
---  access the necessary instructions.
-
-with System.Machine_Code;
-
-package body System.Atomic_Counters is
-
-   --  Add comments showing in normal asm language what we generate???
-
-   ---------------
-   -- Decrement --
-   ---------------
-
-   function Decrement (Item : aliased in out Atomic_Unsigned) return Boolean is
-      Aux : Boolean;
-
-   begin
-      System.Machine_Code.Asm
-        (Template =>
-           "lock%; decl" & ASCII.HT & "%0" & ASCII.LF & ASCII.HT
-             & "sete %1",
-         Outputs  =>
-           (Atomic_Unsigned'Asm_Output ("=m", Item),
-            Boolean'Asm_Output ("=qm", Aux)),
-         Inputs   => Atomic_Unsigned'Asm_Input ("m", Item),
-         Volatile => True);
-
-      return Aux;
-   end Decrement;
-
-   procedure Decrement (Item : aliased in out Atomic_Unsigned) is
-   begin
-      if Decrement (Item) then
-         null;
-      end if;
-   end Decrement;
-
-   function Decrement (Item : in out Atomic_Counter) return Boolean is
-   begin
-      return Decrement (Item.Value);
-   end Decrement;
-
-   ---------------
-   -- Increment --
-   ---------------
-
-   procedure Increment (Item : aliased in out Atomic_Unsigned) is
-   begin
-      System.Machine_Code.Asm
-        (Template => "lock%; incl" & ASCII.HT & "%0",
-         Outputs  => Atomic_Unsigned'Asm_Output ("=m", Item),
-         Inputs   => Atomic_Unsigned'Asm_Input ("m", Item),
-         Volatile => True);
-   end Increment;
-
-   procedure Increment (Item : in out Atomic_Counter) is
-   begin
-      Increment (Item.Value);
-   end Increment;
-
-   ----------------
-   -- Initialize --
-   ----------------
-
-   procedure Initialize (Item : out Atomic_Counter) is
-   begin
-      Item.Value := 1;
-   end Initialize;
-
-   ------------
-   -- Is_One --
-   ------------
-
-   function Is_One (Item : Atomic_Counter) return Boolean is
-   begin
-      return Item.Value = 1;
-   end Is_One;
-
-end System.Atomic_Counters;


                 reply	other threads:[~2022-01-11 13:26 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220111132602.DCFD938A9426@sourceware.org \
    --to=pmderodat@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).