fuzzgen: Add AtomicRMW (#5861)

This commit is contained in:
Afonso Bordado
2023-02-23 18:34:28 +00:00
committed by GitHub
parent 9719147f91
commit fc080c739e
2 changed files with 112 additions and 31 deletions

View File

@@ -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);
}
}
}