fuzzgen: Add AtomicRMW (#5861)
This commit is contained in:
@@ -32,6 +32,25 @@ pub enum AtomicRmwOp {
|
||||
Smax,
|
||||
}
|
||||
|
||||
impl AtomicRmwOp {
|
||||
/// Returns a slice with all supported [AtomicRmwOp]'s.
|
||||
pub fn all() -> &'static [AtomicRmwOp] {
|
||||
&[
|
||||
AtomicRmwOp::Add,
|
||||
AtomicRmwOp::Sub,
|
||||
AtomicRmwOp::And,
|
||||
AtomicRmwOp::Nand,
|
||||
AtomicRmwOp::Or,
|
||||
AtomicRmwOp::Xor,
|
||||
AtomicRmwOp::Xchg,
|
||||
AtomicRmwOp::Umin,
|
||||
AtomicRmwOp::Umax,
|
||||
AtomicRmwOp::Smin,
|
||||
AtomicRmwOp::Smax,
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for AtomicRmwOp {
|
||||
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
|
||||
let s = match self {
|
||||
@@ -70,3 +89,16 @@ impl FromStr for AtomicRmwOp {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn roundtrip_parse() {
|
||||
for op in AtomicRmwOp::all() {
|
||||
let roundtripped = format!("{op}").parse::<AtomicRmwOp>().unwrap();
|
||||
assert_eq!(*op, roundtripped);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user