about summary refs log tree commit diff
path: root/library/compiler-builtins/compiler-builtins/src/int/bswap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/compiler-builtins/compiler-builtins/src/int/bswap.rs')
-rw-r--r--library/compiler-builtins/compiler-builtins/src/int/bswap.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/library/compiler-builtins/compiler-builtins/src/int/bswap.rs b/library/compiler-builtins/compiler-builtins/src/int/bswap.rs
new file mode 100644
index 00000000000..3ede08882dc
--- /dev/null
+++ b/library/compiler-builtins/compiler-builtins/src/int/bswap.rs
@@ -0,0 +1,19 @@
+intrinsics! {
+    #[maybe_use_optimized_c_shim]
+    /// Swaps bytes in 32-bit number
+    pub extern "C" fn __bswapsi2(x: u32) -> u32 {
+        x.swap_bytes()
+    }
+
+    #[maybe_use_optimized_c_shim]
+    /// Swaps bytes in 64-bit number
+    pub extern "C" fn __bswapdi2(x: u64) -> u64 {
+        x.swap_bytes()
+    }
+
+    #[maybe_use_optimized_c_shim]
+    /// Swaps bytes in 128-bit number
+    pub extern "C" fn __bswapti2(x: u128) -> u128 {
+        x.swap_bytes()
+    }
+}