Merge pull request #2653 from bjorn3/more_atomic_ops

More atomic ops
This commit is contained in:
Chris Fallin
2021-02-18 08:34:58 -08:00
committed by GitHub
6 changed files with 104 additions and 15 deletions

View File

@@ -14,12 +14,22 @@ pub enum AtomicRmwOp {
Sub,
/// And
And,
/// Nand
Nand,
/// Or
Or,
/// Xor
Xor,
/// Exchange
Xchg,
/// Unsigned min
Umin,
/// Unsigned max
Umax,
/// Signed min
Smin,
/// Signed max
Smax,
}
impl Display for AtomicRmwOp {
@@ -28,9 +38,14 @@ impl Display for AtomicRmwOp {
AtomicRmwOp::Add => "add",
AtomicRmwOp::Sub => "sub",
AtomicRmwOp::And => "and",
AtomicRmwOp::Nand => "nand",
AtomicRmwOp::Or => "or",
AtomicRmwOp::Xor => "xor",
AtomicRmwOp::Xchg => "xchg",
AtomicRmwOp::Umin => "umin",
AtomicRmwOp::Umax => "umax",
AtomicRmwOp::Smin => "smin",
AtomicRmwOp::Smax => "smax",
};
f.write_str(s)
}
@@ -43,9 +58,14 @@ impl FromStr for AtomicRmwOp {
"add" => Ok(AtomicRmwOp::Add),
"sub" => Ok(AtomicRmwOp::Sub),
"and" => Ok(AtomicRmwOp::And),
"nand" => Ok(AtomicRmwOp::Nand),
"or" => Ok(AtomicRmwOp::Or),
"xor" => Ok(AtomicRmwOp::Xor),
"xchg" => Ok(AtomicRmwOp::Xchg),
"umin" => Ok(AtomicRmwOp::Umin),
"umax" => Ok(AtomicRmwOp::Umax),
"smin" => Ok(AtomicRmwOp::Smin),
"smax" => Ok(AtomicRmwOp::Smax),
_ => Err(()),
}
}