summaryrefslogtreecommitdiffstats
path: root/library/stdarch/crates/core_arch/src/arm/v6.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /library/stdarch/crates/core_arch/src/arm/v6.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/stdarch/crates/core_arch/src/arm/v6.rs')
-rw-r--r--library/stdarch/crates/core_arch/src/arm/v6.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/library/stdarch/crates/core_arch/src/arm/v6.rs b/library/stdarch/crates/core_arch/src/arm/v6.rs
new file mode 100644
index 000000000..5df30cd62
--- /dev/null
+++ b/library/stdarch/crates/core_arch/src/arm/v6.rs
@@ -0,0 +1,49 @@
+//! ARMv6 intrinsics.
+//!
+//! The reference is [ARMv6-M Architecture Reference Manual][armv6m].
+//!
+//! [armv6m]:
+//! http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0419c/index.
+//! html
+
+#[cfg(test)]
+use stdarch_test::assert_instr;
+
+/// Reverse the order of the bytes.
+#[inline]
+#[cfg_attr(test, assert_instr(rev))]
+pub unsafe fn _rev_u16(x: u16) -> u16 {
+ x.swap_bytes() as u16
+}
+
+/// Reverse the order of the bytes.
+#[inline]
+#[cfg_attr(test, assert_instr(rev))]
+pub unsafe fn _rev_u32(x: u32) -> u32 {
+ x.swap_bytes() as u32
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::core_arch::arm::v6;
+
+ #[test]
+ fn _rev_u16() {
+ unsafe {
+ assert_eq!(
+ v6::_rev_u16(0b0000_0000_1111_1111_u16),
+ 0b1111_1111_0000_0000_u16
+ );
+ }
+ }
+
+ #[test]
+ fn _rev_u32() {
+ unsafe {
+ assert_eq!(
+ v6::_rev_u32(0b0000_0000_1111_1111_0000_0000_1111_1111_u32),
+ 0b1111_1111_0000_0000_1111_1111_0000_0000_u32
+ );
+ }
+ }
+}