pub struct CompilerProperties;Expand description
Compiler properties to verify
Implementations§
Source§impl CompilerProperties
impl CompilerProperties
Sourcepub fn arithmetic_overflow_consistency() -> impl Strategy<Value = (i32, i32)>
pub fn arithmetic_overflow_consistency() -> impl Strategy<Value = (i32, i32)>
Property: Arithmetic operations don’t overflow without detection
For any WASM arithmetic operation, if it overflows, the ARM code must also overflow in the same way (wrapping semantics).
Sourcepub fn bitwise_bit_precision() -> impl Strategy<Value = (u32, u32)>
pub fn bitwise_bit_precision() -> impl Strategy<Value = (u32, u32)>
Property: Bitwise operations are bit-precise
For any WASM bitwise operation, the ARM code must produce identical bit patterns for all possible inputs.
Sourcepub fn comparison_correctness() -> impl Strategy<Value = (i32, i32)>
pub fn comparison_correctness() -> impl Strategy<Value = (i32, i32)>
Property: Comparison operations produce correct boolean results
Sourcepub fn shift_edge_cases() -> impl Strategy<Value = (i32, u32)>
pub fn shift_edge_cases() -> impl Strategy<Value = (i32, u32)>
Property: Shift operations handle edge cases correctly
Shifts by >= 32 bits should behave according to WASM spec (result is the original value shifted by (amount % 32))
Sourcepub fn division_by_zero() -> impl Strategy<Value = i32>
pub fn division_by_zero() -> impl Strategy<Value = i32>
Property: Division by zero handling
WASM traps on division by zero, ARM behavior may differ
Sourcepub fn optimization_soundness() -> impl Strategy<Value = Vec<WasmOp>>
pub fn optimization_soundness() -> impl Strategy<Value = Vec<WasmOp>>
Property: Optimization preserves semantics
For any sequence of operations, optimized and unoptimized versions must produce identical results.