public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-6440] [Ada] Use atomic builtins for atomic counters on x86 (32bit)
@ 2022-01-11 13:26 Pierre-Marie de Rodat
  0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2022-01-11 13:26 UTC (permalink / raw)
  To: gcc-cvs

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;


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-01-11 13:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11 13:26 [gcc r12-6440] [Ada] Use atomic builtins for atomic counters on x86 (32bit) Pierre-Marie de Rodat

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).