MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / insert_atomic_cas

Function insert_atomic_cas

cranelift/fuzzgen/src/function_generator.rs:363–391  ·  view source on GitHub ↗
(
    fgen: &mut FunctionGenerator,
    builder: &mut FunctionBuilder,
    _: Opcode,
    _: &[Type],
    rets: &[Type],
)

Source from the content-addressed store, hash-verified

361}
362
363fn insert_atomic_cas(
364 fgen: &mut FunctionGenerator,
365 builder: &mut FunctionBuilder,
366 _: Opcode,
367 _: &[Type],
368 rets: &[Type],
369) -> Result<()> {
370 let ctrl_type = *rets.first().unwrap();
371 let type_size = ctrl_type.bytes();
372
373 let (address, flags, offset) = fgen.generate_address_and_memflags(builder, type_size, true)?;
374
375 // AtomicCas does not directly support offsets, so add the offset to the address separately.
376 let address = builder.ins().iadd_imm(address, i64::from(offset));
377
378 // Source and Target variables
379 let expected_var = fgen.get_variable_of_type(ctrl_type)?;
380 let store_var = fgen.get_variable_of_type(ctrl_type)?;
381 let loaded_var = fgen.get_variable_of_type(ctrl_type)?;
382
383 let expected_val = builder.use_var(expected_var);
384 let store_val = builder.use_var(store_var);
385 let new_val = builder
386 .ins()
387 .atomic_cas(flags, address, expected_val, store_val);
388
389 builder.def_var(loaded_var, new_val);
390 Ok(())
391}
392
393fn insert_shuffle(
394 fgen: &mut FunctionGenerator,

Callers

nothing calls this directly

Calls 11

fromFunction · 0.85
OkFunction · 0.85
get_variable_of_typeMethod · 0.80
unwrapMethod · 0.45
firstMethod · 0.45
bytesMethod · 0.45
insMethod · 0.45
use_varMethod · 0.45
atomic_casMethod · 0.45
def_varMethod · 0.45

Tested by

no test coverage detected