You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1018 B
33 lines
1018 B
5 months ago
|
From 6d6a5461e42cac18707dfee42b9f41ee7d078866 Mon Sep 17 00:00:00 2001
|
||
|
From: David Koloski <djkoloski@gmail.com>
|
||
|
Date: Tue, 1 Oct 2024 11:54:40 -0400
|
||
|
Subject: [PATCH] Fix generic SIMD for big-endian targets
|
||
|
|
||
|
---
|
||
|
src/simd/generic.rs | 9 ++++++++-
|
||
|
1 file changed, 8 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/simd/generic.rs b/src/simd/generic.rs
|
||
|
index 6f6cc56..d3b1b94 100644
|
||
|
--- a/src/simd/generic.rs
|
||
|
+++ b/src/simd/generic.rs
|
||
|
@@ -73,7 +73,14 @@ impl Group {
|
||
|
pub unsafe fn read(ptr: *const u8) -> Self {
|
||
|
// SAFETY: The caller has guaranteed that `ptr` is valid for reads and
|
||
|
// points to enough bytes for a `Word`.
|
||
|
- unsafe { Self(core::ptr::read_unaligned(ptr.cast())) }
|
||
|
+ #[cfg(target_endian = "little")]
|
||
|
+ unsafe {
|
||
|
+ Self(core::ptr::read_unaligned(ptr.cast()))
|
||
|
+ }
|
||
|
+ #[cfg(target_endian = "big")]
|
||
|
+ unsafe {
|
||
|
+ Self(core::ptr::read_unaligned(ptr.cast::<Word>()).swap_bytes())
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
#[inline]
|
||
|
--
|
||
|
2.46.1
|
||
|
|