diff --git a/Cargo.lock b/Cargo.lock index f417853..6a0911e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -210,6 +210,7 @@ name = "cpu" version = "0.1.0" dependencies = [ "fayalite", + "serde", ] [[package]] @@ -303,7 +304,7 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fayalite" version = "0.3.0" -source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#edcc5927a5f9ebca6df5720bb1f5931e50095a57" +source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#9e803223d0f08c3398182cbabbff28cda7853b0f" dependencies = [ "base64", "bitvec", @@ -330,7 +331,7 @@ dependencies = [ [[package]] name = "fayalite-proc-macros" version = "0.3.0" -source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#edcc5927a5f9ebca6df5720bb1f5931e50095a57" +source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#9e803223d0f08c3398182cbabbff28cda7853b0f" dependencies = [ "fayalite-proc-macros-impl", ] @@ -338,7 +339,7 @@ dependencies = [ [[package]] name = "fayalite-proc-macros-impl" version = "0.3.0" -source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#edcc5927a5f9ebca6df5720bb1f5931e50095a57" +source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#9e803223d0f08c3398182cbabbff28cda7853b0f" dependencies = [ "base16ct", "num-bigint", @@ -353,7 +354,7 @@ dependencies = [ [[package]] name = "fayalite-visit-gen" version = "0.3.0" -source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#edcc5927a5f9ebca6df5720bb1f5931e50095a57" +source = "git+https://git.libre-chip.org/libre-chip/fayalite.git?branch=master#9e803223d0f08c3398182cbabbff28cda7853b0f" dependencies = [ "indexmap", "prettyplease", diff --git a/Cargo.toml b/Cargo.toml index 57ca631..a3e74f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,6 +15,7 @@ rust-version = "1.89.0" [workspace.dependencies] fayalite = { git = "https://git.libre-chip.org/libre-chip/fayalite.git", version = "0.3.0", branch = "master" } +serde = { version = "1.0.202", features = ["derive"] } [profile.dev] opt-level = 1 diff --git a/crates/cpu/Cargo.toml b/crates/cpu/Cargo.toml index 16ec0b9..4dd85d8 100644 --- a/crates/cpu/Cargo.toml +++ b/crates/cpu/Cargo.toml @@ -16,3 +16,4 @@ version.workspace = true [dependencies] fayalite.workspace = true +serde.workspace = true diff --git a/crates/cpu/src/config.rs b/crates/cpu/src/config.rs index 4e66010..b3d9905 100644 --- a/crates/cpu/src/config.rs +++ b/crates/cpu/src/config.rs @@ -8,9 +8,10 @@ use crate::{ }, }; use fayalite::prelude::*; +use serde::{Deserialize, Serialize}; use std::num::NonZeroUsize; -#[derive(Clone, Eq, PartialEq, Hash, Debug)] +#[derive(Clone, Eq, PartialEq, Hash, Debug, Serialize, Deserialize)] #[non_exhaustive] pub struct UnitConfig { pub kind: UnitKind, @@ -27,12 +28,14 @@ impl UnitConfig { } } -#[derive(Clone, Eq, PartialEq, Hash, Debug)] +#[derive(Clone, Eq, PartialEq, Hash, Debug, Serialize, Deserialize)] #[non_exhaustive] pub struct CpuConfig { pub units: Vec, pub out_reg_num_width: usize, pub fetch_width: NonZeroUsize, + pub max_branches_per_fetch: NonZeroUsize, + pub log2_fetch_width_in_bytes: u8, /// default value for [`UnitConfig::max_in_flight`] pub default_unit_max_in_flight: NonZeroUsize, pub rob_size: NonZeroUsize, @@ -46,6 +49,13 @@ impl CpuConfig { }; v }; + pub const DEFAULT_MAX_BRANCHES_PER_FETCH: NonZeroUsize = { + let Some(v) = NonZeroUsize::new(1) else { + unreachable!(); + }; + v + }; + pub const DEFAULT_LOG2_FETCH_WIDTH_IN_BYTES: u8 = 3; pub const DEFAULT_UNIT_MAX_IN_FLIGHT: NonZeroUsize = { let Some(v) = NonZeroUsize::new(8) else { unreachable!(); @@ -57,6 +67,8 @@ impl CpuConfig { units, out_reg_num_width: Self::DEFAULT_OUT_REG_NUM_WIDTH, fetch_width: Self::DEFAULT_FETCH_WIDTH, + max_branches_per_fetch: Self::DEFAULT_MAX_BRANCHES_PER_FETCH, + log2_fetch_width_in_bytes: Self::DEFAULT_LOG2_FETCH_WIDTH_IN_BYTES, default_unit_max_in_flight: Self::DEFAULT_UNIT_MAX_IN_FLIGHT, rob_size, } @@ -116,4 +128,21 @@ impl CpuConfig { UnitToRegAlloc[mop_ty][extra_out_ty][self.unit_num_width()][self.out_reg_num_width] [self.non_const_unit_nums().len()] } + pub fn fetch_width_in_bytes(&self) -> usize { + 1usize + .checked_shl(self.log2_fetch_width_in_bytes.into()) + .expect("log2_fetch_width_in_bytes is too big") + } } + +#[hdl(get(|c| c.fetch_width.get()))] +pub type CpuConfigFetchWidth> = DynSize; + +#[hdl(get(|c| c.max_branches_per_fetch.get()))] +pub type CpuConfigMaxBranchesPerFetch> = DynSize; + +#[hdl(get(|c| c.log2_fetch_width_in_bytes.into()))] +pub type CpuConfigLog2FetchWidthInBytes> = DynSize; + +#[hdl(get(|c| c.fetch_width_in_bytes()))] +pub type CpuConfigFetchWidthInBytes> = DynSize; diff --git a/crates/cpu/src/instruction.rs b/crates/cpu/src/instruction.rs index c410b56..1610750 100644 --- a/crates/cpu/src/instruction.rs +++ b/crates/cpu/src/instruction.rs @@ -2,12 +2,11 @@ // See Notices.txt for copyright information use crate::{unit::UnitMOp, util::range_u32_len}; use fayalite::{ - expr::ops::{ArrayLiteral, ExprPartialEq}, + expr::{HdlPartialEqImpl, ops::ArrayLiteral}, intern::Interned, prelude::*, - sim::value::SimValuePartialEq, }; -use std::{fmt, marker::PhantomData, ops::Range}; +use std::{borrow::Cow, fmt, marker::PhantomData, ops::Range}; pub mod power_isa; @@ -172,20 +171,38 @@ pub enum OutputIntegerMode { SignExt8, } -impl ExprPartialEq for OutputIntegerMode { - fn cmp_eq(lhs: Expr, rhs: Expr) -> Expr { +impl HdlPartialEqImpl for OutputIntegerMode { + #[track_caller] + fn cmp_value_eq( + lhs: Self, + lhs_value: Cow<'_, Self::SimValue>, + rhs: Self, + rhs_value: Cow<'_, Self::SimValue>, + ) -> bool { + SimValue::opaque(&SimValue::from_value(lhs, lhs_value.into_owned())) + == SimValue::opaque(&SimValue::from_value(rhs, rhs_value.into_owned())) + } + + #[track_caller] + fn cmp_sim_value_eq( + lhs: Cow<'_, SimValue>, + rhs: Cow<'_, SimValue>, + ) -> SimValue { + (SimValue::opaque(&lhs) == SimValue::opaque(&rhs)).to_sim_value() + } + + #[track_caller] + fn cmp_sim_value_ne( + lhs: Cow<'_, SimValue>, + rhs: Cow<'_, SimValue>, + ) -> SimValue { + (SimValue::opaque(&lhs) != SimValue::opaque(&rhs)).to_sim_value() + } + + #[track_caller] + fn cmp_expr_eq(lhs: Expr, rhs: Expr) -> Expr { lhs.cast_to_bits().cmp_eq(rhs.cast_to_bits()) } - - fn cmp_ne(lhs: Expr, rhs: Expr) -> Expr { - lhs.cast_to_bits().cmp_ne(rhs.cast_to_bits()) - } -} - -impl SimValuePartialEq for OutputIntegerMode { - fn sim_value_eq(this: &SimValue, other: &SimValue) -> bool { - SimValue::opaque(this) == SimValue::opaque(other) - } } pub const MOP_IMM_WIDTH: usize = 34; @@ -296,8 +313,8 @@ impl, imm: impl ToExpr) { let expr = expr.to_expr(); - let src_reg_ty = Expr::ty(expr).src.element(); + let src_reg_ty = expr.ty().src.element(); let imm = imm.to_expr(); - assert_eq!(Expr::ty(imm), Self::imm_ty()); + assert_eq!(imm.ty(), Self::imm_ty()); let imm_parts = imm.cast_to_bits().cast_bits_to(Self::imm_parts_ty()); let mut src = [Some(0_hdl_u0.cast_to(src_reg_ty)); COMMON_MOP_SRC_LEN]; for i in 0..SrcCount::VALUE { @@ -496,7 +513,7 @@ macro_rules! mop_enum { fn dest_reg(input: impl ToExpr) -> Expr { let input = input.to_expr(); #[hdl] - let dest_reg = wire(Expr::ty(input).dest_reg_ty()); + let dest_reg = wire(input.ty().dest_reg_ty()); #[hdl] match input { Self::$FirstVariant(v) => connect(dest_reg, <$first_ty as MOpTrait>::dest_reg(v)), @@ -537,7 +554,7 @@ macro_rules! mop_enum { ) -> Expr> { let input = input.to_expr(); let new_dest = new_dest.to_expr(); - let mapped_ty = Expr::ty(input).mapped_ty(Expr::ty(new_dest), new_src_reg_width); + let mapped_ty = input.ty().mapped_ty(new_dest.ty(), new_src_reg_width); #[hdl] let mapped_regs = wire(mapped_ty); #[hdl] @@ -584,7 +601,7 @@ macro_rules! mop_enum { MOpInto::mop_into_ty($MOp[MOpTrait::dest_reg_ty(self)][MOpTrait::src_reg_width(self)]$([$sizes_get_size(self)])*) } fn mop_into(this: Expr) -> Expr { - MOpInto::mop_into(MOpInto::<$MOp<$DestReg, $SrcRegWidth, $($Sizes,)*>>::mop_into_ty(Expr::ty(this)).$Variant(this)) + MOpInto::mop_into(MOpInto::<$MOp<$DestReg, $SrcRegWidth, $($Sizes,)*>>::mop_into_ty(this.ty()).$Variant(this)) } } }; @@ -833,22 +850,19 @@ impl UnitNum { } pub fn is_index(expr: impl ToExpr, index: usize) -> Expr { let expr = expr.to_expr(); - Expr::ty(expr) - .from_index(index) - .adj_value - .cmp_eq(expr.adj_value) + expr.ty().from_index(index).adj_value.cmp_eq(expr.adj_value) } #[hdl] pub fn as_index(expr: impl ToExpr) -> Expr>> { let expr = expr.to_expr(); #[hdl] - let unit_index = wire(HdlOption[Expr::ty(expr).adj_value]); - connect(unit_index, Expr::ty(unit_index).HdlNone()); + let unit_index = wire(HdlOption[expr.ty().adj_value]); + connect(unit_index, unit_index.ty().HdlNone()); #[hdl] if expr.adj_value.cmp_ne(0u8) { connect( unit_index, - HdlSome((expr.adj_value - 1u8).cast_to(Expr::ty(expr).adj_value)), + HdlSome((expr.adj_value - 1u8).cast_to(expr.ty().adj_value)), ); } unit_index @@ -900,7 +914,7 @@ impl MOpRegNum { pub fn const_zero() -> Expr { #[hdl] MOpRegNum { - value: Self::CONST_ZERO_REG_NUM.cast_to_static(), + value: Self::CONST_ZERO_REG_NUM.cast_to_static::>(), } } /// a lot of instructions write to flag registers that we want @@ -1077,7 +1091,7 @@ impl MOpDestReg { flag_reg, #[hdl] MOpRegNum { - value: reg_num.cast_to_static(), + value: reg_num.cast_to_static::>(), }, ); } diff --git a/crates/cpu/src/lib.rs b/crates/cpu/src/lib.rs index bae3720..a00b668 100644 --- a/crates/cpu/src/lib.rs +++ b/crates/cpu/src/lib.rs @@ -2,6 +2,7 @@ // See Notices.txt for copyright information pub mod config; pub mod instruction; +pub mod next_pc; pub mod reg_alloc; pub mod register; pub mod unit; diff --git a/crates/cpu/src/next_pc.rs b/crates/cpu/src/next_pc.rs new file mode 100644 index 0000000..96c2e4c --- /dev/null +++ b/crates/cpu/src/next_pc.rs @@ -0,0 +1,728 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +// See Notices.txt for copyright information + +//! [Next-Instruction Logic](https://git.libre-chip.org/libre-chip/grant-tracking/issues/10) +//! +//! The basic idea here is that there's a `next_pc` stage that sends predicted fetch PCs to the `fetch` stage, +//! the `fetch` stage's outputs eventually end up in the `decode` stage, +//! after the `decode` stage there's a `post_decode` stage (that may run in the same clock cycle as `decode`) +//! that checks that the fetched instructions' kinds match the predicted instruction kinds and that feeds +//! information back to the `fetch` stage to cancel fetches that need to be predicted differently. + +use crate::{config::CpuConfig, util::array_vec::ArrayVec}; +use fayalite::{ + int::{UIntInRange, UIntInRangeInclusive, UIntInRangeType}, + prelude::*, + sim::{ForkJoinScope, value::SimOnlyValueTrait}, + util::ready_valid::ReadyValid, +}; + +#[hdl] +pub enum PredictedCond { + Taken, + Fallthrough, +} + +#[hdl] +pub struct PredictedFallthrough {} + +#[hdl] +pub enum BranchPredictionKind { + Branch(HdlOption), + IndirectBranch(HdlOption), + Call(HdlOption), + IndirectCall(HdlOption), + Ret(HdlOption), +} + +#[hdl(get(|c| c.max_branches_per_fetch.get() - 1))] +pub type NextPcPredictionMaxBranchesBeforeLast> = DynSize; + +#[hdl(no_static)] +pub struct NextPcPrediction> { + pub fetch_pc: UInt<64>, + pub async_interrupt: Bool, + pub branches_before_last: ArrayVec< + BranchPredictionKind, + NextPcPredictionMaxBranchesBeforeLast, + >, + pub last_branch: HdlOption>, + pub last_branch_target_pc: UInt<64>, +} + +pub const FETCH_BLOCK_ID_WIDTH: usize = FetchBlockIdInt::BITS as usize; +type FetchBlockIdInt = u8; + +#[hdl] +pub struct NextPcToFetchInterfaceInner { + pub next_fetch_pc: UInt<64>, + pub fetch_block_id: UInt<{ FETCH_BLOCK_ID_WIDTH }>, + pub in_progress_fetches_to_cancel: UInt<8>, +} + +#[hdl(no_static)] +pub struct NextPcToFetchInterface> { + pub inner: ReadyValid, + pub config: C, +} + +#[hdl] +/// WIP version of decoded instruction just good enough to represent stuff needed for [`next_pc()`] since the actual instruction definition isn't finalized yet. This will be replaced at a later point. +pub enum WipDecodedInsnKind { + NonBranch, + Branch(UInt<64>), + BranchCond(UInt<64>), + IndirectBranch, + IndirectBranchCond, + Call(UInt<64>), + CallCond(UInt<64>), + IndirectCall, + IndirectCallCond, + Ret, + RetCond, + /// not actually an instruction read from memory, covers stuff like external interrupts, page faults, memory errors, and so on. + Interrupt(UInt<64>), +} + +#[hdl] +/// WIP version of decoded instruction just good enough to represent stuff needed for [`next_pc()`] since the actual instruction definition isn't finalized yet. This will be replaced at a later point. +pub struct WipDecodedInsn { + pub fetch_block_id: UInt<8>, + pub id: UInt<12>, + pub pc: UInt<64>, + pub kind: WipDecodedInsnKind, +} + +#[hdl(no_static)] +/// handles updating speculative branch predictor state (e.g. branch histories) when instructions retire, +/// as well as updating state when a branch instruction is mis-speculated. +pub struct NextPcToRetireInterface> { + // TODO: add needed fields + pub config: C, +} + +#[hdl(no_static)] +pub struct DecodeToPostDecodeInterface> { + // TODO: add needed fields + pub config: C, +} + +#[hdl(no_static)] +pub struct PostDecodeOutputInterface> { + // TODO: add needed fields + pub config: C, +} + +#[hdl] +enum BranchPredictionState { + StronglyNotTaken, + WeaklyNotTaken, + WeaklyTaken, + StronglyTaken, +} + +impl BranchPredictionState { + #[must_use] + #[hdl] + fn is_taken(this: &SimValue) -> bool { + #[hdl(sim)] + match this { + Self::StronglyNotTaken => false, + Self::WeaklyNotTaken => false, + Self::WeaklyTaken => true, + Self::StronglyTaken => true, + } + } + #[must_use] + #[hdl] + fn towards_taken(this: &SimValue) -> SimValue { + (#[hdl(sim)] + match this { + Self::StronglyNotTaken => BranchPredictionState.WeaklyNotTaken(), + Self::WeaklyNotTaken => BranchPredictionState.WeaklyTaken(), + Self::WeaklyTaken => BranchPredictionState.StronglyTaken(), + Self::StronglyTaken => BranchPredictionState.StronglyTaken(), + }) + .to_sim_value() + } + #[must_use] + #[hdl] + fn towards_not_taken(this: &SimValue) -> SimValue { + (#[hdl(sim)] + match this { + Self::StronglyNotTaken => BranchPredictionState.StronglyNotTaken(), + Self::WeaklyNotTaken => BranchPredictionState.StronglyNotTaken(), + Self::WeaklyTaken => BranchPredictionState.WeaklyNotTaken(), + Self::StronglyTaken => BranchPredictionState.WeaklyTaken(), + }) + .to_sim_value() + } +} + +impl SimValueDefault for BranchPredictionState { + fn sim_value_default(self) -> SimValue { + self.WeaklyNotTaken().to_sim_value() + } +} + +#[derive(Copy, Clone, Debug)] +#[must_use] +enum ResetStatus { + Done, + Working, +} + +impl ResetStatus { + fn and(self, other: Self) -> Self { + match (self, other) { + (ResetStatus::Done, ResetStatus::Done) => ResetStatus::Done, + (ResetStatus::Done | ResetStatus::Working, ResetStatus::Working) + | (ResetStatus::Working, ResetStatus::Done) => ResetStatus::Working, + } + } +} + +trait SimValueDefault: Type { + fn sim_value_default(self) -> SimValue; +} + +impl SimValueDefault for SimOnly { + fn sim_value_default(self) -> SimValue { + SimOnlyValue::::default().to_sim_value_with_type(self) + } +} + +impl SimValueDefault for HdlOption { + fn sim_value_default(self) -> SimValue { + self.HdlNone().to_sim_value_with_type(self) + } +} + +impl SimValueDefault for Bool { + fn sim_value_default(self) -> SimValue { + false.to_sim_value() + } +} + +impl SimValueDefault for UIntType { + fn sim_value_default(self) -> SimValue { + self.zero().to_sim_value() + } +} + +trait ResetSteps: Type { + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus; +} + +impl ResetSteps for ArrayType { + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus { + let element = SimValue::ty(this).element(); + let len = SimValue::ty(this).len(); + if step < len { + this[step] = element.sim_value_default(); + } + if step.saturating_add(1) >= len { + ResetStatus::Done + } else { + ResetStatus::Working + } + } +} + +#[hdl] +struct CallStack { + return_addresses: Array, { CallStack::SIZE }>, + len: UIntInRangeInclusive<0, { CallStack::SIZE }>, +} + +impl CallStack { + const SIZE: usize = 16; +} + +impl SimValueDefault for CallStack { + #[hdl] + fn sim_value_default(self) -> SimValue { + #[hdl(sim)] + CallStack { + // something other than zero so you can see the values getting reset + return_addresses: [!0u64; Self::SIZE], + len: 0usize.to_sim_value_with_type(self.len), + } + } +} + +impl ResetSteps for CallStack { + #[hdl] + fn reset_step(this: &mut SimValue, _step: usize) -> ResetStatus { + #[hdl(sim)] + let CallStack { + return_addresses, + len, + } = this; + // return_addresses is implemented as a shift register, so it can be all reset at once + return_addresses.fill(0u64.to_sim_value()); + **len = 0; + ResetStatus::Done + } +} + +#[hdl] +struct BranchTargetBuffer { + branch_pc_to_target_map: Array, UInt<64>)>, { BranchTargetBuffer::SIZE }>, +} + +impl BranchTargetBuffer { + const SIZE: usize = 16; +} + +impl SimValueDefault for BranchTargetBuffer { + #[hdl] + fn sim_value_default(self) -> SimValue { + #[hdl(sim)] + BranchTargetBuffer { + // something other than zero so you can see the values getting reset + branch_pc_to_target_map: [HdlSome((0u64, 0u64)); Self::SIZE], + } + } +} + +impl ResetSteps for BranchTargetBuffer { + #[hdl] + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus { + #[hdl(sim)] + let BranchTargetBuffer { + branch_pc_to_target_map, + } = this; + ResetSteps::reset_step(branch_pc_to_target_map, step) + } +} + +#[hdl] +struct BranchHistory { + history: Array, + /// exclusive + tail: UIntInRange<0, { BranchHistory::SIZE }>, + /// inclusive, always at or after tail, always at or before speculative_head + non_speculative_head: UIntInRange<0, { BranchHistory::SIZE }>, + /// inclusive, always at or after both tail and non_speculative_head + speculative_head: UIntInRange<0, { BranchHistory::SIZE }>, +} + +impl ResetSteps for BranchHistory { + #[hdl] + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus { + #[hdl(sim)] + let Self { + history, + tail, + non_speculative_head, + speculative_head, + } = this; + **tail = 0; + **non_speculative_head = 0; + **speculative_head = 0; + ResetSteps::reset_step(history, step) + } +} + +impl SimValueDefault for BranchHistory { + #[hdl] + fn sim_value_default(self) -> SimValue { + #[hdl(sim)] + BranchHistory { + // something other than zero so you can see the values getting reset + history: [true; Self::SIZE], + tail: 0usize.to_sim_value_with_type(self.tail), + non_speculative_head: 0usize.to_sim_value_with_type(self.non_speculative_head), + speculative_head: 0usize.to_sim_value_with_type(self.speculative_head), + } + } +} + +enum BranchHistoryTryPushSpeculativeError { + NoSpace, +} + +enum BranchHistoryTryPushNonSpeculativeError { + NoSpace, + Misprediction { speculated: bool }, +} + +impl BranchHistory { + const LOG2_SIZE: usize = 8; + const SIZE: usize = 1 << Self::LOG2_SIZE; + fn next_pos(pos: usize) -> usize { + (pos + 1) % Self::SIZE + } + fn prev_pos(pos: usize) -> usize { + (pos + Self::SIZE - 1) % Self::SIZE + } + fn history_from_head(this: &SimValue, head: usize) -> [bool; N] { + let mut retval = [false; N]; + let mut pos = head; + for entry in &mut retval { + if pos == *this.tail { + break; + } + *entry = *this.history[pos]; + pos = Self::prev_pos(pos); + } + retval + } + fn delete_speculative_history(this: &mut SimValue) { + let non_speculative_head = *this.non_speculative_head; + *this.speculative_head = non_speculative_head; + } + fn recent_history_including_speculative(this: &SimValue) -> [bool; N] { + let head = *this.speculative_head; + Self::history_from_head(this, head) + } + fn speculative_full(this: &SimValue) -> bool { + let speculative_head = *this.speculative_head; + Self::next_pos(speculative_head) == *this.tail + } + fn try_push_speculative( + this: &mut SimValue, + value: bool, + ) -> Result<(), BranchHistoryTryPushSpeculativeError> { + if Self::speculative_full(this) { + Err(BranchHistoryTryPushSpeculativeError::NoSpace) + } else { + let speculative_head = Self::next_pos(*this.speculative_head); + *this.speculative_head = speculative_head; + *this.history[speculative_head] = value; + Ok(()) + } + } + fn try_push_non_speculative( + this: &mut SimValue, + value: bool, + ) -> Result<(), BranchHistoryTryPushNonSpeculativeError> { + let speculative_head = *this.speculative_head; + let non_speculative_head = *this.non_speculative_head; + if speculative_head == non_speculative_head { + Err(BranchHistoryTryPushNonSpeculativeError::NoSpace) + } else { + let pos = Self::next_pos(non_speculative_head); + let speculated = *this.history[pos]; + if speculated != value { + Err(BranchHistoryTryPushNonSpeculativeError::Misprediction { speculated }) + } else { + *this.non_speculative_head = pos; + Ok(()) + } + } + } +} + +#[hdl] +struct Queue { + data: ArrayType, + /// inclusive + head: UIntInRangeType, Capacity>, + /// exclusive + tail: UIntInRangeType, Capacity>, +} + +impl Queue { + fn capacity(self) -> usize { + self.data.len() + } + fn next_pos(self, pos: usize) -> usize { + assert_ne!(self.capacity(), 0); + (pos + 1) % self.capacity() + } + fn prev_pos(self, pos: usize) -> usize { + assert_ne!(self.capacity(), 0); + (pos + self.capacity() - 1) % self.capacity() + } + fn is_empty(this: &SimValue) -> bool { + this.head == this.tail + } + fn is_full(this: &SimValue) -> bool { + let head = *this.head; + let tail = *this.tail; + SimValue::ty(this).next_pos(head) == tail + } + fn try_push(this: &mut SimValue, value: impl ToSimValueWithType) -> Result<(), ()> { + if Self::is_full(this) { + Err(()) + } else { + let head = *this.head; + let head = SimValue::ty(this).next_pos(head); + *this.head = head; + let data = &mut this.data[head]; + *data = value.to_sim_value_with_type(SimValue::ty(data)); + Ok(()) + } + } +} + +impl SimValueDefault for Queue { + #[hdl] + fn sim_value_default(self) -> SimValue { + let Self { data, head, tail } = self; + #[hdl(sim)] + Queue:: { + data: repeat( + data.element().sim_value_default(), + Capacity::from_usize(data.len()), + ), + head: 0usize.to_sim_value_with_type(head), + tail: 0usize.to_sim_value_with_type(tail), + } + } +} + +impl ResetSteps for Queue { + #[hdl] + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus { + #[hdl(sim)] + let Queue:: { data, head, tail } = this; + **head = 0; + **tail = 0; + ResetSteps::reset_step(data, step) + } +} + +#[hdl] +struct FetchQueueEntry { + fetch_block_id: UInt<{ FETCH_BLOCK_ID_WIDTH }>, +} + +impl SimValueDefault for FetchQueueEntry { + #[hdl] + fn sim_value_default(self) -> SimValue { + #[hdl(sim)] + FetchQueueEntry { + fetch_block_id: 0 as FetchBlockIdInt, + } + } +} + +const BRANCH_PREDICTOR_LOG2_SIZE: usize = 8; +const BRANCH_PREDICTOR_SIZE: usize = 1 << BRANCH_PREDICTOR_LOG2_SIZE; + +#[hdl] +pub struct NextPcState> { + speculative_call_stack: CallStack, + non_speculative_call_stack: CallStack, + branch_target_buffer: BranchTargetBuffer, + branch_history: BranchHistory, + branch_predictor: Array, + fetching_queue: Queue>, + pc: UInt<64>, + fetch_block_id: UInt<{ FETCH_BLOCK_ID_WIDTH }>, + config: C, +} + +impl> NextPcState { + fn next_fetch_pc(this: &SimValue) -> u64 { + let pc = u64::try_from(this.pc.to_bigint()).expect("in range"); + pc & (!0u64 << SimValue::ty(&this.config).get().log2_fetch_width_in_bytes) + } + fn branch_predictor_index(this: &SimValue, pc: u64) -> usize { + let mut history = 0u64; + let history_bits: [bool; BRANCH_PREDICTOR_LOG2_SIZE] = + BranchHistory::recent_history_including_speculative(&this.branch_history); + for history_bit in history_bits { + history <<= 1; + if history_bit { + history |= 1; + } + } + let mut t = history; + t ^= t.rotate_left(5) & !pc.rotate_right(3); + t ^= pc; + t ^= !t.rotate_left(2) & t.rotate_left(4); + let mut retval = 0; + for i in (0..BRANCH_PREDICTOR_LOG2_SIZE).step_by(BRANCH_PREDICTOR_LOG2_SIZE) { + retval ^= t >> i; + } + retval as usize % BRANCH_PREDICTOR_SIZE + } +} + +impl SimValueDefault for NextPcState> { + #[hdl] + fn sim_value_default(self) -> SimValue { + let Self { + speculative_call_stack, + non_speculative_call_stack, + branch_target_buffer, + branch_history, + branch_predictor: _, + fetching_queue, + pc: _, + fetch_block_id: _, + config, + } = self; + #[hdl(sim)] + Self { + speculative_call_stack: speculative_call_stack.sim_value_default(), + non_speculative_call_stack: non_speculative_call_stack.sim_value_default(), + branch_target_buffer: branch_target_buffer.sim_value_default(), + branch_history: branch_history.sim_value_default(), + // use something other than the default so you can see the reset progress + branch_predictor: std::array::from_fn(|_| { + BranchPredictionState::towards_not_taken(&BranchPredictionState.sim_value_default()) + }), + fetching_queue: fetching_queue.sim_value_default(), + // use something other than the default so you can see the reset progress + pc: !0u64, + // use something other than the default so you can see the reset progress + fetch_block_id: !0u8, + config, + } + } +} + +impl> ResetSteps for NextPcState { + #[hdl] + fn reset_step(this: &mut SimValue, step: usize) -> ResetStatus { + #[hdl(sim)] + let NextPcState:: { + speculative_call_stack, + non_speculative_call_stack, + branch_target_buffer, + branch_history, + branch_predictor, + fetching_queue, + pc, + fetch_block_id, + config: _, + } = this; + **pc = 0u64.into(); // match Microwatt's reset PC + **fetch_block_id = 0u8.into(); + let speculative_call_stack = ResetSteps::reset_step(speculative_call_stack, step); + let non_speculative_call_stack = ResetSteps::reset_step(non_speculative_call_stack, step); + let branch_target_buffer = ResetSteps::reset_step(branch_target_buffer, step); + let branch_history = ResetSteps::reset_step(branch_history, step); + let branch_predictor = ResetSteps::reset_step(branch_predictor, step); + let fetching_queue = ResetSteps::reset_step(fetching_queue, step); + speculative_call_stack + .and(non_speculative_call_stack) + .and(branch_target_buffer) + .and(branch_history) + .and(branch_predictor) + .and(fetching_queue) + } +} + +#[hdl_module(extern)] +pub fn next_pc(config: PhantomConst) { + #[hdl] + let cd: ClockDomain = m.input(); + #[hdl] + let to_fetch: NextPcToFetchInterface> = + m.output(NextPcToFetchInterface[config]); + #[hdl] + let state_for_debug: NextPcState> = m.output(NextPcState[config]); + m.register_clock_for_past(cd.clk); + #[hdl] + async fn run( + scope: ForkJoinScope<'_>, + mut sim: ExternModuleSimulationState, + cd: Expr, + to_fetch: Expr>>, + state_expr: Expr>>, + ) { + let config = Expr::ty(state_expr.config); + let mut state = sim.read(state_expr).await; + for step in 0usize.. { + sim.write(state_expr, state).await; + sim.wait_for_clock_edge(cd.clk).await; + state = sim.read_past(state_expr, cd.clk).await; + let reset_status = ResetSteps::reset_step(&mut state, step); + match reset_status { + ResetStatus::Done => break, + ResetStatus::Working => {} + } + } + scope.spawn_detached(|_, mut sim: ExternModuleSimulationState| async move { + loop { + let state = sim.read(state_expr).await; + if Queue::is_full(&state.fetching_queue) { + sim.write(to_fetch.inner.data, HdlNone()).await; + } else { + sim.write( + to_fetch.inner.data, + HdlSome( + #[hdl(sim)] + NextPcToFetchInterfaceInner { + next_fetch_pc: NextPcState::next_fetch_pc(&state), + fetch_block_id: state.fetch_block_id, + in_progress_fetches_to_cancel: 0u8, // TODO: implement + }, + ), + ) + .await; + } + sim.wait_for_changes([state_expr], None).await; + } + }); + loop { + sim.write(state_expr, state).await; + sim.wait_for_clock_edge(cd.clk).await; + state = sim.read_past(state_expr, cd.clk).await; + let next_fetch_pc = NextPcState::next_fetch_pc(&state); + if Queue::is_full(&state.fetching_queue) { + continue; + } + if sim.read_past_bool(to_fetch.inner.ready, cd.clk).await { + let fetch_block_id = + FetchBlockIdInt::try_from(state.fetch_block_id.to_bigint()).expect("in range"); + Queue::try_push( + &mut state.fetching_queue, + #[hdl(sim)] + FetchQueueEntry { fetch_block_id }, + ) + .expect("checked is_full above"); + // TODO: handle instructions not aligned with fetch blocks + let mut new_pc = + next_fetch_pc.wrapping_add(config.get().fetch_width_in_bytes() as u64); + for entry in &state.branch_target_buffer.branch_pc_to_target_map { + #[hdl(sim)] + match entry { + HdlNone => continue, + HdlSome(entry) => { + #[hdl(sim)] + let (entry_pc, entry_target) = entry; + if *entry_pc == state.pc { + new_pc = entry_target + .to_bigint() + .try_into() + .expect("known to be in range"); + break; + } + } + } + } + *state.pc = new_pc.into(); + *state.fetch_block_id = fetch_block_id.wrapping_add(1).into(); + } + } + // TODO: finish + } + m.extern_module_simulation_fn( + (cd, to_fetch, state_for_debug), + |(cd, to_fetch, state_for_debug), mut sim| async move { + sim.write( + state_for_debug, + Expr::ty(state_for_debug).sim_value_default(), + ) + .await; + sim.resettable( + cd, + |mut sim: ExternModuleSimulationState| async move { + sim.write(to_fetch.inner.data, HdlNone()).await; + }, + |mut sim: ExternModuleSimulationState, ()| async move { + sim.fork_join_scope(|scope, sim| run(scope, sim, cd, to_fetch, state_for_debug)) + .await + }, + ) + .await; + }, + ); +} diff --git a/crates/cpu/src/reg_alloc.rs b/crates/cpu/src/reg_alloc.rs index 6b3a6d5..c84ba6f 100644 --- a/crates/cpu/src/reg_alloc.rs +++ b/crates/cpu/src/reg_alloc.rs @@ -241,7 +241,7 @@ pub fn reg_alloc(config: &CpuConfig) { // TODO: finish connect( rob.renamed_insns_in[fetch_index].data, - Expr::ty(rob).renamed_insns_in.element().data.HdlNone(), + rob.ty().renamed_insns_in.element().data.HdlNone(), ); // TODO: finish connect( @@ -263,7 +263,7 @@ pub fn reg_alloc(config: &CpuConfig) { ); connect( renamed_mops[fetch_index], - Expr::ty(renamed_mops).element().HdlNone(), + renamed_mops.ty().element().HdlNone(), ); #[hdl] struct RenameTableReadPort { @@ -332,7 +332,7 @@ pub fn reg_alloc(config: &CpuConfig) { let write_port = wire_with_loc( &format!("{table_name}_{fetch_index}_{}", reg_kind.reg_name()), SourceLocation::caller(), - Expr::ty(write_port_), + write_port_.ty(), ); connect(write_port_, write_port); write_ports.push_back(write_port); @@ -343,7 +343,7 @@ pub fn reg_alloc(config: &CpuConfig) { addr: 0_hdl_u0, en: false, clk: cd.clk, - data: Expr::ty(write_port.data).uninit(), + data: write_port.data.ty().uninit(), mask: splat_mask(config.p_reg_num(), true.to_expr()), }, ); @@ -375,7 +375,7 @@ pub fn reg_alloc(config: &CpuConfig) { config.renamed_mop_in_unit().TransformedMove, |renamed_mop, renamed_move_op: Expr>| { // TODO: finish handling MoveRegMOp - connect(renamed_mop, Expr::ty(renamed_mop).HdlNone()); + connect(renamed_mop, renamed_mop.ty().HdlNone()); }, ); connect( @@ -429,7 +429,7 @@ pub fn reg_alloc(config: &CpuConfig) { ); connect( selected_unit_index_leaf, - Expr::ty(selected_unit_index_leaf).HdlNone(), + selected_unit_index_leaf.ty().HdlNone(), ); let unit_index_wire = wire_with_loc( &format!("unit_index_{fetch_index}_{unit_index}"), @@ -447,7 +447,7 @@ pub fn reg_alloc(config: &CpuConfig) { let selected_unit_index_node = wire_with_loc( &format!("selected_unit_index_node_{fetch_index}_{state}"), SourceLocation::caller(), - Expr::ty(l), + l.ty(), ); *state += 1; connect(selected_unit_index_node, l); @@ -516,7 +516,7 @@ pub fn reg_alloc(config: &CpuConfig) { connect(unit_free_regs_tracker.alloc_out[0].ready, false); connect( unit_to_reg_alloc.input.data, - Expr::ty(unit_to_reg_alloc.input).data.HdlNone(), + unit_to_reg_alloc.input.ty().data.HdlNone(), ); for fetch_index in 0..config.fetch_width.get() { #[hdl] @@ -550,7 +550,7 @@ pub fn reg_alloc(config: &CpuConfig) { } else { connect( unit_to_reg_alloc.input.data, - HdlSome(Expr::ty(unit_to_reg_alloc.input).data.HdlSome.uninit()), + HdlSome(unit_to_reg_alloc.input.ty().data.HdlSome.uninit()), ); // FIXME: add hdl_assert(cd.clk, false.to_expr(), ""); } @@ -578,7 +578,7 @@ pub fn reg_alloc(config: &CpuConfig) { connect(unit_to_reg_alloc.unit_forwarding_info, unit_forwarding_info); connect( unit_forwarding_info.unit_output_writes[unit_index], - Expr::ty(unit_forwarding_info) + unit_forwarding_info.ty() .unit_output_writes .element() .HdlNone(), diff --git a/crates/cpu/src/reg_alloc/unit_free_regs_tracker.rs b/crates/cpu/src/reg_alloc/unit_free_regs_tracker.rs index a7bf687..f1517c1 100644 --- a/crates/cpu/src/reg_alloc/unit_free_regs_tracker.rs +++ b/crates/cpu/src/reg_alloc/unit_free_regs_tracker.rs @@ -73,7 +73,7 @@ pub fn unit_free_regs_tracker( let reduced_alloc_nums = wire_with_loc( &format!("reduced_alloc_nums_{}_{}", range.start, range.end), SourceLocation::caller(), - Array[UInt[Expr::ty(l.alloc_nums).element().width() + 1]][alloc_at_once.get()], + Array[UInt[l.alloc_nums.ty().element().width() + 1]][alloc_at_once.get()], ); for alloc_index in 0..alloc_at_once.get() { #[hdl] @@ -195,7 +195,7 @@ mod tests { } } #[hdl] - let free_before_alloc_array = wire(Array[Expr::ty(free_reg)][alloc_at_once.get() + 1]); + let free_before_alloc_array = wire(Array[free_reg.ty()][alloc_at_once.get() + 1]); connect(free_before_alloc_array[0], free_reg); #[hdl] let expected_alloc = wire(Array[HdlOption[reg_num_ty]][alloc_at_once.get()]); diff --git a/crates/cpu/src/unit.rs b/crates/cpu/src/unit.rs index d6cd1d6..8db75c2 100644 --- a/crates/cpu/src/unit.rs +++ b/crates/cpu/src/unit.rs @@ -15,6 +15,7 @@ use fayalite::{ intern::{Intern, Interned}, prelude::*, }; +use serde::{Deserialize, Serialize}; pub mod alu_branch; pub mod unit_base; @@ -36,7 +37,7 @@ macro_rules! all_units { } ) => { $(#[$enum_meta])* - #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)] + #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Serialize, Deserialize)] $vis enum $UnitKind { $( $(#[$variant_meta])* @@ -52,9 +53,16 @@ macro_rules! all_units { } } - impl ToExpr for $UnitKind { + impl ValueType for $UnitKind { type Type = $HdlUnitKind; + type ValueCategory = fayalite::expr::value_category::ValueCategoryExpr; + fn ty(&self) -> Self::Type { + $HdlUnitKind + } + } + + impl ToExpr for $UnitKind { fn to_expr(&self) -> Expr { match self { $($UnitKind::$Unit => $HdlUnitKind.$Unit(),)* @@ -98,7 +106,7 @@ macro_rules! all_units { #[hdl] $vis fn $extract(expr: impl ToExpr) -> Expr> { let expr = expr.to_expr(); - let ty = Expr::ty(expr); + let ty = expr.ty(); #[hdl] let $extract = wire(HdlOption[ty.$Unit]); connect($extract, HdlOption[ty.$Unit].HdlNone()); @@ -164,10 +172,10 @@ macro_rules! all_units { $TransformedMoveOp: MOpTrait, { let this = this.to_expr(); - let new_ty = Expr::ty(this).with_transformed_move_op_ty(new_transformed_move_op_ty); + let new_ty = this.ty().with_transformed_move_op_ty(new_transformed_move_op_ty); #[hdl] let with_transformed_move_op = wire(HdlOption[new_ty]); - connect(with_transformed_move_op, Expr::ty(with_transformed_move_op).HdlNone()); + connect(with_transformed_move_op, with_transformed_move_op.ty().HdlNone()); // workaround #[hdl] match expanding to a loop, so you can't move variables in it let mut connect_transformed_move_op = Some(connect_transformed_move_op); #[hdl] @@ -209,7 +217,7 @@ macro_rules! all_units { RenamedMOp[MOpTrait::dest_reg_ty(self)][MOpTrait::src_reg_width(self)] } fn mop_into(this: Expr) -> Expr> { - MOpInto::>::mop_into_ty(Expr::ty(this)).$BeforeUnit(this) + MOpInto::>::mop_into_ty(this.ty()).$BeforeUnit(this) } })* @@ -218,7 +226,7 @@ macro_rules! all_units { RenamedMOp[MOpTrait::dest_reg_ty(self)][MOpTrait::src_reg_width(self)] } fn mop_into(this: Expr) -> Expr> { - MOpInto::>::mop_into_ty(Expr::ty(this)).$AfterUnit(this) + MOpInto::>::mop_into_ty(this.ty()).$AfterUnit(this) } })* }; diff --git a/crates/cpu/src/unit/alu_branch.rs b/crates/cpu/src/unit/alu_branch.rs index 49908fc..ff0ba1a 100644 --- a/crates/cpu/src/unit/alu_branch.rs +++ b/crates/cpu/src/unit/alu_branch.rs @@ -266,7 +266,7 @@ pub fn alu_branch(config: &CpuConfig, unit_index: usize) { let unit_base = instance(unit_base( config, unit_index, - Expr::ty(unit_to_reg_alloc).input.data.HdlSome.mop, + unit_to_reg_alloc.ty().input.data.HdlSome.mop, (), )); connect(unit_to_reg_alloc, unit_base.unit_to_reg_alloc); @@ -274,7 +274,7 @@ pub fn alu_branch(config: &CpuConfig, unit_index: usize) { connect(unit_base.execute_start.ready, true); connect( unit_base.execute_end, - Expr::ty(unit_base.execute_end).HdlNone(), + unit_base.execute_end.ty().HdlNone(), ); #[hdl] if let HdlSome(execute_start) = ReadyValid::firing_data(unit_base.execute_start) { diff --git a/crates/cpu/src/unit/unit_base.rs b/crates/cpu/src/unit/unit_base.rs index 0803933..4e665e0 100644 --- a/crates/cpu/src/unit/unit_base.rs +++ b/crates/cpu/src/unit/unit_base.rs @@ -227,7 +227,7 @@ impl InFlightOpsSummary { in_flight_ops: impl ToExpr>, MaxInFlight>>, ) -> Expr { let in_flight_ops = in_flight_ops.to_expr(); - let max_in_flight = Expr::ty(in_flight_ops).len(); + let max_in_flight = in_flight_ops.ty().len(); let index_range = 0..max_in_flight; let index_ty = UInt::range(index_range.clone()); tree_reduce( @@ -259,7 +259,7 @@ pub fn unit_base< let execute_end: HdlOption> = m.input(HdlOption[ExecuteEnd[config.out_reg_num_width][extra_out_ty]]); - connect(execute_start.data, Expr::ty(execute_start).data.HdlNone()); + connect(execute_start.data, execute_start.ty().data.HdlNone()); let max_in_flight = config.unit_max_in_flight(unit_index).get(); let in_flight_op_ty = InFlightOp[mop_ty]; @@ -270,7 +270,7 @@ pub fn unit_base< let in_flight_ops_summary_value = InFlightOpsSummary::summarize(in_flight_ops); #[hdl] - let in_flight_ops_summary = wire(Expr::ty(in_flight_ops_summary_value)); + let in_flight_ops_summary = wire(in_flight_ops_summary_value.ty()); connect(in_flight_ops_summary, in_flight_ops_summary_value); connect( @@ -302,7 +302,7 @@ pub fn unit_base< #[hdl] let input_src_regs_valid = wire(); connect(input_src_regs_valid, [true; COMMON_MOP_SRC_LEN]); - let mut unit_output_regs_valid: Vec> = (0..Expr::ty(unit_output_writes).len()) + let mut unit_output_regs_valid: Vec> = (0..unit_output_writes.ty().len()) .map(|unit_index| { let mut mem = memory_with_loc( &format!("unit_{unit_index}_output_regs_valid"), @@ -313,7 +313,7 @@ pub fn unit_base< mem }) .collect(); - for unit_index in 0..Expr::ty(unit_output_writes).len() { + for unit_index in 0..unit_output_writes.ty().len() { let mut unit_output_regs = memory_with_loc( &format!("unit_{unit_index}_output_regs"), PRegValue, @@ -411,7 +411,7 @@ pub fn unit_base< connect( unit_to_reg_alloc.output, - Expr::ty(unit_to_reg_alloc.output).HdlNone(), + unit_to_reg_alloc.output.ty().HdlNone(), ); #[hdl] @@ -503,7 +503,7 @@ pub fn unit_base< #[hdl] if in_flight_ops_summary.ready_op_index.cmp_eq(HdlSome( - in_flight_op_index.cast_to(Expr::ty(in_flight_ops_summary).ready_op_index.HdlSome), + in_flight_op_index.cast_to(in_flight_ops_summary.ty().ready_op_index.HdlSome), )) { connect(read_src_regs, src_regs); } @@ -512,7 +512,7 @@ pub fn unit_base< in_flight_op_next_src_ready_flags[in_flight_op_index], src_ready_flags, ); - for unit_index in 0..Expr::ty(unit_output_writes).len() { + for unit_index in 0..unit_output_writes.ty().len() { #[hdl] if let HdlSome(unit_output_write) = unit_output_writes[unit_index] { #[hdl] diff --git a/crates/cpu/src/util/array_vec.rs b/crates/cpu/src/util/array_vec.rs index 4af5663..3d49e6f 100644 --- a/crates/cpu/src/util/array_vec.rs +++ b/crates/cpu/src/util/array_vec.rs @@ -39,8 +39,8 @@ impl ArrayVec { let elements = elements.to_expr(); let len = len.to_expr(); assert_eq!( - Length[N::from_usize(Expr::ty(elements).len())], - Expr::ty(len), + Length[N::from_usize(elements.ty().len())], + len.ty(), "len type mismatch", ); #[hdl] @@ -89,7 +89,7 @@ impl ArrayVec { ) -> Expr> { let this = this.to_expr(); #[hdl] - let mapped_array_vec = wire(Expr::ty(this).mapped_ty(new_element_ty)); + let mapped_array_vec = wire(this.ty().mapped_ty(new_element_ty)); connect(mapped_array_vec.len, this.len); Self::for_each(this, |index, element| { connect(mapped_array_vec[index], f(index, element)); @@ -101,11 +101,11 @@ impl ArrayVec { let this = this.to_expr(); #[hdl] let array_vec_as_array_of_options = wire( - ArrayType[HdlOption[Expr::ty(this).element()]] - [N::from_usize(Expr::ty(this).capacity())], + ArrayType[HdlOption[this.ty().element()]] + [N::from_usize(this.ty().capacity())], ); for element in array_vec_as_array_of_options { - connect(element, Expr::ty(element).HdlNone()); + connect(element, element.ty().HdlNone()); } Self::for_each(this, |index, element| { connect(array_vec_as_array_of_options[index], HdlSome(element)) diff --git a/crates/cpu/tests/expected/next_pc.vcd b/crates/cpu/tests/expected/next_pc.vcd new file mode 100644 index 0000000..e244bc6 --- /dev/null +++ b/crates/cpu/tests/expected/next_pc.vcd @@ -0,0 +1,4702 @@ +$timescale 1 ps $end +$scope module next_pc $end +$scope struct cd $end +$var wire 1 ! clk $end +$var wire 1 " rst $end +$upscope $end +$scope struct to_fetch $end +$scope struct inner $end +$scope struct data $end +$var string 1 # \$tag $end +$scope struct HdlSome $end +$var wire 64 $ next_fetch_pc $end +$var wire 8 % fetch_block_id $end +$var wire 8 & in_progress_fetches_to_cancel $end +$upscope $end +$upscope $end +$var wire 1 ' ready $end +$upscope $end +$var string 1 ( config $end +$upscope $end +$scope struct state_for_debug $end +$scope struct speculative_call_stack $end +$scope struct return_addresses $end +$var wire 64 ) \[0] $end +$var wire 64 * \[1] $end +$var wire 64 + \[2] $end +$var wire 64 , \[3] $end +$var wire 64 - \[4] $end +$var wire 64 . \[5] $end +$var wire 64 / \[6] $end +$var wire 64 0 \[7] $end +$var wire 64 1 \[8] $end +$var wire 64 2 \[9] $end +$var wire 64 3 \[10] $end +$var wire 64 4 \[11] $end +$var wire 64 5 \[12] $end +$var wire 64 6 \[13] $end +$var wire 64 7 \[14] $end +$var wire 64 8 \[15] $end +$upscope $end +$scope struct len $end +$var wire 5 9 value $end +$var string 1 : range $end +$upscope $end +$upscope $end +$scope struct non_speculative_call_stack $end +$scope struct return_addresses $end +$var wire 64 ; \[0] $end +$var wire 64 < \[1] $end +$var wire 64 = \[2] $end +$var wire 64 > \[3] $end +$var wire 64 ? \[4] $end +$var wire 64 @ \[5] $end +$var wire 64 A \[6] $end +$var wire 64 B \[7] $end +$var wire 64 C \[8] $end +$var wire 64 D \[9] $end +$var wire 64 E \[10] $end +$var wire 64 F \[11] $end +$var wire 64 G \[12] $end +$var wire 64 H \[13] $end +$var wire 64 I \[14] $end +$var wire 64 J \[15] $end +$upscope $end +$scope struct len $end +$var wire 5 K value $end +$var string 1 L range $end +$upscope $end +$upscope $end +$scope struct branch_target_buffer $end +$scope struct branch_pc_to_target_map $end +$scope struct \[0] $end +$var string 1 M \$tag $end +$scope struct HdlSome $end +$var wire 64 N \0 $end +$var wire 64 O \1 $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 P \$tag $end +$scope struct HdlSome $end +$var wire 64 Q \0 $end +$var wire 64 R \1 $end +$upscope $end +$upscope $end +$scope struct \[2] $end +$var string 1 S \$tag $end +$scope struct HdlSome $end +$var wire 64 T \0 $end +$var wire 64 U \1 $end +$upscope $end +$upscope $end +$scope struct \[3] $end +$var string 1 V \$tag $end +$scope struct HdlSome $end +$var wire 64 W \0 $end +$var wire 64 X \1 $end +$upscope $end +$upscope $end +$scope struct \[4] $end +$var string 1 Y \$tag $end +$scope struct HdlSome $end +$var wire 64 Z \0 $end +$var wire 64 [ \1 $end +$upscope $end +$upscope $end +$scope struct \[5] $end +$var string 1 \ \$tag $end +$scope struct HdlSome $end +$var wire 64 ] \0 $end +$var wire 64 ^ \1 $end +$upscope $end +$upscope $end +$scope struct \[6] $end +$var string 1 _ \$tag $end +$scope struct HdlSome $end +$var wire 64 ` \0 $end +$var wire 64 a \1 $end +$upscope $end +$upscope $end +$scope struct \[7] $end +$var string 1 b \$tag $end +$scope struct HdlSome $end +$var wire 64 c \0 $end +$var wire 64 d \1 $end +$upscope $end +$upscope $end +$scope struct \[8] $end +$var string 1 e \$tag $end +$scope struct HdlSome $end +$var wire 64 f \0 $end +$var wire 64 g \1 $end +$upscope $end +$upscope $end +$scope struct \[9] $end +$var string 1 h \$tag $end +$scope struct HdlSome $end +$var wire 64 i \0 $end +$var wire 64 j \1 $end +$upscope $end +$upscope $end +$scope struct \[10] $end +$var string 1 k \$tag $end +$scope struct HdlSome $end +$var wire 64 l \0 $end +$var wire 64 m \1 $end +$upscope $end +$upscope $end +$scope struct \[11] $end +$var string 1 n \$tag $end +$scope struct HdlSome $end +$var wire 64 o \0 $end +$var wire 64 p \1 $end +$upscope $end +$upscope $end +$scope struct \[12] $end +$var string 1 q \$tag $end +$scope struct HdlSome $end +$var wire 64 r \0 $end +$var wire 64 s \1 $end +$upscope $end +$upscope $end +$scope struct \[13] $end +$var string 1 t \$tag $end +$scope struct HdlSome $end +$var wire 64 u \0 $end +$var wire 64 v \1 $end +$upscope $end +$upscope $end +$scope struct \[14] $end +$var string 1 w \$tag $end +$scope struct HdlSome $end +$var wire 64 x \0 $end +$var wire 64 y \1 $end +$upscope $end +$upscope $end +$scope struct \[15] $end +$var string 1 z \$tag $end +$scope struct HdlSome $end +$var wire 64 { \0 $end +$var wire 64 | \1 $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct branch_history $end +$scope struct history $end +$var wire 1 } \[0] $end +$var wire 1 ~ \[1] $end +$var wire 1 !" \[2] $end +$var wire 1 "" \[3] $end +$var wire 1 #" \[4] $end +$var wire 1 $" \[5] $end +$var wire 1 %" \[6] $end +$var wire 1 &" \[7] $end +$var wire 1 '" \[8] $end +$var wire 1 (" \[9] $end +$var wire 1 )" \[10] $end +$var wire 1 *" \[11] $end +$var wire 1 +" \[12] $end +$var wire 1 ," \[13] $end +$var wire 1 -" \[14] $end +$var wire 1 ." \[15] $end +$var wire 1 /" \[16] $end +$var wire 1 0" \[17] $end +$var wire 1 1" \[18] $end +$var wire 1 2" \[19] $end +$var wire 1 3" \[20] $end +$var wire 1 4" \[21] $end +$var wire 1 5" \[22] $end +$var wire 1 6" \[23] $end +$var wire 1 7" \[24] $end +$var wire 1 8" \[25] $end +$var wire 1 9" \[26] $end +$var wire 1 :" \[27] $end +$var wire 1 ;" \[28] $end +$var wire 1 <" \[29] $end +$var wire 1 =" \[30] $end +$var wire 1 >" \[31] $end +$var wire 1 ?" \[32] $end +$var wire 1 @" \[33] $end +$var wire 1 A" \[34] $end +$var wire 1 B" \[35] $end +$var wire 1 C" \[36] $end +$var wire 1 D" \[37] $end +$var wire 1 E" \[38] $end +$var wire 1 F" \[39] $end +$var wire 1 G" \[40] $end +$var wire 1 H" \[41] $end +$var wire 1 I" \[42] $end +$var wire 1 J" \[43] $end +$var wire 1 K" \[44] $end +$var wire 1 L" \[45] $end +$var wire 1 M" \[46] $end +$var wire 1 N" \[47] $end +$var wire 1 O" \[48] $end +$var wire 1 P" \[49] $end +$var wire 1 Q" \[50] $end +$var wire 1 R" \[51] $end +$var wire 1 S" \[52] $end +$var wire 1 T" \[53] $end +$var wire 1 U" \[54] $end +$var wire 1 V" \[55] $end +$var wire 1 W" \[56] $end +$var wire 1 X" \[57] $end +$var wire 1 Y" \[58] $end +$var wire 1 Z" \[59] $end +$var wire 1 [" \[60] $end +$var wire 1 \" \[61] $end +$var wire 1 ]" \[62] $end +$var wire 1 ^" \[63] $end +$var wire 1 _" \[64] $end +$var wire 1 `" \[65] $end +$var wire 1 a" \[66] $end +$var wire 1 b" \[67] $end +$var wire 1 c" \[68] $end +$var wire 1 d" \[69] $end +$var wire 1 e" \[70] $end +$var wire 1 f" \[71] $end +$var wire 1 g" \[72] $end +$var wire 1 h" \[73] $end +$var wire 1 i" \[74] $end +$var wire 1 j" \[75] $end +$var wire 1 k" \[76] $end +$var wire 1 l" \[77] $end +$var wire 1 m" \[78] $end +$var wire 1 n" \[79] $end +$var wire 1 o" \[80] $end +$var wire 1 p" \[81] $end +$var wire 1 q" \[82] $end +$var wire 1 r" \[83] $end +$var wire 1 s" \[84] $end +$var wire 1 t" \[85] $end +$var wire 1 u" \[86] $end +$var wire 1 v" \[87] $end +$var wire 1 w" \[88] $end +$var wire 1 x" \[89] $end +$var wire 1 y" \[90] $end +$var wire 1 z" \[91] $end +$var wire 1 {" \[92] $end +$var wire 1 |" \[93] $end +$var wire 1 }" \[94] $end +$var wire 1 ~" \[95] $end +$var wire 1 !# \[96] $end +$var wire 1 "# \[97] $end +$var wire 1 ## \[98] $end +$var wire 1 $# \[99] $end +$var wire 1 %# \[100] $end +$var wire 1 &# \[101] $end +$var wire 1 '# \[102] $end +$var wire 1 (# \[103] $end +$var wire 1 )# \[104] $end +$var wire 1 *# \[105] $end +$var wire 1 +# \[106] $end +$var wire 1 ,# \[107] $end +$var wire 1 -# \[108] $end +$var wire 1 .# \[109] $end +$var wire 1 /# \[110] $end +$var wire 1 0# \[111] $end +$var wire 1 1# \[112] $end +$var wire 1 2# \[113] $end +$var wire 1 3# \[114] $end +$var wire 1 4# \[115] $end +$var wire 1 5# \[116] $end +$var wire 1 6# \[117] $end +$var wire 1 7# \[118] $end +$var wire 1 8# \[119] $end +$var wire 1 9# \[120] $end +$var wire 1 :# \[121] $end +$var wire 1 ;# \[122] $end +$var wire 1 <# \[123] $end +$var wire 1 =# \[124] $end +$var wire 1 ># \[125] $end +$var wire 1 ?# \[126] $end +$var wire 1 @# \[127] $end +$var wire 1 A# \[128] $end +$var wire 1 B# \[129] $end +$var wire 1 C# \[130] $end +$var wire 1 D# \[131] $end +$var wire 1 E# \[132] $end +$var wire 1 F# \[133] $end +$var wire 1 G# \[134] $end +$var wire 1 H# \[135] $end +$var wire 1 I# \[136] $end +$var wire 1 J# \[137] $end +$var wire 1 K# \[138] $end +$var wire 1 L# \[139] $end +$var wire 1 M# \[140] $end +$var wire 1 N# \[141] $end +$var wire 1 O# \[142] $end +$var wire 1 P# \[143] $end +$var wire 1 Q# \[144] $end +$var wire 1 R# \[145] $end +$var wire 1 S# \[146] $end +$var wire 1 T# \[147] $end +$var wire 1 U# \[148] $end +$var wire 1 V# \[149] $end +$var wire 1 W# \[150] $end +$var wire 1 X# \[151] $end +$var wire 1 Y# \[152] $end +$var wire 1 Z# \[153] $end +$var wire 1 [# \[154] $end +$var wire 1 \# \[155] $end +$var wire 1 ]# \[156] $end +$var wire 1 ^# \[157] $end +$var wire 1 _# \[158] $end +$var wire 1 `# \[159] $end +$var wire 1 a# \[160] $end +$var wire 1 b# \[161] $end +$var wire 1 c# \[162] $end +$var wire 1 d# \[163] $end +$var wire 1 e# \[164] $end +$var wire 1 f# \[165] $end +$var wire 1 g# \[166] $end +$var wire 1 h# \[167] $end +$var wire 1 i# \[168] $end +$var wire 1 j# \[169] $end +$var wire 1 k# \[170] $end +$var wire 1 l# \[171] $end +$var wire 1 m# \[172] $end +$var wire 1 n# \[173] $end +$var wire 1 o# \[174] $end +$var wire 1 p# \[175] $end +$var wire 1 q# \[176] $end +$var wire 1 r# \[177] $end +$var wire 1 s# \[178] $end +$var wire 1 t# \[179] $end +$var wire 1 u# \[180] $end +$var wire 1 v# \[181] $end +$var wire 1 w# \[182] $end +$var wire 1 x# \[183] $end +$var wire 1 y# \[184] $end +$var wire 1 z# \[185] $end +$var wire 1 {# \[186] $end +$var wire 1 |# \[187] $end +$var wire 1 }# \[188] $end +$var wire 1 ~# \[189] $end +$var wire 1 !$ \[190] $end +$var wire 1 "$ \[191] $end +$var wire 1 #$ \[192] $end +$var wire 1 $$ \[193] $end +$var wire 1 %$ \[194] $end +$var wire 1 &$ \[195] $end +$var wire 1 '$ \[196] $end +$var wire 1 ($ \[197] $end +$var wire 1 )$ \[198] $end +$var wire 1 *$ \[199] $end +$var wire 1 +$ \[200] $end +$var wire 1 ,$ \[201] $end +$var wire 1 -$ \[202] $end +$var wire 1 .$ \[203] $end +$var wire 1 /$ \[204] $end +$var wire 1 0$ \[205] $end +$var wire 1 1$ \[206] $end +$var wire 1 2$ \[207] $end +$var wire 1 3$ \[208] $end +$var wire 1 4$ \[209] $end +$var wire 1 5$ \[210] $end +$var wire 1 6$ \[211] $end +$var wire 1 7$ \[212] $end +$var wire 1 8$ \[213] $end +$var wire 1 9$ \[214] $end +$var wire 1 :$ \[215] $end +$var wire 1 ;$ \[216] $end +$var wire 1 <$ \[217] $end +$var wire 1 =$ \[218] $end +$var wire 1 >$ \[219] $end +$var wire 1 ?$ \[220] $end +$var wire 1 @$ \[221] $end +$var wire 1 A$ \[222] $end +$var wire 1 B$ \[223] $end +$var wire 1 C$ \[224] $end +$var wire 1 D$ \[225] $end +$var wire 1 E$ \[226] $end +$var wire 1 F$ \[227] $end +$var wire 1 G$ \[228] $end +$var wire 1 H$ \[229] $end +$var wire 1 I$ \[230] $end +$var wire 1 J$ \[231] $end +$var wire 1 K$ \[232] $end +$var wire 1 L$ \[233] $end +$var wire 1 M$ \[234] $end +$var wire 1 N$ \[235] $end +$var wire 1 O$ \[236] $end +$var wire 1 P$ \[237] $end +$var wire 1 Q$ \[238] $end +$var wire 1 R$ \[239] $end +$var wire 1 S$ \[240] $end +$var wire 1 T$ \[241] $end +$var wire 1 U$ \[242] $end +$var wire 1 V$ \[243] $end +$var wire 1 W$ \[244] $end +$var wire 1 X$ \[245] $end +$var wire 1 Y$ \[246] $end +$var wire 1 Z$ \[247] $end +$var wire 1 [$ \[248] $end +$var wire 1 \$ \[249] $end +$var wire 1 ]$ \[250] $end +$var wire 1 ^$ \[251] $end +$var wire 1 _$ \[252] $end +$var wire 1 `$ \[253] $end +$var wire 1 a$ \[254] $end +$var wire 1 b$ \[255] $end +$upscope $end +$scope struct tail $end +$var wire 8 c$ value $end +$var string 1 d$ range $end +$upscope $end +$scope struct non_speculative_head $end +$var wire 8 e$ value $end +$var string 1 f$ range $end +$upscope $end +$scope struct speculative_head $end +$var wire 8 g$ value $end +$var string 1 h$ range $end +$upscope $end +$upscope $end +$scope struct branch_predictor $end +$var string 1 i$ \[0] $end +$var string 1 j$ \[1] $end +$var string 1 k$ \[2] $end +$var string 1 l$ \[3] $end +$var string 1 m$ \[4] $end +$var string 1 n$ \[5] $end +$var string 1 o$ \[6] $end +$var string 1 p$ \[7] $end +$var string 1 q$ \[8] $end +$var string 1 r$ \[9] $end +$var string 1 s$ \[10] $end +$var string 1 t$ \[11] $end +$var string 1 u$ \[12] $end +$var string 1 v$ \[13] $end +$var string 1 w$ \[14] $end +$var string 1 x$ \[15] $end +$var string 1 y$ \[16] $end +$var string 1 z$ \[17] $end +$var string 1 {$ \[18] $end +$var string 1 |$ \[19] $end +$var string 1 }$ \[20] $end +$var string 1 ~$ \[21] $end +$var string 1 !% \[22] $end +$var string 1 "% \[23] $end +$var string 1 #% \[24] $end +$var string 1 $% \[25] $end +$var string 1 %% \[26] $end +$var string 1 &% \[27] $end +$var string 1 '% \[28] $end +$var string 1 (% \[29] $end +$var string 1 )% \[30] $end +$var string 1 *% \[31] $end +$var string 1 +% \[32] $end +$var string 1 ,% \[33] $end +$var string 1 -% \[34] $end +$var string 1 .% \[35] $end +$var string 1 /% \[36] $end +$var string 1 0% \[37] $end +$var string 1 1% \[38] $end +$var string 1 2% \[39] $end +$var string 1 3% \[40] $end +$var string 1 4% \[41] $end +$var string 1 5% \[42] $end +$var string 1 6% \[43] $end +$var string 1 7% \[44] $end +$var string 1 8% \[45] $end +$var string 1 9% \[46] $end +$var string 1 :% \[47] $end +$var string 1 ;% \[48] $end +$var string 1 <% \[49] $end +$var string 1 =% \[50] $end +$var string 1 >% \[51] $end +$var string 1 ?% \[52] $end +$var string 1 @% \[53] $end +$var string 1 A% \[54] $end +$var string 1 B% \[55] $end +$var string 1 C% \[56] $end +$var string 1 D% \[57] $end +$var string 1 E% \[58] $end +$var string 1 F% \[59] $end +$var string 1 G% \[60] $end +$var string 1 H% \[61] $end +$var string 1 I% \[62] $end +$var string 1 J% \[63] $end +$var string 1 K% \[64] $end +$var string 1 L% \[65] $end +$var string 1 M% \[66] $end +$var string 1 N% \[67] $end +$var string 1 O% \[68] $end +$var string 1 P% \[69] $end +$var string 1 Q% \[70] $end +$var string 1 R% \[71] $end +$var string 1 S% \[72] $end +$var string 1 T% \[73] $end +$var string 1 U% \[74] $end +$var string 1 V% \[75] $end +$var string 1 W% \[76] $end +$var string 1 X% \[77] $end +$var string 1 Y% \[78] $end +$var string 1 Z% \[79] $end +$var string 1 [% \[80] $end +$var string 1 \% \[81] $end +$var string 1 ]% \[82] $end +$var string 1 ^% \[83] $end +$var string 1 _% \[84] $end +$var string 1 `% \[85] $end +$var string 1 a% \[86] $end +$var string 1 b% \[87] $end +$var string 1 c% \[88] $end +$var string 1 d% \[89] $end +$var string 1 e% \[90] $end +$var string 1 f% \[91] $end +$var string 1 g% \[92] $end +$var string 1 h% \[93] $end +$var string 1 i% \[94] $end +$var string 1 j% \[95] $end +$var string 1 k% \[96] $end +$var string 1 l% \[97] $end +$var string 1 m% \[98] $end +$var string 1 n% \[99] $end +$var string 1 o% \[100] $end +$var string 1 p% \[101] $end +$var string 1 q% \[102] $end +$var string 1 r% \[103] $end +$var string 1 s% \[104] $end +$var string 1 t% \[105] $end +$var string 1 u% \[106] $end +$var string 1 v% \[107] $end +$var string 1 w% \[108] $end +$var string 1 x% \[109] $end +$var string 1 y% \[110] $end +$var string 1 z% \[111] $end +$var string 1 {% \[112] $end +$var string 1 |% \[113] $end +$var string 1 }% \[114] $end +$var string 1 ~% \[115] $end +$var string 1 !& \[116] $end +$var string 1 "& \[117] $end +$var string 1 #& \[118] $end +$var string 1 $& \[119] $end +$var string 1 %& \[120] $end +$var string 1 && \[121] $end +$var string 1 '& \[122] $end +$var string 1 (& \[123] $end +$var string 1 )& \[124] $end +$var string 1 *& \[125] $end +$var string 1 +& \[126] $end +$var string 1 ,& \[127] $end +$var string 1 -& \[128] $end +$var string 1 .& \[129] $end +$var string 1 /& \[130] $end +$var string 1 0& \[131] $end +$var string 1 1& \[132] $end +$var string 1 2& \[133] $end +$var string 1 3& \[134] $end +$var string 1 4& \[135] $end +$var string 1 5& \[136] $end +$var string 1 6& \[137] $end +$var string 1 7& \[138] $end +$var string 1 8& \[139] $end +$var string 1 9& \[140] $end +$var string 1 :& \[141] $end +$var string 1 ;& \[142] $end +$var string 1 <& \[143] $end +$var string 1 =& \[144] $end +$var string 1 >& \[145] $end +$var string 1 ?& \[146] $end +$var string 1 @& \[147] $end +$var string 1 A& \[148] $end +$var string 1 B& \[149] $end +$var string 1 C& \[150] $end +$var string 1 D& \[151] $end +$var string 1 E& \[152] $end +$var string 1 F& \[153] $end +$var string 1 G& \[154] $end +$var string 1 H& \[155] $end +$var string 1 I& \[156] $end +$var string 1 J& \[157] $end +$var string 1 K& \[158] $end +$var string 1 L& \[159] $end +$var string 1 M& \[160] $end +$var string 1 N& \[161] $end +$var string 1 O& \[162] $end +$var string 1 P& \[163] $end +$var string 1 Q& \[164] $end +$var string 1 R& \[165] $end +$var string 1 S& \[166] $end +$var string 1 T& \[167] $end +$var string 1 U& \[168] $end +$var string 1 V& \[169] $end +$var string 1 W& \[170] $end +$var string 1 X& \[171] $end +$var string 1 Y& \[172] $end +$var string 1 Z& \[173] $end +$var string 1 [& \[174] $end +$var string 1 \& \[175] $end +$var string 1 ]& \[176] $end +$var string 1 ^& \[177] $end +$var string 1 _& \[178] $end +$var string 1 `& \[179] $end +$var string 1 a& \[180] $end +$var string 1 b& \[181] $end +$var string 1 c& \[182] $end +$var string 1 d& \[183] $end +$var string 1 e& \[184] $end +$var string 1 f& \[185] $end +$var string 1 g& \[186] $end +$var string 1 h& \[187] $end +$var string 1 i& \[188] $end +$var string 1 j& \[189] $end +$var string 1 k& \[190] $end +$var string 1 l& \[191] $end +$var string 1 m& \[192] $end +$var string 1 n& \[193] $end +$var string 1 o& \[194] $end +$var string 1 p& \[195] $end +$var string 1 q& \[196] $end +$var string 1 r& \[197] $end +$var string 1 s& \[198] $end +$var string 1 t& \[199] $end +$var string 1 u& \[200] $end +$var string 1 v& \[201] $end +$var string 1 w& \[202] $end +$var string 1 x& \[203] $end +$var string 1 y& \[204] $end +$var string 1 z& \[205] $end +$var string 1 {& \[206] $end +$var string 1 |& \[207] $end +$var string 1 }& \[208] $end +$var string 1 ~& \[209] $end +$var string 1 !' \[210] $end +$var string 1 "' \[211] $end +$var string 1 #' \[212] $end +$var string 1 $' \[213] $end +$var string 1 %' \[214] $end +$var string 1 &' \[215] $end +$var string 1 '' \[216] $end +$var string 1 (' \[217] $end +$var string 1 )' \[218] $end +$var string 1 *' \[219] $end +$var string 1 +' \[220] $end +$var string 1 ,' \[221] $end +$var string 1 -' \[222] $end +$var string 1 .' \[223] $end +$var string 1 /' \[224] $end +$var string 1 0' \[225] $end +$var string 1 1' \[226] $end +$var string 1 2' \[227] $end +$var string 1 3' \[228] $end +$var string 1 4' \[229] $end +$var string 1 5' \[230] $end +$var string 1 6' \[231] $end +$var string 1 7' \[232] $end +$var string 1 8' \[233] $end +$var string 1 9' \[234] $end +$var string 1 :' \[235] $end +$var string 1 ;' \[236] $end +$var string 1 <' \[237] $end +$var string 1 =' \[238] $end +$var string 1 >' \[239] $end +$var string 1 ?' \[240] $end +$var string 1 @' \[241] $end +$var string 1 A' \[242] $end +$var string 1 B' \[243] $end +$var string 1 C' \[244] $end +$var string 1 D' \[245] $end +$var string 1 E' \[246] $end +$var string 1 F' \[247] $end +$var string 1 G' \[248] $end +$var string 1 H' \[249] $end +$var string 1 I' \[250] $end +$var string 1 J' \[251] $end +$var string 1 K' \[252] $end +$var string 1 L' \[253] $end +$var string 1 M' \[254] $end +$var string 1 N' \[255] $end +$upscope $end +$scope struct fetching_queue $end +$scope struct data $end +$scope struct \[0] $end +$var wire 8 O' fetch_block_id $end +$upscope $end +$scope struct \[1] $end +$var wire 8 P' fetch_block_id $end +$upscope $end +$scope struct \[2] $end +$var wire 8 Q' fetch_block_id $end +$upscope $end +$scope struct \[3] $end +$var wire 8 R' fetch_block_id $end +$upscope $end +$scope struct \[4] $end +$var wire 8 S' fetch_block_id $end +$upscope $end +$scope struct \[5] $end +$var wire 8 T' fetch_block_id $end +$upscope $end +$scope struct \[6] $end +$var wire 8 U' fetch_block_id $end +$upscope $end +$scope struct \[7] $end +$var wire 8 V' fetch_block_id $end +$upscope $end +$scope struct \[8] $end +$var wire 8 W' fetch_block_id $end +$upscope $end +$scope struct \[9] $end +$var wire 8 X' fetch_block_id $end +$upscope $end +$scope struct \[10] $end +$var wire 8 Y' fetch_block_id $end +$upscope $end +$scope struct \[11] $end +$var wire 8 Z' fetch_block_id $end +$upscope $end +$scope struct \[12] $end +$var wire 8 [' fetch_block_id $end +$upscope $end +$scope struct \[13] $end +$var wire 8 \' fetch_block_id $end +$upscope $end +$scope struct \[14] $end +$var wire 8 ]' fetch_block_id $end +$upscope $end +$scope struct \[15] $end +$var wire 8 ^' fetch_block_id $end +$upscope $end +$scope struct \[16] $end +$var wire 8 _' fetch_block_id $end +$upscope $end +$scope struct \[17] $end +$var wire 8 `' fetch_block_id $end +$upscope $end +$scope struct \[18] $end +$var wire 8 a' fetch_block_id $end +$upscope $end +$scope struct \[19] $end +$var wire 8 b' fetch_block_id $end +$upscope $end +$scope struct \[20] $end +$var wire 8 c' fetch_block_id $end +$upscope $end +$scope struct \[21] $end +$var wire 8 d' fetch_block_id $end +$upscope $end +$scope struct \[22] $end +$var wire 8 e' fetch_block_id $end +$upscope $end +$scope struct \[23] $end +$var wire 8 f' fetch_block_id $end +$upscope $end +$scope struct \[24] $end +$var wire 8 g' fetch_block_id $end +$upscope $end +$scope struct \[25] $end +$var wire 8 h' fetch_block_id $end +$upscope $end +$scope struct \[26] $end +$var wire 8 i' fetch_block_id $end +$upscope $end +$scope struct \[27] $end +$var wire 8 j' fetch_block_id $end +$upscope $end +$scope struct \[28] $end +$var wire 8 k' fetch_block_id $end +$upscope $end +$scope struct \[29] $end +$var wire 8 l' fetch_block_id $end +$upscope $end +$scope struct \[30] $end +$var wire 8 m' fetch_block_id $end +$upscope $end +$scope struct \[31] $end +$var wire 8 n' fetch_block_id $end +$upscope $end +$scope struct \[32] $end +$var wire 8 o' fetch_block_id $end +$upscope $end +$scope struct \[33] $end +$var wire 8 p' fetch_block_id $end +$upscope $end +$scope struct \[34] $end +$var wire 8 q' fetch_block_id $end +$upscope $end +$scope struct \[35] $end +$var wire 8 r' fetch_block_id $end +$upscope $end +$scope struct \[36] $end +$var wire 8 s' fetch_block_id $end +$upscope $end +$scope struct \[37] $end +$var wire 8 t' fetch_block_id $end +$upscope $end +$scope struct \[38] $end +$var wire 8 u' fetch_block_id $end +$upscope $end +$scope struct \[39] $end +$var wire 8 v' fetch_block_id $end +$upscope $end +$scope struct \[40] $end +$var wire 8 w' fetch_block_id $end +$upscope $end +$scope struct \[41] $end +$var wire 8 x' fetch_block_id $end +$upscope $end +$scope struct \[42] $end +$var wire 8 y' fetch_block_id $end +$upscope $end +$scope struct \[43] $end +$var wire 8 z' fetch_block_id $end +$upscope $end +$scope struct \[44] $end +$var wire 8 {' fetch_block_id $end +$upscope $end +$scope struct \[45] $end +$var wire 8 |' fetch_block_id $end +$upscope $end +$scope struct \[46] $end +$var wire 8 }' fetch_block_id $end +$upscope $end +$scope struct \[47] $end +$var wire 8 ~' fetch_block_id $end +$upscope $end +$scope struct \[48] $end +$var wire 8 !( fetch_block_id $end +$upscope $end +$scope struct \[49] $end +$var wire 8 "( fetch_block_id $end +$upscope $end +$scope struct \[50] $end +$var wire 8 #( fetch_block_id $end +$upscope $end +$scope struct \[51] $end +$var wire 8 $( fetch_block_id $end +$upscope $end +$scope struct \[52] $end +$var wire 8 %( fetch_block_id $end +$upscope $end +$scope struct \[53] $end +$var wire 8 &( fetch_block_id $end +$upscope $end +$scope struct \[54] $end +$var wire 8 '( fetch_block_id $end +$upscope $end +$scope struct \[55] $end +$var wire 8 (( fetch_block_id $end +$upscope $end +$scope struct \[56] $end +$var wire 8 )( fetch_block_id $end +$upscope $end +$scope struct \[57] $end +$var wire 8 *( fetch_block_id $end +$upscope $end +$scope struct \[58] $end +$var wire 8 +( fetch_block_id $end +$upscope $end +$scope struct \[59] $end +$var wire 8 ,( fetch_block_id $end +$upscope $end +$scope struct \[60] $end +$var wire 8 -( fetch_block_id $end +$upscope $end +$scope struct \[61] $end +$var wire 8 .( fetch_block_id $end +$upscope $end +$scope struct \[62] $end +$var wire 8 /( fetch_block_id $end +$upscope $end +$scope struct \[63] $end +$var wire 8 0( fetch_block_id $end +$upscope $end +$scope struct \[64] $end +$var wire 8 1( fetch_block_id $end +$upscope $end +$scope struct \[65] $end +$var wire 8 2( fetch_block_id $end +$upscope $end +$scope struct \[66] $end +$var wire 8 3( fetch_block_id $end +$upscope $end +$scope struct \[67] $end +$var wire 8 4( fetch_block_id $end +$upscope $end +$scope struct \[68] $end +$var wire 8 5( fetch_block_id $end +$upscope $end +$scope struct \[69] $end +$var wire 8 6( fetch_block_id $end +$upscope $end +$scope struct \[70] $end +$var wire 8 7( fetch_block_id $end +$upscope $end +$scope struct \[71] $end +$var wire 8 8( fetch_block_id $end +$upscope $end +$scope struct \[72] $end +$var wire 8 9( fetch_block_id $end +$upscope $end +$scope struct \[73] $end +$var wire 8 :( fetch_block_id $end +$upscope $end +$scope struct \[74] $end +$var wire 8 ;( fetch_block_id $end +$upscope $end +$scope struct \[75] $end +$var wire 8 <( fetch_block_id $end +$upscope $end +$scope struct \[76] $end +$var wire 8 =( fetch_block_id $end +$upscope $end +$scope struct \[77] $end +$var wire 8 >( fetch_block_id $end +$upscope $end +$scope struct \[78] $end +$var wire 8 ?( fetch_block_id $end +$upscope $end +$scope struct \[79] $end +$var wire 8 @( fetch_block_id $end +$upscope $end +$scope struct \[80] $end +$var wire 8 A( fetch_block_id $end +$upscope $end +$scope struct \[81] $end +$var wire 8 B( fetch_block_id $end +$upscope $end +$scope struct \[82] $end +$var wire 8 C( fetch_block_id $end +$upscope $end +$scope struct \[83] $end +$var wire 8 D( fetch_block_id $end +$upscope $end +$scope struct \[84] $end +$var wire 8 E( fetch_block_id $end +$upscope $end +$scope struct \[85] $end +$var wire 8 F( fetch_block_id $end +$upscope $end +$scope struct \[86] $end +$var wire 8 G( fetch_block_id $end +$upscope $end +$scope struct \[87] $end +$var wire 8 H( fetch_block_id $end +$upscope $end +$scope struct \[88] $end +$var wire 8 I( fetch_block_id $end +$upscope $end +$scope struct \[89] $end +$var wire 8 J( fetch_block_id $end +$upscope $end +$scope struct \[90] $end +$var wire 8 K( fetch_block_id $end +$upscope $end +$scope struct \[91] $end +$var wire 8 L( fetch_block_id $end +$upscope $end +$scope struct \[92] $end +$var wire 8 M( fetch_block_id $end +$upscope $end +$scope struct \[93] $end +$var wire 8 N( fetch_block_id $end +$upscope $end +$scope struct \[94] $end +$var wire 8 O( fetch_block_id $end +$upscope $end +$scope struct \[95] $end +$var wire 8 P( fetch_block_id $end +$upscope $end +$scope struct \[96] $end +$var wire 8 Q( fetch_block_id $end +$upscope $end +$scope struct \[97] $end +$var wire 8 R( fetch_block_id $end +$upscope $end +$scope struct \[98] $end +$var wire 8 S( fetch_block_id $end +$upscope $end +$scope struct \[99] $end +$var wire 8 T( fetch_block_id $end +$upscope $end +$scope struct \[100] $end +$var wire 8 U( fetch_block_id $end +$upscope $end +$scope struct \[101] $end +$var wire 8 V( fetch_block_id $end +$upscope $end +$scope struct \[102] $end +$var wire 8 W( fetch_block_id $end +$upscope $end +$scope struct \[103] $end +$var wire 8 X( fetch_block_id $end +$upscope $end +$scope struct \[104] $end +$var wire 8 Y( fetch_block_id $end +$upscope $end +$scope struct \[105] $end +$var wire 8 Z( fetch_block_id $end +$upscope $end +$scope struct \[106] $end +$var wire 8 [( fetch_block_id $end +$upscope $end +$scope struct \[107] $end +$var wire 8 \( fetch_block_id $end +$upscope $end +$scope struct \[108] $end +$var wire 8 ]( fetch_block_id $end +$upscope $end +$scope struct \[109] $end +$var wire 8 ^( fetch_block_id $end +$upscope $end +$scope struct \[110] $end +$var wire 8 _( fetch_block_id $end +$upscope $end +$scope struct \[111] $end +$var wire 8 `( fetch_block_id $end +$upscope $end +$scope struct \[112] $end +$var wire 8 a( fetch_block_id $end +$upscope $end +$scope struct \[113] $end +$var wire 8 b( fetch_block_id $end +$upscope $end +$scope struct \[114] $end +$var wire 8 c( fetch_block_id $end +$upscope $end +$scope struct \[115] $end +$var wire 8 d( fetch_block_id $end +$upscope $end +$scope struct \[116] $end +$var wire 8 e( fetch_block_id $end +$upscope $end +$scope struct \[117] $end +$var wire 8 f( fetch_block_id $end +$upscope $end +$scope struct \[118] $end +$var wire 8 g( fetch_block_id $end +$upscope $end +$scope struct \[119] $end +$var wire 8 h( fetch_block_id $end +$upscope $end +$scope struct \[120] $end +$var wire 8 i( fetch_block_id $end +$upscope $end +$scope struct \[121] $end +$var wire 8 j( fetch_block_id $end +$upscope $end +$scope struct \[122] $end +$var wire 8 k( fetch_block_id $end +$upscope $end +$scope struct \[123] $end +$var wire 8 l( fetch_block_id $end +$upscope $end +$scope struct \[124] $end +$var wire 8 m( fetch_block_id $end +$upscope $end +$scope struct \[125] $end +$var wire 8 n( fetch_block_id $end +$upscope $end +$scope struct \[126] $end +$var wire 8 o( fetch_block_id $end +$upscope $end +$scope struct \[127] $end +$var wire 8 p( fetch_block_id $end +$upscope $end +$scope struct \[128] $end +$var wire 8 q( fetch_block_id $end +$upscope $end +$scope struct \[129] $end +$var wire 8 r( fetch_block_id $end +$upscope $end +$scope struct \[130] $end +$var wire 8 s( fetch_block_id $end +$upscope $end +$scope struct \[131] $end +$var wire 8 t( fetch_block_id $end +$upscope $end +$scope struct \[132] $end +$var wire 8 u( fetch_block_id $end +$upscope $end +$scope struct \[133] $end +$var wire 8 v( fetch_block_id $end +$upscope $end +$scope struct \[134] $end +$var wire 8 w( fetch_block_id $end +$upscope $end +$scope struct \[135] $end +$var wire 8 x( fetch_block_id $end +$upscope $end +$scope struct \[136] $end +$var wire 8 y( fetch_block_id $end +$upscope $end +$scope struct \[137] $end +$var wire 8 z( fetch_block_id $end +$upscope $end +$scope struct \[138] $end +$var wire 8 {( fetch_block_id $end +$upscope $end +$scope struct \[139] $end +$var wire 8 |( fetch_block_id $end +$upscope $end +$scope struct \[140] $end +$var wire 8 }( fetch_block_id $end +$upscope $end +$scope struct \[141] $end +$var wire 8 ~( fetch_block_id $end +$upscope $end +$scope struct \[142] $end +$var wire 8 !) fetch_block_id $end +$upscope $end +$scope struct \[143] $end +$var wire 8 ") fetch_block_id $end +$upscope $end +$scope struct \[144] $end +$var wire 8 #) fetch_block_id $end +$upscope $end +$scope struct \[145] $end +$var wire 8 $) fetch_block_id $end +$upscope $end +$scope struct \[146] $end +$var wire 8 %) fetch_block_id $end +$upscope $end +$scope struct \[147] $end +$var wire 8 &) fetch_block_id $end +$upscope $end +$scope struct \[148] $end +$var wire 8 ') fetch_block_id $end +$upscope $end +$scope struct \[149] $end +$var wire 8 () fetch_block_id $end +$upscope $end +$scope struct \[150] $end +$var wire 8 )) fetch_block_id $end +$upscope $end +$scope struct \[151] $end +$var wire 8 *) fetch_block_id $end +$upscope $end +$scope struct \[152] $end +$var wire 8 +) fetch_block_id $end +$upscope $end +$scope struct \[153] $end +$var wire 8 ,) fetch_block_id $end +$upscope $end +$scope struct \[154] $end +$var wire 8 -) fetch_block_id $end +$upscope $end +$scope struct \[155] $end +$var wire 8 .) fetch_block_id $end +$upscope $end +$scope struct \[156] $end +$var wire 8 /) fetch_block_id $end +$upscope $end +$scope struct \[157] $end +$var wire 8 0) fetch_block_id $end +$upscope $end +$scope struct \[158] $end +$var wire 8 1) fetch_block_id $end +$upscope $end +$scope struct \[159] $end +$var wire 8 2) fetch_block_id $end +$upscope $end +$scope struct \[160] $end +$var wire 8 3) fetch_block_id $end +$upscope $end +$scope struct \[161] $end +$var wire 8 4) fetch_block_id $end +$upscope $end +$scope struct \[162] $end +$var wire 8 5) fetch_block_id $end +$upscope $end +$scope struct \[163] $end +$var wire 8 6) fetch_block_id $end +$upscope $end +$scope struct \[164] $end +$var wire 8 7) fetch_block_id $end +$upscope $end +$scope struct \[165] $end +$var wire 8 8) fetch_block_id $end +$upscope $end +$scope struct \[166] $end +$var wire 8 9) fetch_block_id $end +$upscope $end +$scope struct \[167] $end +$var wire 8 :) fetch_block_id $end +$upscope $end +$scope struct \[168] $end +$var wire 8 ;) fetch_block_id $end +$upscope $end +$scope struct \[169] $end +$var wire 8 <) fetch_block_id $end +$upscope $end +$scope struct \[170] $end +$var wire 8 =) fetch_block_id $end +$upscope $end +$scope struct \[171] $end +$var wire 8 >) fetch_block_id $end +$upscope $end +$scope struct \[172] $end +$var wire 8 ?) fetch_block_id $end +$upscope $end +$scope struct \[173] $end +$var wire 8 @) fetch_block_id $end +$upscope $end +$scope struct \[174] $end +$var wire 8 A) fetch_block_id $end +$upscope $end +$scope struct \[175] $end +$var wire 8 B) fetch_block_id $end +$upscope $end +$scope struct \[176] $end +$var wire 8 C) fetch_block_id $end +$upscope $end +$scope struct \[177] $end +$var wire 8 D) fetch_block_id $end +$upscope $end +$scope struct \[178] $end +$var wire 8 E) fetch_block_id $end +$upscope $end +$scope struct \[179] $end +$var wire 8 F) fetch_block_id $end +$upscope $end +$scope struct \[180] $end +$var wire 8 G) fetch_block_id $end +$upscope $end +$scope struct \[181] $end +$var wire 8 H) fetch_block_id $end +$upscope $end +$scope struct \[182] $end +$var wire 8 I) fetch_block_id $end +$upscope $end +$scope struct \[183] $end +$var wire 8 J) fetch_block_id $end +$upscope $end +$scope struct \[184] $end +$var wire 8 K) fetch_block_id $end +$upscope $end +$scope struct \[185] $end +$var wire 8 L) fetch_block_id $end +$upscope $end +$scope struct \[186] $end +$var wire 8 M) fetch_block_id $end +$upscope $end +$scope struct \[187] $end +$var wire 8 N) fetch_block_id $end +$upscope $end +$scope struct \[188] $end +$var wire 8 O) fetch_block_id $end +$upscope $end +$scope struct \[189] $end +$var wire 8 P) fetch_block_id $end +$upscope $end +$scope struct \[190] $end +$var wire 8 Q) fetch_block_id $end +$upscope $end +$scope struct \[191] $end +$var wire 8 R) fetch_block_id $end +$upscope $end +$scope struct \[192] $end +$var wire 8 S) fetch_block_id $end +$upscope $end +$scope struct \[193] $end +$var wire 8 T) fetch_block_id $end +$upscope $end +$scope struct \[194] $end +$var wire 8 U) fetch_block_id $end +$upscope $end +$scope struct \[195] $end +$var wire 8 V) fetch_block_id $end +$upscope $end +$scope struct \[196] $end +$var wire 8 W) fetch_block_id $end +$upscope $end +$scope struct \[197] $end +$var wire 8 X) fetch_block_id $end +$upscope $end +$scope struct \[198] $end +$var wire 8 Y) fetch_block_id $end +$upscope $end +$scope struct \[199] $end +$var wire 8 Z) fetch_block_id $end +$upscope $end +$scope struct \[200] $end +$var wire 8 [) fetch_block_id $end +$upscope $end +$scope struct \[201] $end +$var wire 8 \) fetch_block_id $end +$upscope $end +$scope struct \[202] $end +$var wire 8 ]) fetch_block_id $end +$upscope $end +$scope struct \[203] $end +$var wire 8 ^) fetch_block_id $end +$upscope $end +$scope struct \[204] $end +$var wire 8 _) fetch_block_id $end +$upscope $end +$scope struct \[205] $end +$var wire 8 `) fetch_block_id $end +$upscope $end +$scope struct \[206] $end +$var wire 8 a) fetch_block_id $end +$upscope $end +$scope struct \[207] $end +$var wire 8 b) fetch_block_id $end +$upscope $end +$scope struct \[208] $end +$var wire 8 c) fetch_block_id $end +$upscope $end +$scope struct \[209] $end +$var wire 8 d) fetch_block_id $end +$upscope $end +$scope struct \[210] $end +$var wire 8 e) fetch_block_id $end +$upscope $end +$scope struct \[211] $end +$var wire 8 f) fetch_block_id $end +$upscope $end +$scope struct \[212] $end +$var wire 8 g) fetch_block_id $end +$upscope $end +$scope struct \[213] $end +$var wire 8 h) fetch_block_id $end +$upscope $end +$scope struct \[214] $end +$var wire 8 i) fetch_block_id $end +$upscope $end +$scope struct \[215] $end +$var wire 8 j) fetch_block_id $end +$upscope $end +$scope struct \[216] $end +$var wire 8 k) fetch_block_id $end +$upscope $end +$scope struct \[217] $end +$var wire 8 l) fetch_block_id $end +$upscope $end +$scope struct \[218] $end +$var wire 8 m) fetch_block_id $end +$upscope $end +$scope struct \[219] $end +$var wire 8 n) fetch_block_id $end +$upscope $end +$scope struct \[220] $end +$var wire 8 o) fetch_block_id $end +$upscope $end +$scope struct \[221] $end +$var wire 8 p) fetch_block_id $end +$upscope $end +$scope struct \[222] $end +$var wire 8 q) fetch_block_id $end +$upscope $end +$scope struct \[223] $end +$var wire 8 r) fetch_block_id $end +$upscope $end +$scope struct \[224] $end +$var wire 8 s) fetch_block_id $end +$upscope $end +$scope struct \[225] $end +$var wire 8 t) fetch_block_id $end +$upscope $end +$scope struct \[226] $end +$var wire 8 u) fetch_block_id $end +$upscope $end +$scope struct \[227] $end +$var wire 8 v) fetch_block_id $end +$upscope $end +$scope struct \[228] $end +$var wire 8 w) fetch_block_id $end +$upscope $end +$scope struct \[229] $end +$var wire 8 x) fetch_block_id $end +$upscope $end +$scope struct \[230] $end +$var wire 8 y) fetch_block_id $end +$upscope $end +$scope struct \[231] $end +$var wire 8 z) fetch_block_id $end +$upscope $end +$scope struct \[232] $end +$var wire 8 {) fetch_block_id $end +$upscope $end +$scope struct \[233] $end +$var wire 8 |) fetch_block_id $end +$upscope $end +$scope struct \[234] $end +$var wire 8 }) fetch_block_id $end +$upscope $end +$scope struct \[235] $end +$var wire 8 ~) fetch_block_id $end +$upscope $end +$scope struct \[236] $end +$var wire 8 !* fetch_block_id $end +$upscope $end +$scope struct \[237] $end +$var wire 8 "* fetch_block_id $end +$upscope $end +$scope struct \[238] $end +$var wire 8 #* fetch_block_id $end +$upscope $end +$scope struct \[239] $end +$var wire 8 $* fetch_block_id $end +$upscope $end +$scope struct \[240] $end +$var wire 8 %* fetch_block_id $end +$upscope $end +$scope struct \[241] $end +$var wire 8 &* fetch_block_id $end +$upscope $end +$scope struct \[242] $end +$var wire 8 '* fetch_block_id $end +$upscope $end +$scope struct \[243] $end +$var wire 8 (* fetch_block_id $end +$upscope $end +$scope struct \[244] $end +$var wire 8 )* fetch_block_id $end +$upscope $end +$scope struct \[245] $end +$var wire 8 ** fetch_block_id $end +$upscope $end +$scope struct \[246] $end +$var wire 8 +* fetch_block_id $end +$upscope $end +$scope struct \[247] $end +$var wire 8 ,* fetch_block_id $end +$upscope $end +$scope struct \[248] $end +$var wire 8 -* fetch_block_id $end +$upscope $end +$scope struct \[249] $end +$var wire 8 .* fetch_block_id $end +$upscope $end +$scope struct \[250] $end +$var wire 8 /* fetch_block_id $end +$upscope $end +$scope struct \[251] $end +$var wire 8 0* fetch_block_id $end +$upscope $end +$scope struct \[252] $end +$var wire 8 1* fetch_block_id $end +$upscope $end +$scope struct \[253] $end +$var wire 8 2* fetch_block_id $end +$upscope $end +$scope struct \[254] $end +$var wire 8 3* fetch_block_id $end +$upscope $end +$scope struct \[255] $end +$var wire 8 4* fetch_block_id $end +$upscope $end +$upscope $end +$scope struct head $end +$var wire 8 5* value $end +$var string 1 6* range $end +$upscope $end +$scope struct tail $end +$var wire 8 7* value $end +$var string 1 8* range $end +$upscope $end +$upscope $end +$var wire 64 9* pc $end +$var wire 8 :* fetch_block_id $end +$var string 1 ;* config $end +$upscope $end +$upscope $end +$enddefinitions $end +$dumpvars +0! +1" +sHdlNone\x20(0) # +b0 $ +b0 % +b0 & +1' +sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"log2_fetch_width_in_bytes\":3,\"default_unit_max_in_flight\":8,\"rob_size\":20}) ( +b0 ) +b0 * +b0 + +b0 , +b0 - +b0 . +b0 / +b0 0 +b0 1 +b0 2 +b0 3 +b0 4 +b0 5 +b0 6 +b0 7 +b0 8 +b0 9 +sPhantomConst(\"0..=16\") : +b0 ; +b0 < +b0 = +b0 > +b0 ? +b0 @ +b0 A +b0 B +b0 C +b0 D +b0 E +b0 F +b0 G +b0 H +b0 I +b0 J +b0 K +sPhantomConst(\"0..=16\") L +sHdlNone\x20(0) M +b0 N +b0 O +sHdlNone\x20(0) P +b0 Q +b0 R +sHdlNone\x20(0) S +b0 T +b0 U +sHdlNone\x20(0) V +b0 W +b0 X +sHdlNone\x20(0) Y +b0 Z +b0 [ +sHdlNone\x20(0) \ +b0 ] +b0 ^ +sHdlNone\x20(0) _ +b0 ` +b0 a +sHdlNone\x20(0) b +b0 c +b0 d +sHdlNone\x20(0) e +b0 f +b0 g +sHdlNone\x20(0) h +b0 i +b0 j +sHdlNone\x20(0) k +b0 l +b0 m +sHdlNone\x20(0) n +b0 o +b0 p +sHdlNone\x20(0) q +b0 r +b0 s +sHdlNone\x20(0) t +b0 u +b0 v +sHdlNone\x20(0) w +b0 x +b0 y +sHdlNone\x20(0) z +b0 { +b0 | +0} +0~ +0!" +0"" +0#" +0$" +0%" +0&" +0'" +0(" +0)" +0*" +0+" +0," +0-" +0." +0/" +00" +01" +02" +03" +04" +05" +06" +07" +08" +09" +0:" +0;" +0<" +0=" +0>" +0?" +0@" +0A" +0B" +0C" +0D" +0E" +0F" +0G" +0H" +0I" +0J" +0K" +0L" +0M" +0N" +0O" +0P" +0Q" +0R" +0S" +0T" +0U" +0V" +0W" +0X" +0Y" +0Z" +0[" +0\" +0]" +0^" +0_" +0`" +0a" +0b" +0c" +0d" +0e" +0f" +0g" +0h" +0i" +0j" +0k" +0l" +0m" +0n" +0o" +0p" +0q" +0r" +0s" +0t" +0u" +0v" +0w" +0x" +0y" +0z" +0{" +0|" +0}" +0~" +0!# +0"# +0## +0$# +0%# +0&# +0'# +0(# +0)# +0*# +0+# +0,# +0-# +0.# +0/# +00# +01# +02# +03# +04# +05# +06# +07# +08# +09# +0:# +0;# +0<# +0=# +0># +0?# +0@# +0A# +0B# +0C# +0D# +0E# +0F# +0G# +0H# +0I# +0J# +0K# +0L# +0M# +0N# +0O# +0P# +0Q# +0R# +0S# +0T# +0U# +0V# +0W# +0X# +0Y# +0Z# +0[# +0\# +0]# +0^# +0_# +0`# +0a# +0b# +0c# +0d# +0e# +0f# +0g# +0h# +0i# +0j# +0k# +0l# +0m# +0n# +0o# +0p# +0q# +0r# +0s# +0t# +0u# +0v# +0w# +0x# +0y# +0z# +0{# +0|# +0}# +0~# +0!$ +0"$ +0#$ +0$$ +0%$ +0&$ +0'$ +0($ +0)$ +0*$ +0+$ +0,$ +0-$ +0.$ +0/$ +00$ +01$ +02$ +03$ +04$ +05$ +06$ +07$ +08$ +09$ +0:$ +0;$ +0<$ +0=$ +0>$ +0?$ +0@$ +0A$ +0B$ +0C$ +0D$ +0E$ +0F$ +0G$ +0H$ +0I$ +0J$ +0K$ +0L$ +0M$ +0N$ +0O$ +0P$ +0Q$ +0R$ +0S$ +0T$ +0U$ +0V$ +0W$ +0X$ +0Y$ +0Z$ +0[$ +0\$ +0]$ +0^$ +0_$ +0`$ +0a$ +0b$ +b0 c$ +sPhantomConst(\"0..256\") d$ +b0 e$ +sPhantomConst(\"0..256\") f$ +b0 g$ +sPhantomConst(\"0..256\") h$ +sStronglyNotTaken\x20(0) i$ +sStronglyNotTaken\x20(0) j$ +sStronglyNotTaken\x20(0) k$ +sStronglyNotTaken\x20(0) l$ +sStronglyNotTaken\x20(0) m$ +sStronglyNotTaken\x20(0) n$ +sStronglyNotTaken\x20(0) o$ +sStronglyNotTaken\x20(0) p$ +sStronglyNotTaken\x20(0) q$ +sStronglyNotTaken\x20(0) r$ +sStronglyNotTaken\x20(0) s$ +sStronglyNotTaken\x20(0) t$ +sStronglyNotTaken\x20(0) u$ +sStronglyNotTaken\x20(0) v$ +sStronglyNotTaken\x20(0) w$ +sStronglyNotTaken\x20(0) x$ +sStronglyNotTaken\x20(0) y$ +sStronglyNotTaken\x20(0) z$ +sStronglyNotTaken\x20(0) {$ +sStronglyNotTaken\x20(0) |$ +sStronglyNotTaken\x20(0) }$ +sStronglyNotTaken\x20(0) ~$ +sStronglyNotTaken\x20(0) !% +sStronglyNotTaken\x20(0) "% +sStronglyNotTaken\x20(0) #% +sStronglyNotTaken\x20(0) $% +sStronglyNotTaken\x20(0) %% +sStronglyNotTaken\x20(0) &% +sStronglyNotTaken\x20(0) '% +sStronglyNotTaken\x20(0) (% +sStronglyNotTaken\x20(0) )% +sStronglyNotTaken\x20(0) *% +sStronglyNotTaken\x20(0) +% +sStronglyNotTaken\x20(0) ,% +sStronglyNotTaken\x20(0) -% +sStronglyNotTaken\x20(0) .% +sStronglyNotTaken\x20(0) /% +sStronglyNotTaken\x20(0) 0% +sStronglyNotTaken\x20(0) 1% +sStronglyNotTaken\x20(0) 2% +sStronglyNotTaken\x20(0) 3% +sStronglyNotTaken\x20(0) 4% +sStronglyNotTaken\x20(0) 5% +sStronglyNotTaken\x20(0) 6% +sStronglyNotTaken\x20(0) 7% +sStronglyNotTaken\x20(0) 8% +sStronglyNotTaken\x20(0) 9% +sStronglyNotTaken\x20(0) :% +sStronglyNotTaken\x20(0) ;% +sStronglyNotTaken\x20(0) <% +sStronglyNotTaken\x20(0) =% +sStronglyNotTaken\x20(0) >% +sStronglyNotTaken\x20(0) ?% +sStronglyNotTaken\x20(0) @% +sStronglyNotTaken\x20(0) A% +sStronglyNotTaken\x20(0) B% +sStronglyNotTaken\x20(0) C% +sStronglyNotTaken\x20(0) D% +sStronglyNotTaken\x20(0) E% +sStronglyNotTaken\x20(0) F% +sStronglyNotTaken\x20(0) G% +sStronglyNotTaken\x20(0) H% +sStronglyNotTaken\x20(0) I% +sStronglyNotTaken\x20(0) J% +sStronglyNotTaken\x20(0) K% +sStronglyNotTaken\x20(0) L% +sStronglyNotTaken\x20(0) M% +sStronglyNotTaken\x20(0) N% +sStronglyNotTaken\x20(0) O% +sStronglyNotTaken\x20(0) P% +sStronglyNotTaken\x20(0) Q% +sStronglyNotTaken\x20(0) R% +sStronglyNotTaken\x20(0) S% +sStronglyNotTaken\x20(0) T% +sStronglyNotTaken\x20(0) U% +sStronglyNotTaken\x20(0) V% +sStronglyNotTaken\x20(0) W% +sStronglyNotTaken\x20(0) X% +sStronglyNotTaken\x20(0) Y% +sStronglyNotTaken\x20(0) Z% +sStronglyNotTaken\x20(0) [% +sStronglyNotTaken\x20(0) \% +sStronglyNotTaken\x20(0) ]% +sStronglyNotTaken\x20(0) ^% +sStronglyNotTaken\x20(0) _% +sStronglyNotTaken\x20(0) `% +sStronglyNotTaken\x20(0) a% +sStronglyNotTaken\x20(0) b% +sStronglyNotTaken\x20(0) c% +sStronglyNotTaken\x20(0) d% +sStronglyNotTaken\x20(0) e% +sStronglyNotTaken\x20(0) f% +sStronglyNotTaken\x20(0) g% +sStronglyNotTaken\x20(0) h% +sStronglyNotTaken\x20(0) i% +sStronglyNotTaken\x20(0) j% +sStronglyNotTaken\x20(0) k% +sStronglyNotTaken\x20(0) l% +sStronglyNotTaken\x20(0) m% +sStronglyNotTaken\x20(0) n% +sStronglyNotTaken\x20(0) o% +sStronglyNotTaken\x20(0) p% +sStronglyNotTaken\x20(0) q% +sStronglyNotTaken\x20(0) r% +sStronglyNotTaken\x20(0) s% +sStronglyNotTaken\x20(0) t% +sStronglyNotTaken\x20(0) u% +sStronglyNotTaken\x20(0) v% +sStronglyNotTaken\x20(0) w% +sStronglyNotTaken\x20(0) x% +sStronglyNotTaken\x20(0) y% +sStronglyNotTaken\x20(0) z% +sStronglyNotTaken\x20(0) {% +sStronglyNotTaken\x20(0) |% +sStronglyNotTaken\x20(0) }% +sStronglyNotTaken\x20(0) ~% +sStronglyNotTaken\x20(0) !& +sStronglyNotTaken\x20(0) "& +sStronglyNotTaken\x20(0) #& +sStronglyNotTaken\x20(0) $& +sStronglyNotTaken\x20(0) %& +sStronglyNotTaken\x20(0) && +sStronglyNotTaken\x20(0) '& +sStronglyNotTaken\x20(0) (& +sStronglyNotTaken\x20(0) )& +sStronglyNotTaken\x20(0) *& +sStronglyNotTaken\x20(0) +& +sStronglyNotTaken\x20(0) ,& +sStronglyNotTaken\x20(0) -& +sStronglyNotTaken\x20(0) .& +sStronglyNotTaken\x20(0) /& +sStronglyNotTaken\x20(0) 0& +sStronglyNotTaken\x20(0) 1& +sStronglyNotTaken\x20(0) 2& +sStronglyNotTaken\x20(0) 3& +sStronglyNotTaken\x20(0) 4& +sStronglyNotTaken\x20(0) 5& +sStronglyNotTaken\x20(0) 6& +sStronglyNotTaken\x20(0) 7& +sStronglyNotTaken\x20(0) 8& +sStronglyNotTaken\x20(0) 9& +sStronglyNotTaken\x20(0) :& +sStronglyNotTaken\x20(0) ;& +sStronglyNotTaken\x20(0) <& +sStronglyNotTaken\x20(0) =& +sStronglyNotTaken\x20(0) >& +sStronglyNotTaken\x20(0) ?& +sStronglyNotTaken\x20(0) @& +sStronglyNotTaken\x20(0) A& +sStronglyNotTaken\x20(0) B& +sStronglyNotTaken\x20(0) C& +sStronglyNotTaken\x20(0) D& +sStronglyNotTaken\x20(0) E& +sStronglyNotTaken\x20(0) F& +sStronglyNotTaken\x20(0) G& +sStronglyNotTaken\x20(0) H& +sStronglyNotTaken\x20(0) I& +sStronglyNotTaken\x20(0) J& +sStronglyNotTaken\x20(0) K& +sStronglyNotTaken\x20(0) L& +sStronglyNotTaken\x20(0) M& +sStronglyNotTaken\x20(0) N& +sStronglyNotTaken\x20(0) O& +sStronglyNotTaken\x20(0) P& +sStronglyNotTaken\x20(0) Q& +sStronglyNotTaken\x20(0) R& +sStronglyNotTaken\x20(0) S& +sStronglyNotTaken\x20(0) T& +sStronglyNotTaken\x20(0) U& +sStronglyNotTaken\x20(0) V& +sStronglyNotTaken\x20(0) W& +sStronglyNotTaken\x20(0) X& +sStronglyNotTaken\x20(0) Y& +sStronglyNotTaken\x20(0) Z& +sStronglyNotTaken\x20(0) [& +sStronglyNotTaken\x20(0) \& +sStronglyNotTaken\x20(0) ]& +sStronglyNotTaken\x20(0) ^& +sStronglyNotTaken\x20(0) _& +sStronglyNotTaken\x20(0) `& +sStronglyNotTaken\x20(0) a& +sStronglyNotTaken\x20(0) b& +sStronglyNotTaken\x20(0) c& +sStronglyNotTaken\x20(0) d& +sStronglyNotTaken\x20(0) e& +sStronglyNotTaken\x20(0) f& +sStronglyNotTaken\x20(0) g& +sStronglyNotTaken\x20(0) h& +sStronglyNotTaken\x20(0) i& +sStronglyNotTaken\x20(0) j& +sStronglyNotTaken\x20(0) k& +sStronglyNotTaken\x20(0) l& +sStronglyNotTaken\x20(0) m& +sStronglyNotTaken\x20(0) n& +sStronglyNotTaken\x20(0) o& +sStronglyNotTaken\x20(0) p& +sStronglyNotTaken\x20(0) q& +sStronglyNotTaken\x20(0) r& +sStronglyNotTaken\x20(0) s& +sStronglyNotTaken\x20(0) t& +sStronglyNotTaken\x20(0) u& +sStronglyNotTaken\x20(0) v& +sStronglyNotTaken\x20(0) w& +sStronglyNotTaken\x20(0) x& +sStronglyNotTaken\x20(0) y& +sStronglyNotTaken\x20(0) z& +sStronglyNotTaken\x20(0) {& +sStronglyNotTaken\x20(0) |& +sStronglyNotTaken\x20(0) }& +sStronglyNotTaken\x20(0) ~& +sStronglyNotTaken\x20(0) !' +sStronglyNotTaken\x20(0) "' +sStronglyNotTaken\x20(0) #' +sStronglyNotTaken\x20(0) $' +sStronglyNotTaken\x20(0) %' +sStronglyNotTaken\x20(0) &' +sStronglyNotTaken\x20(0) '' +sStronglyNotTaken\x20(0) (' +sStronglyNotTaken\x20(0) )' +sStronglyNotTaken\x20(0) *' +sStronglyNotTaken\x20(0) +' +sStronglyNotTaken\x20(0) ,' +sStronglyNotTaken\x20(0) -' +sStronglyNotTaken\x20(0) .' +sStronglyNotTaken\x20(0) /' +sStronglyNotTaken\x20(0) 0' +sStronglyNotTaken\x20(0) 1' +sStronglyNotTaken\x20(0) 2' +sStronglyNotTaken\x20(0) 3' +sStronglyNotTaken\x20(0) 4' +sStronglyNotTaken\x20(0) 5' +sStronglyNotTaken\x20(0) 6' +sStronglyNotTaken\x20(0) 7' +sStronglyNotTaken\x20(0) 8' +sStronglyNotTaken\x20(0) 9' +sStronglyNotTaken\x20(0) :' +sStronglyNotTaken\x20(0) ;' +sStronglyNotTaken\x20(0) <' +sStronglyNotTaken\x20(0) =' +sStronglyNotTaken\x20(0) >' +sStronglyNotTaken\x20(0) ?' +sStronglyNotTaken\x20(0) @' +sStronglyNotTaken\x20(0) A' +sStronglyNotTaken\x20(0) B' +sStronglyNotTaken\x20(0) C' +sStronglyNotTaken\x20(0) D' +sStronglyNotTaken\x20(0) E' +sStronglyNotTaken\x20(0) F' +sStronglyNotTaken\x20(0) G' +sStronglyNotTaken\x20(0) H' +sStronglyNotTaken\x20(0) I' +sStronglyNotTaken\x20(0) J' +sStronglyNotTaken\x20(0) K' +sStronglyNotTaken\x20(0) L' +sStronglyNotTaken\x20(0) M' +sStronglyNotTaken\x20(0) N' +b0 O' +b0 P' +b0 Q' +b0 R' +b0 S' +b0 T' +b0 U' +b0 V' +b0 W' +b0 X' +b0 Y' +b0 Z' +b0 [' +b0 \' +b0 ]' +b0 ^' +b0 _' +b0 `' +b0 a' +b0 b' +b0 c' +b0 d' +b0 e' +b0 f' +b0 g' +b0 h' +b0 i' +b0 j' +b0 k' +b0 l' +b0 m' +b0 n' +b0 o' +b0 p' +b0 q' +b0 r' +b0 s' +b0 t' +b0 u' +b0 v' +b0 w' +b0 x' +b0 y' +b0 z' +b0 {' +b0 |' +b0 }' +b0 ~' +b0 !( +b0 "( +b0 #( +b0 $( +b0 %( +b0 &( +b0 '( +b0 (( +b0 )( +b0 *( +b0 +( +b0 ,( +b0 -( +b0 .( +b0 /( +b0 0( +b0 1( +b0 2( +b0 3( +b0 4( +b0 5( +b0 6( +b0 7( +b0 8( +b0 9( +b0 :( +b0 ;( +b0 <( +b0 =( +b0 >( +b0 ?( +b0 @( +b0 A( +b0 B( +b0 C( +b0 D( +b0 E( +b0 F( +b0 G( +b0 H( +b0 I( +b0 J( +b0 K( +b0 L( +b0 M( +b0 N( +b0 O( +b0 P( +b0 Q( +b0 R( +b0 S( +b0 T( +b0 U( +b0 V( +b0 W( +b0 X( +b0 Y( +b0 Z( +b0 [( +b0 \( +b0 ]( +b0 ^( +b0 _( +b0 `( +b0 a( +b0 b( +b0 c( +b0 d( +b0 e( +b0 f( +b0 g( +b0 h( +b0 i( +b0 j( +b0 k( +b0 l( +b0 m( +b0 n( +b0 o( +b0 p( +b0 q( +b0 r( +b0 s( +b0 t( +b0 u( +b0 v( +b0 w( +b0 x( +b0 y( +b0 z( +b0 {( +b0 |( +b0 }( +b0 ~( +b0 !) +b0 ") +b0 #) +b0 $) +b0 %) +b0 &) +b0 ') +b0 () +b0 )) +b0 *) +b0 +) +b0 ,) +b0 -) +b0 .) +b0 /) +b0 0) +b0 1) +b0 2) +b0 3) +b0 4) +b0 5) +b0 6) +b0 7) +b0 8) +b0 9) +b0 :) +b0 ;) +b0 <) +b0 =) +b0 >) +b0 ?) +b0 @) +b0 A) +b0 B) +b0 C) +b0 D) +b0 E) +b0 F) +b0 G) +b0 H) +b0 I) +b0 J) +b0 K) +b0 L) +b0 M) +b0 N) +b0 O) +b0 P) +b0 Q) +b0 R) +b0 S) +b0 T) +b0 U) +b0 V) +b0 W) +b0 X) +b0 Y) +b0 Z) +b0 [) +b0 \) +b0 ]) +b0 ^) +b0 _) +b0 `) +b0 a) +b0 b) +b0 c) +b0 d) +b0 e) +b0 f) +b0 g) +b0 h) +b0 i) +b0 j) +b0 k) +b0 l) +b0 m) +b0 n) +b0 o) +b0 p) +b0 q) +b0 r) +b0 s) +b0 t) +b0 u) +b0 v) +b0 w) +b0 x) +b0 y) +b0 z) +b0 {) +b0 |) +b0 }) +b0 ~) +b0 !* +b0 "* +b0 #* +b0 $* +b0 %* +b0 &* +b0 '* +b0 (* +b0 )* +b0 ** +b0 +* +b0 ,* +b0 -* +b0 .* +b0 /* +b0 0* +b0 1* +b0 2* +b0 3* +b0 4* +b0 5* +sPhantomConst(\"0..256\") 6* +b0 7* +sPhantomConst(\"0..256\") 8* +b0 9* +b0 :* +sPhantomConst({\"units\":[{\"kind\":\"AluBranch\",\"max_in_flight\":null},{\"kind\":\"AluBranch\",\"max_in_flight\":null}],\"out_reg_num_width\":4,\"fetch_width\":2,\"max_branches_per_fetch\":1,\"log2_fetch_width_in_bytes\":3,\"default_unit_max_in_flight\":8,\"rob_size\":20}) ;* +$end +b1111111111111111111111111111111111111111111111111111111111111111 ) +b1111111111111111111111111111111111111111111111111111111111111111 * +b1111111111111111111111111111111111111111111111111111111111111111 + +b1111111111111111111111111111111111111111111111111111111111111111 , +b1111111111111111111111111111111111111111111111111111111111111111 - +b1111111111111111111111111111111111111111111111111111111111111111 . +b1111111111111111111111111111111111111111111111111111111111111111 / +b1111111111111111111111111111111111111111111111111111111111111111 0 +b1111111111111111111111111111111111111111111111111111111111111111 1 +b1111111111111111111111111111111111111111111111111111111111111111 2 +b1111111111111111111111111111111111111111111111111111111111111111 3 +b1111111111111111111111111111111111111111111111111111111111111111 4 +b1111111111111111111111111111111111111111111111111111111111111111 5 +b1111111111111111111111111111111111111111111111111111111111111111 6 +b1111111111111111111111111111111111111111111111111111111111111111 7 +b1111111111111111111111111111111111111111111111111111111111111111 8 +b1111111111111111111111111111111111111111111111111111111111111111 ; +b1111111111111111111111111111111111111111111111111111111111111111 < +b1111111111111111111111111111111111111111111111111111111111111111 = +b1111111111111111111111111111111111111111111111111111111111111111 > +b1111111111111111111111111111111111111111111111111111111111111111 ? +b1111111111111111111111111111111111111111111111111111111111111111 @ +b1111111111111111111111111111111111111111111111111111111111111111 A +b1111111111111111111111111111111111111111111111111111111111111111 B +b1111111111111111111111111111111111111111111111111111111111111111 C +b1111111111111111111111111111111111111111111111111111111111111111 D +b1111111111111111111111111111111111111111111111111111111111111111 E +b1111111111111111111111111111111111111111111111111111111111111111 F +b1111111111111111111111111111111111111111111111111111111111111111 G +b1111111111111111111111111111111111111111111111111111111111111111 H +b1111111111111111111111111111111111111111111111111111111111111111 I +b1111111111111111111111111111111111111111111111111111111111111111 J +sHdlSome\x20(1) M +sHdlSome\x20(1) P +sHdlSome\x20(1) S +sHdlSome\x20(1) V +sHdlSome\x20(1) Y +sHdlSome\x20(1) \ +sHdlSome\x20(1) _ +sHdlSome\x20(1) b +sHdlSome\x20(1) e +sHdlSome\x20(1) h +sHdlSome\x20(1) k +sHdlSome\x20(1) n +sHdlSome\x20(1) q +sHdlSome\x20(1) t +sHdlSome\x20(1) w +sHdlSome\x20(1) z +1} +1~ +1!" +1"" +1#" +1$" +1%" +1&" +1'" +1(" +1)" +1*" +1+" +1," +1-" +1." +1/" +10" +11" +12" +13" +14" +15" +16" +17" +18" +19" +1:" +1;" +1<" +1=" +1>" +1?" +1@" +1A" +1B" +1C" +1D" +1E" +1F" +1G" +1H" +1I" +1J" +1K" +1L" +1M" +1N" +1O" +1P" +1Q" +1R" +1S" +1T" +1U" +1V" +1W" +1X" +1Y" +1Z" +1[" +1\" +1]" +1^" +1_" +1`" +1a" +1b" +1c" +1d" +1e" +1f" +1g" +1h" +1i" +1j" +1k" +1l" +1m" +1n" +1o" +1p" +1q" +1r" +1s" +1t" +1u" +1v" +1w" +1x" +1y" +1z" +1{" +1|" +1}" +1~" +1!# +1"# +1## +1$# +1%# +1&# +1'# +1(# +1)# +1*# +1+# +1,# +1-# +1.# +1/# +10# +11# +12# +13# +14# +15# +16# +17# +18# +19# +1:# +1;# +1<# +1=# +1># +1?# +1@# +1A# +1B# +1C# +1D# +1E# +1F# +1G# +1H# +1I# +1J# +1K# +1L# +1M# +1N# +1O# +1P# +1Q# +1R# +1S# +1T# +1U# +1V# +1W# +1X# +1Y# +1Z# +1[# +1\# +1]# +1^# +1_# +1`# +1a# +1b# +1c# +1d# +1e# +1f# +1g# +1h# +1i# +1j# +1k# +1l# +1m# +1n# +1o# +1p# +1q# +1r# +1s# +1t# +1u# +1v# +1w# +1x# +1y# +1z# +1{# +1|# +1}# +1~# +1!$ +1"$ +1#$ +1$$ +1%$ +1&$ +1'$ +1($ +1)$ +1*$ +1+$ +1,$ +1-$ +1.$ +1/$ +10$ +11$ +12$ +13$ +14$ +15$ +16$ +17$ +18$ +19$ +1:$ +1;$ +1<$ +1=$ +1>$ +1?$ +1@$ +1A$ +1B$ +1C$ +1D$ +1E$ +1F$ +1G$ +1H$ +1I$ +1J$ +1K$ +1L$ +1M$ +1N$ +1O$ +1P$ +1Q$ +1R$ +1S$ +1T$ +1U$ +1V$ +1W$ +1X$ +1Y$ +1Z$ +1[$ +1\$ +1]$ +1^$ +1_$ +1`$ +1a$ +1b$ +b1111111111111111111111111111111111111111111111111111111111111111 9* +b11111111 :* +#500000 +1! +b0 ) +b0 * +b0 + +b0 , +b0 - +b0 . +b0 / +b0 0 +b0 1 +b0 2 +b0 3 +b0 4 +b0 5 +b0 6 +b0 7 +b0 8 +b0 ; +b0 < +b0 = +b0 > +b0 ? +b0 @ +b0 A +b0 B +b0 C +b0 D +b0 E +b0 F +b0 G +b0 H +b0 I +b0 J +sHdlNone\x20(0) M +0} +sWeaklyNotTaken\x20(1) i$ +b0 9* +b0 :* +#1000000 +0! +0" +#1500000 +1! +#2000000 +0! +#2500000 +1! +sHdlNone\x20(0) P +0~ +sWeaklyNotTaken\x20(1) j$ +#3000000 +0! +#3500000 +1! +sHdlNone\x20(0) S +0!" +sWeaklyNotTaken\x20(1) k$ +#4000000 +0! +#4500000 +1! +sHdlNone\x20(0) V +0"" +sWeaklyNotTaken\x20(1) l$ +#5000000 +0! +#5500000 +1! +sHdlNone\x20(0) Y +0#" +sWeaklyNotTaken\x20(1) m$ +#6000000 +0! +#6500000 +1! +sHdlNone\x20(0) \ +0$" +sWeaklyNotTaken\x20(1) n$ +#7000000 +0! +#7500000 +1! +sHdlNone\x20(0) _ +0%" +sWeaklyNotTaken\x20(1) o$ +#8000000 +0! +#8500000 +1! +sHdlNone\x20(0) b +0&" +sWeaklyNotTaken\x20(1) p$ +#9000000 +0! +#9500000 +1! +sHdlNone\x20(0) e +0'" +sWeaklyNotTaken\x20(1) q$ +#10000000 +0! +#10500000 +1! +sHdlNone\x20(0) h +0(" +sWeaklyNotTaken\x20(1) r$ +#11000000 +0! +#11500000 +1! +sHdlNone\x20(0) k +0)" +sWeaklyNotTaken\x20(1) s$ +#12000000 +0! +#12500000 +1! +sHdlNone\x20(0) n +0*" +sWeaklyNotTaken\x20(1) t$ +#13000000 +0! +#13500000 +1! +sHdlNone\x20(0) q +0+" +sWeaklyNotTaken\x20(1) u$ +#14000000 +0! +#14500000 +1! +sHdlNone\x20(0) t +0," +sWeaklyNotTaken\x20(1) v$ +#15000000 +0! +#15500000 +1! +sHdlNone\x20(0) w +0-" +sWeaklyNotTaken\x20(1) w$ +#16000000 +0! +#16500000 +1! +sHdlNone\x20(0) z +0." +sWeaklyNotTaken\x20(1) x$ +#17000000 +0! +#17500000 +1! +0/" +sWeaklyNotTaken\x20(1) y$ +#18000000 +0! +#18500000 +1! +00" +sWeaklyNotTaken\x20(1) z$ +#19000000 +0! +#19500000 +1! +01" +sWeaklyNotTaken\x20(1) {$ +#20000000 +0! +#20500000 +1! +02" +sWeaklyNotTaken\x20(1) |$ +#21000000 +0! +#21500000 +1! +03" +sWeaklyNotTaken\x20(1) }$ +#22000000 +0! +#22500000 +1! +04" +sWeaklyNotTaken\x20(1) ~$ +#23000000 +0! +#23500000 +1! +05" +sWeaklyNotTaken\x20(1) !% +#24000000 +0! +#24500000 +1! +06" +sWeaklyNotTaken\x20(1) "% +#25000000 +0! +#25500000 +1! +07" +sWeaklyNotTaken\x20(1) #% +#26000000 +0! +#26500000 +1! +08" +sWeaklyNotTaken\x20(1) $% +#27000000 +0! +#27500000 +1! +09" +sWeaklyNotTaken\x20(1) %% +#28000000 +0! +#28500000 +1! +0:" +sWeaklyNotTaken\x20(1) &% +#29000000 +0! +#29500000 +1! +0;" +sWeaklyNotTaken\x20(1) '% +#30000000 +0! +#30500000 +1! +0<" +sWeaklyNotTaken\x20(1) (% +#31000000 +0! +#31500000 +1! +0=" +sWeaklyNotTaken\x20(1) )% +#32000000 +0! +#32500000 +1! +0>" +sWeaklyNotTaken\x20(1) *% +#33000000 +0! +#33500000 +1! +0?" +sWeaklyNotTaken\x20(1) +% +#34000000 +0! +#34500000 +1! +0@" +sWeaklyNotTaken\x20(1) ,% +#35000000 +0! +#35500000 +1! +0A" +sWeaklyNotTaken\x20(1) -% +#36000000 +0! +#36500000 +1! +0B" +sWeaklyNotTaken\x20(1) .% +#37000000 +0! +#37500000 +1! +0C" +sWeaklyNotTaken\x20(1) /% +#38000000 +0! +#38500000 +1! +0D" +sWeaklyNotTaken\x20(1) 0% +#39000000 +0! +#39500000 +1! +0E" +sWeaklyNotTaken\x20(1) 1% +#40000000 +0! +#40500000 +1! +0F" +sWeaklyNotTaken\x20(1) 2% +#41000000 +0! +#41500000 +1! +0G" +sWeaklyNotTaken\x20(1) 3% +#42000000 +0! +#42500000 +1! +0H" +sWeaklyNotTaken\x20(1) 4% +#43000000 +0! +#43500000 +1! +0I" +sWeaklyNotTaken\x20(1) 5% +#44000000 +0! +#44500000 +1! +0J" +sWeaklyNotTaken\x20(1) 6% +#45000000 +0! +#45500000 +1! +0K" +sWeaklyNotTaken\x20(1) 7% +#46000000 +0! +#46500000 +1! +0L" +sWeaklyNotTaken\x20(1) 8% +#47000000 +0! +#47500000 +1! +0M" +sWeaklyNotTaken\x20(1) 9% +#48000000 +0! +#48500000 +1! +0N" +sWeaklyNotTaken\x20(1) :% +#49000000 +0! +#49500000 +1! +0O" +sWeaklyNotTaken\x20(1) ;% +#50000000 +0! +#50500000 +1! +0P" +sWeaklyNotTaken\x20(1) <% +#51000000 +0! +#51500000 +1! +0Q" +sWeaklyNotTaken\x20(1) =% +#52000000 +0! +#52500000 +1! +0R" +sWeaklyNotTaken\x20(1) >% +#53000000 +0! +#53500000 +1! +0S" +sWeaklyNotTaken\x20(1) ?% +#54000000 +0! +#54500000 +1! +0T" +sWeaklyNotTaken\x20(1) @% +#55000000 +0! +#55500000 +1! +0U" +sWeaklyNotTaken\x20(1) A% +#56000000 +0! +#56500000 +1! +0V" +sWeaklyNotTaken\x20(1) B% +#57000000 +0! +#57500000 +1! +0W" +sWeaklyNotTaken\x20(1) C% +#58000000 +0! +#58500000 +1! +0X" +sWeaklyNotTaken\x20(1) D% +#59000000 +0! +#59500000 +1! +0Y" +sWeaklyNotTaken\x20(1) E% +#60000000 +0! +#60500000 +1! +0Z" +sWeaklyNotTaken\x20(1) F% +#61000000 +0! +#61500000 +1! +0[" +sWeaklyNotTaken\x20(1) G% +#62000000 +0! +#62500000 +1! +0\" +sWeaklyNotTaken\x20(1) H% +#63000000 +0! +#63500000 +1! +0]" +sWeaklyNotTaken\x20(1) I% +#64000000 +0! +#64500000 +1! +0^" +sWeaklyNotTaken\x20(1) J% +#65000000 +0! +#65500000 +1! +0_" +sWeaklyNotTaken\x20(1) K% +#66000000 +0! +#66500000 +1! +0`" +sWeaklyNotTaken\x20(1) L% +#67000000 +0! +#67500000 +1! +0a" +sWeaklyNotTaken\x20(1) M% +#68000000 +0! +#68500000 +1! +0b" +sWeaklyNotTaken\x20(1) N% +#69000000 +0! +#69500000 +1! +0c" +sWeaklyNotTaken\x20(1) O% +#70000000 +0! +#70500000 +1! +0d" +sWeaklyNotTaken\x20(1) P% +#71000000 +0! +#71500000 +1! +0e" +sWeaklyNotTaken\x20(1) Q% +#72000000 +0! +#72500000 +1! +0f" +sWeaklyNotTaken\x20(1) R% +#73000000 +0! +#73500000 +1! +0g" +sWeaklyNotTaken\x20(1) S% +#74000000 +0! +#74500000 +1! +0h" +sWeaklyNotTaken\x20(1) T% +#75000000 +0! +#75500000 +1! +0i" +sWeaklyNotTaken\x20(1) U% +#76000000 +0! +#76500000 +1! +0j" +sWeaklyNotTaken\x20(1) V% +#77000000 +0! +#77500000 +1! +0k" +sWeaklyNotTaken\x20(1) W% +#78000000 +0! +#78500000 +1! +0l" +sWeaklyNotTaken\x20(1) X% +#79000000 +0! +#79500000 +1! +0m" +sWeaklyNotTaken\x20(1) Y% +#80000000 +0! +#80500000 +1! +0n" +sWeaklyNotTaken\x20(1) Z% +#81000000 +0! +#81500000 +1! +0o" +sWeaklyNotTaken\x20(1) [% +#82000000 +0! +#82500000 +1! +0p" +sWeaklyNotTaken\x20(1) \% +#83000000 +0! +#83500000 +1! +0q" +sWeaklyNotTaken\x20(1) ]% +#84000000 +0! +#84500000 +1! +0r" +sWeaklyNotTaken\x20(1) ^% +#85000000 +0! +#85500000 +1! +0s" +sWeaklyNotTaken\x20(1) _% +#86000000 +0! +#86500000 +1! +0t" +sWeaklyNotTaken\x20(1) `% +#87000000 +0! +#87500000 +1! +0u" +sWeaklyNotTaken\x20(1) a% +#88000000 +0! +#88500000 +1! +0v" +sWeaklyNotTaken\x20(1) b% +#89000000 +0! +#89500000 +1! +0w" +sWeaklyNotTaken\x20(1) c% +#90000000 +0! +#90500000 +1! +0x" +sWeaklyNotTaken\x20(1) d% +#91000000 +0! +#91500000 +1! +0y" +sWeaklyNotTaken\x20(1) e% +#92000000 +0! +#92500000 +1! +0z" +sWeaklyNotTaken\x20(1) f% +#93000000 +0! +#93500000 +1! +0{" +sWeaklyNotTaken\x20(1) g% +#94000000 +0! +#94500000 +1! +0|" +sWeaklyNotTaken\x20(1) h% +#95000000 +0! +#95500000 +1! +0}" +sWeaklyNotTaken\x20(1) i% +#96000000 +0! +#96500000 +1! +0~" +sWeaklyNotTaken\x20(1) j% +#97000000 +0! +#97500000 +1! +0!# +sWeaklyNotTaken\x20(1) k% +#98000000 +0! +#98500000 +1! +0"# +sWeaklyNotTaken\x20(1) l% +#99000000 +0! +#99500000 +1! +0## +sWeaklyNotTaken\x20(1) m% +#100000000 +0! +#100500000 +1! +0$# +sWeaklyNotTaken\x20(1) n% +#101000000 +0! +#101500000 +1! +0%# +sWeaklyNotTaken\x20(1) o% +#102000000 +0! +#102500000 +1! +0&# +sWeaklyNotTaken\x20(1) p% +#103000000 +0! +#103500000 +1! +0'# +sWeaklyNotTaken\x20(1) q% +#104000000 +0! +#104500000 +1! +0(# +sWeaklyNotTaken\x20(1) r% +#105000000 +0! +#105500000 +1! +0)# +sWeaklyNotTaken\x20(1) s% +#106000000 +0! +#106500000 +1! +0*# +sWeaklyNotTaken\x20(1) t% +#107000000 +0! +#107500000 +1! +0+# +sWeaklyNotTaken\x20(1) u% +#108000000 +0! +#108500000 +1! +0,# +sWeaklyNotTaken\x20(1) v% +#109000000 +0! +#109500000 +1! +0-# +sWeaklyNotTaken\x20(1) w% +#110000000 +0! +#110500000 +1! +0.# +sWeaklyNotTaken\x20(1) x% +#111000000 +0! +#111500000 +1! +0/# +sWeaklyNotTaken\x20(1) y% +#112000000 +0! +#112500000 +1! +00# +sWeaklyNotTaken\x20(1) z% +#113000000 +0! +#113500000 +1! +01# +sWeaklyNotTaken\x20(1) {% +#114000000 +0! +#114500000 +1! +02# +sWeaklyNotTaken\x20(1) |% +#115000000 +0! +#115500000 +1! +03# +sWeaklyNotTaken\x20(1) }% +#116000000 +0! +#116500000 +1! +04# +sWeaklyNotTaken\x20(1) ~% +#117000000 +0! +#117500000 +1! +05# +sWeaklyNotTaken\x20(1) !& +#118000000 +0! +#118500000 +1! +06# +sWeaklyNotTaken\x20(1) "& +#119000000 +0! +#119500000 +1! +07# +sWeaklyNotTaken\x20(1) #& +#120000000 +0! +#120500000 +1! +08# +sWeaklyNotTaken\x20(1) $& +#121000000 +0! +#121500000 +1! +09# +sWeaklyNotTaken\x20(1) %& +#122000000 +0! +#122500000 +1! +0:# +sWeaklyNotTaken\x20(1) && +#123000000 +0! +#123500000 +1! +0;# +sWeaklyNotTaken\x20(1) '& +#124000000 +0! +#124500000 +1! +0<# +sWeaklyNotTaken\x20(1) (& +#125000000 +0! +#125500000 +1! +0=# +sWeaklyNotTaken\x20(1) )& +#126000000 +0! +#126500000 +1! +0># +sWeaklyNotTaken\x20(1) *& +#127000000 +0! +#127500000 +1! +0?# +sWeaklyNotTaken\x20(1) +& +#128000000 +0! +#128500000 +1! +0@# +sWeaklyNotTaken\x20(1) ,& +#129000000 +0! +#129500000 +1! +0A# +sWeaklyNotTaken\x20(1) -& +#130000000 +0! +#130500000 +1! +0B# +sWeaklyNotTaken\x20(1) .& +#131000000 +0! +#131500000 +1! +0C# +sWeaklyNotTaken\x20(1) /& +#132000000 +0! +#132500000 +1! +0D# +sWeaklyNotTaken\x20(1) 0& +#133000000 +0! +#133500000 +1! +0E# +sWeaklyNotTaken\x20(1) 1& +#134000000 +0! +#134500000 +1! +0F# +sWeaklyNotTaken\x20(1) 2& +#135000000 +0! +#135500000 +1! +0G# +sWeaklyNotTaken\x20(1) 3& +#136000000 +0! +#136500000 +1! +0H# +sWeaklyNotTaken\x20(1) 4& +#137000000 +0! +#137500000 +1! +0I# +sWeaklyNotTaken\x20(1) 5& +#138000000 +0! +#138500000 +1! +0J# +sWeaklyNotTaken\x20(1) 6& +#139000000 +0! +#139500000 +1! +0K# +sWeaklyNotTaken\x20(1) 7& +#140000000 +0! +#140500000 +1! +0L# +sWeaklyNotTaken\x20(1) 8& +#141000000 +0! +#141500000 +1! +0M# +sWeaklyNotTaken\x20(1) 9& +#142000000 +0! +#142500000 +1! +0N# +sWeaklyNotTaken\x20(1) :& +#143000000 +0! +#143500000 +1! +0O# +sWeaklyNotTaken\x20(1) ;& +#144000000 +0! +#144500000 +1! +0P# +sWeaklyNotTaken\x20(1) <& +#145000000 +0! +#145500000 +1! +0Q# +sWeaklyNotTaken\x20(1) =& +#146000000 +0! +#146500000 +1! +0R# +sWeaklyNotTaken\x20(1) >& +#147000000 +0! +#147500000 +1! +0S# +sWeaklyNotTaken\x20(1) ?& +#148000000 +0! +#148500000 +1! +0T# +sWeaklyNotTaken\x20(1) @& +#149000000 +0! +#149500000 +1! +0U# +sWeaklyNotTaken\x20(1) A& +#150000000 +0! +#150500000 +1! +0V# +sWeaklyNotTaken\x20(1) B& +#151000000 +0! +#151500000 +1! +0W# +sWeaklyNotTaken\x20(1) C& +#152000000 +0! +#152500000 +1! +0X# +sWeaklyNotTaken\x20(1) D& +#153000000 +0! +#153500000 +1! +0Y# +sWeaklyNotTaken\x20(1) E& +#154000000 +0! +#154500000 +1! +0Z# +sWeaklyNotTaken\x20(1) F& +#155000000 +0! +#155500000 +1! +0[# +sWeaklyNotTaken\x20(1) G& +#156000000 +0! +#156500000 +1! +0\# +sWeaklyNotTaken\x20(1) H& +#157000000 +0! +#157500000 +1! +0]# +sWeaklyNotTaken\x20(1) I& +#158000000 +0! +#158500000 +1! +0^# +sWeaklyNotTaken\x20(1) J& +#159000000 +0! +#159500000 +1! +0_# +sWeaklyNotTaken\x20(1) K& +#160000000 +0! +#160500000 +1! +0`# +sWeaklyNotTaken\x20(1) L& +#161000000 +0! +#161500000 +1! +0a# +sWeaklyNotTaken\x20(1) M& +#162000000 +0! +#162500000 +1! +0b# +sWeaklyNotTaken\x20(1) N& +#163000000 +0! +#163500000 +1! +0c# +sWeaklyNotTaken\x20(1) O& +#164000000 +0! +#164500000 +1! +0d# +sWeaklyNotTaken\x20(1) P& +#165000000 +0! +#165500000 +1! +0e# +sWeaklyNotTaken\x20(1) Q& +#166000000 +0! +#166500000 +1! +0f# +sWeaklyNotTaken\x20(1) R& +#167000000 +0! +#167500000 +1! +0g# +sWeaklyNotTaken\x20(1) S& +#168000000 +0! +#168500000 +1! +0h# +sWeaklyNotTaken\x20(1) T& +#169000000 +0! +#169500000 +1! +0i# +sWeaklyNotTaken\x20(1) U& +#170000000 +0! +#170500000 +1! +0j# +sWeaklyNotTaken\x20(1) V& +#171000000 +0! +#171500000 +1! +0k# +sWeaklyNotTaken\x20(1) W& +#172000000 +0! +#172500000 +1! +0l# +sWeaklyNotTaken\x20(1) X& +#173000000 +0! +#173500000 +1! +0m# +sWeaklyNotTaken\x20(1) Y& +#174000000 +0! +#174500000 +1! +0n# +sWeaklyNotTaken\x20(1) Z& +#175000000 +0! +#175500000 +1! +0o# +sWeaklyNotTaken\x20(1) [& +#176000000 +0! +#176500000 +1! +0p# +sWeaklyNotTaken\x20(1) \& +#177000000 +0! +#177500000 +1! +0q# +sWeaklyNotTaken\x20(1) ]& +#178000000 +0! +#178500000 +1! +0r# +sWeaklyNotTaken\x20(1) ^& +#179000000 +0! +#179500000 +1! +0s# +sWeaklyNotTaken\x20(1) _& +#180000000 +0! +#180500000 +1! +0t# +sWeaklyNotTaken\x20(1) `& +#181000000 +0! +#181500000 +1! +0u# +sWeaklyNotTaken\x20(1) a& +#182000000 +0! +#182500000 +1! +0v# +sWeaklyNotTaken\x20(1) b& +#183000000 +0! +#183500000 +1! +0w# +sWeaklyNotTaken\x20(1) c& +#184000000 +0! +#184500000 +1! +0x# +sWeaklyNotTaken\x20(1) d& +#185000000 +0! +#185500000 +1! +0y# +sWeaklyNotTaken\x20(1) e& +#186000000 +0! +#186500000 +1! +0z# +sWeaklyNotTaken\x20(1) f& +#187000000 +0! +#187500000 +1! +0{# +sWeaklyNotTaken\x20(1) g& +#188000000 +0! +#188500000 +1! +0|# +sWeaklyNotTaken\x20(1) h& +#189000000 +0! +#189500000 +1! +0}# +sWeaklyNotTaken\x20(1) i& +#190000000 +0! +#190500000 +1! +0~# +sWeaklyNotTaken\x20(1) j& +#191000000 +0! +#191500000 +1! +0!$ +sWeaklyNotTaken\x20(1) k& +#192000000 +0! +#192500000 +1! +0"$ +sWeaklyNotTaken\x20(1) l& +#193000000 +0! +#193500000 +1! +0#$ +sWeaklyNotTaken\x20(1) m& +#194000000 +0! +#194500000 +1! +0$$ +sWeaklyNotTaken\x20(1) n& +#195000000 +0! +#195500000 +1! +0%$ +sWeaklyNotTaken\x20(1) o& +#196000000 +0! +#196500000 +1! +0&$ +sWeaklyNotTaken\x20(1) p& +#197000000 +0! +#197500000 +1! +0'$ +sWeaklyNotTaken\x20(1) q& +#198000000 +0! +#198500000 +1! +0($ +sWeaklyNotTaken\x20(1) r& +#199000000 +0! +#199500000 +1! +0)$ +sWeaklyNotTaken\x20(1) s& +#200000000 +0! +#200500000 +1! +0*$ +sWeaklyNotTaken\x20(1) t& +#201000000 +0! +#201500000 +1! +0+$ +sWeaklyNotTaken\x20(1) u& +#202000000 +0! +#202500000 +1! +0,$ +sWeaklyNotTaken\x20(1) v& +#203000000 +0! +#203500000 +1! +0-$ +sWeaklyNotTaken\x20(1) w& +#204000000 +0! +#204500000 +1! +0.$ +sWeaklyNotTaken\x20(1) x& +#205000000 +0! +#205500000 +1! +0/$ +sWeaklyNotTaken\x20(1) y& +#206000000 +0! +#206500000 +1! +00$ +sWeaklyNotTaken\x20(1) z& +#207000000 +0! +#207500000 +1! +01$ +sWeaklyNotTaken\x20(1) {& +#208000000 +0! +#208500000 +1! +02$ +sWeaklyNotTaken\x20(1) |& +#209000000 +0! +#209500000 +1! +03$ +sWeaklyNotTaken\x20(1) }& +#210000000 +0! +#210500000 +1! +04$ +sWeaklyNotTaken\x20(1) ~& +#211000000 +0! +#211500000 +1! +05$ +sWeaklyNotTaken\x20(1) !' +#212000000 +0! +#212500000 +1! +06$ +sWeaklyNotTaken\x20(1) "' +#213000000 +0! +#213500000 +1! +07$ +sWeaklyNotTaken\x20(1) #' +#214000000 +0! +#214500000 +1! +08$ +sWeaklyNotTaken\x20(1) $' +#215000000 +0! +#215500000 +1! +09$ +sWeaklyNotTaken\x20(1) %' +#216000000 +0! +#216500000 +1! +0:$ +sWeaklyNotTaken\x20(1) &' +#217000000 +0! +#217500000 +1! +0;$ +sWeaklyNotTaken\x20(1) '' +#218000000 +0! +#218500000 +1! +0<$ +sWeaklyNotTaken\x20(1) (' +#219000000 +0! +#219500000 +1! +0=$ +sWeaklyNotTaken\x20(1) )' +#220000000 +0! +#220500000 +1! +0>$ +sWeaklyNotTaken\x20(1) *' +#221000000 +0! +#221500000 +1! +0?$ +sWeaklyNotTaken\x20(1) +' +#222000000 +0! +#222500000 +1! +0@$ +sWeaklyNotTaken\x20(1) ,' +#223000000 +0! +#223500000 +1! +0A$ +sWeaklyNotTaken\x20(1) -' +#224000000 +0! +#224500000 +1! +0B$ +sWeaklyNotTaken\x20(1) .' +#225000000 +0! +#225500000 +1! +0C$ +sWeaklyNotTaken\x20(1) /' +#226000000 +0! +#226500000 +1! +0D$ +sWeaklyNotTaken\x20(1) 0' +#227000000 +0! +#227500000 +1! +0E$ +sWeaklyNotTaken\x20(1) 1' +#228000000 +0! +#228500000 +1! +0F$ +sWeaklyNotTaken\x20(1) 2' +#229000000 +0! +#229500000 +1! +0G$ +sWeaklyNotTaken\x20(1) 3' +#230000000 +0! +#230500000 +1! +0H$ +sWeaklyNotTaken\x20(1) 4' +#231000000 +0! +#231500000 +1! +0I$ +sWeaklyNotTaken\x20(1) 5' +#232000000 +0! +#232500000 +1! +0J$ +sWeaklyNotTaken\x20(1) 6' +#233000000 +0! +#233500000 +1! +0K$ +sWeaklyNotTaken\x20(1) 7' +#234000000 +0! +#234500000 +1! +0L$ +sWeaklyNotTaken\x20(1) 8' +#235000000 +0! +#235500000 +1! +0M$ +sWeaklyNotTaken\x20(1) 9' +#236000000 +0! +#236500000 +1! +0N$ +sWeaklyNotTaken\x20(1) :' +#237000000 +0! +#237500000 +1! +0O$ +sWeaklyNotTaken\x20(1) ;' +#238000000 +0! +#238500000 +1! +0P$ +sWeaklyNotTaken\x20(1) <' +#239000000 +0! +#239500000 +1! +0Q$ +sWeaklyNotTaken\x20(1) =' +#240000000 +0! +#240500000 +1! +0R$ +sWeaklyNotTaken\x20(1) >' +#241000000 +0! +#241500000 +1! +0S$ +sWeaklyNotTaken\x20(1) ?' +#242000000 +0! +#242500000 +1! +0T$ +sWeaklyNotTaken\x20(1) @' +#243000000 +0! +#243500000 +1! +0U$ +sWeaklyNotTaken\x20(1) A' +#244000000 +0! +#244500000 +1! +0V$ +sWeaklyNotTaken\x20(1) B' +#245000000 +0! +#245500000 +1! +0W$ +sWeaklyNotTaken\x20(1) C' +#246000000 +0! +#246500000 +1! +0X$ +sWeaklyNotTaken\x20(1) D' +#247000000 +0! +#247500000 +1! +0Y$ +sWeaklyNotTaken\x20(1) E' +#248000000 +0! +#248500000 +1! +0Z$ +sWeaklyNotTaken\x20(1) F' +#249000000 +0! +#249500000 +1! +0[$ +sWeaklyNotTaken\x20(1) G' +#250000000 +0! +#250500000 +1! +0\$ +sWeaklyNotTaken\x20(1) H' +#251000000 +0! +#251500000 +1! +0]$ +sWeaklyNotTaken\x20(1) I' +#252000000 +0! +#252500000 +1! +0^$ +sWeaklyNotTaken\x20(1) J' +#253000000 +0! +#253500000 +1! +0_$ +sWeaklyNotTaken\x20(1) K' +#254000000 +0! +#254500000 +1! +0`$ +sWeaklyNotTaken\x20(1) L' +#255000000 +0! +#255500000 +1! +0a$ +sWeaklyNotTaken\x20(1) M' +#256000000 +0! +#256500000 +1! +sHdlSome\x20(1) # +0b$ +sWeaklyNotTaken\x20(1) N' +#257000000 +0! +#257500000 +1! +b1 5* +b1000 9* +b1 :* +b1000 $ +b1 % +#258000000 +0! +#258500000 +1! +b1 Q' +b10 5* +b10000 9* +b10 :* +b10000 $ +b10 % +#259000000 +0! +#259500000 +1! +b10 R' +b11 5* +b11000 9* +b11 :* +b11000 $ +b11 % +#260000000 +0! +#260500000 +1! +b11 S' +b100 5* +b100000 9* +b100 :* +b100000 $ +b100 % +#261000000 +0! +#261500000 +1! +b100 T' +b101 5* +b101000 9* +b101 :* +b101000 $ +b101 % +#262000000 +0! +#262500000 +1! +b101 U' +b110 5* +b110000 9* +b110 :* +b110000 $ +b110 % +#263000000 +0! +#263500000 +1! +b110 V' +b111 5* +b111000 9* +b111 :* +b111000 $ +b111 % +#264000000 +0! +#264500000 +1! +b111 W' +b1000 5* +b1000000 9* +b1000 :* +b1000000 $ +b1000 % +#265000000 +0! +#265500000 +1! +b1000 X' +b1001 5* +b1001000 9* +b1001 :* +b1001000 $ +b1001 % +#266000000 +0! +#266500000 +1! +b1001 Y' +b1010 5* +b1010000 9* +b1010 :* +b1010000 $ +b1010 % +#267000000 +0! +#267500000 +1! +b1010 Z' +b1011 5* +b1011000 9* +b1011 :* +b1011000 $ +b1011 % +#268000000 +0! +#268500000 +1! +b1011 [' +b1100 5* +b1100000 9* +b1100 :* +b1100000 $ +b1100 % +#269000000 +0! +#269500000 +1! +b1100 \' +b1101 5* +b1101000 9* +b1101 :* +b1101000 $ +b1101 % +#270000000 +0! +#270500000 +1! +b1101 ]' +b1110 5* +b1110000 9* +b1110 :* +b1110000 $ +b1110 % +#271000000 +0! +#271500000 +1! +b1110 ^' +b1111 5* +b1111000 9* +b1111 :* +b1111000 $ +b1111 % +#272000000 +0! +#272500000 +1! +b1111 _' +b10000 5* +b10000000 9* +b10000 :* +b10000000 $ +b10000 % +#273000000 +0! +#273500000 +1! +b10000 `' +b10001 5* +b10001000 9* +b10001 :* +b10001000 $ +b10001 % +#274000000 +0! +#274500000 +1! +b10001 a' +b10010 5* +b10010000 9* +b10010 :* +b10010000 $ +b10010 % +#275000000 +0! +#275500000 +1! +b10010 b' +b10011 5* +b10011000 9* +b10011 :* +b10011000 $ +b10011 % +#276000000 +0! +#276500000 +1! +b10011 c' +b10100 5* +b10100000 9* +b10100 :* +b10100000 $ +b10100 % +#277000000 +0! +#277500000 +1! +b10100 d' +b10101 5* +b10101000 9* +b10101 :* +b10101000 $ +b10101 % +#278000000 +0! +#278500000 +1! +b10101 e' +b10110 5* +b10110000 9* +b10110 :* +b10110000 $ +b10110 % +#279000000 +0! +#279500000 +1! +b10110 f' +b10111 5* +b10111000 9* +b10111 :* +b10111000 $ +b10111 % +#280000000 +0! +#280500000 +1! +b10111 g' +b11000 5* +b11000000 9* +b11000 :* +b11000000 $ +b11000 % +#281000000 +0! +#281500000 +1! +b11000 h' +b11001 5* +b11001000 9* +b11001 :* +b11001000 $ +b11001 % +#282000000 +0! +#282500000 +1! +b11001 i' +b11010 5* +b11010000 9* +b11010 :* +b11010000 $ +b11010 % +#283000000 +0! +#283500000 +1! +b11010 j' +b11011 5* +b11011000 9* +b11011 :* +b11011000 $ +b11011 % +#284000000 +0! +#284500000 +1! +b11011 k' +b11100 5* +b11100000 9* +b11100 :* +b11100000 $ +b11100 % +#285000000 +0! +#285500000 +1! +b11100 l' +b11101 5* +b11101000 9* +b11101 :* +b11101000 $ +b11101 % +#286000000 +0! +#286500000 +1! +b11101 m' +b11110 5* +b11110000 9* +b11110 :* +b11110000 $ +b11110 % +#287000000 +0! +#287500000 +1! +b11110 n' +b11111 5* +b11111000 9* +b11111 :* +b11111000 $ +b11111 % +#288000000 +0! +#288500000 +1! +b11111 o' +b100000 5* +b100000000 9* +b100000 :* +b100000000 $ +b100000 % +#289000000 +0! +#289500000 +1! +b100000 p' +b100001 5* +b100001000 9* +b100001 :* +b100001000 $ +b100001 % +#290000000 +0! +#290500000 +1! +b100001 q' +b100010 5* +b100010000 9* +b100010 :* +b100010000 $ +b100010 % +#291000000 +0! +#291500000 +1! +b100010 r' +b100011 5* +b100011000 9* +b100011 :* +b100011000 $ +b100011 % +#292000000 +0! +#292500000 +1! +b100011 s' +b100100 5* +b100100000 9* +b100100 :* +b100100000 $ +b100100 % +#293000000 +0! +#293500000 +1! +b100100 t' +b100101 5* +b100101000 9* +b100101 :* +b100101000 $ +b100101 % +#294000000 +0! +#294500000 +1! +b100101 u' +b100110 5* +b100110000 9* +b100110 :* +b100110000 $ +b100110 % +#295000000 +0! +#295500000 +1! +b100110 v' +b100111 5* +b100111000 9* +b100111 :* +b100111000 $ +b100111 % +#296000000 +0! +#296500000 +1! +b100111 w' +b101000 5* +b101000000 9* +b101000 :* +b101000000 $ +b101000 % +#297000000 +0! +#297500000 +1! +b101000 x' +b101001 5* +b101001000 9* +b101001 :* +b101001000 $ +b101001 % +#298000000 +0! +#298500000 +1! +b101001 y' +b101010 5* +b101010000 9* +b101010 :* +b101010000 $ +b101010 % +#299000000 +0! +#299500000 +1! +b101010 z' +b101011 5* +b101011000 9* +b101011 :* +b101011000 $ +b101011 % +#300000000 diff --git a/crates/cpu/tests/expected/reg_alloc.vcd b/crates/cpu/tests/expected/reg_alloc.vcd index f69c9a7..aad4689 100644 --- a/crates/cpu/tests/expected/reg_alloc.vcd +++ b/crates/cpu/tests/expected/reg_alloc.vcd @@ -24027,11 +24027,13 @@ b0 Nd 1n" 1s" 1x" +b1 z" 1!# 1(# 1-# 12# 17# +b1 9# 1># 1E# 1J# @@ -24039,6 +24041,7 @@ b0 Nd 1T# 1[# 1b# +b1 d# 1i# 1p# 1u# @@ -24046,81 +24049,16 @@ b0 Nd 1!$ 1($ 1/$ +b1 1$ 16$ 1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1`D -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1!\ -1b\ -b1 z" -b1 9# -b1 d# -b1 1$ sHdlSome\x20(1) Q$ b1001000110100010101100111100000010010001101000101011001111000 S$ 1Y$ sHdlSome\x20(1) \$ b1001000110100010101100111100000010010001101000101011001111000 ^$ 1d$ +1P& sHdlSome\x20(1) b& b1001000110100010101100111100000010010001101000101011001111000 d& 1j& @@ -24143,8 +24081,14 @@ b1 @( b1 G( b1 P( b1 S( +1_( b1 a( +1f( +1m( +1t( +1{( b1 }( +1$) b1 0) b1 <) b1 H) @@ -24170,8 +24114,14 @@ b1 O+ b1 V+ b1 ^+ b1 e+ +1v, b1 x, +1}, +1&- +1-- +14- b1 6- +1;- b1 G- b1 S- b1 _- @@ -24203,6 +24153,7 @@ b1001000110100010101100111100000010010001101000101011001111000 00 sHdlSome\x20(1) 90 b1001000110100010101100111100000010010001101000101011001111000 ;0 1A0 +1H0 sHdlSome\x20(1) J0 b1001000110100010101100111100000010010001101000101011001111000 L0 1R0 @@ -24215,6 +24166,7 @@ b1 !1 sHdlSome\x20(1) -1 b1001000110100010101100111100000010010001101000101011001111000 01 161 +1:1 sHdlSome\x20(1) <1 b1001000110100010101100111100000010010001101000101011001111000 >1 1D1 @@ -24242,12 +24194,30 @@ b1000000000000 N2 sHdlSome\x20(1) k2 b1001000110100010101100111100000010010001101000101011001111000 n2 1t2 +1y2 +1}2 +1#3 1&3 +1'3 +1,3 +113 +153 +193 1<3 +1=3 +1B3 +1G3 +1S3 +1_3 1j3 +1k3 b1001000110100010101100111100000010010001101000101011001111000 l3 1r3 +1"4 +1.4 +1:4 1E4 +1F4 b1001000110100010101100111100000010010001101000101011001111000 G4 1M4 sHdlSome\x20(1) Y4 @@ -24384,6 +24354,7 @@ b1001 8@ b1101000101011001111000 9@ sDupLow32\x20(1) ;@ b1000000000000 =@ +1Z@ sHdlSome\x20(1) \@ b1001000110100010101100111100000010010001101000101011001111000 ^@ 1d@ @@ -24437,6 +24408,7 @@ b1001000110100010101100111100000010010001101000101011001111000 OC 1\C 1cC 0dC +1fC sHdlSome\x20(1) hC b1001000110100010101100111100000010010001101000101011001111000 jC 1pC @@ -24449,7 +24421,9 @@ b1 ?D sHdlSome\x20(1) KD b1001000110100010101100111100000010010001101000101011001111000 ND 1TD +1XD b1 ^D +1`D 1rD 0sD 1tD @@ -24460,6 +24434,7 @@ b1 (E 1>E b1 @E b1 BE +1CE b1 IE b1 NE b1 ZE @@ -24479,6 +24454,7 @@ b1 9G b1 EG b1 QG b1 ]G +1gG sHdlSome\x20(1) iG b1001000110100010101100111100000010010001101000101011001111000 kG 1qG @@ -24491,6 +24467,7 @@ b1 @H sHdlSome\x20(1) LH b1001000110100010101100111100000010010001101000101011001111000 OH 1UH +1YH sHdlSome\x20(1) [H b1001000110100010101100111100000010010001101000101011001111000 ]H 1cH @@ -24518,12 +24495,30 @@ b1000000000100 mI sHdlSome\x20(1) ,J b1001000110100010101100111100000010010001101000101011001111000 /J 15J +1:J +1>J +1BJ 1EJ +1FJ +1KJ +1PJ +1TJ +1XJ 1[J +1\J +1aJ +1fJ +1rJ +1~J 1+K +1,K b1001000110100010101100111100000010010001101000101011001111000 -K 13K +1AK +1MK +1YK 1dK +1eK b1001000110100010101100111100000010010001101000101011001111000 fK 1lK sHdlSome\x20(1) xK @@ -24660,6 +24655,7 @@ b1001 WW b1101000101011001111000 XW sDupLow32\x20(1) ZW b1000000000100 \W +1yW sHdlSome\x20(1) {W b1001000110100010101100111100000010010001101000101011001111000 }W 1%X @@ -24713,6 +24709,7 @@ b1001000110100010101100111100000010010001101000101011001111000 nZ 1{Z 1$[ 0%[ +1'[ sHdlSome\x20(1) )[ b1001000110100010101100111100000010010001101000101011001111000 +[ 11[ @@ -24725,7 +24722,9 @@ b1 ^[ sHdlSome\x20(1) j[ b1001000110100010101100111100000010010001101000101011001111000 m[ 1s[ +1w[ b1 }[ +1!\ 13\ 04\ 15\ @@ -24736,6 +24735,7 @@ b1 G\ 1]\ b1 _\ b1 a\ +1b\ b1 h\ b1 m\ b1 y\ @@ -24962,11 +24962,13 @@ b1001000110100010101100111100000010010001101000101011001111000 ji 1n" 1s" 1x" +b10 z" 1!# 1(# 1-# 12# 17# +b10 9# 1># 1E# 1J# @@ -24974,6 +24976,7 @@ b1001000110100010101100111100000010010001101000101011001111000 ji 1T# 1[# 1b# +b10 d# 1i# 1p# 1u# @@ -24981,77 +24984,12 @@ b1001000110100010101100111100000010010001101000101011001111000 ji 1!$ 1($ 1/$ +b10 1$ 16$ 1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1aD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1"\ -1b\ -b10 z" -b10 9# -b10 d# -b10 1$ b1 R$ b1 ]$ +1P& b1 c& b1 n& b10 *' @@ -25070,8 +25008,14 @@ b10 @( b10 G( b10 P( b10 S( +1_( b10 a( +1f( +1m( +1t( +1{( b10 }( +1$) b10 0) b10 <) b10 H) @@ -25097,8 +25041,14 @@ b10 O+ b10 V+ b10 ^+ b10 e+ +1v, b10 x, +1}, +1&- +1-- +14- b10 6- +1;- b10 G- b10 S- b10 _- @@ -25126,12 +25076,14 @@ b10 u/ b10 |/ b1 /0 b1 :0 +1H0 b1 K0 b1 V0 b10 g0 b10 s0 b10 !1 b1 .1 +1:1 b1 =1 b1 H1 b10 Y1 @@ -25143,10 +25095,28 @@ b1 :2 b1 F2 b1000000001000 N2 b1 l2 +1y2 +1}2 +1#3 b1 %3 +1'3 +1,3 +113 +153 +193 b1 ;3 +1=3 +1B3 +1G3 +1S3 +1_3 b1 i3 +1k3 +1"4 +1.4 +1:4 b1 D4 +1F4 sHdlNone\x20(0) Y4 sAddSub\x20(0) [4 b0 `4 @@ -25254,6 +25224,7 @@ b1 )@ b1 5@ b1000000001000 =@ b1 Y@ +1Z@ b1 ]@ b1 h@ b10 y@ @@ -25269,13 +25240,16 @@ b1 E b10 @E b10 BE +1CE b10 IE b10 NE b10 ZE @@ -25303,12 +25278,14 @@ b10 9G b10 EG b10 QG b10 ]G +1gG b1 jG b1 uG b10 (H b10 4H b10 @H b1 MH +1YH b1 \H b1 gH b10 xH @@ -25320,10 +25297,28 @@ b1 YI b1 eI b1000000001100 mI b1 -J +1:J +1>J +1BJ b1 DJ +1FJ +1KJ +1PJ +1TJ +1XJ b1 ZJ +1\J +1aJ +1fJ +1rJ +1~J b1 *K +1,K +1AK +1MK +1YK b1 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 !L @@ -25431,6 +25426,7 @@ b1 HW b1 TW b1000000001100 \W b1 xW +1yW b1 |W b1 )X b10 :X @@ -25446,13 +25442,16 @@ b1 [Y b1 gY b1 sY b1000000001100 {Y +1'[ b1 *[ b1 5[ b10 F[ b10 R[ b10 ^[ b1 k[ +1w[ b10 }[ +1"\ 03\ 09\ b10 ;\ @@ -25461,6 +25460,7 @@ b10 G\ 0]\ b10 _\ b10 a\ +1b\ b10 h\ b10 m\ b10 y\ @@ -26534,14 +26534,18 @@ b1001000110100010101100111100000010010001101000101011001111000 ki 0/k 1! 1i" +b10 k" 1n" 1s" 1x" +b11 z" 1!# 1(# +b10 *# 1-# 12# 17# +b11 9# 1># 1E# 1J# @@ -26549,6 +26553,7 @@ b1001000110100010101100111100000010010001101000101011001111000 ki 1T# 1[# 1b# +b11 d# 1i# 1p# 1u# @@ -26557,81 +26562,14 @@ b1001000110100010101100111100000010010001101000101011001111000 ki 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1bD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1#\ -1b\ -b10 k" -b11 z" -b10 *# -b11 9# -b11 d# b11 8$ +1?$ b10 R$ b1001000110100010101100111100000010010001101000101011001111001 S$ b10 ]$ b0 ^$ 0d$ +1P& b10 c& b1001000110100010101100111100000010010001101000101011001111001 d& b10 n& @@ -26668,8 +26606,14 @@ b1010 H( b11 P( b11 S( b10 V( +1_( b11 a( +1f( +1m( +1t( +1{( b11 }( +1$) b11 0) b1001 1) b11 <) @@ -26719,7 +26663,13 @@ b1001 _+ b11 e+ b1001 f+ b10 w+ +1v, b11 x, +1}, +1&- +1-- +14- +1;- b11 =- b11 G- b1010 H- @@ -26774,6 +26724,7 @@ b1001000110100010101100111100000010010001101000101011001111001 00 b10 :0 b0 ;0 0A0 +1H0 b10 K0 b1001000110100010101100111100000010010001101000101011001111001 L0 b10 V0 @@ -26787,6 +26738,7 @@ b11 !1 b1001 "1 b10 .1 b1001000110100010101100111100000010010001101000101011001111001 01 +1:1 b10 =1 b1001000110100010101100111100000010010001101000101011001111001 >1 b10 H1 @@ -26822,16 +26774,34 @@ b1001000110100010101100111100000010010001101000101011001111000 O2 b10 l2 b1001000110100010101100111100000010010001101000101011001111001 n2 b10 w2 +1y2 0z2 +1}2 +1#3 b10 %3 +1'3 +1,3 b10 /3 +113 +153 +193 b10 ;3 +1=3 +1B3 1F3 +1G3 b1001000110100010101100111100000010010001101000101011001111000 H3 1N3 +1S3 +1_3 b10 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111001 l3 +1"4 +1.4 +1:4 b10 D4 +1F4 b0 G4 0M4 sHdlSome\x20(1) Y4 @@ -27073,6 +27043,7 @@ b1000000010000 =@ b1001000110100010101100111100000010010001101000101011001111000 >@ 1D@ b10 Y@ +1Z@ b10 ]@ b1001000110100010101100111100000010010001101000101011001111001 ^@ b10 h@ @@ -27134,6 +27105,7 @@ b1001000110100010101100111100000010010001101000101011001111000 CC b1001000110100010101100111100000010010001101000101011001111001 EC b1001000110100010101100111100000010010001101000101011001111001 OC 0TC +1fC b10 iC b1001000110100010101100111100000010010001101000101011001111001 jC b10 tC @@ -27147,7 +27119,9 @@ b11 ?D b1001 @D b10 LD b1001000110100010101100111100000010010001101000101011001111001 ND +1XD b11 ^D +1bD 1uD 0vD 1wD @@ -27159,6 +27133,7 @@ b11 (E 1>E b11 @E b11 BE +1CE b11 IE b11 NE b1001 OE @@ -27196,6 +27171,7 @@ b11 QG b1010 RG b11 ]G b1010 ^G +1gG b10 jG b1001000110100010101100111100000010010001101000101011001111001 kG b10 uG @@ -27210,6 +27186,7 @@ b1010 AH b10 MH b0 OH 0UH +1YH b10 \H b1001000110100010101100111100000010010001101000101011001111001 ]H b10 gH @@ -27257,22 +27234,40 @@ b10 -J b0 /J 05J b10 8J +1:J +1>J +1BJ b10 DJ +1FJ +1KJ b10 NJ +1PJ 0QJ +1TJ 1UJ +1XJ b10 ZJ +1\J +1aJ +1fJ b1 pJ +1rJ +1~J b10 *K +1,K b1001000110100010101100111100000010010001101000101011001111001 -K 1@K +1AK b1001000110100010101100111100000010010001101000101011001111000 BK 1HK b1 KK 1LK +1MK b1001000110100010101100111100000010010001101000101011001111000 NK 1TK +1YK b10 cK +1eK b0 fK 0lK sHdlSome\x20(1) xK @@ -27604,6 +27599,7 @@ b1001000110100010101100111100000010010001101000101011001111000 ]W b1001000110100010101100111100000010010001101000101011001111000 fW 1lW b10 xW +1yW b10 |W b1001000110100010101100111100000010010001101000101011001111001 }W b10 )X @@ -27686,6 +27682,7 @@ b1001000110100010101100111100000010010001101000101011001111000 HZ 1aZ b1001000110100010101100111100000010010001101000101011001111000 bZ b1001000110100010101100111100000010010001101000101011001111000 dZ +1'[ b10 *[ b1001000110100010101100111100000010010001101000101011001111001 +[ b10 5[ @@ -27700,7 +27697,9 @@ b1010 _[ b10 k[ b0 m[ 0s[ +1w[ b11 }[ +1#\ 16\ 07\ 18\ @@ -27712,6 +27711,7 @@ b11 G\ 1]\ b11 _\ b11 a\ +1b\ b11 h\ b11 m\ b1001 n\ @@ -27914,14 +27914,18 @@ b0 li 00k 1! 1i" +b11 k" 1n" 1s" 1x" +b100 z" 1!# 1(# +b11 *# 1-# 12# 17# +b100 9# 1># 1E# 1J# @@ -27929,6 +27933,7 @@ b0 li 1T# 1[# 1b# +b100 d# 1i# 1p# 1u# @@ -27937,79 +27942,12 @@ b0 li 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1cD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1$\ -1b\ -b11 k" -b100 z" -b11 *# -b100 9# -b100 d# b100 8$ +1?$ b11 R$ b1001000110100010101100111100000010010001101000101011001111010 S$ b11 ]$ +1P& b11 c& b1001000110100010101100111100000010010001101000101011001111010 d& b11 n& @@ -28044,8 +27982,14 @@ b1110 H( b100 P( b100 S( b11 V( +1_( b100 a( +1f( +1m( +1t( +1{( b100 }( +1$) b100 0) b1101 1) b100 <) @@ -28095,7 +28039,13 @@ b1101 _+ b100 e+ b1101 f+ b11 w+ +1v, b100 x, +1}, +1&- +1-- +14- +1;- b100 =- b100 G- b1110 H- @@ -28148,6 +28098,7 @@ b1110 }/ b11 /0 b1001000110100010101100111100000010010001101000101011001111010 00 b11 :0 +1H0 b11 K0 b1001000110100010101100111100000010010001101000101011001111010 L0 b11 V0 @@ -28159,6 +28110,7 @@ b100 !1 b1101 "1 b11 .1 b1001000110100010101100111100000010010001101000101011001111010 01 +1:1 b11 =1 b1001000110100010101100111100000010010001101000101011001111010 >1 b11 H1 @@ -28181,15 +28133,33 @@ b1001000110100010101100111100000010010001101000101011001111001 O2 b11 l2 b1001000110100010101100111100000010010001101000101011001111010 n2 b11 w2 +1y2 +1}2 +1#3 b11 %3 +1'3 +1,3 b11 /3 +113 +153 +193 b11 ;3 +1=3 +1B3 b10 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111001 H3 +1S3 +1_3 b11 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111010 l3 b10 ~3 +1"4 +1.4 +1:4 b11 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -28337,6 +28307,7 @@ b1001 6@ b1000000011000 =@ b1001000110100010101100111100000010010001101000101011001111001 >@ b11 Y@ +1Z@ b11 ]@ b1001000110100010101100111100000010010001101000101011001111010 ^@ b11 h@ @@ -28372,6 +28343,7 @@ b1001000110100010101100111100000010010001101000101011001111010 )C b1001000110100010101100111100000010010001101000101011001111001 CC b1001000110100010101100111100000010010001101000101011001111010 EC b1001000110100010101100111100000010010001101000101011001111010 OC +1fC b11 iC b1001000110100010101100111100000010010001101000101011001111010 jC b11 tC @@ -28383,7 +28355,9 @@ b100 ?D b1101 @D b11 LD b1001000110100010101100111100000010010001101000101011001111010 ND +1XD b100 ^D +1cD 0uD 0xD 0&E @@ -28391,6 +28365,7 @@ b100 (E 0>E b100 @E b100 BE +1CE b100 IE b100 NE b1101 OE @@ -28428,6 +28403,7 @@ b100 QG b1110 RG b100 ]G b1110 ^G +1gG b11 jG b1001000110100010101100111100000010010001101000101011001111010 kG b11 uG @@ -28438,6 +28414,7 @@ b1110 5H b100 @H b1110 AH b11 MH +1YH b11 \H b1001000110100010101100111100000010010001101000101011001111010 ]H b11 gH @@ -28459,16 +28436,34 @@ b0 nI 0tI b11 -J b11 8J +1:J +1>J +1BJ b11 DJ +1FJ +1KJ b11 NJ +1PJ +1TJ +1XJ b11 ZJ +1\J +1aJ b10 dJ +1fJ +1rJ +1~J b11 *K +1,K b1001000110100010101100111100000010010001101000101011001111010 -K b10 ?K +1AK b0 BK 0HK +1MK +1YK b11 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -28639,6 +28634,7 @@ b1000000011100 \W b0 ]W 0cW b11 xW +1yW b11 |W b1001000110100010101100111100000010010001101000101011001111010 }W b11 )X @@ -28684,6 +28680,7 @@ b0 nZ 0{Z 0$[ 1%[ +1'[ b11 *[ b1001000110100010101100111100000010010001101000101011001111010 +[ b11 5[ @@ -28694,7 +28691,9 @@ b1110 S[ b100 ^[ b1110 _[ b11 k[ +1w[ b100 }[ +1$\ 06\ 09\ 0E\ @@ -28702,6 +28701,7 @@ b100 G\ 0]\ b100 _\ b100 a\ +1b\ b100 h\ b100 m\ b1101 n\ @@ -28904,14 +28904,18 @@ b0 mi 01k 1! 1i" +b100 k" 1n" 1s" 1x" +b101 z" 1!# 1(# +b100 *# 1-# 12# 17# +b101 9# 1># 1E# 1J# @@ -28919,6 +28923,7 @@ b0 mi 1T# 1[# 1b# +b101 d# 1i# 1p# 1u# @@ -28927,79 +28932,12 @@ b0 mi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1dD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1%\ -1b\ -b100 k" -b101 z" -b100 *# -b101 9# -b101 d# b101 8$ +1?$ b100 R$ b1001000110100010101100111100000010010001101000101011001111011 S$ b100 ]$ +1P& b100 c& b1001000110100010101100111100000010010001101000101011001111011 d& b100 n& @@ -29034,8 +28972,14 @@ b10010 H( b101 P( b101 S( b100 V( +1_( b101 a( +1f( +1m( +1t( +1{( b101 }( +1$) b101 0) b10001 1) b101 <) @@ -29085,7 +29029,13 @@ b10001 _+ b101 e+ b10001 f+ b100 w+ +1v, b101 x, +1}, +1&- +1-- +14- +1;- b101 =- b101 G- b10010 H- @@ -29138,6 +29088,7 @@ b10010 }/ b100 /0 b1001000110100010101100111100000010010001101000101011001111011 00 b100 :0 +1H0 b100 K0 b1001000110100010101100111100000010010001101000101011001111011 L0 b100 V0 @@ -29149,6 +29100,7 @@ b101 !1 b10001 "1 b100 .1 b1001000110100010101100111100000010010001101000101011001111011 01 +1:1 b100 =1 b1001000110100010101100111100000010010001101000101011001111011 >1 b100 H1 @@ -29171,15 +29123,33 @@ b1001000110100010101100111100000010010001101000101011001111010 O2 b100 l2 b1001000110100010101100111100000010010001101000101011001111011 n2 b100 w2 +1y2 +1}2 +1#3 b100 %3 +1'3 +1,3 b100 /3 +113 +153 +193 b100 ;3 +1=3 +1B3 b11 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111010 H3 +1S3 +1_3 b100 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111011 l3 b11 ~3 +1"4 +1.4 +1:4 b100 D4 +1F4 sHdlSome\x20(1) Y4 b100 ]4 b1101 ^4 @@ -29327,6 +29297,7 @@ b1101 6@ b1000000100000 =@ b1001000110100010101100111100000010010001101000101011001111010 >@ b100 Y@ +1Z@ b100 ]@ b1001000110100010101100111100000010010001101000101011001111011 ^@ b100 h@ @@ -29364,6 +29335,7 @@ b1001000110100010101100111100000010010001101000101011001111010 CC b1001000110100010101100111100000010010001101000101011001111011 EC b1001000110100010101100111100000010010001101000101011001111011 OC 1TC +1fC b100 iC b1001000110100010101100111100000010010001101000101011001111011 jC b100 tC @@ -29375,7 +29347,9 @@ b101 ?D b10001 @D b100 LD b1001000110100010101100111100000010010001101000101011001111011 ND +1XD b101 ^D +1dD 1{D 0|D 1}D @@ -29386,6 +29360,7 @@ b101 (E 1>E b101 @E b101 BE +1CE b101 IE b101 NE b10001 OE @@ -29423,6 +29398,7 @@ b101 QG b10010 RG b101 ]G b10010 ^G +1gG b100 jG b1001000110100010101100111100000010010001101000101011001111011 kG b100 uG @@ -29433,6 +29409,7 @@ b10010 5H b101 @H b10010 AH b100 MH +1YH b100 \H b1001000110100010101100111100000010010001101000101011001111011 ]H b100 gH @@ -29452,14 +29429,32 @@ b1110 fI b1000000100100 mI b100 -J b100 8J +1:J +1>J +1BJ b100 DJ +1FJ +1KJ b100 NJ +1PJ +1TJ +1XJ b100 ZJ +1\J +1aJ b11 dJ +1fJ +1rJ +1~J b100 *K +1,K b1001000110100010101100111100000010010001101000101011001111011 -K b11 ?K +1AK +1MK +1YK b100 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b100 |K @@ -29612,6 +29607,7 @@ b100 TW b1110 UW b1000000100100 \W b100 xW +1yW b100 |W b1001000110100010101100111100000010010001101000101011001111011 }W b100 )X @@ -29637,6 +29633,7 @@ b1110 hY b100 sY b1110 tY b1000000100100 {Y +1'[ b100 *[ b1001000110100010101100111100000010010001101000101011001111011 +[ b100 5[ @@ -29647,7 +29644,9 @@ b10010 S[ b101 ^[ b10010 _[ b100 k[ +1w[ b101 }[ +1%\ 1<\ 0=\ 1>\ @@ -29658,6 +29657,7 @@ b101 G\ 1]\ b101 _\ b101 a\ +1b\ b101 h\ b101 m\ b10001 n\ @@ -29860,14 +29860,18 @@ b0 ni 02k 1! 1i" +b101 k" 1n" 1s" 1x" +b110 z" 1!# 1(# +b101 *# 1-# 12# 17# +b110 9# 1># 1E# 1J# @@ -29875,6 +29879,7 @@ b0 ni 1T# 1[# 1b# +b110 d# 1i# 1p# 1u# @@ -29883,79 +29888,12 @@ b0 ni 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1eD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1&\ -1b\ -b101 k" -b110 z" -b101 *# -b110 9# -b110 d# b110 8$ +1?$ b101 R$ b1001000110100010101100111100000010010001101000101011001111100 S$ b101 ]$ +1P& b101 c& b1001000110100010101100111100000010010001101000101011001111100 d& b101 n& @@ -29990,8 +29928,14 @@ b10110 H( b110 P( b110 S( b101 V( +1_( b110 a( +1f( +1m( +1t( +1{( b110 }( +1$) b110 0) b10101 1) b110 <) @@ -30041,7 +29985,13 @@ b10101 _+ b110 e+ b10101 f+ b101 w+ +1v, b110 x, +1}, +1&- +1-- +14- +1;- b110 =- b110 G- b10110 H- @@ -30094,6 +30044,7 @@ b10110 }/ b101 /0 b1001000110100010101100111100000010010001101000101011001111100 00 b101 :0 +1H0 b101 K0 b1001000110100010101100111100000010010001101000101011001111100 L0 b101 V0 @@ -30105,6 +30056,7 @@ b110 !1 b10101 "1 b101 .1 b1001000110100010101100111100000010010001101000101011001111100 01 +1:1 b101 =1 b1001000110100010101100111100000010010001101000101011001111100 >1 b101 H1 @@ -30127,15 +30079,33 @@ b1001000110100010101100111100000010010001101000101011001111011 O2 b101 l2 b1001000110100010101100111100000010010001101000101011001111100 n2 b101 w2 +1y2 +1}2 +1#3 b101 %3 +1'3 +1,3 b101 /3 +113 +153 +193 b101 ;3 +1=3 +1B3 b100 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111011 H3 +1S3 +1_3 b101 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111100 l3 b100 ~3 +1"4 +1.4 +1:4 b101 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -30283,6 +30253,7 @@ b10001 6@ b1000000101000 =@ b1001000110100010101100111100000010010001101000101011001111011 >@ b101 Y@ +1Z@ b101 ]@ b1001000110100010101100111100000010010001101000101011001111100 ^@ b101 h@ @@ -30320,6 +30291,7 @@ b1001000110100010101100111100000010010001101000101011001111011 CC b1001000110100010101100111100000010010001101000101011001111100 EC b1001000110100010101100111100000010010001101000101011001111100 OC 0TC +1fC b101 iC b1001000110100010101100111100000010010001101000101011001111100 jC b101 tC @@ -30331,7 +30303,9 @@ b110 ?D b10101 @D b101 LD b1001000110100010101100111100000010010001101000101011001111100 ND +1XD b110 ^D +1eD 0{D 0#E b10 %E @@ -30340,6 +30314,7 @@ b110 (E 0>E b110 @E b110 BE +1CE b110 IE b110 NE b10101 OE @@ -30377,6 +30352,7 @@ b110 QG b10110 RG b110 ]G b10110 ^G +1gG b101 jG b1001000110100010101100111100000010010001101000101011001111100 kG b101 uG @@ -30387,6 +30363,7 @@ b10110 5H b110 @H b10110 AH b101 MH +1YH b101 \H b1001000110100010101100111100000010010001101000101011001111100 ]H b101 gH @@ -30406,14 +30383,32 @@ b10010 fI b1000000101100 mI b101 -J b101 8J +1:J +1>J +1BJ b101 DJ +1FJ +1KJ b101 NJ +1PJ +1TJ +1XJ b101 ZJ +1\J +1aJ b100 dJ +1fJ +1rJ +1~J b101 *K +1,K b1001000110100010101100111100000010010001101000101011001111100 -K b100 ?K +1AK +1MK +1YK b101 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -30566,6 +30561,7 @@ b101 TW b10010 UW b1000000101100 \W b101 xW +1yW b101 |W b1001000110100010101100111100000010010001101000101011001111100 }W b101 )X @@ -30591,6 +30587,7 @@ b10010 hY b101 sY b10010 tY b1000000101100 {Y +1'[ b101 *[ b1001000110100010101100111100000010010001101000101011001111100 +[ b101 5[ @@ -30601,7 +30598,9 @@ b10110 S[ b110 ^[ b10110 _[ b101 k[ +1w[ b110 }[ +1&\ 0<\ 0B\ b10 D\ @@ -30610,6 +30609,7 @@ b110 G\ 0]\ b110 _\ b110 a\ +1b\ b110 h\ b110 m\ b10101 n\ @@ -30812,14 +30812,18 @@ b0 oi 03k 1! 1i" +b110 k" 1n" 1s" 1x" +b111 z" 1!# 1(# +b110 *# 1-# 12# 17# +b111 9# 1># 1E# 1J# @@ -30827,6 +30831,7 @@ b0 oi 1T# 1[# 1b# +b111 d# 1i# 1p# 1u# @@ -30835,79 +30840,12 @@ b0 oi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1fD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1'\ -1b\ -b110 k" -b111 z" -b110 *# -b111 9# -b111 d# b111 8$ +1?$ b110 R$ b1001000110100010101100111100000010010001101000101011001111101 S$ b110 ]$ +1P& b110 c& b1001000110100010101100111100000010010001101000101011001111101 d& b110 n& @@ -30942,8 +30880,14 @@ b11010 H( b111 P( b111 S( b110 V( +1_( b111 a( +1f( +1m( +1t( +1{( b111 }( +1$) b111 0) b11001 1) b111 <) @@ -30993,7 +30937,13 @@ b11001 _+ b111 e+ b11001 f+ b110 w+ +1v, b111 x, +1}, +1&- +1-- +14- +1;- b111 =- b111 G- b11010 H- @@ -31046,6 +30996,7 @@ b11010 }/ b110 /0 b1001000110100010101100111100000010010001101000101011001111101 00 b110 :0 +1H0 b110 K0 b1001000110100010101100111100000010010001101000101011001111101 L0 b110 V0 @@ -31057,6 +31008,7 @@ b111 !1 b11001 "1 b110 .1 b1001000110100010101100111100000010010001101000101011001111101 01 +1:1 b110 =1 b1001000110100010101100111100000010010001101000101011001111101 >1 b110 H1 @@ -31079,15 +31031,33 @@ b1001000110100010101100111100000010010001101000101011001111100 O2 b110 l2 b1001000110100010101100111100000010010001101000101011001111101 n2 b110 w2 +1y2 +1}2 +1#3 b110 %3 +1'3 +1,3 b110 /3 +113 +153 +193 b110 ;3 +1=3 +1B3 b101 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111100 H3 +1S3 +1_3 b110 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111101 l3 b101 ~3 +1"4 +1.4 +1:4 b110 D4 +1F4 sHdlSome\x20(1) Y4 b110 ]4 b10101 ^4 @@ -31235,6 +31205,7 @@ b10101 6@ b1000000110000 =@ b1001000110100010101100111100000010010001101000101011001111100 >@ b110 Y@ +1Z@ b110 ]@ b1001000110100010101100111100000010010001101000101011001111101 ^@ b110 h@ @@ -31272,6 +31243,7 @@ b1001000110100010101100111100000010010001101000101011001111100 CC b1001000110100010101100111100000010010001101000101011001111101 EC b1001000110100010101100111100000010010001101000101011001111101 OC 1TC +1fC b110 iC b1001000110100010101100111100000010010001101000101011001111101 jC b110 tC @@ -31283,7 +31255,9 @@ b111 ?D b11001 @D b110 LD b1001000110100010101100111100000010010001101000101011001111101 ND +1XD b111 ^D +1fD 1~D 0!E 1"E @@ -31296,6 +31270,7 @@ b111 (E 1>E b111 @E b111 BE +1CE b111 IE b111 NE b11001 OE @@ -31333,6 +31308,7 @@ b111 QG b11010 RG b111 ]G b11010 ^G +1gG b110 jG b1001000110100010101100111100000010010001101000101011001111101 kG b110 uG @@ -31343,6 +31319,7 @@ b11010 5H b111 @H b11010 AH b110 MH +1YH b110 \H b1001000110100010101100111100000010010001101000101011001111101 ]H b110 gH @@ -31362,14 +31339,32 @@ b10110 fI b1000000110100 mI b110 -J b110 8J +1:J +1>J +1BJ b110 DJ +1FJ +1KJ b110 NJ +1PJ +1TJ +1XJ b110 ZJ +1\J +1aJ b101 dJ +1fJ +1rJ +1~J b110 *K +1,K b1001000110100010101100111100000010010001101000101011001111101 -K b101 ?K +1AK +1MK +1YK b110 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b110 |K @@ -31522,6 +31517,7 @@ b110 TW b10110 UW b1000000110100 \W b110 xW +1yW b110 |W b1001000110100010101100111100000010010001101000101011001111101 }W b110 )X @@ -31547,6 +31543,7 @@ b10110 hY b110 sY b10110 tY b1000000110100 {Y +1'[ b110 *[ b1001000110100010101100111100000010010001101000101011001111101 +[ b110 5[ @@ -31557,7 +31554,9 @@ b11010 S[ b111 ^[ b11010 _[ b110 k[ +1w[ b111 }[ +1'\ 1?\ 0@\ 1A\ @@ -31570,6 +31569,7 @@ b111 G\ 1]\ b111 _\ b111 a\ +1b\ b111 h\ b111 m\ b11001 n\ @@ -31772,14 +31772,18 @@ b0 pi 04k 1! 1i" +b111 k" 1n" 1s" 1x" +b1000 z" 1!# 1(# +b111 *# 1-# 12# 17# +b1000 9# 1># 1E# 1J# @@ -31787,6 +31791,7 @@ b0 pi 1T# 1[# 1b# +b1000 d# 1i# 1p# 1u# @@ -31795,79 +31800,12 @@ b0 pi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1gD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1(\ -1b\ -b111 k" -b1000 z" -b111 *# -b1000 9# -b1000 d# b1000 8$ +1?$ b111 R$ b1001000110100010101100111100000010010001101000101011001111110 S$ b111 ]$ +1P& b111 c& b1001000110100010101100111100000010010001101000101011001111110 d& b111 n& @@ -31902,8 +31840,14 @@ b11110 H( b1000 P( b1000 S( b111 V( +1_( b1000 a( +1f( +1m( +1t( +1{( b1000 }( +1$) b1000 0) b11101 1) b1000 <) @@ -31953,7 +31897,13 @@ b11101 _+ b1000 e+ b11101 f+ b111 w+ +1v, b1000 x, +1}, +1&- +1-- +14- +1;- b1000 =- b1000 G- b11110 H- @@ -32006,6 +31956,7 @@ b11110 }/ b111 /0 b1001000110100010101100111100000010010001101000101011001111110 00 b111 :0 +1H0 b111 K0 b1001000110100010101100111100000010010001101000101011001111110 L0 b111 V0 @@ -32017,6 +31968,7 @@ b1000 !1 b11101 "1 b111 .1 b1001000110100010101100111100000010010001101000101011001111110 01 +1:1 b111 =1 b1001000110100010101100111100000010010001101000101011001111110 >1 b111 H1 @@ -32039,15 +31991,33 @@ b1001000110100010101100111100000010010001101000101011001111101 O2 b111 l2 b1001000110100010101100111100000010010001101000101011001111110 n2 b111 w2 +1y2 +1}2 +1#3 b111 %3 +1'3 +1,3 b111 /3 +113 +153 +193 b111 ;3 +1=3 +1B3 b110 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111101 H3 +1S3 +1_3 b111 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111110 l3 b110 ~3 +1"4 +1.4 +1:4 b111 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -32195,6 +32165,7 @@ b11001 6@ b1000000111000 =@ b1001000110100010101100111100000010010001101000101011001111101 >@ b111 Y@ +1Z@ b111 ]@ b1001000110100010101100111100000010010001101000101011001111110 ^@ b111 h@ @@ -32230,6 +32201,7 @@ b1001000110100010101100111100000010010001101000101011001111110 )C b1001000110100010101100111100000010010001101000101011001111101 CC b1001000110100010101100111100000010010001101000101011001111110 EC b1001000110100010101100111100000010010001101000101011001111110 OC +1fC b111 iC b1001000110100010101100111100000010010001101000101011001111110 jC b111 tC @@ -32241,13 +32213,16 @@ b1000 ?D b11101 @D b111 LD b1001000110100010101100111100000010010001101000101011001111110 ND +1XD b1000 ^D +1gD 0~D 0#E 0&E 0>E b1000 @E b1000 BE +1CE b1000 IE b1000 NE b11101 OE @@ -32285,6 +32260,7 @@ b1000 QG b11110 RG b1000 ]G b11110 ^G +1gG b111 jG b1001000110100010101100111100000010010001101000101011001111110 kG b111 uG @@ -32295,6 +32271,7 @@ b11110 5H b1000 @H b11110 AH b111 MH +1YH b111 \H b1001000110100010101100111100000010010001101000101011001111110 ]H b111 gH @@ -32314,14 +32291,32 @@ b11010 fI b1000000111100 mI b111 -J b111 8J +1:J +1>J +1BJ b111 DJ +1FJ +1KJ b111 NJ +1PJ +1TJ +1XJ b111 ZJ +1\J +1aJ b110 dJ +1fJ +1rJ +1~J b111 *K +1,K b1001000110100010101100111100000010010001101000101011001111110 -K b110 ?K +1AK +1MK +1YK b111 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -32474,6 +32469,7 @@ b111 TW b11010 UW b1000000111100 \W b111 xW +1yW b111 |W b1001000110100010101100111100000010010001101000101011001111110 }W b111 )X @@ -32499,6 +32495,7 @@ b11010 hY b111 sY b11010 tY b1000000111100 {Y +1'[ b111 *[ b1001000110100010101100111100000010010001101000101011001111110 +[ b111 5[ @@ -32509,13 +32506,16 @@ b11110 S[ b1000 ^[ b11110 _[ b111 k[ +1w[ b1000 }[ +1(\ 0?\ 0B\ 0E\ 0]\ b1000 _\ b1000 a\ +1b\ b1000 h\ b1000 m\ b11101 n\ @@ -32718,14 +32718,18 @@ b0 qi 05k 1! 1i" +b1000 k" 1n" 1s" 1x" +b1001 z" 1!# 1(# +b1000 *# 1-# 12# 17# +b1001 9# 1># 1E# 1J# @@ -32733,6 +32737,7 @@ b0 qi 1T# 1[# 1b# +b1001 d# 1i# 1p# 1u# @@ -32741,79 +32746,12 @@ b0 qi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1hD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1)\ -1b\ -b1000 k" -b1001 z" -b1000 *# -b1001 9# -b1001 d# b1001 8$ +1?$ b1000 R$ b1001000110100010101100111100000010010001101000101011001111111 S$ b1000 ]$ +1P& b1000 c& b1001000110100010101100111100000010010001101000101011001111111 d& b1000 n& @@ -32848,8 +32786,14 @@ b100010 H( b1001 P( b1001 S( b1000 V( +1_( b1001 a( +1f( +1m( +1t( +1{( b1001 }( +1$) b1001 0) b100001 1) b1001 <) @@ -32899,7 +32843,13 @@ b100001 _+ b1001 e+ b100001 f+ b1000 w+ +1v, b1001 x, +1}, +1&- +1-- +14- +1;- b1001 =- b1001 G- b100010 H- @@ -32952,6 +32902,7 @@ b100010 }/ b1000 /0 b1001000110100010101100111100000010010001101000101011001111111 00 b1000 :0 +1H0 b1000 K0 b1001000110100010101100111100000010010001101000101011001111111 L0 b1000 V0 @@ -32963,6 +32914,7 @@ b1001 !1 b100001 "1 b1000 .1 b1001000110100010101100111100000010010001101000101011001111111 01 +1:1 b1000 =1 b1001000110100010101100111100000010010001101000101011001111111 >1 b1000 H1 @@ -32985,15 +32937,33 @@ b1001000110100010101100111100000010010001101000101011001111110 O2 b1000 l2 b1001000110100010101100111100000010010001101000101011001111111 n2 b1000 w2 +1y2 +1}2 +1#3 b1000 %3 +1'3 +1,3 b1000 /3 +113 +153 +193 b1000 ;3 +1=3 +1B3 b111 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111110 H3 +1S3 +1_3 b1000 i3 +1k3 b1001000110100010101100111100000010010001101000101011001111111 l3 b111 ~3 +1"4 +1.4 +1:4 b1000 D4 +1F4 sHdlSome\x20(1) Y4 b1000 ]4 b11101 ^4 @@ -33141,6 +33111,7 @@ b11101 6@ b1000001000000 =@ b1001000110100010101100111100000010010001101000101011001111110 >@ b1000 Y@ +1Z@ b1000 ]@ b1001000110100010101100111100000010010001101000101011001111111 ^@ b1000 h@ @@ -33178,6 +33149,7 @@ b1001000110100010101100111100000010010001101000101011001111110 CC b1001000110100010101100111100000010010001101000101011001111111 EC b1001000110100010101100111100000010010001101000101011001111111 OC 0TC +1fC b1000 iC b1001000110100010101100111100000010010001101000101011001111111 jC b1000 tC @@ -33189,7 +33161,9 @@ b1001 ?D b100001 @D b1000 LD b1001000110100010101100111100000010010001101000101011001111111 ND +1XD b1001 ^D +1hD 1)E 0*E 1+E @@ -33200,6 +33174,7 @@ b1 =E 1>E b1001 @E b1001 BE +1CE b1001 IE b1001 NE b100001 OE @@ -33237,6 +33212,7 @@ b1001 QG b100010 RG b1001 ]G b100010 ^G +1gG b1000 jG b1001000110100010101100111100000010010001101000101011001111111 kG b1000 uG @@ -33247,6 +33223,7 @@ b100010 5H b1001 @H b100010 AH b1000 MH +1YH b1000 \H b1001000110100010101100111100000010010001101000101011001111111 ]H b1000 gH @@ -33266,14 +33243,32 @@ b11110 fI b1000001000100 mI b1000 -J b1000 8J +1:J +1>J +1BJ b1000 DJ +1FJ +1KJ b1000 NJ +1PJ +1TJ +1XJ b1000 ZJ +1\J +1aJ b111 dJ +1fJ +1rJ +1~J b1000 *K +1,K b1001000110100010101100111100000010010001101000101011001111111 -K b111 ?K +1AK +1MK +1YK b1000 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b1000 |K @@ -33426,6 +33421,7 @@ b1000 TW b11110 UW b1000001000100 \W b1000 xW +1yW b1000 |W b1001000110100010101100111100000010010001101000101011001111111 }W b1000 )X @@ -33451,6 +33447,7 @@ b11110 hY b1000 sY b11110 tY b1000001000100 {Y +1'[ b1000 *[ b1001000110100010101100111100000010010001101000101011001111111 +[ b1000 5[ @@ -33461,7 +33458,9 @@ b100010 S[ b1001 ^[ b100010 _[ b1000 k[ +1w[ b1001 }[ +1)\ 1H\ 0I\ 1J\ @@ -33472,6 +33471,7 @@ b1 \\ 1]\ b1001 _\ b1001 a\ +1b\ b1001 h\ b1001 m\ b100001 n\ @@ -33674,14 +33674,18 @@ b0 ri 06k 1! 1i" +b1001 k" 1n" 1s" 1x" +b1010 z" 1!# 1(# +b1001 *# 1-# 12# 17# +b1010 9# 1># 1E# 1J# @@ -33689,6 +33693,7 @@ b0 ri 1T# 1[# 1b# +b1010 d# 1i# 1p# 1u# @@ -33697,79 +33702,12 @@ b0 ri 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1iD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1*\ -1b\ -b1001 k" -b1010 z" -b1001 *# -b1010 9# -b1010 d# b1010 8$ +1?$ b1001 R$ b1001000110100010101100111100000010010001101000101011010000000 S$ b1001 ]$ +1P& b1001 c& b1001000110100010101100111100000010010001101000101011010000000 d& b1001 n& @@ -33804,8 +33742,14 @@ b100110 H( b1010 P( b1010 S( b1001 V( +1_( b1010 a( +1f( +1m( +1t( +1{( b1010 }( +1$) b1010 0) b100101 1) b1010 <) @@ -33855,7 +33799,13 @@ b100101 _+ b1010 e+ b100101 f+ b1001 w+ +1v, b1010 x, +1}, +1&- +1-- +14- +1;- b1010 =- b1010 G- b100110 H- @@ -33908,6 +33858,7 @@ b100110 }/ b1001 /0 b1001000110100010101100111100000010010001101000101011010000000 00 b1001 :0 +1H0 b1001 K0 b1001000110100010101100111100000010010001101000101011010000000 L0 b1001 V0 @@ -33919,6 +33870,7 @@ b1010 !1 b100101 "1 b1001 .1 b1001000110100010101100111100000010010001101000101011010000000 01 +1:1 b1001 =1 b1001000110100010101100111100000010010001101000101011010000000 >1 b1001 H1 @@ -33941,15 +33893,33 @@ b1001000110100010101100111100000010010001101000101011001111111 O2 b1001 l2 b1001000110100010101100111100000010010001101000101011010000000 n2 b1001 w2 +1y2 +1}2 +1#3 b1001 %3 +1'3 +1,3 b1001 /3 +113 +153 +193 b1001 ;3 +1=3 +1B3 b1000 E3 +1G3 b1001000110100010101100111100000010010001101000101011001111111 H3 +1S3 +1_3 b1001 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000000 l3 b1000 ~3 +1"4 +1.4 +1:4 b1001 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -34097,6 +34067,7 @@ b100001 6@ b1000001001000 =@ b1001000110100010101100111100000010010001101000101011001111111 >@ b1001 Y@ +1Z@ b1001 ]@ b1001000110100010101100111100000010010001101000101011010000000 ^@ b1001 h@ @@ -34138,6 +34109,7 @@ b1001000110100010101100111100000010010001101000101011010000000 EC 1GC b1001000110100010101100111100000010010001101000101011010000000 OC 1QC +1fC b1001 iC b1001000110100010101100111100000010010001101000101011010000000 jC b1001 tC @@ -34149,7 +34121,9 @@ b1010 ?D b100101 @D b1001 LD b1001000110100010101100111100000010010001101000101011010000000 ND +1XD b1010 ^D +1iD 0)E 0/E b10 1E @@ -34158,6 +34132,7 @@ b10 =E 0>E b1010 @E b1010 BE +1CE b1010 IE b1010 NE b100101 OE @@ -34195,6 +34170,7 @@ b1010 QG b100110 RG b1010 ]G b100110 ^G +1gG b1001 jG b1001000110100010101100111100000010010001101000101011010000000 kG b1001 uG @@ -34205,6 +34181,7 @@ b100110 5H b1010 @H b100110 AH b1001 MH +1YH b1001 \H b1001000110100010101100111100000010010001101000101011010000000 ]H b1001 gH @@ -34224,14 +34201,32 @@ b100010 fI b1000001001100 mI b1001 -J b1001 8J +1:J +1>J +1BJ b1001 DJ +1FJ +1KJ b1001 NJ +1PJ +1TJ +1XJ b1001 ZJ +1\J +1aJ b1000 dJ +1fJ +1rJ +1~J b1001 *K +1,K b1001000110100010101100111100000010010001101000101011010000000 -K b1000 ?K +1AK +1MK +1YK b1001 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -34384,6 +34379,7 @@ b1001 TW b100010 UW b1000001001100 \W b1001 xW +1yW b1001 |W b1001000110100010101100111100000010010001101000101011010000000 }W b1001 )X @@ -34409,6 +34405,7 @@ b100010 hY b1001 sY b100010 tY b1000001001100 {Y +1'[ b1001 *[ b1001000110100010101100111100000010010001101000101011010000000 +[ b1001 5[ @@ -34419,7 +34416,9 @@ b100110 S[ b1010 ^[ b100110 _[ b1001 k[ +1w[ b1010 }[ +1*\ 0H\ 0N\ b10 P\ @@ -34428,6 +34427,7 @@ b10 \\ 0]\ b1010 _\ b1010 a\ +1b\ b1010 h\ b1010 m\ b100101 n\ @@ -34630,14 +34630,18 @@ b0 si 07k 1! 1i" +b1010 k" 1n" 1s" 1x" +b1011 z" 1!# 1(# +b1010 *# 1-# 12# 17# +b1011 9# 1># 1E# 1J# @@ -34645,6 +34649,7 @@ b0 si 1T# 1[# 1b# +b1011 d# 1i# 1p# 1u# @@ -34653,79 +34658,12 @@ b0 si 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1jD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1+\ -1b\ -b1010 k" -b1011 z" -b1010 *# -b1011 9# -b1011 d# b1011 8$ +1?$ b1010 R$ b1001000110100010101100111100000010010001101000101011010000001 S$ b1010 ]$ +1P& b1010 c& b1001000110100010101100111100000010010001101000101011010000001 d& b1010 n& @@ -34760,8 +34698,14 @@ b101010 H( b1011 P( b1011 S( b1010 V( +1_( b1011 a( +1f( +1m( +1t( +1{( b1011 }( +1$) b1011 0) b101001 1) b1011 <) @@ -34811,7 +34755,13 @@ b101001 _+ b1011 e+ b101001 f+ b1010 w+ +1v, b1011 x, +1}, +1&- +1-- +14- +1;- b1011 =- b1011 G- b101010 H- @@ -34864,6 +34814,7 @@ b101010 }/ b1010 /0 b1001000110100010101100111100000010010001101000101011010000001 00 b1010 :0 +1H0 b1010 K0 b1001000110100010101100111100000010010001101000101011010000001 L0 b1010 V0 @@ -34875,6 +34826,7 @@ b1011 !1 b101001 "1 b1010 .1 b1001000110100010101100111100000010010001101000101011010000001 01 +1:1 b1010 =1 b1001000110100010101100111100000010010001101000101011010000001 >1 b1010 H1 @@ -34897,15 +34849,33 @@ b1001000110100010101100111100000010010001101000101011010000000 O2 b1010 l2 b1001000110100010101100111100000010010001101000101011010000001 n2 b1010 w2 +1y2 +1}2 +1#3 b1010 %3 +1'3 +1,3 b1010 /3 +113 +153 +193 b1010 ;3 +1=3 +1B3 b1001 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000000 H3 +1S3 +1_3 b1010 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000001 l3 b1001 ~3 +1"4 +1.4 +1:4 b1010 D4 +1F4 sHdlSome\x20(1) Y4 b1010 ]4 b100101 ^4 @@ -35053,6 +35023,7 @@ b100101 6@ b1000001010000 =@ b1001000110100010101100111100000010010001101000101011010000000 >@ b1010 Y@ +1Z@ b1010 ]@ b1001000110100010101100111100000010010001101000101011010000001 ^@ b1010 h@ @@ -35096,6 +35067,7 @@ b1001000110100010101100111100000010010001101000101011010000001 EC b1001000110100010101100111100000010010001101000101011010000001 OC 0QC 1TC +1fC b1010 iC b1001000110100010101100111100000010010001101000101011010000001 jC b1010 tC @@ -35107,7 +35079,9 @@ b1011 ?D b101001 @D b1010 LD b1001000110100010101100111100000010010001101000101011010000001 ND +1XD b1011 ^D +1jD 1,E 0-E 1.E @@ -35119,6 +35093,7 @@ b11 =E 1>E b1011 @E b1011 BE +1CE b1011 IE b1011 NE b101001 OE @@ -35156,6 +35131,7 @@ b1011 QG b101010 RG b1011 ]G b101010 ^G +1gG b1010 jG b1001000110100010101100111100000010010001101000101011010000001 kG b1010 uG @@ -35166,6 +35142,7 @@ b101010 5H b1011 @H b101010 AH b1010 MH +1YH b1010 \H b1001000110100010101100111100000010010001101000101011010000001 ]H b1010 gH @@ -35185,14 +35162,32 @@ b100110 fI b1000001010100 mI b1010 -J b1010 8J +1:J +1>J +1BJ b1010 DJ +1FJ +1KJ b1010 NJ +1PJ +1TJ +1XJ b1010 ZJ +1\J +1aJ b1001 dJ +1fJ +1rJ +1~J b1010 *K +1,K b1001000110100010101100111100000010010001101000101011010000001 -K b1001 ?K +1AK +1MK +1YK b1010 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b1010 |K @@ -35345,6 +35340,7 @@ b1010 TW b100110 UW b1000001010100 \W b1010 xW +1yW b1010 |W b1001000110100010101100111100000010010001101000101011010000001 }W b1010 )X @@ -35370,6 +35366,7 @@ b100110 hY b1010 sY b100110 tY b1000001010100 {Y +1'[ b1010 *[ b1001000110100010101100111100000010010001101000101011010000001 +[ b1010 5[ @@ -35380,7 +35377,9 @@ b101010 S[ b1011 ^[ b101010 _[ b1010 k[ +1w[ b1011 }[ +1+\ 1K\ 0L\ 1M\ @@ -35392,6 +35391,7 @@ b11 \\ 1]\ b1011 _\ b1011 a\ +1b\ b1011 h\ b1011 m\ b101001 n\ @@ -35594,14 +35594,18 @@ b0 ti 08k 1! 1i" +b1011 k" 1n" 1s" 1x" +b1100 z" 1!# 1(# +b1011 *# 1-# 12# 17# +b1100 9# 1># 1E# 1J# @@ -35609,6 +35613,7 @@ b0 ti 1T# 1[# 1b# +b1100 d# 1i# 1p# 1u# @@ -35617,79 +35622,12 @@ b0 ti 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1kD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1,\ -1b\ -b1011 k" -b1100 z" -b1011 *# -b1100 9# -b1100 d# b1100 8$ +1?$ b1011 R$ b1001000110100010101100111100000010010001101000101011010000010 S$ b1011 ]$ +1P& b1011 c& b1001000110100010101100111100000010010001101000101011010000010 d& b1011 n& @@ -35724,8 +35662,14 @@ b101110 H( b1100 P( b1100 S( b1011 V( +1_( b1100 a( +1f( +1m( +1t( +1{( b1100 }( +1$) b1100 0) b101101 1) b1100 <) @@ -35775,7 +35719,13 @@ b101101 _+ b1100 e+ b101101 f+ b1011 w+ +1v, b1100 x, +1}, +1&- +1-- +14- +1;- b1100 =- b1100 G- b101110 H- @@ -35828,6 +35778,7 @@ b101110 }/ b1011 /0 b1001000110100010101100111100000010010001101000101011010000010 00 b1011 :0 +1H0 b1011 K0 b1001000110100010101100111100000010010001101000101011010000010 L0 b1011 V0 @@ -35839,6 +35790,7 @@ b1100 !1 b101101 "1 b1011 .1 b1001000110100010101100111100000010010001101000101011010000010 01 +1:1 b1011 =1 b1001000110100010101100111100000010010001101000101011010000010 >1 b1011 H1 @@ -35861,15 +35813,33 @@ b1001000110100010101100111100000010010001101000101011010000001 O2 b1011 l2 b1001000110100010101100111100000010010001101000101011010000010 n2 b1011 w2 +1y2 +1}2 +1#3 b1011 %3 +1'3 +1,3 b1011 /3 +113 +153 +193 b1011 ;3 +1=3 +1B3 b1010 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000001 H3 +1S3 +1_3 b1011 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000010 l3 b1010 ~3 +1"4 +1.4 +1:4 b1011 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -36017,6 +35987,7 @@ b101001 6@ b1000001011000 =@ b1001000110100010101100111100000010010001101000101011010000001 >@ b1011 Y@ +1Z@ b1011 ]@ b1001000110100010101100111100000010010001101000101011010000010 ^@ b1011 h@ @@ -36052,6 +36023,7 @@ b1001000110100010101100111100000010010001101000101011010000010 )C b1001000110100010101100111100000010010001101000101011010000001 CC b1001000110100010101100111100000010010001101000101011010000010 EC b1001000110100010101100111100000010010001101000101011010000010 OC +1fC b1011 iC b1001000110100010101100111100000010010001101000101011010000010 jC b1011 tC @@ -36063,7 +36035,9 @@ b1100 ?D b101101 @D b1011 LD b1001000110100010101100111100000010010001101000101011010000010 ND +1XD b1100 ^D +1kD 0,E 0/E 0;E @@ -36071,6 +36045,7 @@ b100 =E 0>E b1100 @E b1100 BE +1CE b1100 IE b1100 NE b101101 OE @@ -36108,6 +36083,7 @@ b1100 QG b101110 RG b1100 ]G b101110 ^G +1gG b1011 jG b1001000110100010101100111100000010010001101000101011010000010 kG b1011 uG @@ -36118,6 +36094,7 @@ b101110 5H b1100 @H b101110 AH b1011 MH +1YH b1011 \H b1001000110100010101100111100000010010001101000101011010000010 ]H b1011 gH @@ -36137,14 +36114,32 @@ b101010 fI b1000001011100 mI b1011 -J b1011 8J +1:J +1>J +1BJ b1011 DJ +1FJ +1KJ b1011 NJ +1PJ +1TJ +1XJ b1011 ZJ +1\J +1aJ b1010 dJ +1fJ +1rJ +1~J b1011 *K +1,K b1001000110100010101100111100000010010001101000101011010000010 -K b1010 ?K +1AK +1MK +1YK b1011 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -36297,6 +36292,7 @@ b1011 TW b101010 UW b1000001011100 \W b1011 xW +1yW b1011 |W b1001000110100010101100111100000010010001101000101011010000010 }W b1011 )X @@ -36322,6 +36318,7 @@ b101010 hY b1011 sY b101010 tY b1000001011100 {Y +1'[ b1011 *[ b1001000110100010101100111100000010010001101000101011010000010 +[ b1011 5[ @@ -36332,7 +36329,9 @@ b101110 S[ b1100 ^[ b101110 _[ b1011 k[ +1w[ b1100 }[ +1,\ 0K\ 0N\ 0Z\ @@ -36340,6 +36339,7 @@ b100 \\ 0]\ b1100 _\ b1100 a\ +1b\ b1100 h\ b1100 m\ b101101 n\ @@ -36542,14 +36542,18 @@ b0 ui 09k 1! 1i" +b1100 k" 1n" 1s" 1x" +b1101 z" 1!# 1(# +b1100 *# 1-# 12# 17# +b1101 9# 1># 1E# 1J# @@ -36557,6 +36561,7 @@ b0 ui 1T# 1[# 1b# +b1101 d# 1i# 1p# 1u# @@ -36565,79 +36570,12 @@ b0 ui 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1lD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1-\ -1b\ -b1100 k" -b1101 z" -b1100 *# -b1101 9# -b1101 d# b1101 8$ +1?$ b1100 R$ b1001000110100010101100111100000010010001101000101011010000011 S$ b1100 ]$ +1P& b1100 c& b1001000110100010101100111100000010010001101000101011010000011 d& b1100 n& @@ -36672,8 +36610,14 @@ b110010 H( b1101 P( b1101 S( b1100 V( +1_( b1101 a( +1f( +1m( +1t( +1{( b1101 }( +1$) b1101 0) b110001 1) b1101 <) @@ -36723,7 +36667,13 @@ b110001 _+ b1101 e+ b110001 f+ b1100 w+ +1v, b1101 x, +1}, +1&- +1-- +14- +1;- b1101 =- b1101 G- b110010 H- @@ -36776,6 +36726,7 @@ b110010 }/ b1100 /0 b1001000110100010101100111100000010010001101000101011010000011 00 b1100 :0 +1H0 b1100 K0 b1001000110100010101100111100000010010001101000101011010000011 L0 b1100 V0 @@ -36787,6 +36738,7 @@ b1101 !1 b110001 "1 b1100 .1 b1001000110100010101100111100000010010001101000101011010000011 01 +1:1 b1100 =1 b1001000110100010101100111100000010010001101000101011010000011 >1 b1100 H1 @@ -36809,15 +36761,33 @@ b1001000110100010101100111100000010010001101000101011010000010 O2 b1100 l2 b1001000110100010101100111100000010010001101000101011010000011 n2 b1100 w2 +1y2 +1}2 +1#3 b1100 %3 +1'3 +1,3 b1100 /3 +113 +153 +193 b1100 ;3 +1=3 +1B3 b1011 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000010 H3 +1S3 +1_3 b1100 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000011 l3 b1011 ~3 +1"4 +1.4 +1:4 b1100 D4 +1F4 sHdlSome\x20(1) Y4 b1100 ]4 b101101 ^4 @@ -36965,6 +36935,7 @@ b101101 6@ b1000001100000 =@ b1001000110100010101100111100000010010001101000101011010000010 >@ b1100 Y@ +1Z@ b1100 ]@ b1001000110100010101100111100000010010001101000101011010000011 ^@ b1100 h@ @@ -37002,6 +36973,7 @@ b1001000110100010101100111100000010010001101000101011010000010 CC b1001000110100010101100111100000010010001101000101011010000011 EC b1001000110100010101100111100000010010001101000101011010000011 OC 0TC +1fC b1100 iC b1001000110100010101100111100000010010001101000101011010000011 jC b1100 tC @@ -37013,7 +36985,9 @@ b1101 ?D b110001 @D b1100 LD b1001000110100010101100111100000010010001101000101011010000011 ND +1XD b1101 ^D +1lD 12E 03E 14E @@ -37024,6 +36998,7 @@ b101 =E 1>E b1101 @E b1101 BE +1CE b1101 IE b1101 NE b110001 OE @@ -37061,6 +37036,7 @@ b1101 QG b110010 RG b1101 ]G b110010 ^G +1gG b1100 jG b1001000110100010101100111100000010010001101000101011010000011 kG b1100 uG @@ -37071,6 +37047,7 @@ b110010 5H b1101 @H b110010 AH b1100 MH +1YH b1100 \H b1001000110100010101100111100000010010001101000101011010000011 ]H b1100 gH @@ -37090,14 +37067,32 @@ b101110 fI b1000001100100 mI b1100 -J b1100 8J +1:J +1>J +1BJ b1100 DJ +1FJ +1KJ b1100 NJ +1PJ +1TJ +1XJ b1100 ZJ +1\J +1aJ b1011 dJ +1fJ +1rJ +1~J b1100 *K +1,K b1001000110100010101100111100000010010001101000101011010000011 -K b1011 ?K +1AK +1MK +1YK b1100 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b1100 |K @@ -37250,6 +37245,7 @@ b1100 TW b101110 UW b1000001100100 \W b1100 xW +1yW b1100 |W b1001000110100010101100111100000010010001101000101011010000011 }W b1100 )X @@ -37275,6 +37271,7 @@ b101110 hY b1100 sY b101110 tY b1000001100100 {Y +1'[ b1100 *[ b1001000110100010101100111100000010010001101000101011010000011 +[ b1100 5[ @@ -37285,7 +37282,9 @@ b110010 S[ b1101 ^[ b110010 _[ b1100 k[ +1w[ b1101 }[ +1-\ 1Q\ 0R\ 1S\ @@ -37296,6 +37295,7 @@ b101 \\ 1]\ b1101 _\ b1101 a\ +1b\ b1101 h\ b1101 m\ b110001 n\ @@ -37498,14 +37498,18 @@ b0 vi 0:k 1! 1i" +b1101 k" 1n" 1s" 1x" +b1110 z" 1!# 1(# +b1101 *# 1-# 12# 17# +b1110 9# 1># 1E# 1J# @@ -37513,6 +37517,7 @@ b0 vi 1T# 1[# 1b# +b1110 d# 1i# 1p# 1u# @@ -37521,79 +37526,12 @@ b0 vi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1mD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1.\ -1b\ -b1101 k" -b1110 z" -b1101 *# -b1110 9# -b1110 d# b1110 8$ +1?$ b1101 R$ b1001000110100010101100111100000010010001101000101011010000100 S$ b1101 ]$ +1P& b1101 c& b1001000110100010101100111100000010010001101000101011010000100 d& b1101 n& @@ -37628,8 +37566,14 @@ b110110 H( b1110 P( b1110 S( b1101 V( +1_( b1110 a( +1f( +1m( +1t( +1{( b1110 }( +1$) b1110 0) b110101 1) b1110 <) @@ -37679,7 +37623,13 @@ b110101 _+ b1110 e+ b110101 f+ b1101 w+ +1v, b1110 x, +1}, +1&- +1-- +14- +1;- b1110 =- b1110 G- b110110 H- @@ -37732,6 +37682,7 @@ b110110 }/ b1101 /0 b1001000110100010101100111100000010010001101000101011010000100 00 b1101 :0 +1H0 b1101 K0 b1001000110100010101100111100000010010001101000101011010000100 L0 b1101 V0 @@ -37743,6 +37694,7 @@ b1110 !1 b110101 "1 b1101 .1 b1001000110100010101100111100000010010001101000101011010000100 01 +1:1 b1101 =1 b1001000110100010101100111100000010010001101000101011010000100 >1 b1101 H1 @@ -37765,15 +37717,33 @@ b1001000110100010101100111100000010010001101000101011010000011 O2 b1101 l2 b1001000110100010101100111100000010010001101000101011010000100 n2 b1101 w2 +1y2 +1}2 +1#3 b1101 %3 +1'3 +1,3 b1101 /3 +113 +153 +193 b1101 ;3 +1=3 +1B3 b1100 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000011 H3 +1S3 +1_3 b1101 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000100 l3 b1100 ~3 +1"4 +1.4 +1:4 b1101 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -37921,6 +37891,7 @@ b110001 6@ b1000001101000 =@ b1001000110100010101100111100000010010001101000101011010000011 >@ b1101 Y@ +1Z@ b1101 ]@ b1001000110100010101100111100000010010001101000101011010000100 ^@ b1101 h@ @@ -37958,6 +37929,7 @@ b1001000110100010101100111100000010010001101000101011010000011 CC b1001000110100010101100111100000010010001101000101011010000100 EC b1001000110100010101100111100000010010001101000101011010000100 OC 1TC +1fC b1101 iC b1001000110100010101100111100000010010001101000101011010000100 jC b1101 tC @@ -37969,7 +37941,9 @@ b1110 ?D b110101 @D b1101 LD b1001000110100010101100111100000010010001101000101011010000100 ND +1XD b1110 ^D +1mD 02E 08E b10 :E @@ -37978,6 +37952,7 @@ b110 =E 0>E b1110 @E b1110 BE +1CE b1110 IE b1110 NE b110101 OE @@ -38015,6 +37990,7 @@ b1110 QG b110110 RG b1110 ]G b110110 ^G +1gG b1101 jG b1001000110100010101100111100000010010001101000101011010000100 kG b1101 uG @@ -38025,6 +38001,7 @@ b110110 5H b1110 @H b110110 AH b1101 MH +1YH b1101 \H b1001000110100010101100111100000010010001101000101011010000100 ]H b1101 gH @@ -38044,14 +38021,32 @@ b110010 fI b1000001101100 mI b1101 -J b1101 8J +1:J +1>J +1BJ b1101 DJ +1FJ +1KJ b1101 NJ +1PJ +1TJ +1XJ b1101 ZJ +1\J +1aJ b1100 dJ +1fJ +1rJ +1~J b1101 *K +1,K b1001000110100010101100111100000010010001101000101011010000100 -K b1100 ?K +1AK +1MK +1YK b1101 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -38204,6 +38199,7 @@ b1101 TW b110010 UW b1000001101100 \W b1101 xW +1yW b1101 |W b1001000110100010101100111100000010010001101000101011010000100 }W b1101 )X @@ -38229,6 +38225,7 @@ b110010 hY b1101 sY b110010 tY b1000001101100 {Y +1'[ b1101 *[ b1001000110100010101100111100000010010001101000101011010000100 +[ b1101 5[ @@ -38239,7 +38236,9 @@ b110110 S[ b1110 ^[ b110110 _[ b1101 k[ +1w[ b1110 }[ +1.\ 0Q\ 0W\ b10 Y\ @@ -38248,6 +38247,7 @@ b110 \\ 0]\ b1110 _\ b1110 a\ +1b\ b1110 h\ b1110 m\ b110101 n\ @@ -38450,14 +38450,18 @@ b0 wi 0;k 1! 1i" +b1110 k" 1n" 1s" 1x" +b1111 z" 1!# 1(# +b1110 *# 1-# 12# 17# +b1111 9# 1># 1E# 1J# @@ -38465,6 +38469,7 @@ b0 wi 1T# 1[# 1b# +b1111 d# 1i# 1p# 1u# @@ -38473,79 +38478,12 @@ b0 wi 1($ 1/$ 16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1nD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1/\ -1b\ -b1110 k" -b1111 z" -b1110 *# -b1111 9# -b1111 d# b1111 8$ +1?$ b1110 R$ b1001000110100010101100111100000010010001101000101011010000101 S$ b1110 ]$ +1P& b1110 c& b1001000110100010101100111100000010010001101000101011010000101 d& b1110 n& @@ -38580,8 +38518,14 @@ b111010 H( b1111 P( b1111 S( b1110 V( +1_( b1111 a( +1f( +1m( +1t( +1{( b1111 }( +1$) b1111 0) b111001 1) b1111 <) @@ -38631,7 +38575,13 @@ b111001 _+ b1111 e+ b111001 f+ b1110 w+ +1v, b1111 x, +1}, +1&- +1-- +14- +1;- b1111 =- b1111 G- b111010 H- @@ -38684,6 +38634,7 @@ b111010 }/ b1110 /0 b1001000110100010101100111100000010010001101000101011010000101 00 b1110 :0 +1H0 b1110 K0 b1001000110100010101100111100000010010001101000101011010000101 L0 b1110 V0 @@ -38695,6 +38646,7 @@ b1111 !1 b111001 "1 b1110 .1 b1001000110100010101100111100000010010001101000101011010000101 01 +1:1 b1110 =1 b1001000110100010101100111100000010010001101000101011010000101 >1 b1110 H1 @@ -38717,15 +38669,33 @@ b1001000110100010101100111100000010010001101000101011010000100 O2 b1110 l2 b1001000110100010101100111100000010010001101000101011010000101 n2 b1110 w2 +1y2 +1}2 +1#3 b1110 %3 +1'3 +1,3 b1110 /3 +113 +153 +193 b1110 ;3 +1=3 +1B3 b1101 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000100 H3 +1S3 +1_3 b1110 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000101 l3 b1101 ~3 +1"4 +1.4 +1:4 b1110 D4 +1F4 sHdlSome\x20(1) Y4 b1110 ]4 b110101 ^4 @@ -38873,6 +38843,7 @@ b110101 6@ b1000001110000 =@ b1001000110100010101100111100000010010001101000101011010000100 >@ b1110 Y@ +1Z@ b1110 ]@ b1001000110100010101100111100000010010001101000101011010000101 ^@ b1110 h@ @@ -38910,6 +38881,7 @@ b1001000110100010101100111100000010010001101000101011010000100 CC b1001000110100010101100111100000010010001101000101011010000101 EC b1001000110100010101100111100000010010001101000101011010000101 OC 0TC +1fC b1110 iC b1001000110100010101100111100000010010001101000101011010000101 jC b1110 tC @@ -38921,7 +38893,9 @@ b1111 ?D b111001 @D b1110 LD b1001000110100010101100111100000010010001101000101011010000101 ND +1XD b1111 ^D +1nD 15E 06E 17E @@ -38935,6 +38909,7 @@ b111 =E 0?E b1111 @E b1111 BE +1CE b1111 IE b1111 NE b111001 OE @@ -38972,6 +38947,7 @@ b1111 QG b111010 RG b1111 ]G b111010 ^G +1gG b1110 jG b1001000110100010101100111100000010010001101000101011010000101 kG b1110 uG @@ -38982,6 +38958,7 @@ b111010 5H b1111 @H b111010 AH b1110 MH +1YH b1110 \H b1001000110100010101100111100000010010001101000101011010000101 ]H b1110 gH @@ -39001,14 +38978,32 @@ b110110 fI b1000001110100 mI b1110 -J b1110 8J +1:J +1>J +1BJ b1110 DJ +1FJ +1KJ b1110 NJ +1PJ +1TJ +1XJ b1110 ZJ +1\J +1aJ b1101 dJ +1fJ +1rJ +1~J b1110 *K +1,K b1001000110100010101100111100000010010001101000101011010000101 -K b1101 ?K +1AK +1MK +1YK b1110 cK +1eK sHdlSome\x20(1) xK sLogical\x20(2) zK b1110 |K @@ -39161,6 +39156,7 @@ b1110 TW b110110 UW b1000001110100 \W b1110 xW +1yW b1110 |W b1001000110100010101100111100000010010001101000101011010000101 }W b1110 )X @@ -39186,6 +39182,7 @@ b110110 hY b1110 sY b110110 tY b1000001110100 {Y +1'[ b1110 *[ b1001000110100010101100111100000010010001101000101011010000101 +[ b1110 5[ @@ -39196,7 +39193,9 @@ b111010 S[ b1111 ^[ b111010 _[ b1110 k[ +1w[ b1111 }[ +1/\ 1T\ 0U\ 1V\ @@ -39210,6 +39209,7 @@ b111 \\ 0^\ b1111 _\ b1111 a\ +1b\ b1111 h\ b1111 m\ b111001 n\ @@ -39411,22 +39411,43 @@ b0 xi 0,k 0# 1E# 1J# 1O# 1T# 1[# +0a# 1b# +b0 c# +b0 d# 1i# 1p# 1u# @@ -39434,99 +39455,16 @@ b0 xi 1!$ 1($ 1/$ -16$ -1?$ -1P& -1_( -1f( -1m( -1t( -1{( -1$) -1v, -1}, -1&- -1-- -14- -1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1oD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -10\ -1b\ -0h" -b0 j" -b0 k" -0w" -b0 y" -b0 z" -b0 &# -0'# -b0 )# -b0 *# -b0 +# -0,# -b0 .# -b0 /# -b0 5# -06# -b0 8# -b0 9# -0a# -b0 c# -b0 d# 04$ 05$ +16$ b0 7$ b0 8$ +1?$ b1111 R$ b1001000110100010101100111100000010010001101000101011010000110 S$ b1111 ]$ +1P& b1111 c& b1001000110100010101100111100000010010001101000101011010000110 d& b1111 n& @@ -39602,11 +39540,17 @@ b0 T( b0 U( b0 V( 0^( +1_( b0 `( b0 a( +1f( +1m( +1t( 0z( +1{( b0 |( b0 }( +1$) b0 0) b0 1) b0 <) @@ -39667,10 +39611,16 @@ b0 7, b0 8, b0 t, 0u, +1v, b0 w, b0 x, +1}, +1&- +1-- +14- 09- 0:- +1;- b0 <- b0 =- b0 G- @@ -39751,6 +39701,7 @@ b0 -0 b1111 /0 b1001000110100010101100111100000010010001101000101011010000110 00 b1111 :0 +1H0 b1111 K0 b1001000110100010101100111100000010010001101000101011010000110 L0 b1111 V0 @@ -39767,6 +39718,7 @@ b0 %1 b0 )1 b1111 .1 b1001000110100010101100111100000010010001101000101011010000110 01 +1:1 b1111 =1 b1001000110100010101100111100000010010001101000101011010000110 >1 b1111 H1 @@ -39795,15 +39747,33 @@ b1111 l2 b1001000110100010101100111100000010010001101000101011010000110 n2 b0 w2 0x2 +1y2 +1}2 +1#3 b1111 %3 +1'3 +1,3 b0 /3 +113 +153 +193 b1111 ;3 +1=3 +1B3 b1110 E3 +1G3 b1001000110100010101100111100000010010001101000101011010000101 H3 +1S3 +1_3 b1111 i3 +1k3 b1001000110100010101100111100000010010001101000101011010000110 l3 b1110 ~3 +1"4 +1.4 +1:4 b1111 D4 +1F4 sHdlNone\x20(0) Y4 b0 ]4 b0 ^4 @@ -39964,6 +39934,7 @@ b111001 6@ b1000001111000 =@ b1001000110100010101100111100000010010001101000101011010000101 >@ b1111 Y@ +1Z@ b1111 ]@ b1001000110100010101100111100000010010001101000101011010000110 ^@ b1111 h@ @@ -40004,6 +39975,7 @@ b1001000110100010101100111100000010010001101000101011010000110 )C b1001000110100010101100111100000010010001101000101011010000101 CC b1001000110100010101100111100000010010001101000101011010000110 EC b1001000110100010101100111100000010010001101000101011010000110 OC +1fC b1111 iC b1001000110100010101100111100000010010001101000101011010000110 jC b1111 tC @@ -40020,15 +39992,18 @@ b0 CD b0 GD b1111 LD b1001000110100010101100111100000010010001101000101011010000110 ND +1XD sHdlNone\x20(0) ]D b0 ^D 0_D +1oD 05E 08E 0;E 0>E sHdlNone\x20(0) AE b0 BE +1CE sHdlNone\x20(0) HE b0 IE 0JE @@ -40110,6 +40085,7 @@ b0 ]G b0 ^G b0 _G b0 dG +1gG b1111 jG b1001000110100010101100111100000010010001101000101011010000110 kG b1111 uG @@ -40131,6 +40107,7 @@ b0 BH b0 GH b0 HH b1111 MH +1YH b1111 \H b1001000110100010101100111100000010010001101000101011010000110 ]H b1111 gH @@ -40161,19 +40138,37 @@ b111010 fI b1000001111100 mI b1111 -J b0 8J +1:J b0 J +1BJ b1111 DJ +1FJ +1KJ b0 NJ 0OJ +1PJ b0 RJ 0SJ +1TJ 0UJ +1XJ b1111 ZJ +1\J +1aJ b1110 dJ +1fJ +1rJ +1~J b1111 *K +1,K b1001000110100010101100111100000010010001101000101011010000110 -K b1110 ?K +1AK +1MK +1YK b1111 cK +1eK sHdlNone\x20(0) xK sAddSub\x20(0) zK b0 |K @@ -40353,6 +40348,7 @@ b1111 TW b111010 UW b1000001111100 \W b1111 xW +1yW b1111 |W b1001000110100010101100111100000010010001101000101011010000110 }W b1111 )X @@ -40389,6 +40385,7 @@ b111010 hY b1111 sY b111010 tY b1000001111100 {Y +1'[ b1111 *[ b1001000110100010101100111100000010010001101000101011010000110 +[ b1111 5[ @@ -40410,15 +40407,18 @@ b0 `[ b0 e[ b0 f[ b1111 k[ +1w[ sHdlNone\x20(0) |[ b0 }[ 0~[ +10\ 0T\ 0W\ 0Z\ 0]\ sHdlNone\x20(0) `\ b0 a\ +1b\ sHdlNone\x20(0) g\ b0 h\ 0i\ @@ -40659,7 +40659,19 @@ b0 yi 1/$ 16$ 1?$ +sHdlNone\x20(0) Q$ +b0 R$ +b0 S$ +0Y$ +sHdlNone\x20(0) \$ +b0 ]$ 1P& +sHdlNone\x20(0) b& +b0 c& +b0 d& +0j& +sHdlNone\x20(0) m& +b0 n& 1_( 1f( 1m( @@ -40672,72 +40684,13 @@ b0 yi 1-- 14- 1;- -1H0 -1:1 -1y2 -1}2 -1#3 -1'3 -1,3 -113 -153 -193 -1=3 -1B3 -1G3 -1S3 -1_3 -1k3 -1"4 -1.4 -1:4 -1F4 -1Z@ -1fC -1XD -1CE -1gG -1YH -1:J -1>J -1BJ -1FJ -1KJ -1PJ -1TJ -1XJ -1\J -1aJ -1fJ -1rJ -1~J -1,K -1AK -1MK -1YK -1eK -1yW -1'[ -1w[ -1b\ -sHdlNone\x20(0) Q$ -b0 R$ -b0 S$ -0Y$ -sHdlNone\x20(0) \$ -b0 ]$ -sHdlNone\x20(0) b& -b0 c& -b0 d& -0j& -sHdlNone\x20(0) m& -b0 n& sHdlNone\x20(0) .0 b0 /0 b0 00 060 sHdlNone\x20(0) 90 b0 :0 +1H0 sHdlNone\x20(0) J0 b0 K0 b0 L0 @@ -40748,6 +40701,7 @@ sHdlNone\x20(0) -1 b0 .1 b0 01 061 +1:1 sHdlNone\x20(0) <1 b0 =1 b0 >1 @@ -40775,21 +40729,39 @@ sHdlNone\x20(0) k2 b0 l2 b0 n2 0t2 +1y2 +1}2 +1#3 b0 %3 0&3 +1'3 +1,3 +113 +153 +193 b0 ;3 0<3 +1=3 +1B3 b0 E3 0F3 +1G3 b0 H3 0N3 +1S3 +1_3 b0 i3 0j3 +1k3 b0 l3 0r3 b0 ~3 +1"4 +1.4 +1:4 b0 D4 0E4 +1F4 sHdlNone\x20(0) #5 b0 '5 b0 (5 @@ -40939,6 +40911,7 @@ b0 =@ b0 >@ 0D@ b0 Y@ +1Z@ sHdlNone\x20(0) \@ b0 ]@ b0 ^@ @@ -40997,6 +40970,7 @@ b0 OC 0\C 0cC 1dC +1fC sHdlNone\x20(0) hC b0 iC b0 jC @@ -41007,6 +40981,9 @@ sHdlNone\x20(0) KD b0 LD b0 ND 0TD +1XD +1CE +1gG sHdlNone\x20(0) iG b0 jG b0 kG @@ -41015,6 +40992,7 @@ sHdlNone\x20(0) tG b0 uG sHdlNone\x20(0) LH b0 MH +1YH sHdlNone\x20(0) [H b0 \H b0 ]H @@ -41044,24 +41022,42 @@ b0 wI 0}I sHdlNone\x20(0) ,J b0 -J +1:J +1>J +1BJ b0 DJ 0EJ +1FJ +1KJ +1PJ +1TJ +1XJ b0 ZJ 0[J +1\J +1aJ b0 dJ +1fJ b0 pJ +1rJ +1~J b0 *K 0+K +1,K b0 -K 03K b0 ?K 0@K +1AK b0 KK 0LK +1MK b0 NK 0TK +1YK b0 cK 0dK +1eK sHdlNone\x20(0) BL sAddSub\x20(0) DL b0 FL @@ -41267,6 +41263,7 @@ b0 \W b0 fW 0lW b0 xW +1yW sHdlNone\x20(0) {W b0 |W b0 }W @@ -41317,6 +41314,7 @@ b0 'Z 0-Z 0;Z 0aZ +1'[ sHdlNone\x20(0) )[ b0 *[ b0 +[ @@ -41325,6 +41323,8 @@ sHdlNone\x20(0) 4[ b0 5[ sHdlNone\x20(0) j[ b0 k[ +1w[ +1b\ #18000000 0! b1000010001000 p diff --git a/crates/cpu/tests/next_pc.rs b/crates/cpu/tests/next_pc.rs new file mode 100644 index 0000000..28c78e0 --- /dev/null +++ b/crates/cpu/tests/next_pc.rs @@ -0,0 +1,45 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +// See Notices.txt for copyright information + +use cpu::{ + config::{CpuConfig, UnitConfig}, + next_pc::next_pc, + unit::UnitKind, +}; +use fayalite::{prelude::*, sim::vcd::VcdWriterDecls, util::RcWriter}; +use std::num::NonZeroUsize; + +#[hdl] +#[test] +fn test_next_pc() { + let _n = SourceLocation::normalize_files_for_tests(); + let mut config = CpuConfig::new( + vec![ + UnitConfig::new(UnitKind::AluBranch), + UnitConfig::new(UnitKind::AluBranch), + ], + NonZeroUsize::new(20).unwrap(), + ); + config.fetch_width = NonZeroUsize::new(2).unwrap(); + let m = next_pc(PhantomConst::new_sized(config)); + let mut sim = Simulation::new(m); + let mut writer = RcWriter::default(); + sim.add_trace_writer(VcdWriterDecls::new(writer.clone())); + let to_fetch = sim.io().to_fetch; + sim.write_clock(sim.io().cd.clk, false); + sim.write_reset(sim.io().cd.rst, true); + sim.write_bool(to_fetch.inner.ready, true); + for _cycle in 0..300 { + sim.advance_time(SimDuration::from_nanos(500)); + sim.write_clock(sim.io().cd.clk, true); + sim.advance_time(SimDuration::from_nanos(500)); + sim.write_clock(sim.io().cd.clk, false); + sim.write_reset(sim.io().cd.rst, false); + } + // FIXME: vcd is just whatever next_pc does now, which isn't known to be correct + let vcd = String::from_utf8(writer.take()).unwrap(); + println!("####### VCD:\n{vcd}\n#######"); + if vcd != include_str!("expected/next_pc.vcd") { + panic!(); + } +} diff --git a/crates/cpu/tests/reg_alloc.rs b/crates/cpu/tests/reg_alloc.rs index f9a292c..18c84f4 100644 --- a/crates/cpu/tests/reg_alloc.rs +++ b/crates/cpu/tests/reg_alloc.rs @@ -59,7 +59,7 @@ fn test_reg_alloc() { [HdlSome(()), HdlNone()], }, [0u8; 2], - 0x12345678u32.cast_to_static(), + 0x12345678u32.cast_to_static::>(), OutputIntegerMode.DupLow32(), false, false, @@ -81,7 +81,7 @@ fn test_reg_alloc() { [HdlSome(()), HdlNone()], }, [1u8, 0, 0], - 1.cast_to_static(), + 1.cast_to_static::>(), OutputIntegerMode.Full64(), false, false, @@ -99,7 +99,7 @@ fn test_reg_alloc() { flag_regs: [HdlNone(), HdlSome(())], }, [2u8, 4u8], - 0.cast_to_static(), + 0.cast_to_static::>(), OutputIntegerMode.Full64(), 0b0110_hdl_u4, ),