pub enum WcetLoopBoundSource {
Static,
HintVerified,
MaskCeiling,
}Expand description
How a loop’s trip count was established (#778 phase 2).
Variants§
Static
Fully static proof: const-initialized counter, const step, const bound, exit-guaranteeing comparison — the trip count is derived by synth alone.
HintVerified
The loop is an equality-exit shape synth only bounds under an explicit
--wcet-hints assertion; the hint was CHECKED against synth’s own derived
trip count (divisibility + monotonicity + derived ≤ hint) before use. The
emitted trip count is still synth’s DERIVED value, never the raw hint.
MaskCeiling
(#778 phase 5) The loop’s exit bound is a DATA-DEPENDENT masked ceiling
(i REL (x & K) for a runtime x): the real per-iteration bound lies in
[0, K] for ANY input (x & K ∈ [0,K]), so synth DERIVES the worst-case
trip as the MAX over both endpoints of that interval (rhs = K and
rhs = 0, both required to terminate) — an entry-independent ceiling.
Like [HintVerified] this is HINT-GATED: the derived trip is consumed
only under an explicit --wcet-hints entry the derived count respects
(derived ≤ hint); the emitted trip is synth’s DERIVED value, never the
raw hint. A distinct source (not HintVerified) so the sidecar states the
extra data-dependent-ceiling assumption the bound rests on.
Trait Implementations§
Source§impl Clone for WcetLoopBoundSource
impl Clone for WcetLoopBoundSource
Source§fn clone(&self) -> WcetLoopBoundSource
fn clone(&self) -> WcetLoopBoundSource
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for WcetLoopBoundSource
Source§impl Debug for WcetLoopBoundSource
impl Debug for WcetLoopBoundSource
Source§impl<'de> Deserialize<'de> for WcetLoopBoundSource
impl<'de> Deserialize<'de> for WcetLoopBoundSource
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for WcetLoopBoundSource
Source§impl PartialEq for WcetLoopBoundSource
impl PartialEq for WcetLoopBoundSource
Source§impl Serialize for WcetLoopBoundSource
impl Serialize for WcetLoopBoundSource
impl StructuralPartialEq for WcetLoopBoundSource
Auto Trait Implementations§
impl Freeze for WcetLoopBoundSource
impl RefUnwindSafe for WcetLoopBoundSource
impl Send for WcetLoopBoundSource
impl Sync for WcetLoopBoundSource
impl Unpin for WcetLoopBoundSource
impl UnsafeUnpin for WcetLoopBoundSource
impl UnwindSafe for WcetLoopBoundSource
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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.