Skip to content

Commit b4b44c6

Browse files
committed
remove element_unordered_atomic intrinsics
1 parent 7bec089 commit b4b44c6

File tree

1 file changed

+0
-132
lines changed

1 file changed

+0
-132
lines changed

src/mem/mod.rs

-132
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ type c_int = i16;
88
#[cfg(not(target_pointer_width = "16"))]
99
type c_int = i32;
1010

11-
use core::intrinsics::{atomic_load_unordered, atomic_store_unordered, exact_div};
12-
use core::mem;
13-
use core::ops::{BitOr, Shl};
14-
1511
// memcpy/memmove/memset have optimized implementations on some architectures
1612
#[cfg_attr(
1713
all(not(feature = "no-asm"), target_arch = "x86_64"),
@@ -60,131 +56,3 @@ intrinsics! {
6056
impls::c_string_length(s)
6157
}
6258
}
63-
64-
// `bytes` must be a multiple of `mem::size_of::<T>()`
65-
#[cfg_attr(not(target_has_atomic_load_store = "8"), allow(dead_code))]
66-
fn memcpy_element_unordered_atomic<T: Copy>(dest: *mut T, src: *const T, bytes: usize) {
67-
unsafe {
68-
let n = exact_div(bytes, mem::size_of::<T>());
69-
let mut i = 0;
70-
while i < n {
71-
atomic_store_unordered(dest.add(i), atomic_load_unordered(src.add(i)));
72-
i += 1;
73-
}
74-
}
75-
}
76-
77-
// `bytes` must be a multiple of `mem::size_of::<T>()`
78-
#[cfg_attr(not(target_has_atomic_load_store = "8"), allow(dead_code))]
79-
fn memmove_element_unordered_atomic<T: Copy>(dest: *mut T, src: *const T, bytes: usize) {
80-
unsafe {
81-
let n = exact_div(bytes, mem::size_of::<T>());
82-
if src < dest as *const T {
83-
// copy from end
84-
let mut i = n;
85-
while i != 0 {
86-
i -= 1;
87-
atomic_store_unordered(dest.add(i), atomic_load_unordered(src.add(i)));
88-
}
89-
} else {
90-
// copy from beginning
91-
let mut i = 0;
92-
while i < n {
93-
atomic_store_unordered(dest.add(i), atomic_load_unordered(src.add(i)));
94-
i += 1;
95-
}
96-
}
97-
}
98-
}
99-
100-
// `T` must be a primitive integer type, and `bytes` must be a multiple of `mem::size_of::<T>()`
101-
#[cfg_attr(not(target_has_atomic_load_store = "8"), allow(dead_code))]
102-
fn memset_element_unordered_atomic<T>(s: *mut T, c: u8, bytes: usize)
103-
where
104-
T: Copy + From<u8> + Shl<u32, Output = T> + BitOr<T, Output = T>,
105-
{
106-
unsafe {
107-
let n = exact_div(bytes, mem::size_of::<T>());
108-
109-
// Construct a value of type `T` consisting of repeated `c`
110-
// bytes, to let us ensure we write each `T` atomically.
111-
let mut x = T::from(c);
112-
let mut i = 1;
113-
while i < mem::size_of::<T>() {
114-
x = (x << 8) | T::from(c);
115-
i += 1;
116-
}
117-
118-
// Write it to `s`
119-
let mut i = 0;
120-
while i < n {
121-
atomic_store_unordered(s.add(i), x);
122-
i += 1;
123-
}
124-
}
125-
}
126-
127-
intrinsics! {
128-
#[cfg(target_has_atomic_load_store = "8")]
129-
pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_1(dest: *mut u8, src: *const u8, bytes: usize) -> () {
130-
memcpy_element_unordered_atomic(dest, src, bytes);
131-
}
132-
#[cfg(target_has_atomic_load_store = "16")]
133-
pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_2(dest: *mut u16, src: *const u16, bytes: usize) -> () {
134-
memcpy_element_unordered_atomic(dest, src, bytes);
135-
}
136-
#[cfg(target_has_atomic_load_store = "32")]
137-
pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_4(dest: *mut u32, src: *const u32, bytes: usize) -> () {
138-
memcpy_element_unordered_atomic(dest, src, bytes);
139-
}
140-
#[cfg(target_has_atomic_load_store = "64")]
141-
pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_8(dest: *mut u64, src: *const u64, bytes: usize) -> () {
142-
memcpy_element_unordered_atomic(dest, src, bytes);
143-
}
144-
#[cfg(target_has_atomic_load_store = "128")]
145-
pub unsafe extern "C" fn __llvm_memcpy_element_unordered_atomic_16(dest: *mut u128, src: *const u128, bytes: usize) -> () {
146-
memcpy_element_unordered_atomic(dest, src, bytes);
147-
}
148-
149-
#[cfg(target_has_atomic_load_store = "8")]
150-
pub unsafe extern "C" fn __llvm_memmove_element_unordered_atomic_1(dest: *mut u8, src: *const u8, bytes: usize) -> () {
151-
memmove_element_unordered_atomic(dest, src, bytes);
152-
}
153-
#[cfg(target_has_atomic_load_store = "16")]
154-
pub unsafe extern "C" fn __llvm_memmove_element_unordered_atomic_2(dest: *mut u16, src: *const u16, bytes: usize) -> () {
155-
memmove_element_unordered_atomic(dest, src, bytes);
156-
}
157-
#[cfg(target_has_atomic_load_store = "32")]
158-
pub unsafe extern "C" fn __llvm_memmove_element_unordered_atomic_4(dest: *mut u32, src: *const u32, bytes: usize) -> () {
159-
memmove_element_unordered_atomic(dest, src, bytes);
160-
}
161-
#[cfg(target_has_atomic_load_store = "64")]
162-
pub unsafe extern "C" fn __llvm_memmove_element_unordered_atomic_8(dest: *mut u64, src: *const u64, bytes: usize) -> () {
163-
memmove_element_unordered_atomic(dest, src, bytes);
164-
}
165-
#[cfg(target_has_atomic_load_store = "128")]
166-
pub unsafe extern "C" fn __llvm_memmove_element_unordered_atomic_16(dest: *mut u128, src: *const u128, bytes: usize) -> () {
167-
memmove_element_unordered_atomic(dest, src, bytes);
168-
}
169-
170-
#[cfg(target_has_atomic_load_store = "8")]
171-
pub unsafe extern "C" fn __llvm_memset_element_unordered_atomic_1(s: *mut u8, c: u8, bytes: usize) -> () {
172-
memset_element_unordered_atomic(s, c, bytes);
173-
}
174-
#[cfg(target_has_atomic_load_store = "16")]
175-
pub unsafe extern "C" fn __llvm_memset_element_unordered_atomic_2(s: *mut u16, c: u8, bytes: usize) -> () {
176-
memset_element_unordered_atomic(s, c, bytes);
177-
}
178-
#[cfg(target_has_atomic_load_store = "32")]
179-
pub unsafe extern "C" fn __llvm_memset_element_unordered_atomic_4(s: *mut u32, c: u8, bytes: usize) -> () {
180-
memset_element_unordered_atomic(s, c, bytes);
181-
}
182-
#[cfg(target_has_atomic_load_store = "64")]
183-
pub unsafe extern "C" fn __llvm_memset_element_unordered_atomic_8(s: *mut u64, c: u8, bytes: usize) -> () {
184-
memset_element_unordered_atomic(s, c, bytes);
185-
}
186-
#[cfg(target_has_atomic_load_store = "128")]
187-
pub unsafe extern "C" fn __llvm_memset_element_unordered_atomic_16(s: *mut u128, c: u8, bytes: usize) -> () {
188-
memset_element_unordered_atomic(s, c, bytes);
189-
}
190-
}

0 commit comments

Comments
 (0)