| //! 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 |
| ); |
| } |
| } |
| } |