gccrs: intrinsics: Add early implementation for atomic_store_{seqcst, relaxed, release}
authorArthur Cohen <arthur.cohen@embecosm.com>
Tue, 25 Oct 2022 09:24:10 +0000 (11:24 +0200)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 21 Feb 2023 11:36:42 +0000 (12:36 +0100)
commita7c8f7ee34334edec4b57db547de1c8b5d0ad31d
tree6380acc2d422264f17391c83020e1b567ed368b4
parent514284ecd97f2f42948f17a244b790c26f637716
gccrs: intrinsics: Add early implementation for atomic_store_{seqcst, relaxed, release}

gcc/rust/ChangeLog:

* backend/rust-builtins.cc (BuiltinsContext::setup_atomic_fns): New function.
(BuiltinsContext::setup): Call `setup_atomic_fns`.
* backend/rust-builtins.h: Declare `setup_atomic_fns`.
* backend/rust-compile-intrinsic.cc (atomic_store_handler_inner): New function.
(atomic_store_handler): New handler.
(make_unsigned_long_tree): Add helper around making unsigned long trees.
(prefetch_data_handler): Use `make_unsigned_long_tree`.
(build_atomic_builtin_name): New function.

gcc/testsuite/ChangeLog:

* rust/compile/torture/intrinsics-4.rs: New test.
* rust/compile/torture/intrinsics-5.rs: New test.
* rust/execute/torture/atomic_store.rs: New test.
gcc/rust/backend/rust-builtins.cc
gcc/rust/backend/rust-builtins.h
gcc/rust/backend/rust-compile-intrinsic.cc
gcc/testsuite/rust/compile/torture/intrinsics-4.rs [new file with mode: 0644]
gcc/testsuite/rust/compile/torture/intrinsics-5.rs [new file with mode: 0644]
gcc/testsuite/rust/execute/torture/atomic_store.rs [new file with mode: 0644]