about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorCarl-Anton Ingmarsson <mail@carlanton.se>2014-01-01 19:00:22 +0100
committerCarl-Anton Ingmarsson <mail@carlanton.se>2014-01-01 22:27:42 +0100
commit3abc63365895aff78815ea7b57374486f91daebd (patch)
treea800559354772544113405a507885e45e890caf6 /src
parentc34ef5d7e4f44f8e65600a2c3866f5861c401ea1 (diff)
downloadrust-3abc63365895aff78815ea7b57374486f91daebd.tar.gz
rust-3abc63365895aff78815ea7b57374486f91daebd.zip
Add byteswap intrinsics for converting from big/little to host endian
These are similar to the ntoh[s|l] functions in C and have the style of
from_[be|le][16|32|64].
Diffstat (limited to 'src')
-rw-r--r--src/libstd/unstable/intrinsics.rs13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/libstd/unstable/intrinsics.rs b/src/libstd/unstable/intrinsics.rs
index 46dc03e82b0..e0089b599c5 100644
--- a/src/libstd/unstable/intrinsics.rs
+++ b/src/libstd/unstable/intrinsics.rs
@@ -500,6 +500,19 @@ extern "rust-intrinsic" {
 #[cfg(target_endian = "little")] pub fn to_be64(x: i64) -> i64 { unsafe { bswap64(x) } }
 #[cfg(target_endian = "big")]    pub fn to_be64(x: i64) -> i64 { x }
 
+#[cfg(target_endian = "little")] pub fn from_le16(x: i16) -> i16 { x }
+#[cfg(target_endian = "big")]    pub fn from_le16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "little")] pub fn from_le32(x: i32) -> i32 { x }
+#[cfg(target_endian = "big")]    pub fn from_le32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "little")] pub fn from_le64(x: i64) -> i64 { x }
+#[cfg(target_endian = "big")]    pub fn from_le64(x: i64) -> i64 { unsafe { bswap64(x) } }
+
+#[cfg(target_endian = "little")] pub fn from_be16(x: i16) -> i16 { unsafe { bswap16(x) } }
+#[cfg(target_endian = "big")]    pub fn from_be16(x: i16) -> i16 { x }
+#[cfg(target_endian = "little")] pub fn from_be32(x: i32) -> i32 { unsafe { bswap32(x) } }
+#[cfg(target_endian = "big")]    pub fn from_be32(x: i32) -> i32 { x }
+#[cfg(target_endian = "little")] pub fn from_be64(x: i64) -> i64 { unsafe { bswap64(x) } }
+#[cfg(target_endian = "big")]    pub fn from_be64(x: i64) -> i64 { x }
 
 /// `TypeId` represents a globally unique identifier for a type
 #[lang="type_id"] // This needs to be kept in lockstep with the code in trans/intrinsic.rs and