aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/register/fpscr.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/register/fpscr.rs b/src/register/fpscr.rs
index d7ceea2..057b145 100644
--- a/src/register/fpscr.rs
+++ b/src/register/fpscr.rs
@@ -10,9 +10,13 @@ pub struct Fpscr {
/// Rounding mode
#[derive(Clone, Copy, Debug)]
pub enum RMode {
+ /// Round to Nearest (RN) mode. This is the reset value.
Nearest,
+ /// Round towards Plus Infinity (RP) mode.
PlusInfinity,
+ /// Round towards Minus Infinity (RM) mode.
MinusInfinity,
+ /// Round towards Zero (RZ) mode.
Zero,
}
@@ -68,11 +72,11 @@ impl Fpscr {
/// Read the Rounding Mode control field
#[inline]
pub fn rmode(self) -> RMode {
- match self.bits & (3 << 22) {
- 0 << 22 => RMode::Nearest,
- 1 << 22 => RMode::PlusInfinity,
- 2 << 22 => RMode::MinusInfinity,
- 3 << 22 => RMode::Zero,
+ match (self.bits & (3 << 22)) >> 22 {
+ 0 => RMode::Nearest,
+ 1 => RMode::PlusInfinity,
+ 2 => RMode::MinusInfinity,
+ _ => RMode::Zero,
}
}