pub enum FactKind {
ValueRange {
lo: i64,
hi: i64,
},
ShiftBound {
bound: u32,
},
DivisorNonZero,
InBoundsAccess {
access_width: u32,
},
SelectTotality,
MemoryDisjointness {
other_value_id: u32,
},
}Expand description
The fact kinds of encoding schema v1, in silicon-payoff order (the numbers
are the on-wire kind bytes; 0x00 is deliberately unassigned so a zeroed
buffer never parses as a fact).
Variants§
ValueRange
0x01 — the value is within [lo, hi], signed, inclusive both ends
(drives the dead-clamp elision, the gust_mix shape).
ShiftBound
0x02 — the shift amount is < bound (bare lsl/lsr, no mask).
DivisorNonZero
0x03 — the divisor is never zero (the div/rem trap guard is dead).
InBoundsAccess
0x04 — the address plus an access_width-byte access stays within
linear-memory bounds (the bounds check is dead).
SelectTotality
0x05 — both select arms are safe to evaluate: branchless IT
lowering is admissible (pairs with VCR-SEL-004).
MemoryDisjointness
0x06 — this address and the one produced by other_value_id (same
function) never alias: values may stay in registers across the store.
Trait Implementations§
impl Copy for FactKind
impl Eq for FactKind
impl StructuralPartialEq for FactKind
Auto Trait Implementations§
impl Freeze for FactKind
impl RefUnwindSafe for FactKind
impl Send for FactKind
impl Sync for FactKind
impl Unpin for FactKind
impl UnsafeUnpin for FactKind
impl UnwindSafe for FactKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.