diff --git a/crates/cpu/src/decoder/simple_power_isa.rs b/crates/cpu/src/decoder/simple_power_isa.rs index 44622b2..dcb85d1 100644 --- a/crates/cpu/src/decoder/simple_power_isa.rs +++ b/crates/cpu/src/decoder/simple_power_isa.rs @@ -1,7 +1,9 @@ // SPDX-License-Identifier: LGPL-3.0-or-later // See Notices.txt for copyright information -use crate::instruction::{AddSubMOp, MOpDestReg, MOpRegNum, OutputIntegerMode}; +use crate::instruction::{ + AddSubMOp, CompareMOp, CompareMode, MOpDestReg, MOpRegNum, OutputIntegerMode, +}; use crate::powerisa_instructions_xml::{ InstructionBitFieldName, InstructionBitFieldsInner, TextLineItem, }; @@ -177,6 +179,8 @@ macro_rules! impl_fields { } impl_fields! { + #[name = "BF"] + struct FieldBF(FieldCrf); #[name = "RA"] struct FieldRA(FieldGpr); #[name = "RB"] @@ -189,12 +193,16 @@ impl_fields! { struct FieldSi0(SInt<18>); #[name = "si1"] struct FieldSi1(UInt<16>); + #[name = "UI"] + struct FieldUI(UInt<16>); #[name = "d0"] struct FieldAddPcISD0(SInt<10>); #[name = "d1"] struct FieldAddPcISD1(UInt<5>); #[name = "d2"] struct FieldAddPcISD2(UInt<1>); + #[name = "L"] + struct FieldL(Bool); #[name = "OE"] struct FieldOE(Bool); #[name = "R"] @@ -203,11 +211,18 @@ impl_fields! { struct FieldRc(Bool); } +/// general-purpose register #[hdl] struct FieldGpr { reg_num: UInt<5>, } +/// condition register field -- a 4-bit field of the condition register +#[hdl] +struct FieldCrf { + reg_num: UInt<3>, +} + fn gpr(this: impl ToExpr) -> Expr { MOpRegNum::power_isa_gpr_reg(this.to_expr().reg_num) } @@ -216,6 +231,10 @@ fn gpr_or_zero(this: impl ToExpr) -> Expr { MOpRegNum::power_isa_gpr_or_zero_reg(this.to_expr().reg_num) } +fn crf(this: impl ToExpr) -> Expr { + MOpRegNum::power_isa_cr_reg(this.to_expr().reg_num) +} + impl DecodeState { fn form(&self) -> &'static str { let mut title_words = self @@ -839,6 +858,172 @@ impl DecodeState { }, ); } + /// for `cmpi` + #[hdl] + fn decode_cmpi(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldL(l), FieldRA(ra), FieldSI(si))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + #[hdl] + let compare_mode = wire(); + #[hdl] + if l { + connect(compare_mode, CompareMode.S64()); + } else { + connect(compare_mode, CompareMode.S32()); + } + connect( + this.output[0], + CompareMOp::compare_i( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value], + si.cast_to_static::>(), + OutputIntegerMode.Full64(), + compare_mode, + ), + ); + }); + } + /// for `cmp` + #[hdl] + fn decode_cmp(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldL(l), FieldRA(ra), FieldRB(rb))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + #[hdl] + let compare_mode = wire(); + #[hdl] + if l { + connect(compare_mode, CompareMode.S64()); + } else { + connect(compare_mode, CompareMode.S32()); + } + connect( + this.output[0], + CompareMOp::compare( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value, gpr(rb).value], + 0.cast_to_static::>(), + OutputIntegerMode.Full64(), + compare_mode, + ), + ); + }); + } + /// for `cmpli` + #[hdl] + fn decode_cmpli(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldL(l), FieldRA(ra), FieldUI(ui))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + #[hdl] + let compare_mode = wire(); + #[hdl] + if l { + connect(compare_mode, CompareMode.U64()); + } else { + connect(compare_mode, CompareMode.U32()); + } + connect( + this.output[0], + CompareMOp::compare_i( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value], + ui.cast_to_static::>(), + OutputIntegerMode.Full64(), + compare_mode, + ), + ); + }); + } + /// for `cmpl` + #[hdl] + fn decode_cmpl(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldL(l), FieldRA(ra), FieldRB(rb))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + #[hdl] + let compare_mode = wire(); + #[hdl] + if l { + connect(compare_mode, CompareMode.U64()); + } else { + connect(compare_mode, CompareMode.U32()); + } + connect( + this.output[0], + CompareMOp::compare( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value, gpr(rb).value], + 0.cast_to_static::>(), + OutputIntegerMode.Full64(), + compare_mode, + ), + ); + }); + } + /// for `cmprb` + #[hdl] + fn decode_cmprb(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldL(l), FieldRA(ra), FieldRB(rb))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + #[hdl] + let compare_mode = wire(); + #[hdl] + if l { + connect(compare_mode, CompareMode.CmpRBTwo()); + } else { + connect(compare_mode, CompareMode.CmpRBOne()); + } + connect( + this.output[0], + CompareMOp::compare( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value, gpr(rb).value], + 0.cast_to_static::>(), + OutputIntegerMode.Full64(), + compare_mode, + ), + ); + }); + } + /// for `cmpeqb` + #[hdl] + fn decode_cmpeqb(&mut self) { + self.decode_scope(|this, (FieldBF(bf), FieldRA(ra), FieldRB(rb))| { + // TODO: handle SO propagation + connect( + ArrayVec::len(this.output), + 1usize.cast_to_static::>(), + ); + connect( + this.output[0], + CompareMOp::compare( + MOpDestReg::new([crf(bf)], []), + [gpr(ra).value, gpr(rb).value], + 0.cast_to_static::>(), + OutputIntegerMode.Full64(), + CompareMode.CmpEqB(), + ), + ); + }); + } } type DecodeFn = fn(&mut DecodeState); @@ -982,12 +1167,12 @@ const DECODE_FNS: &[(&[&str], DecodeFn)] = &[ // TODO }, ), - (&["cmpi", "cmp", "cmpli", "cmpl"], |_state| { - // TODO - }), - (&["cmprb", "cmpeqb"], |_state| { - // TODO - }), + (&["cmpi"], DecodeState::decode_cmpi), + (&["cmp"], DecodeState::decode_cmp), + (&["cmpli"], DecodeState::decode_cmpli), + (&["cmpl"], DecodeState::decode_cmpl), + (&["cmprb"], DecodeState::decode_cmprb), + (&["cmpeqb"], DecodeState::decode_cmpeqb), (&["twi", "tw", "tdi", "td"], |_state| { // TODO }), diff --git a/crates/cpu/src/instruction.rs b/crates/cpu/src/instruction.rs index 6f6ab75..57e4220 100644 --- a/crates/cpu/src/instruction.rs +++ b/crates/cpu/src/instruction.rs @@ -736,6 +736,120 @@ impl LogicalMOp { } } +#[hdl] +pub enum CompareMode { + U64, + S64, + U32, + S32, + U16, + S16, + U8, + S8, + /// compare one ranged byte -- like the PowerISA `cmprb _, 0, ..` instruction + CmpRBOne, + /// compare two ranged bytes -- like the PowerISA `cmprb _, 1, ..` instruction + CmpRBTwo, + /// like the PowerISA `cmpeqb` instruction + CmpEqB, +} + +impl HdlPartialEqImpl for CompareMode { + #[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()) + } +} + +common_mop_struct! { + #[mapped( CompareMOp)] + #[hdl(cmp_eq)] + pub struct CompareMOp { + #[common] + pub alu_common: AluCommonMOp, + pub compare_mode: CompareMode, + } +} + +impl CompareMOp> { + #[hdl] + pub fn compare( + dest: impl ToExpr, + src: impl ToExpr, 2>>, + imm: impl ToExpr>, + output_integer_mode: impl ToExpr, + compare_mode: impl ToExpr, + ) -> Expr + where + Self: MOpInto, + { + MOpInto::mop_into( + #[hdl] + CompareMOp { + alu_common: #[hdl] + AluCommonMOp { + common: CommonMOp::new(0_hdl_u0, dest, src, Expr::as_dyn_int(imm.to_expr())), + output_integer_mode, + }, + compare_mode, + }, + ) + } +} + +impl CompareMOp> { + #[hdl] + pub fn compare_i( + dest: impl ToExpr, + src: impl ToExpr, 1>>, + imm: impl ToExpr>, + output_integer_mode: impl ToExpr, + compare_mode: impl ToExpr, + ) -> Expr + where + Self: MOpInto, + { + MOpInto::mop_into( + #[hdl] + CompareMOp { + alu_common: #[hdl] + AluCommonMOp { + common: CommonMOp::new(0_hdl_u0, dest, src, Expr::as_dyn_int(imm.to_expr())), + output_integer_mode, + }, + compare_mode, + }, + ) + } +} + common_mop_struct! { #[mapped( BranchMOp)] #[hdl(cmp_eq)] @@ -753,6 +867,8 @@ mop_enum! { AddSub(AddSubMOp>), AddSubI(AddSubMOp>), Logical(LogicalMOp), + Compare(CompareMOp>), + CompareI(CompareMOp>), } } diff --git a/crates/cpu/src/instruction/power_isa.rs b/crates/cpu/src/instruction/power_isa.rs index 774e76c..cd105c3 100644 --- a/crates/cpu/src/instruction/power_isa.rs +++ b/crates/cpu/src/instruction/power_isa.rs @@ -94,7 +94,7 @@ impl MOpRegNum { } else { connect_any( power_isa_cr_reg.value, - Self::POWER_ISA_CR_1_THRU_7_REG_NUMS.start + field_num, + Self::POWER_ISA_CR_1_THRU_7_REG_NUMS.start - 1 + field_num, ); } power_isa_cr_reg diff --git a/crates/cpu/src/unit/alu_branch.rs b/crates/cpu/src/unit/alu_branch.rs index 8f20592..f9ad6d3 100644 --- a/crates/cpu/src/unit/alu_branch.rs +++ b/crates/cpu/src/unit/alu_branch.rs @@ -4,8 +4,8 @@ use crate::{ config::CpuConfig, instruction::{ - AddSubMOp, AluBranchMOp, AluCommonMOp, COMMON_MOP_SRC_LEN, CommonMOp, LogicalMOp, MOpTrait, - OutputIntegerMode, RenamedMOp, UnitOutRegNum, + AddSubMOp, AluBranchMOp, AluCommonMOp, COMMON_MOP_SRC_LEN, CommonMOp, CompareMOp, + LogicalMOp, MOpTrait, OutputIntegerMode, RenamedMOp, UnitOutRegNum, }, register::{FlagsMode, PRegFlagsPowerISA, PRegFlagsX86, PRegValue}, unit::{ @@ -244,6 +244,20 @@ fn logical( } } +#[hdl] +fn compare( + mop: Expr, DynSize, SrcCount>>, + flags_mode: Expr, + src_values: Expr>, +) -> Expr> { + // TODO: finish + #[hdl] + UnitResultCompleted::<_> { + value: PRegValue::zeroed(), + extra_out: (), + } +} + #[hdl_module] pub fn alu_branch(config: &CpuConfig, unit_index: usize) { #[hdl] @@ -336,6 +350,40 @@ pub fn alu_branch(config: &CpuConfig, unit_index: usize) { }, ), ), + AluBranchMOp::<_, _>::Compare(mop) => connect( + unit_base.execute_end, + HdlSome( + #[hdl] + ExecuteEnd::<_, _> { + unit_output: #[hdl] + UnitOutput::<_, _> { + which: MOpTrait::dest_reg(mop), + result: UnitResult[()].Completed(compare( + mop, + global_state.flags_mode, + src_values, + )), + }, + }, + ), + ), + AluBranchMOp::<_, _>::CompareI(mop) => connect( + unit_base.execute_end, + HdlSome( + #[hdl] + ExecuteEnd::<_, _> { + unit_output: #[hdl] + UnitOutput::<_, _> { + which: MOpTrait::dest_reg(mop), + result: UnitResult[()].Completed(compare( + mop, + global_state.flags_mode, + src_values, + )), + }, + }, + ), + ), } } } diff --git a/crates/cpu/tests/expected/decode_one_insn.vcd b/crates/cpu/tests/expected/decode_one_insn.vcd index 12ff601..d3a2ccf 100644 --- a/crates/cpu/tests/expected/decode_one_insn.vcd +++ b/crates/cpu/tests/expected/decode_one_insn.vcd @@ -132,10 +132,10 @@ $var string 1 K output_integer_mode $end $upscope $end $var wire 4 L lut $end $upscope $end -$upscope $end -$scope struct TransformedMove $end +$scope struct Compare $end +$scope struct alu_common $end $scope struct common $end -$var wire 2 M prefix_pad $end +$var string 0 M prefix_pad $end $scope struct dest $end $scope struct normal_regs $end $scope struct \[0] $end @@ -168,313 +168,473 @@ $var wire 1 V imm_sign $end $scope struct _phantom $end $upscope $end $upscope $end +$var string 1 W output_integer_mode $end $upscope $end -$scope struct LoadStore $end -$var string 1 W \$tag $end -$scope struct Load $end -$var wire 1 X prefix_pad $end +$var string 1 X compare_mode $end +$upscope $end +$scope struct CompareI $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 Y prefix_pad $end $scope struct dest $end $scope struct normal_regs $end $scope struct \[0] $end -$var wire 8 Y value $end +$var wire 8 Z value $end $upscope $end $scope struct \[1] $end -$var wire 8 Z value $end +$var wire 8 [ value $end $upscope $end $upscope $end $scope struct flag_regs $end $scope struct \[0] $end -$var string 1 [ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct \[1] $end $var string 1 \ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$upscope $end -$upscope $end -$scope struct src $end -$var wire 8 ] \[0] $end -$var wire 8 ^ \[1] $end -$var wire 8 _ \[2] $end -$upscope $end -$var wire 25 ` imm_low $end -$var wire 1 a imm_sign $end -$scope struct _phantom $end -$upscope $end -$upscope $end -$scope struct Store $end -$var wire 1 b prefix_pad $end -$scope struct dest $end -$scope struct normal_regs $end -$scope struct \[0] $end -$var wire 8 c value $end -$upscope $end $scope struct \[1] $end -$var wire 8 d value $end -$upscope $end -$upscope $end -$scope struct flag_regs $end -$scope struct \[0] $end -$var string 1 e \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct \[1] $end -$var string 1 f \$tag $end +$var string 1 ] \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $upscope $end $upscope $end $scope struct src $end -$var wire 8 g \[0] $end -$var wire 8 h \[1] $end -$var wire 8 i \[2] $end +$var wire 8 ^ \[0] $end +$var wire 8 _ \[1] $end +$var wire 8 ` \[2] $end $upscope $end -$var wire 25 j imm_low $end -$var wire 1 k imm_sign $end +$var wire 25 a imm_low $end +$var wire 1 b imm_sign $end $scope struct _phantom $end $upscope $end $upscope $end +$var string 1 c output_integer_mode $end $upscope $end -$upscope $end -$scope struct \[1] $end -$var string 1 l \$tag $end -$scope struct AluBranch $end -$var string 1 m \$tag $end -$scope struct AddSub $end -$scope struct alu_common $end -$scope struct common $end -$var string 0 n prefix_pad $end -$scope struct dest $end -$scope struct normal_regs $end -$scope struct \[0] $end -$var wire 8 o value $end -$upscope $end -$scope struct \[1] $end -$var wire 8 p value $end -$upscope $end -$upscope $end -$scope struct flag_regs $end -$scope struct \[0] $end -$var string 1 q \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct \[1] $end -$var string 1 r \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$upscope $end -$upscope $end -$scope struct src $end -$var wire 8 s \[0] $end -$var wire 8 t \[1] $end -$var wire 8 u \[2] $end -$upscope $end -$var wire 25 v imm_low $end -$var wire 1 w imm_sign $end -$scope struct _phantom $end -$upscope $end -$upscope $end -$var string 1 x output_integer_mode $end -$upscope $end -$var wire 1 y invert_src0 $end -$var wire 1 z src1_is_carry_in $end -$var wire 1 { invert_carry_in $end -$var wire 1 | add_pc $end -$upscope $end -$scope struct AddSubI $end -$scope struct alu_common $end -$scope struct common $end -$var string 0 } prefix_pad $end -$scope struct dest $end -$scope struct normal_regs $end -$scope struct \[0] $end -$var wire 8 ~ value $end -$upscope $end -$scope struct \[1] $end -$var wire 8 !" value $end -$upscope $end -$upscope $end -$scope struct flag_regs $end -$scope struct \[0] $end -$var string 1 "" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct \[1] $end -$var string 1 #" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$upscope $end -$upscope $end -$scope struct src $end -$var wire 8 $" \[0] $end -$var wire 8 %" \[1] $end -$var wire 8 &" \[2] $end -$upscope $end -$var wire 25 '" imm_low $end -$var wire 1 (" imm_sign $end -$scope struct _phantom $end -$upscope $end -$upscope $end -$var string 1 )" output_integer_mode $end -$upscope $end -$var wire 1 *" invert_src0 $end -$var wire 1 +" src1_is_carry_in $end -$var wire 1 ," invert_carry_in $end -$var wire 1 -" add_pc $end -$upscope $end -$scope struct Logical $end -$scope struct alu_common $end -$scope struct common $end -$var string 0 ." prefix_pad $end -$scope struct dest $end -$scope struct normal_regs $end -$scope struct \[0] $end -$var wire 8 /" value $end -$upscope $end -$scope struct \[1] $end -$var wire 8 0" value $end -$upscope $end -$upscope $end -$scope struct flag_regs $end -$scope struct \[0] $end -$var string 1 1" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct \[1] $end -$var string 1 2" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$upscope $end -$upscope $end -$scope struct src $end -$var wire 8 3" \[0] $end -$var wire 8 4" \[1] $end -$var wire 8 5" \[2] $end -$upscope $end -$var wire 25 6" imm_low $end -$var wire 1 7" imm_sign $end -$scope struct _phantom $end -$upscope $end -$upscope $end -$var string 1 8" output_integer_mode $end -$upscope $end -$var wire 4 9" lut $end +$var string 1 d compare_mode $end $upscope $end $upscope $end $scope struct TransformedMove $end $scope struct common $end -$var wire 2 :" prefix_pad $end +$var wire 2 e prefix_pad $end $scope struct dest $end $scope struct normal_regs $end $scope struct \[0] $end -$var wire 8 ;" value $end +$var wire 8 f value $end $upscope $end $scope struct \[1] $end -$var wire 8 <" value $end +$var wire 8 g value $end $upscope $end $upscope $end $scope struct flag_regs $end $scope struct \[0] $end -$var string 1 =" \$tag $end +$var string 1 h \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $scope struct \[1] $end -$var string 1 >" \$tag $end +$var string 1 i \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $upscope $end $upscope $end $scope struct src $end -$var wire 8 ?" \[0] $end -$var wire 8 @" \[1] $end -$var wire 8 A" \[2] $end +$var wire 8 j \[0] $end +$var wire 8 k \[1] $end +$var wire 8 l \[2] $end $upscope $end -$var wire 25 B" imm_low $end -$var wire 1 C" imm_sign $end +$var wire 25 m imm_low $end +$var wire 1 n imm_sign $end $scope struct _phantom $end $upscope $end $upscope $end $upscope $end $scope struct LoadStore $end -$var string 1 D" \$tag $end +$var string 1 o \$tag $end $scope struct Load $end -$var wire 1 E" prefix_pad $end +$var wire 1 p prefix_pad $end $scope struct dest $end $scope struct normal_regs $end $scope struct \[0] $end -$var wire 8 F" value $end +$var wire 8 q value $end $upscope $end $scope struct \[1] $end -$var wire 8 G" value $end +$var wire 8 r value $end $upscope $end $upscope $end $scope struct flag_regs $end $scope struct \[0] $end -$var string 1 H" \$tag $end +$var string 1 s \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $scope struct \[1] $end -$var string 1 I" \$tag $end +$var string 1 t \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $upscope $end $upscope $end $scope struct src $end -$var wire 8 J" \[0] $end -$var wire 8 K" \[1] $end -$var wire 8 L" \[2] $end +$var wire 8 u \[0] $end +$var wire 8 v \[1] $end +$var wire 8 w \[2] $end $upscope $end -$var wire 25 M" imm_low $end -$var wire 1 N" imm_sign $end +$var wire 25 x imm_low $end +$var wire 1 y imm_sign $end $scope struct _phantom $end $upscope $end $upscope $end $scope struct Store $end -$var wire 1 O" prefix_pad $end +$var wire 1 z prefix_pad $end $scope struct dest $end $scope struct normal_regs $end $scope struct \[0] $end -$var wire 8 P" value $end +$var wire 8 { value $end $upscope $end $scope struct \[1] $end -$var wire 8 Q" value $end +$var wire 8 | value $end $upscope $end $upscope $end $scope struct flag_regs $end $scope struct \[0] $end -$var string 1 R" \$tag $end +$var string 1 } \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $scope struct \[1] $end -$var string 1 S" \$tag $end +$var string 1 ~ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end $upscope $end $upscope $end $scope struct src $end -$var wire 8 T" \[0] $end -$var wire 8 U" \[1] $end -$var wire 8 V" \[2] $end +$var wire 8 !" \[0] $end +$var wire 8 "" \[1] $end +$var wire 8 #" \[2] $end $upscope $end -$var wire 25 W" imm_low $end -$var wire 1 X" imm_sign $end +$var wire 25 $" imm_low $end +$var wire 1 %" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 &" \$tag $end +$scope struct AluBranch $end +$var string 1 '" \$tag $end +$scope struct AddSub $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 (" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 )" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 *" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 +" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 ," \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 -" \[0] $end +$var wire 8 ." \[1] $end +$var wire 8 /" \[2] $end +$upscope $end +$var wire 25 0" imm_low $end +$var wire 1 1" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$var string 1 2" output_integer_mode $end +$upscope $end +$var wire 1 3" invert_src0 $end +$var wire 1 4" src1_is_carry_in $end +$var wire 1 5" invert_carry_in $end +$var wire 1 6" add_pc $end +$upscope $end +$scope struct AddSubI $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 7" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 8" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 9" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 :" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 ;" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 <" \[0] $end +$var wire 8 =" \[1] $end +$var wire 8 >" \[2] $end +$upscope $end +$var wire 25 ?" imm_low $end +$var wire 1 @" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$var string 1 A" output_integer_mode $end +$upscope $end +$var wire 1 B" invert_src0 $end +$var wire 1 C" src1_is_carry_in $end +$var wire 1 D" invert_carry_in $end +$var wire 1 E" add_pc $end +$upscope $end +$scope struct Logical $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 F" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 G" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 H" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 I" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 J" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 K" \[0] $end +$var wire 8 L" \[1] $end +$var wire 8 M" \[2] $end +$upscope $end +$var wire 25 N" imm_low $end +$var wire 1 O" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$var string 1 P" output_integer_mode $end +$upscope $end +$var wire 4 Q" lut $end +$upscope $end +$scope struct Compare $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 R" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 S" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 T" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 U" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 V" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 W" \[0] $end +$var wire 8 X" \[1] $end +$var wire 8 Y" \[2] $end +$upscope $end +$var wire 25 Z" imm_low $end +$var wire 1 [" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$var string 1 \" output_integer_mode $end +$upscope $end +$var string 1 ]" compare_mode $end +$upscope $end +$scope struct CompareI $end +$scope struct alu_common $end +$scope struct common $end +$var string 0 ^" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 _" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 `" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 a" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 b" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 c" \[0] $end +$var wire 8 d" \[1] $end +$var wire 8 e" \[2] $end +$upscope $end +$var wire 25 f" imm_low $end +$var wire 1 g" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$var string 1 h" output_integer_mode $end +$upscope $end +$var string 1 i" compare_mode $end +$upscope $end +$upscope $end +$scope struct TransformedMove $end +$scope struct common $end +$var wire 2 j" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 k" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 l" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 m" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 n" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 o" \[0] $end +$var wire 8 p" \[1] $end +$var wire 8 q" \[2] $end +$upscope $end +$var wire 25 r" imm_low $end +$var wire 1 s" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$upscope $end +$scope struct LoadStore $end +$var string 1 t" \$tag $end +$scope struct Load $end +$var wire 1 u" prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 v" value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 w" value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 x" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 y" \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 z" \[0] $end +$var wire 8 {" \[1] $end +$var wire 8 |" \[2] $end +$upscope $end +$var wire 25 }" imm_low $end +$var wire 1 ~" imm_sign $end +$scope struct _phantom $end +$upscope $end +$upscope $end +$scope struct Store $end +$var wire 1 !# prefix_pad $end +$scope struct dest $end +$scope struct normal_regs $end +$scope struct \[0] $end +$var wire 8 "# value $end +$upscope $end +$scope struct \[1] $end +$var wire 8 ## value $end +$upscope $end +$upscope $end +$scope struct flag_regs $end +$scope struct \[0] $end +$var string 1 $# \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct \[1] $end +$var string 1 %# \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$upscope $end +$upscope $end +$scope struct src $end +$var wire 8 &# \[0] $end +$var wire 8 '# \[1] $end +$var wire 8 (# \[2] $end +$upscope $end +$var wire 25 )# imm_low $end +$var wire 1 *# imm_sign $end $scope struct _phantom $end $upscope $end $upscope $end @@ -482,617 +642,663 @@ $upscope $end $upscope $end $upscope $end $scope struct len $end -$var wire 2 Y" value $end -$var string 1 Z" range $end +$var wire 2 +# value $end +$var string 1 ,# range $end $upscope $end $upscope $end -$var wire 1 [" is_illegal $end -$var wire 32 \" first_input $end +$var wire 1 -# is_illegal $end +$var wire 32 .# first_input $end $scope struct second_input $end -$var string 1 ]" \$tag $end -$var wire 32 ^" HdlSome $end -$upscope $end -$var wire 1 _" second_input_used $end -$var wire 16 `" addi_SI $end -$var wire 5 a" addi_RA $end -$var wire 5 b" addi_RT $end -$scope struct power_isa_gpr_or_zero_reg $end -$var wire 8 c" value $end -$upscope $end -$var wire 18 d" paddi_si0 $end -$var wire 1 e" paddi_R $end -$var wire 16 f" paddi_si1 $end -$var wire 5 g" paddi_RA $end -$var wire 5 h" paddi_RT $end -$scope struct power_isa_gpr_or_zero_reg_2 $end -$var wire 8 i" value $end -$upscope $end -$var wire 16 j" addis_SI $end -$var wire 5 k" addis_RA $end -$var wire 5 l" addis_RT $end -$scope struct power_isa_gpr_or_zero_reg_3 $end -$var wire 8 m" value $end -$upscope $end -$var wire 1 n" addpcis_d2 $end -$var wire 10 o" addpcis_d0 $end -$var wire 5 p" addpcis_d1 $end -$var wire 5 q" addpcis_RT $end -$var wire 5 r" add_RB $end -$var wire 5 s" add_RA $end -$var wire 5 t" add_RT $end -$scope struct flag_reg_0 $end -$var string 1 u" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1 $end -$var string 1 v" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 w" add__RB $end -$var wire 5 x" add__RA $end -$var wire 5 y" add__RT $end -$scope struct flag_reg_0_2 $end -$var string 1 z" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_2 $end -$var string 1 {" \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 |" addo_RB $end -$var wire 5 }" addo_RA $end -$var wire 5 ~" addo_RT $end -$scope struct flag_reg_0_3 $end -$var string 1 !# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_3 $end -$var string 1 "# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 ## addo__RB $end -$var wire 5 $# addo__RA $end -$var wire 5 %# addo__RT $end -$scope struct flag_reg_0_4 $end -$var string 1 &# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_4 $end -$var string 1 '# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 16 (# addic_SI $end -$var wire 5 )# addic_RA $end -$var wire 5 *# addic_RT $end -$scope struct flag_reg_1_5 $end -$var string 1 +# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 16 ,# addic__SI $end -$var wire 5 -# addic__RA $end -$var wire 5 .# addic__RT $end -$scope struct flag_reg_1_6 $end $var string 1 /# \$tag $end -$scope struct HdlSome $end +$var wire 32 0# HdlSome $end $upscope $end +$var wire 1 1# second_input_used $end +$var wire 16 2# addi_SI $end +$var wire 5 3# addi_RA $end +$var wire 5 4# addi_RT $end +$scope struct power_isa_gpr_or_zero_reg $end +$var wire 8 5# value $end $upscope $end -$var wire 5 0# subf_RB $end -$var wire 5 1# subf_RA $end -$var wire 5 2# subf_RT $end -$scope struct flag_reg_0_5 $end -$var string 1 3# \$tag $end -$scope struct HdlSome $end +$var wire 18 6# paddi_si0 $end +$var wire 1 7# paddi_R $end +$var wire 16 8# paddi_si1 $end +$var wire 5 9# paddi_RA $end +$var wire 5 :# paddi_RT $end +$scope struct power_isa_gpr_or_zero_reg_2 $end +$var wire 8 ;# value $end $upscope $end +$var wire 16 <# addis_SI $end +$var wire 5 =# addis_RA $end +$var wire 5 ># addis_RT $end +$scope struct power_isa_gpr_or_zero_reg_3 $end +$var wire 8 ?# value $end $upscope $end -$scope struct flag_reg_1_7 $end -$var string 1 4# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 5# subf__RB $end -$var wire 5 6# subf__RA $end -$var wire 5 7# subf__RT $end -$scope struct flag_reg_0_6 $end -$var string 1 8# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_8 $end -$var string 1 9# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 :# subfo_RB $end -$var wire 5 ;# subfo_RA $end -$var wire 5 <# subfo_RT $end -$scope struct flag_reg_0_7 $end -$var string 1 =# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_9 $end -$var string 1 ># \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 ?# subfo__RB $end -$var wire 5 @# subfo__RA $end -$var wire 5 A# subfo__RT $end -$scope struct flag_reg_0_8 $end -$var string 1 B# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_10 $end -$var string 1 C# \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 16 D# subfic_SI $end -$var wire 5 E# subfic_RA $end -$var wire 5 F# subfic_RT $end -$scope struct flag_reg_1_11 $end +$var wire 1 @# addpcis_d2 $end +$var wire 10 A# addpcis_d0 $end +$var wire 5 B# addpcis_d1 $end +$var wire 5 C# addpcis_RT $end +$var wire 5 D# add_RB $end +$var wire 5 E# add_RA $end +$var wire 5 F# add_RT $end +$scope struct flag_reg_0 $end $var string 1 G# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 H# addc_RB $end -$var wire 5 I# addc_RA $end -$var wire 5 J# addc_RT $end -$scope struct flag_reg_0_9 $end -$var string 1 K# \$tag $end +$scope struct flag_reg_1 $end +$var string 1 H# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_12 $end +$var wire 5 I# add__RB $end +$var wire 5 J# add__RA $end +$var wire 5 K# add__RT $end +$scope struct flag_reg_0_2 $end $var string 1 L# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 M# addc__RB $end -$var wire 5 N# addc__RA $end -$var wire 5 O# addc__RT $end -$scope struct flag_reg_0_10 $end -$var string 1 P# \$tag $end +$scope struct flag_reg_1_2 $end +$var string 1 M# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_13 $end +$var wire 5 N# addo_RB $end +$var wire 5 O# addo_RA $end +$var wire 5 P# addo_RT $end +$scope struct flag_reg_0_3 $end $var string 1 Q# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 R# addco_RB $end -$var wire 5 S# addco_RA $end -$var wire 5 T# addco_RT $end -$scope struct flag_reg_0_11 $end -$var string 1 U# \$tag $end +$scope struct flag_reg_1_3 $end +$var string 1 R# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_14 $end +$var wire 5 S# addo__RB $end +$var wire 5 T# addo__RA $end +$var wire 5 U# addo__RT $end +$scope struct flag_reg_0_4 $end $var string 1 V# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 W# addco__RB $end -$var wire 5 X# addco__RA $end -$var wire 5 Y# addco__RT $end -$scope struct flag_reg_0_12 $end -$var string 1 Z# \$tag $end +$scope struct flag_reg_1_4 $end +$var string 1 W# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_15 $end +$var wire 16 X# addic_SI $end +$var wire 5 Y# addic_RA $end +$var wire 5 Z# addic_RT $end +$scope struct flag_reg_1_5 $end $var string 1 [# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 \# subfc_RB $end -$var wire 5 ]# subfc_RA $end -$var wire 5 ^# subfc_RT $end -$scope struct flag_reg_0_13 $end +$var wire 16 \# addic__SI $end +$var wire 5 ]# addic__RA $end +$var wire 5 ^# addic__RT $end +$scope struct flag_reg_1_6 $end $var string 1 _# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_16 $end -$var string 1 `# \$tag $end +$var wire 5 `# subf_RB $end +$var wire 5 a# subf_RA $end +$var wire 5 b# subf_RT $end +$scope struct flag_reg_0_5 $end +$var string 1 c# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 a# subfc__RB $end -$var wire 5 b# subfc__RA $end -$var wire 5 c# subfc__RT $end -$scope struct flag_reg_0_14 $end +$scope struct flag_reg_1_7 $end $var string 1 d# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_17 $end -$var string 1 e# \$tag $end +$var wire 5 e# subf__RB $end +$var wire 5 f# subf__RA $end +$var wire 5 g# subf__RT $end +$scope struct flag_reg_0_6 $end +$var string 1 h# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 f# subfco_RB $end -$var wire 5 g# subfco_RA $end -$var wire 5 h# subfco_RT $end -$scope struct flag_reg_0_15 $end +$scope struct flag_reg_1_8 $end $var string 1 i# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_18 $end -$var string 1 j# \$tag $end +$var wire 5 j# subfo_RB $end +$var wire 5 k# subfo_RA $end +$var wire 5 l# subfo_RT $end +$scope struct flag_reg_0_7 $end +$var string 1 m# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 k# subfco__RB $end -$var wire 5 l# subfco__RA $end -$var wire 5 m# subfco__RT $end -$scope struct flag_reg_0_16 $end +$scope struct flag_reg_1_9 $end $var string 1 n# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_19 $end -$var string 1 o# \$tag $end +$var wire 5 o# subfo__RB $end +$var wire 5 p# subfo__RA $end +$var wire 5 q# subfo__RT $end +$scope struct flag_reg_0_8 $end +$var string 1 r# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 p# adde_RB $end -$var wire 5 q# adde_RA $end -$var wire 5 r# adde_RT $end -$scope struct flag_reg_0_17 $end +$scope struct flag_reg_1_10 $end $var string 1 s# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_20 $end -$var string 1 t# \$tag $end +$var wire 16 t# subfic_SI $end +$var wire 5 u# subfic_RA $end +$var wire 5 v# subfic_RT $end +$scope struct flag_reg_1_11 $end +$var string 1 w# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 u# adde__RB $end -$var wire 5 v# adde__RA $end -$var wire 5 w# adde__RT $end -$scope struct flag_reg_0_18 $end -$var string 1 x# \$tag $end +$var wire 5 x# addc_RB $end +$var wire 5 y# addc_RA $end +$var wire 5 z# addc_RT $end +$scope struct flag_reg_0_9 $end +$var string 1 {# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_21 $end -$var string 1 y# \$tag $end +$scope struct flag_reg_1_12 $end +$var string 1 |# \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 z# addeo_RB $end -$var wire 5 {# addeo_RA $end -$var wire 5 |# addeo_RT $end -$scope struct flag_reg_0_19 $end -$var string 1 }# \$tag $end +$var wire 5 }# addc__RB $end +$var wire 5 ~# addc__RA $end +$var wire 5 !$ addc__RT $end +$scope struct flag_reg_0_10 $end +$var string 1 "$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_22 $end -$var string 1 ~# \$tag $end +$scope struct flag_reg_1_13 $end +$var string 1 #$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 !$ addeo__RB $end -$var wire 5 "$ addeo__RA $end -$var wire 5 #$ addeo__RT $end -$scope struct flag_reg_0_20 $end -$var string 1 $$ \$tag $end +$var wire 5 $$ addco_RB $end +$var wire 5 %$ addco_RA $end +$var wire 5 &$ addco_RT $end +$scope struct flag_reg_0_11 $end +$var string 1 '$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_23 $end -$var string 1 %$ \$tag $end +$scope struct flag_reg_1_14 $end +$var string 1 ($ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 &$ subfe_RB $end -$var wire 5 '$ subfe_RA $end -$var wire 5 ($ subfe_RT $end -$scope struct flag_reg_0_21 $end -$var string 1 )$ \$tag $end +$var wire 5 )$ addco__RB $end +$var wire 5 *$ addco__RA $end +$var wire 5 +$ addco__RT $end +$scope struct flag_reg_0_12 $end +$var string 1 ,$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_24 $end -$var string 1 *$ \$tag $end +$scope struct flag_reg_1_15 $end +$var string 1 -$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 +$ subfe__RB $end -$var wire 5 ,$ subfe__RA $end -$var wire 5 -$ subfe__RT $end -$scope struct flag_reg_0_22 $end -$var string 1 .$ \$tag $end +$var wire 5 .$ subfc_RB $end +$var wire 5 /$ subfc_RA $end +$var wire 5 0$ subfc_RT $end +$scope struct flag_reg_0_13 $end +$var string 1 1$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_25 $end -$var string 1 /$ \$tag $end +$scope struct flag_reg_1_16 $end +$var string 1 2$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 0$ subfeo_RB $end -$var wire 5 1$ subfeo_RA $end -$var wire 5 2$ subfeo_RT $end -$scope struct flag_reg_0_23 $end -$var string 1 3$ \$tag $end +$var wire 5 3$ subfc__RB $end +$var wire 5 4$ subfc__RA $end +$var wire 5 5$ subfc__RT $end +$scope struct flag_reg_0_14 $end +$var string 1 6$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_26 $end -$var string 1 4$ \$tag $end +$scope struct flag_reg_1_17 $end +$var string 1 7$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 5$ subfeo__RB $end -$var wire 5 6$ subfeo__RA $end -$var wire 5 7$ subfeo__RT $end -$scope struct flag_reg_0_24 $end -$var string 1 8$ \$tag $end +$var wire 5 8$ subfco_RB $end +$var wire 5 9$ subfco_RA $end +$var wire 5 :$ subfco_RT $end +$scope struct flag_reg_0_15 $end +$var string 1 ;$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_27 $end -$var string 1 9$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 :$ addme_RA $end -$var wire 5 ;$ addme_RT $end -$scope struct flag_reg_0_25 $end +$scope struct flag_reg_1_18 $end $var string 1 <$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_28 $end -$var string 1 =$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 >$ addme__RA $end -$var wire 5 ?$ addme__RT $end -$scope struct flag_reg_0_26 $end +$var wire 5 =$ subfco__RB $end +$var wire 5 >$ subfco__RA $end +$var wire 5 ?$ subfco__RT $end +$scope struct flag_reg_0_16 $end $var string 1 @$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_29 $end +$scope struct flag_reg_1_19 $end $var string 1 A$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 B$ addmeo_RA $end -$var wire 5 C$ addmeo_RT $end -$scope struct flag_reg_0_27 $end -$var string 1 D$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_30 $end +$var wire 5 B$ adde_RB $end +$var wire 5 C$ adde_RA $end +$var wire 5 D$ adde_RT $end +$scope struct flag_reg_0_17 $end $var string 1 E$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 F$ addmeo__RA $end -$var wire 5 G$ addmeo__RT $end -$scope struct flag_reg_0_28 $end -$var string 1 H$ \$tag $end +$scope struct flag_reg_1_20 $end +$var string 1 F$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_31 $end -$var string 1 I$ \$tag $end +$var wire 5 G$ adde__RB $end +$var wire 5 H$ adde__RA $end +$var wire 5 I$ adde__RT $end +$scope struct flag_reg_0_18 $end +$var string 1 J$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 J$ addze_RA $end -$var wire 5 K$ addze_RT $end -$scope struct flag_reg_0_29 $end -$var string 1 L$ \$tag $end +$scope struct flag_reg_1_21 $end +$var string 1 K$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_32 $end -$var string 1 M$ \$tag $end +$var wire 5 L$ addeo_RB $end +$var wire 5 M$ addeo_RA $end +$var wire 5 N$ addeo_RT $end +$scope struct flag_reg_0_19 $end +$var string 1 O$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 N$ addze__RA $end -$var wire 5 O$ addze__RT $end -$scope struct flag_reg_0_30 $end +$scope struct flag_reg_1_22 $end $var string 1 P$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_33 $end -$var string 1 Q$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 R$ addzeo_RA $end -$var wire 5 S$ addzeo_RT $end -$scope struct flag_reg_0_31 $end +$var wire 5 Q$ addeo__RB $end +$var wire 5 R$ addeo__RA $end +$var wire 5 S$ addeo__RT $end +$scope struct flag_reg_0_20 $end $var string 1 T$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_34 $end +$scope struct flag_reg_1_23 $end $var string 1 U$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 V$ addzeo__RA $end -$var wire 5 W$ addzeo__RT $end -$scope struct flag_reg_0_32 $end -$var string 1 X$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$scope struct flag_reg_1_35 $end +$var wire 5 V$ subfe_RB $end +$var wire 5 W$ subfe_RA $end +$var wire 5 X$ subfe_RT $end +$scope struct flag_reg_0_21 $end $var string 1 Y$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 Z$ subfme_RA $end -$var wire 5 [$ subfme_RT $end -$scope struct flag_reg_0_33 $end -$var string 1 \$ \$tag $end +$scope struct flag_reg_1_24 $end +$var string 1 Z$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_36 $end -$var string 1 ]$ \$tag $end +$var wire 5 [$ subfe__RB $end +$var wire 5 \$ subfe__RA $end +$var wire 5 ]$ subfe__RT $end +$scope struct flag_reg_0_22 $end +$var string 1 ^$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 ^$ subfme__RA $end -$var wire 5 _$ subfme__RT $end -$scope struct flag_reg_0_34 $end -$var string 1 `$ \$tag $end +$scope struct flag_reg_1_25 $end +$var string 1 _$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_37 $end -$var string 1 a$ \$tag $end +$var wire 5 `$ subfeo_RB $end +$var wire 5 a$ subfeo_RA $end +$var wire 5 b$ subfeo_RT $end +$scope struct flag_reg_0_23 $end +$var string 1 c$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 b$ subfmeo_RA $end -$var wire 5 c$ subfmeo_RT $end -$scope struct flag_reg_0_35 $end +$scope struct flag_reg_1_26 $end $var string 1 d$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_38 $end -$var string 1 e$ \$tag $end -$scope struct HdlSome $end -$upscope $end -$upscope $end -$var wire 5 f$ subfmeo__RA $end -$var wire 5 g$ subfmeo__RT $end -$scope struct flag_reg_0_36 $end +$var wire 5 e$ subfeo__RB $end +$var wire 5 f$ subfeo__RA $end +$var wire 5 g$ subfeo__RT $end +$scope struct flag_reg_0_24 $end $var string 1 h$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_39 $end +$scope struct flag_reg_1_27 $end $var string 1 i$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 j$ subfze_RA $end -$var wire 5 k$ subfze_RT $end -$scope struct flag_reg_0_37 $end +$var wire 5 j$ addme_RA $end +$var wire 5 k$ addme_RT $end +$scope struct flag_reg_0_25 $end $var string 1 l$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_40 $end +$scope struct flag_reg_1_28 $end $var string 1 m$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 n$ subfze__RA $end -$var wire 5 o$ subfze__RT $end -$scope struct flag_reg_0_38 $end +$var wire 5 n$ addme__RA $end +$var wire 5 o$ addme__RT $end +$scope struct flag_reg_0_26 $end $var string 1 p$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_41 $end +$scope struct flag_reg_1_29 $end $var string 1 q$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 r$ subfzeo_RA $end -$var wire 5 s$ subfzeo_RT $end -$scope struct flag_reg_0_39 $end +$var wire 5 r$ addmeo_RA $end +$var wire 5 s$ addmeo_RT $end +$scope struct flag_reg_0_27 $end $var string 1 t$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_42 $end +$scope struct flag_reg_1_30 $end $var string 1 u$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 v$ subfzeo__RA $end -$var wire 5 w$ subfzeo__RT $end -$scope struct flag_reg_0_40 $end +$var wire 5 v$ addmeo__RA $end +$var wire 5 w$ addmeo__RT $end +$scope struct flag_reg_0_28 $end $var string 1 x$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_43 $end +$scope struct flag_reg_1_31 $end $var string 1 y$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 z$ neg_RA $end -$var wire 5 {$ neg_RT $end -$scope struct flag_reg_0_41 $end +$var wire 5 z$ addze_RA $end +$var wire 5 {$ addze_RT $end +$scope struct flag_reg_0_29 $end $var string 1 |$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_44 $end +$scope struct flag_reg_1_32 $end $var string 1 }$ \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 ~$ neg__RA $end -$var wire 5 !% neg__RT $end -$scope struct flag_reg_0_42 $end +$var wire 5 ~$ addze__RA $end +$var wire 5 !% addze__RT $end +$scope struct flag_reg_0_30 $end $var string 1 "% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_45 $end +$scope struct flag_reg_1_33 $end $var string 1 #% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 $% nego_RA $end -$var wire 5 %% nego_RT $end -$scope struct flag_reg_0_43 $end +$var wire 5 $% addzeo_RA $end +$var wire 5 %% addzeo_RT $end +$scope struct flag_reg_0_31 $end $var string 1 &% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_46 $end +$scope struct flag_reg_1_34 $end $var string 1 '% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$var wire 5 (% nego__RA $end -$var wire 5 )% nego__RT $end -$scope struct flag_reg_0_44 $end +$var wire 5 (% addzeo__RA $end +$var wire 5 )% addzeo__RT $end +$scope struct flag_reg_0_32 $end $var string 1 *% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end -$scope struct flag_reg_1_47 $end +$scope struct flag_reg_1_35 $end $var string 1 +% \$tag $end $scope struct HdlSome $end $upscope $end $upscope $end +$var wire 5 ,% subfme_RA $end +$var wire 5 -% subfme_RT $end +$scope struct flag_reg_0_33 $end +$var string 1 .% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_36 $end +$var string 1 /% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 0% subfme__RA $end +$var wire 5 1% subfme__RT $end +$scope struct flag_reg_0_34 $end +$var string 1 2% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_37 $end +$var string 1 3% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 4% subfmeo_RA $end +$var wire 5 5% subfmeo_RT $end +$scope struct flag_reg_0_35 $end +$var string 1 6% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_38 $end +$var string 1 7% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 8% subfmeo__RA $end +$var wire 5 9% subfmeo__RT $end +$scope struct flag_reg_0_36 $end +$var string 1 :% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_39 $end +$var string 1 ;% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 <% subfze_RA $end +$var wire 5 =% subfze_RT $end +$scope struct flag_reg_0_37 $end +$var string 1 >% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_40 $end +$var string 1 ?% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 @% subfze__RA $end +$var wire 5 A% subfze__RT $end +$scope struct flag_reg_0_38 $end +$var string 1 B% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_41 $end +$var string 1 C% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 D% subfzeo_RA $end +$var wire 5 E% subfzeo_RT $end +$scope struct flag_reg_0_39 $end +$var string 1 F% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_42 $end +$var string 1 G% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 H% subfzeo__RA $end +$var wire 5 I% subfzeo__RT $end +$scope struct flag_reg_0_40 $end +$var string 1 J% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_43 $end +$var string 1 K% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 L% neg_RA $end +$var wire 5 M% neg_RT $end +$scope struct flag_reg_0_41 $end +$var string 1 N% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_44 $end +$var string 1 O% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 P% neg__RA $end +$var wire 5 Q% neg__RT $end +$scope struct flag_reg_0_42 $end +$var string 1 R% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_45 $end +$var string 1 S% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 T% nego_RA $end +$var wire 5 U% nego_RT $end +$scope struct flag_reg_0_43 $end +$var string 1 V% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_46 $end +$var string 1 W% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 5 X% nego__RA $end +$var wire 5 Y% nego__RT $end +$scope struct flag_reg_0_44 $end +$var string 1 Z% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$scope struct flag_reg_1_47 $end +$var string 1 [% \$tag $end +$scope struct HdlSome $end +$upscope $end +$upscope $end +$var wire 16 \% cmpi_SI $end +$var wire 5 ]% cmpi_RA $end +$var wire 1 ^% cmpi_L $end +$var wire 3 _% cmpi_BF $end +$var string 1 `% compare_mode $end +$scope struct power_isa_cr_reg $end +$var wire 8 a% value $end +$upscope $end +$var wire 5 b% cmp_RB $end +$var wire 5 c% cmp_RA $end +$var wire 1 d% cmp_L $end +$var wire 3 e% cmp_BF $end +$var string 1 f% compare_mode_2 $end +$scope struct power_isa_cr_reg_2 $end +$var wire 8 g% value $end +$upscope $end +$var wire 16 h% cmpli_UI $end +$var wire 5 i% cmpli_RA $end +$var wire 1 j% cmpli_L $end +$var wire 3 k% cmpli_BF $end +$var string 1 l% compare_mode_3 $end +$scope struct power_isa_cr_reg_3 $end +$var wire 8 m% value $end +$upscope $end +$var wire 5 n% cmpl_RB $end +$var wire 5 o% cmpl_RA $end +$var wire 1 p% cmpl_L $end +$var wire 3 q% cmpl_BF $end +$var string 1 r% compare_mode_4 $end +$scope struct power_isa_cr_reg_4 $end +$var wire 8 s% value $end +$upscope $end +$var wire 5 t% cmprb_RB $end +$var wire 5 u% cmprb_RA $end +$var wire 1 v% cmprb_L $end +$var wire 3 w% cmprb_BF $end +$var string 1 x% compare_mode_5 $end +$scope struct power_isa_cr_reg_5 $end +$var wire 8 y% value $end +$upscope $end +$var wire 5 z% cmpeqb_RB $end +$var wire 5 {% cmpeqb_RA $end +$var wire 3 |% cmpeqb_BF $end +$scope struct power_isa_cr_reg_6 $end +$var wire 8 }% value $end +$upscope $end $upscope $end $enddefinitions $end $dumpvars @@ -1140,7 +1346,7 @@ b1001000110100 I 0J sFull64\x20(0) K b0 L -b1 M +s0 M b100011 N b0 O sHdlNone\x20(0) P @@ -1150,303 +1356,303 @@ b0 S b0 T b1001000110100 U 0V -sStore\x20(1) W -0X -b100011 Y -b0 Z -sHdlNone\x20(0) [ +sFull64\x20(0) W +sU64\x20(0) X +s0 Y +b100011 Z +b0 [ sHdlNone\x20(0) \ -b100100 ] -b0 ^ +sHdlNone\x20(0) ] +b100100 ^ b0 _ -b1001000110100 ` -0a +b0 ` +b1001000110100 a 0b -b100011 c -b0 d -sHdlNone\x20(0) e -sHdlNone\x20(0) f -b100100 g -b0 h -b0 i -b1001000110100 j -0k -sAluBranch\x20(0) l -sAddSub\x20(0) m -s0 n -b0 o -b0 p -sHdlNone\x20(0) q -sHdlNone\x20(0) r -b0 s -b0 t -b0 u +sFull64\x20(0) c +sU64\x20(0) d +b1 e +b1000110 f +b0 g +sHdlNone\x20(0) h +sHdlNone\x20(0) i +b1001000 j +b0 k +b0 l +b10010001101000 m +0n +sStore\x20(1) o +0p +b1000110 q +b0 r +sHdlNone\x20(0) s +sHdlNone\x20(0) t +b1001000 u b0 v -0w -sFull64\x20(0) x +b0 w +b10010001101000 x 0y 0z -0{ -0| -s0 } -b0 ~ -b0 !" -sHdlNone\x20(0) "" -sHdlNone\x20(0) #" -b0 $" -b0 %" -b0 &" -b0 '" -0(" -sFull64\x20(0) )" -0*" -0+" -0," -0-" -s0 ." +b1000110 { +b0 | +sHdlNone\x20(0) } +sHdlNone\x20(0) ~ +b1001000 !" +b0 "" +b0 #" +b10010001101000 $" +0%" +sAluBranch\x20(0) &" +sAddSub\x20(0) '" +s0 (" +b0 )" +b0 *" +sHdlNone\x20(0) +" +sHdlNone\x20(0) ," +b0 -" +b0 ." b0 /" b0 0" -sHdlNone\x20(0) 1" -sHdlNone\x20(0) 2" -b0 3" -b0 4" -b0 5" -b0 6" -07" -sFull64\x20(0) 8" +01" +sFull64\x20(0) 2" +03" +04" +05" +06" +s0 7" +b0 8" b0 9" -b0 :" -b0 ;" +sHdlNone\x20(0) :" +sHdlNone\x20(0) ;" b0 <" -sHdlNone\x20(0) =" -sHdlNone\x20(0) >" +b0 =" +b0 >" b0 ?" -b0 @" -b0 A" -b0 B" +0@" +sFull64\x20(0) A" +0B" 0C" -sLoad\x20(0) D" +0D" 0E" -b0 F" +s0 F" b0 G" -sHdlNone\x20(0) H" +b0 H" sHdlNone\x20(0) I" -b0 J" +sHdlNone\x20(0) J" b0 K" b0 L" b0 M" -0N" +b0 N" 0O" -b0 P" +sFull64\x20(0) P" b0 Q" -sHdlNone\x20(0) R" -sHdlNone\x20(0) S" +s0 R" +b0 S" b0 T" -b0 U" -b0 V" +sHdlNone\x20(0) U" +sHdlNone\x20(0) V" b0 W" -0X" -b1 Y" -sPhantomConst(\"0..=2\") Z" +b0 X" +b0 Y" +b0 Z" 0[" -b111000011001000001001000110100 \" -sHdlNone\x20(0) ]" -b0 ^" -0_" -b1001000110100 `" -b100 a" -b11 b" -b100100 c" -b1001000110100 d" -0e" +sFull64\x20(0) \" +sU64\x20(0) ]" +s0 ^" +b0 _" +b0 `" +sHdlNone\x20(0) a" +sHdlNone\x20(0) b" +b0 c" +b0 d" +b0 e" b0 f" -b0 g" -b0 h" -b0 i" -b1001000110100 j" -b100 k" -b11 l" -b100100 m" -0n" -b1001000 o" -b100 p" -b11 q" -b10 r" -b100 s" -b11 t" -sHdlNone\x20(0) u" -sHdlNone\x20(0) v" -b10 w" -b100 x" -b11 y" -sHdlNone\x20(0) z" -sHdlSome\x20(1) {" -b10 |" -b100 }" -b11 ~" -sHdlSome\x20(1) !# -sHdlNone\x20(0) "# -b10 ## -b100 $# -b11 %# -sHdlSome\x20(1) &# -sHdlSome\x20(1) '# -b1001000110100 (# -b100 )# -b11 *# -sHdlNone\x20(0) +# -b1001000110100 ,# -b100 -# -b11 .# -sHdlSome\x20(1) /# -b10 0# -b100 1# -b11 2# -sHdlNone\x20(0) 3# -sHdlNone\x20(0) 4# -b10 5# -b100 6# -b11 7# -sHdlNone\x20(0) 8# -sHdlSome\x20(1) 9# -b10 :# -b100 ;# -b11 <# -sHdlSome\x20(1) =# -sHdlNone\x20(0) ># -b10 ?# -b100 @# -b11 A# -sHdlSome\x20(1) B# -sHdlSome\x20(1) C# -b1001000110100 D# +0g" +sFull64\x20(0) h" +sU64\x20(0) i" +b0 j" +b0 k" +b0 l" +sHdlNone\x20(0) m" +sHdlNone\x20(0) n" +b0 o" +b0 p" +b0 q" +b0 r" +0s" +sLoad\x20(0) t" +0u" +b0 v" +b0 w" +sHdlNone\x20(0) x" +sHdlNone\x20(0) y" +b0 z" +b0 {" +b0 |" +b0 }" +0~" +0!# +b0 "# +b0 ## +sHdlNone\x20(0) $# +sHdlNone\x20(0) %# +b0 &# +b0 '# +b0 (# +b0 )# +0*# +b1 +# +sPhantomConst(\"0..=2\") ,# +0-# +b111000011001000001001000110100 .# +sHdlNone\x20(0) /# +b0 0# +01# +b1001000110100 2# +b100 3# +b11 4# +b100100 5# +b1001000110100 6# +07# +b0 8# +b0 9# +b0 :# +b0 ;# +b1001000110100 <# +b100 =# +b11 ># +b100100 ?# +0@# +b1001000 A# +b100 B# +b11 C# +b10 D# b100 E# b11 F# sHdlNone\x20(0) G# -b10 H# -b100 I# -b11 J# -sHdlNone\x20(0) K# +sHdlNone\x20(0) H# +b10 I# +b100 J# +b11 K# sHdlNone\x20(0) L# -b10 M# -b100 N# -b11 O# -sHdlNone\x20(0) P# +sHdlSome\x20(1) M# +b10 N# +b100 O# +b11 P# sHdlSome\x20(1) Q# -b10 R# -b100 S# -b11 T# -sHdlSome\x20(1) U# -sHdlNone\x20(0) V# -b10 W# -b100 X# -b11 Y# -sHdlSome\x20(1) Z# -sHdlSome\x20(1) [# -b10 \# +sHdlNone\x20(0) R# +b10 S# +b100 T# +b11 U# +sHdlSome\x20(1) V# +sHdlSome\x20(1) W# +b1001000110100 X# +b100 Y# +b11 Z# +sHdlNone\x20(0) [# +b1001000110100 \# b100 ]# b11 ^# -sHdlNone\x20(0) _# -sHdlNone\x20(0) `# -b10 a# -b100 b# -b11 c# +sHdlSome\x20(1) _# +b10 `# +b100 a# +b11 b# +sHdlNone\x20(0) c# sHdlNone\x20(0) d# -sHdlSome\x20(1) e# -b10 f# -b100 g# -b11 h# +b10 e# +b100 f# +b11 g# +sHdlNone\x20(0) h# sHdlSome\x20(1) i# -sHdlNone\x20(0) j# -b10 k# -b100 l# -b11 m# -sHdlSome\x20(1) n# -sHdlSome\x20(1) o# -b10 p# -b100 q# -b11 r# -sHdlNone\x20(0) s# -sHdlNone\x20(0) t# -b10 u# -b100 v# -b11 w# -sHdlNone\x20(0) x# -sHdlSome\x20(1) y# -b10 z# -b100 {# -b11 |# -sHdlSome\x20(1) }# -sHdlNone\x20(0) ~# -b10 !$ -b100 "$ -b11 #$ -sHdlSome\x20(1) $$ -sHdlSome\x20(1) %$ -b10 &$ -b100 '$ -b11 ($ -sHdlNone\x20(0) )$ -sHdlNone\x20(0) *$ -b10 +$ -b100 ,$ -b11 -$ -sHdlNone\x20(0) .$ -sHdlSome\x20(1) /$ -b10 0$ -b100 1$ -b11 2$ -sHdlSome\x20(1) 3$ -sHdlNone\x20(0) 4$ -b10 5$ -b100 6$ -b11 7$ -sHdlSome\x20(1) 8$ -sHdlSome\x20(1) 9$ -b100 :$ -b11 ;$ +b10 j# +b100 k# +b11 l# +sHdlSome\x20(1) m# +sHdlNone\x20(0) n# +b10 o# +b100 p# +b11 q# +sHdlSome\x20(1) r# +sHdlSome\x20(1) s# +b1001000110100 t# +b100 u# +b11 v# +sHdlNone\x20(0) w# +b10 x# +b100 y# +b11 z# +sHdlNone\x20(0) {# +sHdlNone\x20(0) |# +b10 }# +b100 ~# +b11 !$ +sHdlNone\x20(0) "$ +sHdlSome\x20(1) #$ +b10 $$ +b100 %$ +b11 &$ +sHdlSome\x20(1) '$ +sHdlNone\x20(0) ($ +b10 )$ +b100 *$ +b11 +$ +sHdlSome\x20(1) ,$ +sHdlSome\x20(1) -$ +b10 .$ +b100 /$ +b11 0$ +sHdlNone\x20(0) 1$ +sHdlNone\x20(0) 2$ +b10 3$ +b100 4$ +b11 5$ +sHdlNone\x20(0) 6$ +sHdlSome\x20(1) 7$ +b10 8$ +b100 9$ +b11 :$ +sHdlSome\x20(1) ;$ sHdlNone\x20(0) <$ -sHdlNone\x20(0) =$ +b10 =$ b100 >$ b11 ?$ -sHdlNone\x20(0) @$ +sHdlSome\x20(1) @$ sHdlSome\x20(1) A$ -b100 B$ -b11 C$ -sHdlSome\x20(1) D$ +b10 B$ +b100 C$ +b11 D$ sHdlNone\x20(0) E$ -b100 F$ -b11 G$ -sHdlSome\x20(1) H$ -sHdlSome\x20(1) I$ -b100 J$ -b11 K$ -sHdlNone\x20(0) L$ -sHdlNone\x20(0) M$ -b100 N$ -b11 O$ +sHdlNone\x20(0) F$ +b10 G$ +b100 H$ +b11 I$ +sHdlNone\x20(0) J$ +sHdlSome\x20(1) K$ +b10 L$ +b100 M$ +b11 N$ +sHdlSome\x20(1) O$ sHdlNone\x20(0) P$ -sHdlSome\x20(1) Q$ +b10 Q$ b100 R$ b11 S$ sHdlSome\x20(1) T$ -sHdlNone\x20(0) U$ -b100 V$ -b11 W$ -sHdlSome\x20(1) X$ -sHdlSome\x20(1) Y$ -b100 Z$ -b11 [$ -sHdlNone\x20(0) \$ -sHdlNone\x20(0) ]$ -b100 ^$ -b11 _$ -sHdlNone\x20(0) `$ -sHdlSome\x20(1) a$ -b100 b$ -b11 c$ -sHdlSome\x20(1) d$ -sHdlNone\x20(0) e$ +sHdlSome\x20(1) U$ +b10 V$ +b100 W$ +b11 X$ +sHdlNone\x20(0) Y$ +sHdlNone\x20(0) Z$ +b10 [$ +b100 \$ +b11 ]$ +sHdlNone\x20(0) ^$ +sHdlSome\x20(1) _$ +b10 `$ +b100 a$ +b11 b$ +sHdlSome\x20(1) c$ +sHdlNone\x20(0) d$ +b10 e$ b100 f$ b11 g$ sHdlSome\x20(1) h$ @@ -1483,6 +1689,88 @@ b100 (% b11 )% sHdlSome\x20(1) *% sHdlSome\x20(1) +% +b100 ,% +b11 -% +sHdlNone\x20(0) .% +sHdlNone\x20(0) /% +b100 0% +b11 1% +sHdlNone\x20(0) 2% +sHdlSome\x20(1) 3% +b100 4% +b11 5% +sHdlSome\x20(1) 6% +sHdlNone\x20(0) 7% +b100 8% +b11 9% +sHdlSome\x20(1) :% +sHdlSome\x20(1) ;% +b100 <% +b11 =% +sHdlNone\x20(0) >% +sHdlNone\x20(0) ?% +b100 @% +b11 A% +sHdlNone\x20(0) B% +sHdlSome\x20(1) C% +b100 D% +b11 E% +sHdlSome\x20(1) F% +sHdlNone\x20(0) G% +b100 H% +b11 I% +sHdlSome\x20(1) J% +sHdlSome\x20(1) K% +b100 L% +b11 M% +sHdlNone\x20(0) N% +sHdlNone\x20(0) O% +b100 P% +b11 Q% +sHdlNone\x20(0) R% +sHdlSome\x20(1) S% +b100 T% +b11 U% +sHdlSome\x20(1) V% +sHdlNone\x20(0) W% +b100 X% +b11 Y% +sHdlSome\x20(1) Z% +sHdlSome\x20(1) [% +b1001000110100 \% +b100 ]% +1^% +b0 _% +sS64\x20(1) `% +b11111111 a% +b10 b% +b100 c% +1d% +b0 e% +sS64\x20(1) f% +b11111111 g% +b1001000110100 h% +b100 i% +1j% +b0 k% +sU64\x20(0) l% +b11111111 m% +b10 n% +b100 o% +1p% +b0 q% +sU64\x20(0) r% +b11111111 s% +b10 t% +b100 u% +1v% +b0 w% +sCmpRBTwo\x20(9) x% +b11111111 y% +b10 z% +b100 {% +b0 |% +b11111111 }% $end #1000000 b10010001 * @@ -1493,134 +1781,117 @@ b10010001 H b1010001010110011110001001 I b10010001 T b1010001010110011110001001 U -b10010001 _ -b1010001010110011110001001 ` -b10010001 i -b1010001010110011110001001 j -b110000000010010001101000101 \" -sHdlSome\x20(1) ]" -b111000011001000110011110001001 ^" -1_" -b10001101000101 `" -b1 a" -b10000 b" -b100001 c" -b10010001101000101 d" -b110011110001001 f" -b100 g" -b11 h" -b100100 i" -b10001101000101 j" -b1 k" -b10000 l" -b100001 m" -1n" -b10001101 o" -b1 p" -b10000 q" -b100 r" -b1 s" -b10000 t" -b100 w" -b1 x" -b10000 y" -b100 |" -b1 }" -b10000 ~" -b100 ## -b1 $# -b10000 %# -b10001101000101 (# -b1 )# -b10000 *# -b10001101000101 ,# -b1 -# -b10000 .# -b100 0# -b1 1# -b10000 2# -b100 5# -b1 6# -b10000 7# -b100 :# -b1 ;# -b10000 <# -b100 ?# -b1 @# -b10000 A# -b10001101000101 D# +b10010001 ` +b1010001010110011110001001 a +b100010 l +b100010101100111100010011 m +1n +b100010 w +b100010101100111100010011 x +1y +b100010 #" +b100010101100111100010011 $" +1%" +b110000000010010001101000101 .# +sHdlSome\x20(1) /# +b111000011001000110011110001001 0# +11# +b10001101000101 2# +b1 3# +b10000 4# +b100001 5# +b10010001101000101 6# +b110011110001001 8# +b100 9# +b11 :# +b100100 ;# +b10001101000101 <# +b1 =# +b10000 ># +b100001 ?# +1@# +b10001101 A# +b1 B# +b10000 C# +b100 D# b1 E# b10000 F# -b100 H# -b1 I# -b10000 J# -b100 M# -b1 N# -b10000 O# -b100 R# -b1 S# -b10000 T# -b100 W# -b1 X# -b10000 Y# -b100 \# +b100 I# +b1 J# +b10000 K# +b100 N# +b1 O# +b10000 P# +b100 S# +b1 T# +b10000 U# +b10001101000101 X# +b1 Y# +b10000 Z# +b10001101000101 \# b1 ]# b10000 ^# -b100 a# -b1 b# -b10000 c# -b100 f# -b1 g# -b10000 h# -b100 k# -b1 l# -b10000 m# -b100 p# -b1 q# -b10000 r# -b100 u# -b1 v# -b10000 w# -b100 z# -b1 {# -b10000 |# -b100 !$ -b1 "$ -b10000 #$ -b100 &$ -b1 '$ -b10000 ($ -b100 +$ -b1 ,$ -b10000 -$ -b100 0$ -b1 1$ -b10000 2$ -b100 5$ -b1 6$ -b10000 7$ -b1 :$ -b10000 ;$ +b100 `# +b1 a# +b10000 b# +b100 e# +b1 f# +b10000 g# +b100 j# +b1 k# +b10000 l# +b100 o# +b1 p# +b10000 q# +b10001101000101 t# +b1 u# +b10000 v# +b100 x# +b1 y# +b10000 z# +b100 }# +b1 ~# +b10000 !$ +b100 $$ +b1 %$ +b10000 &$ +b100 )$ +b1 *$ +b10000 +$ +b100 .$ +b1 /$ +b10000 0$ +b100 3$ +b1 4$ +b10000 5$ +b100 8$ +b1 9$ +b10000 :$ +b100 =$ b1 >$ b10000 ?$ -b1 B$ -b10000 C$ -b1 F$ -b10000 G$ -b1 J$ -b10000 K$ -b1 N$ -b10000 O$ +b100 B$ +b1 C$ +b10000 D$ +b100 G$ +b1 H$ +b10000 I$ +b100 L$ +b1 M$ +b10000 N$ +b100 Q$ b1 R$ b10000 S$ -b1 V$ -b10000 W$ -b1 Z$ -b10000 [$ -b1 ^$ -b10000 _$ -b1 b$ -b10000 c$ +b100 V$ +b1 W$ +b10000 X$ +b100 [$ +b1 \$ +b10000 ]$ +b100 `$ +b1 a$ +b10000 b$ +b100 e$ b1 f$ b10000 g$ b1 j$ @@ -1639,6 +1910,64 @@ b1 $% b10000 %% b1 (% b10000 )% +b1 ,% +b10000 -% +b1 0% +b10000 1% +b1 4% +b10000 5% +b1 8% +b10000 9% +b1 <% +b10000 =% +b1 @% +b10000 A% +b1 D% +b10000 E% +b1 H% +b10000 I% +b1 L% +b10000 M% +b1 P% +b10000 Q% +b1 T% +b10000 U% +b1 X% +b10000 Y% +b10001101000101 \% +b1 ]% +0^% +b100 _% +sS32\x20(3) `% +b1100 a% +b100 b% +b1 c% +0d% +b100 e% +sS32\x20(3) f% +b1100 g% +b10001101000101 h% +b1 i% +0j% +b100 k% +sU32\x20(2) l% +b1100 m% +b100 n% +b1 o% +0p% +b100 q% +sU32\x20(2) r% +b1100 s% +b100 t% +b1 u% +0v% +b100 w% +sCmpRBOne\x20(8) x% +b1100 y% +b100 z% +b1 {% +b100 |% +b1100 }% #2000000 b0 ( 11 @@ -1647,56 +1976,48 @@ b0 7 b0 F b1000 L b0 R -b0 ] -b0 g -b110000100010010001101000101 \" -b111000011000000110011110001001 ^" -b10001 a" -b110001 c" -1e" -b0 g" -b0 i" -b10001 k" -b110001 m" -b10001 p" -b10001 s" -b10001 x" -b10001 }" -b10001 $# -b10001 )# -b10001 -# -b10001 1# -b10001 6# -b10001 ;# -b10001 @# +sCmpRBOne\x20(8) X +b0 ^ +sCmpRBOne\x20(8) d +b0 j +b0 u +b0 !" +b110000100010010001101000101 .# +b111000011000000110011110001001 0# +b10001 3# +b110001 5# +17# +b0 9# +b0 ;# +b10001 =# +b110001 ?# +b10001 B# b10001 E# -b10001 I# -b10001 N# -b10001 S# -b10001 X# +b10001 J# +b10001 O# +b10001 T# +b10001 Y# b10001 ]# -b10001 b# -b10001 g# -b10001 l# -b10001 q# -b10001 v# -b10001 {# -b10001 "$ -b10001 '$ -b10001 ,$ -b10001 1$ -b10001 6$ -b10001 :$ +b10001 a# +b10001 f# +b10001 k# +b10001 p# +b10001 u# +b10001 y# +b10001 ~# +b10001 %$ +b10001 *$ +b10001 /$ +b10001 4$ +b10001 9$ b10001 >$ -b10001 B$ -b10001 F$ -b10001 J$ -b10001 N$ +b10001 C$ +b10001 H$ +b10001 M$ b10001 R$ -b10001 V$ -b10001 Z$ -b10001 ^$ -b10001 b$ +b10001 W$ +b10001 \$ +b10001 a$ b10001 f$ b10001 j$ b10001 n$ @@ -1706,6 +2027,24 @@ b10001 z$ b10001 ~$ b10001 $% b10001 (% +b10001 ,% +b10001 0% +b10001 4% +b10001 8% +b10001 <% +b10001 @% +b10001 D% +b10001 H% +b10001 L% +b10001 P% +b10001 T% +b10001 X% +b10001 ]% +b10001 c% +b10001 i% +b10001 o% +b10001 u% +b10001 {% #3000000 b100100 ( b1001 * @@ -1722,135 +2061,122 @@ b0 L b100100 R b1001 T b1101000000000000000000 U -b100100 ] -b1001 _ -b1101000000000000000000 ` -b100100 g -b1001 i -b1101000000000000000000 j -b111100011001000001001000110100 \" -sHdlNone\x20(0) ]" -b0 ^" -0_" -b1001000110100 `" -b100 a" -b11 b" -b100100 c" -b1001000110100 d" -0e" -b0 f" -b0 h" -b1001000110100 j" -b100 k" -b11 l" -b100100 m" -0n" -b1001000 o" -b100 p" -b11 q" -b10 r" -b100 s" -b11 t" -b10 w" -b100 x" -b11 y" -b10 |" -b100 }" -b11 ~" -b10 ## -b100 $# -b11 %# -b1001000110100 (# -b100 )# -b11 *# -b1001000110100 ,# -b100 -# -b11 .# -b10 0# -b100 1# -b11 2# -b10 5# -b100 6# -b11 7# -b10 :# -b100 ;# -b11 <# -b10 ?# -b100 @# -b11 A# -b1001000110100 D# +sU64\x20(0) X +b100100 ^ +b1001 ` +b1101000000000000000000 a +sU64\x20(0) d +b1001000 j +b10010 l +b11010000000000000000000 m +0n +b1001000 u +b10010 w +b11010000000000000000000 x +0y +b1001000 !" +b10010 #" +b11010000000000000000000 $" +0%" +b111100011001000001001000110100 .# +sHdlNone\x20(0) /# +b0 0# +01# +b1001000110100 2# +b100 3# +b11 4# +b100100 5# +b1001000110100 6# +07# +b0 8# +b0 :# +b1001000110100 <# +b100 =# +b11 ># +b100100 ?# +0@# +b1001000 A# +b100 B# +b11 C# +b10 D# b100 E# b11 F# -b10 H# -b100 I# -b11 J# -b10 M# -b100 N# -b11 O# -b10 R# -b100 S# -b11 T# -b10 W# -b100 X# -b11 Y# -b10 \# +b10 I# +b100 J# +b11 K# +b10 N# +b100 O# +b11 P# +b10 S# +b100 T# +b11 U# +b1001000110100 X# +b100 Y# +b11 Z# +b1001000110100 \# b100 ]# b11 ^# -b10 a# -b100 b# -b11 c# -b10 f# -b100 g# -b11 h# -b10 k# -b100 l# -b11 m# -b10 p# -b100 q# -b11 r# -b10 u# -b100 v# -b11 w# -b10 z# -b100 {# -b11 |# -b10 !$ -b100 "$ -b11 #$ -b10 &$ -b100 '$ -b11 ($ -b10 +$ -b100 ,$ -b11 -$ -b10 0$ -b100 1$ -b11 2$ -b10 5$ -b100 6$ -b11 7$ -b100 :$ -b11 ;$ +b10 `# +b100 a# +b11 b# +b10 e# +b100 f# +b11 g# +b10 j# +b100 k# +b11 l# +b10 o# +b100 p# +b11 q# +b1001000110100 t# +b100 u# +b11 v# +b10 x# +b100 y# +b11 z# +b10 }# +b100 ~# +b11 !$ +b10 $$ +b100 %$ +b11 &$ +b10 )$ +b100 *$ +b11 +$ +b10 .$ +b100 /$ +b11 0$ +b10 3$ +b100 4$ +b11 5$ +b10 8$ +b100 9$ +b11 :$ +b10 =$ b100 >$ b11 ?$ -b100 B$ -b11 C$ -b100 F$ -b11 G$ -b100 J$ -b11 K$ -b100 N$ -b11 O$ +b10 B$ +b100 C$ +b11 D$ +b10 G$ +b100 H$ +b11 I$ +b10 L$ +b100 M$ +b11 N$ +b10 Q$ b100 R$ b11 S$ -b100 V$ -b11 W$ -b100 Z$ -b11 [$ -b100 ^$ -b11 _$ -b100 b$ -b11 c$ +b10 V$ +b100 W$ +b11 X$ +b10 [$ +b100 \$ +b11 ]$ +b10 `$ +b100 a$ +b11 b$ +b10 e$ b100 f$ b11 g$ b100 j$ @@ -1869,6 +2195,64 @@ b100 $% b11 %% b100 (% b11 )% +b100 ,% +b11 -% +b100 0% +b11 1% +b100 4% +b11 5% +b100 8% +b11 9% +b100 <% +b11 =% +b100 @% +b11 A% +b100 D% +b11 E% +b100 H% +b11 I% +b100 L% +b11 M% +b100 P% +b11 Q% +b100 T% +b11 U% +b100 X% +b11 Y% +b1001000110100 \% +b100 ]% +1^% +b0 _% +sS64\x20(1) `% +b11111111 a% +b10 b% +b100 c% +1d% +b0 e% +sS64\x20(1) f% +b11111111 g% +b1001000110100 h% +b100 i% +1j% +b0 k% +sU64\x20(0) l% +b11111111 m% +b10 n% +b100 o% +1p% +b0 q% +sU64\x20(0) r% +b11111111 s% +b10 t% +b100 u% +1v% +b0 w% +sCmpRBTwo\x20(9) x% +b11111111 y% +b10 z% +b100 {% +b0 |% +b11111111 }% #4000000 b0 ( b1101000000000000000100 + @@ -1881,61 +2265,55 @@ b1101000000000000000100 I b1000 L b0 R b1101000000000000000100 U -b0 ] -b1101000000000000000100 ` -b0 g -b1101000000000000000100 j -b1001100011110100001001000000100 \" -b1001000000100 `" -b11010 a" -b111010 c" -b100001001000000100 d" -1e" -b1001000000100 j" -b11010 k" -b111010 m" -b11010 p" -b11010 s" -b11010 x" -b11010 }" -b11010 $# -b1001000000100 (# -b11010 )# -b1001000000100 ,# -b11010 -# -b11010 1# -b11010 6# -b11010 ;# -b11010 @# -b1001000000100 D# +sCmpRBOne\x20(8) X +b0 ^ +b1101000000000000000100 a +sCmpRBOne\x20(8) d +b0 j +b11010000000000000001000 m +b0 u +b11010000000000000001000 x +b0 !" +b11010000000000000001000 $" +b1001100011110100001001000000100 .# +b1001000000100 2# +b11010 3# +b111010 5# +b100001001000000100 6# +17# +b1001000000100 <# +b11010 =# +b111010 ?# +b11010 B# b11010 E# -b11010 I# -b11010 N# -b11010 S# -b11010 X# +b11010 J# +b11010 O# +b11010 T# +b1001000000100 X# +b11010 Y# +b1001000000100 \# b11010 ]# -b11010 b# -b11010 g# -b11010 l# -b11010 q# -b11010 v# -b11010 {# -b11010 "$ -b11010 '$ -b11010 ,$ -b11010 1$ -b11010 6$ -b11010 :$ +b11010 a# +b11010 f# +b11010 k# +b11010 p# +b1001000000100 t# +b11010 u# +b11010 y# +b11010 ~# +b11010 %$ +b11010 *$ +b11010 /$ +b11010 4$ +b11010 9$ b11010 >$ -b11010 B$ -b11010 F$ -b11010 J$ -b11010 N$ +b11010 C$ +b11010 H$ +b11010 M$ b11010 R$ -b11010 V$ -b11010 Z$ -b11010 ^$ -b11010 b$ +b11010 W$ +b11010 \$ +b11010 a$ b11010 f$ b11010 j$ b11010 n$ @@ -1945,6 +2323,26 @@ b11010 z$ b11010 ~$ b11010 $% b11010 (% +b11010 ,% +b11010 0% +b11010 4% +b11010 8% +b11010 <% +b11010 @% +b11010 D% +b11010 H% +b11010 L% +b11010 P% +b11010 T% +b11010 X% +b1001000000100 \% +b11010 ]% +b11010 c% +b1001000000100 h% +b11010 i% +b11010 o% +b11010 u% +b11010 {% #5000000 sAddSub\x20(0) " sHdlSome\x20(1) ' @@ -1965,100 +2363,97 @@ b100101 G b0 H b0 I b0 L -b0 M sHdlSome\x20(1) Q b100100 R b100101 S b0 T b0 U -sLoad\x20(0) W -sHdlSome\x20(1) \ -b100100 ] -b100101 ^ -b0 _ +sU64\x20(0) X +sHdlSome\x20(1) ] +b100100 ^ +b100101 _ b0 ` -sHdlSome\x20(1) f -b100100 g -b100101 h -b0 i -b0 j -b1111100011001000010101000010101 \" -b10101000010101 `" -b100 a" -b100100 c" -b10101000010101 d" -0e" -b10101000010101 j" -b100 k" -b100100 m" -1n" -b10101000 o" -b100 p" -b101 r" -b100 s" -b101 w" -b100 x" -b101 |" -b100 }" -b101 ## -b100 $# -b10101000010101 (# -b100 )# -b10101000010101 ,# -b100 -# -b101 0# -b100 1# -b101 5# -b100 6# -b101 :# -b100 ;# -b101 ?# -b100 @# -b10101000010101 D# +b0 a +sU64\x20(0) d +b0 e +b1001001 j +b1001010 k +b0 l +b0 m +sLoad\x20(0) o +b1001001 u +b1001010 v +b0 w +b0 x +b1001001 !" +b1001010 "" +b0 #" +b0 $" +b1111100011001000010101000010101 .# +b10101000010101 2# +b100 3# +b100100 5# +b10101000010101 6# +07# +b10101000010101 <# +b100 =# +b100100 ?# +1@# +b10101000 A# +b100 B# +b101 D# b100 E# -b101 H# -b100 I# -b101 M# -b100 N# -b101 R# -b100 S# -b101 W# -b100 X# -b101 \# +b101 I# +b100 J# +b101 N# +b100 O# +b101 S# +b100 T# +b10101000010101 X# +b100 Y# +b10101000010101 \# b100 ]# -b101 a# -b100 b# -b101 f# -b100 g# -b101 k# -b100 l# -b101 p# -b100 q# -b101 u# -b100 v# -b101 z# -b100 {# -b101 !$ -b100 "$ -b101 &$ -b100 '$ -b101 +$ -b100 ,$ -b101 0$ -b100 1$ -b101 5$ -b100 6$ -b100 :$ +b101 `# +b100 a# +b101 e# +b100 f# +b101 j# +b100 k# +b101 o# +b100 p# +b10101000010101 t# +b100 u# +b101 x# +b100 y# +b101 }# +b100 ~# +b101 $$ +b100 %$ +b101 )$ +b100 *$ +b101 .$ +b100 /$ +b101 3$ +b100 4$ +b101 8$ +b100 9$ +b101 =$ b100 >$ -b100 B$ -b100 F$ -b100 J$ -b100 N$ +b101 B$ +b100 C$ +b101 G$ +b100 H$ +b101 L$ +b100 M$ +b101 Q$ b100 R$ -b100 V$ -b100 Z$ -b100 ^$ -b100 b$ +b101 V$ +b100 W$ +b101 [$ +b100 \$ +b101 `$ +b100 a$ +b101 e$ b100 f$ b100 j$ b100 n$ @@ -2068,6 +2463,30 @@ b100 z$ b100 ~$ b100 $% b100 (% +b100 ,% +b100 0% +b100 4% +b100 8% +b100 <% +b100 @% +b100 D% +b100 H% +b100 L% +b100 P% +b100 T% +b100 X% +b10101000010101 \% +b100 ]% +b101 b% +b100 c% +b10101000010101 h% +b100 i% +b101 n% +b100 o% +b101 t% +b100 u% +b101 z% +b100 {% #6000000 sAddSubI\x20(1) " b100 % @@ -2079,50 +2498,62 @@ b1001000110100 : b100 C b0 G b1001000110100 I -b1 M b100 O b0 S b1001000110100 U -sStore\x20(1) W -b100 Z -b0 ^ -b1001000110100 ` -b100 d -b0 h -b1001000110100 j -b110100011001000001001000110100 \" -b1001000110100 `" -b1001000110100 d" -b1001000110100 j" -0n" -b1001000 o" -b10 r" -b10 w" -b10 |" -b10 ## -b1001000110100 (# -b1001000110100 ,# -b10 0# -b10 5# -b10 :# -b10 ?# -b1001000110100 D# -b10 H# -b10 M# -b10 R# -b10 W# -b10 \# -b10 a# -b10 f# -b10 k# -b10 p# -b10 u# -b10 z# -b10 !$ -b10 &$ -b10 +$ -b10 0$ -b10 5$ +b100 [ +b0 _ +b1001000110100 a +b1 e +b1000 g +b0 k +b10010001101000 m +sStore\x20(1) o +b1000 r +b0 v +b10010001101000 x +b1000 | +b0 "" +b10010001101000 $" +b110100011001000001001000110100 .# +b1001000110100 2# +b1001000110100 6# +b1001000110100 <# +0@# +b1001000 A# +b10 D# +b10 I# +b10 N# +b10 S# +b1001000110100 X# +b1001000110100 \# +b10 `# +b10 e# +b10 j# +b10 o# +b1001000110100 t# +b10 x# +b10 }# +b10 $$ +b10 )$ +b10 .$ +b10 3$ +b10 8$ +b10 =$ +b10 B$ +b10 G$ +b10 L$ +b10 Q$ +b10 V$ +b10 [$ +b10 `$ +b10 e$ +b1001000110100 \% +b10 b% +b1001000110100 h% +b10 n% +b10 t% +b10 z% #7000000 sAddSub\x20(0) " b0 % @@ -2139,50 +2570,64 @@ b0 C b100101 G b0 I b101 L -b0 M b0 O b100101 S b0 U -sLoad\x20(0) W -b0 Z -b100101 ^ -b0 ` -b0 d -b100101 h -b0 j -b1111100011001000010100001010001 \" -b10100001010001 `" -b10100001010001 d" -b10100001010001 j" -1n" -b10100001 o" -b101 r" -b101 w" -b101 |" -b101 ## -b10100001010001 (# -b10100001010001 ,# -b101 0# -b101 5# -b101 :# -b101 ?# -b10100001010001 D# -b101 H# -b101 M# -b101 R# -b101 W# -b101 \# -b101 a# -b101 f# -b101 k# -b101 p# -b101 u# -b101 z# -b101 !$ -b101 &$ -b101 +$ -b101 0$ -b101 5$ +sS16\x20(5) X +b0 [ +b100101 _ +b0 a +sS16\x20(5) d +b0 e +b0 g +b1001010 k +b0 m +sLoad\x20(0) o +b0 r +b1001010 v +b0 x +b0 | +b1001010 "" +b0 $" +b1111100011001000010100001010001 .# +b10100001010001 2# +b10100001010001 6# +b10100001010001 <# +1@# +b10100001 A# +b101 D# +b101 I# +b101 N# +b101 S# +b10100001010001 X# +b10100001010001 \# +b101 `# +b101 e# +b101 j# +b101 o# +b10100001010001 t# +b101 x# +b101 }# +b101 $$ +b101 )$ +b101 .$ +b101 3$ +b101 8$ +b101 =$ +b101 B$ +b101 G$ +b101 L$ +b101 Q$ +b101 V$ +b101 [$ +b101 `$ +b101 e$ +b10100001010001 \% +b101 b% +b10100001010001 h% +b101 n% +b101 t% +b101 z% #8000000 sAddSubI\x20(1) " b100 % @@ -2197,53 +2642,67 @@ b100 C sHdlNone\x20(0) E b0 G b1001000110100 I -b1 M b100 O sHdlNone\x20(0) Q b0 S b1001000110100 U -sStore\x20(1) W -b100 Z -sHdlNone\x20(0) \ -b0 ^ -b1001000110100 ` -b100 d -sHdlNone\x20(0) f -b0 h -b1001000110100 j -b100000011001000001001000110100 \" -b1001000110100 `" -b1001000110100 d" -b1001000110100 j" -0n" -b1001000 o" -b10 r" -b10 w" -b10 |" -b10 ## -b1001000110100 (# -b1001000110100 ,# -b10 0# -b10 5# -b10 :# -b10 ?# -b1001000110100 D# -b10 H# -b10 M# -b10 R# -b10 W# -b10 \# -b10 a# -b10 f# -b10 k# -b10 p# -b10 u# -b10 z# -b10 !$ -b10 &$ -b10 +$ -b10 0$ -b10 5$ +b100 [ +sHdlNone\x20(0) ] +b0 _ +b1001000110100 a +b1 e +b1000 g +b1001000 j +b0 k +b10010001101000 m +sStore\x20(1) o +b1000 r +b1001000 u +b0 v +b10010001101000 x +b1000 | +b1001000 !" +b0 "" +b10010001101000 $" +b100000011001000001001000110100 .# +b1001000110100 2# +b1001000110100 6# +b1001000110100 <# +0@# +b1001000 A# +b10 D# +b10 I# +b10 N# +b10 S# +b1001000110100 X# +b1001000110100 \# +b10 `# +b10 e# +b10 j# +b10 o# +b1001000110100 t# +b10 x# +b10 }# +b10 $$ +b10 )$ +b10 .$ +b10 3$ +b10 8$ +b10 =$ +b10 B$ +b10 G$ +b10 L$ +b10 Q$ +b10 V$ +b10 [$ +b10 `$ +b10 e$ +b1001000110100 \% +b10 b% +b1001000110100 h% +b10 n% +b10 t% +b10 z% #9000000 sAddSub\x20(0) " sHdlSome\x20(1) ' @@ -2260,63 +2719,81 @@ sHdlSome\x20(1) E b100101 G b0 I b0 L -b0 M sHdlSome\x20(1) Q b100101 S b0 U -sLoad\x20(0) W -sHdlSome\x20(1) \ -b100101 ^ -b0 ` -sHdlSome\x20(1) f -b100101 h -b0 j -b1111100011001000010100000010101 \" -b10100000010101 `" -b10100000010101 d" -b10100000010101 j" -1n" -b10100000 o" -b101 r" -b101 w" -b101 |" -b101 ## -b10100000010101 (# -b10100000010101 ,# -b101 0# -b101 5# -b101 :# -b101 ?# -b10100000010101 D# -b101 H# -b101 M# -b101 R# -b101 W# -b101 \# -b101 a# -b101 f# -b101 k# -b101 p# -b101 u# -b101 z# -b101 !$ -b101 &$ -b101 +$ -b101 0$ -b101 5$ +sU64\x20(0) X +sHdlSome\x20(1) ] +b100101 _ +b0 a +sU64\x20(0) d +b0 e +b1001001 j +b1001010 k +b0 m +sLoad\x20(0) o +b1001001 u +b1001010 v +b0 x +b1001001 !" +b1001010 "" +b0 $" +b1111100011001000010100000010101 .# +b10100000010101 2# +b10100000010101 6# +b10100000010101 <# +1@# +b10100000 A# +b101 D# +b101 I# +b101 N# +b101 S# +b10100000010101 X# +b10100000010101 \# +b101 `# +b101 e# +b101 j# +b101 o# +b10100000010101 t# +b101 x# +b101 }# +b101 $$ +b101 )$ +b101 .$ +b101 3$ +b101 8$ +b101 =$ +b101 B$ +b101 G$ +b101 L$ +b101 Q$ +b101 V$ +b101 [$ +b101 `$ +b101 e$ +b10100000010101 \% +b101 b% +b10100000010101 h% +b101 n% +b101 t% +b101 z% #10000000 1. 10 1= 1? b101 L -b1111100011001000010100000010001 \" -b10100000010001 `" -b10100000010001 d" -b10100000010001 j" -b10100000010001 (# -b10100000010001 ,# -b10100000010001 D# +sS16\x20(5) X +sS16\x20(5) d +b1111100011001000010100000010001 .# +b10100000010001 2# +b10100000010001 6# +b10100000010001 <# +b10100000010001 X# +b10100000010001 \# +b10100000010001 t# +b10100000010001 \% +b10100000010001 h% #11000000 b100 ) b100101 * @@ -2333,29 +2810,41 @@ b100101 H b10 L b100 S b100101 T -b100 ^ -b100101 _ -b100 h -b100101 i -b1111100011001000010100100010101 \" -b10100100010101 `" -b10100100010101 d" -b10100100010101 j" -b10100100 o" -b10100100010101 (# -b10100100010101 ,# -b10100100010101 D# +sU32\x20(2) X +b100 _ +b100101 ` +sU32\x20(2) d +b1000 k +b1001010 l +b1000 v +b1001010 w +b1000 "" +b1001010 #" +b1111100011001000010100100010101 .# +b10100100010101 2# +b10100100010101 6# +b10100100010101 <# +b10100100 A# +b10100100010101 X# +b10100100010101 \# +b10100100010101 t# +b10100100010101 \% +b10100100010101 h% #12000000 1. 1= b11 L -b1111100011001000010100100010001 \" -b10100100010001 `" -b10100100010001 d" -b10100100010001 j" -b10100100010001 (# -b10100100010001 ,# -b10100100010001 D# +sS32\x20(3) X +sS32\x20(3) d +b1111100011001000010100100010001 .# +b10100100010001 2# +b10100100010001 6# +b10100100010001 <# +b10100100010001 X# +b10100100010001 \# +b10100100010001 t# +b10100100010001 \% +b10100100010001 h% #13000000 b0 * b1111111111111111111111111 + @@ -2372,55 +2861,73 @@ b10 L b0 T b1111111111111111111111111 U 1V -b0 _ -b1111111111111111111111111 ` -1a -b0 i -b1111111111111111111111111 j -1k -b1111100011001000000000111010101 \" -b111010101 `" -b111010101 d" -b111010101 j" -b111 o" -b0 r" -b0 w" -b0 |" -b0 ## -b111010101 (# -b111010101 ,# -b0 0# -b0 5# -b0 :# -b0 ?# -b111010101 D# -b0 H# -b0 M# -b0 R# -b0 W# -b0 \# -b0 a# -b0 f# -b0 k# -b0 p# -b0 u# -b0 z# -b0 !$ -b0 &$ -b0 +$ -b0 0$ -b0 5$ +sU32\x20(2) X +b0 ` +b1111111111111111111111111 a +1b +sU32\x20(2) d +b0 l +b1111111111111111111111110 m +1n +b0 w +b1111111111111111111111110 x +1y +b0 #" +b1111111111111111111111110 $" +1%" +b1111100011001000000000111010101 .# +b111010101 2# +b111010101 6# +b111010101 <# +b111 A# +b0 D# +b0 I# +b0 N# +b0 S# +b111010101 X# +b111010101 \# +b0 `# +b0 e# +b0 j# +b0 o# +b111010101 t# +b0 x# +b0 }# +b0 $$ +b0 )$ +b0 .$ +b0 3$ +b0 8$ +b0 =$ +b0 B$ +b0 G$ +b0 L$ +b0 Q$ +b0 V$ +b0 [$ +b0 `$ +b0 e$ +b111010101 \% +b0 b% +b111010101 h% +b0 n% +b0 t% +b0 z% #14000000 1. 1= b11 L -b1111100011001000000000111010001 \" -b111010001 `" -b111010001 d" -b111010001 j" -b111010001 (# -b111010001 ,# -b111010001 D# +sS32\x20(3) X +sS32\x20(3) d +b1111100011001000000000111010001 .# +b111010001 2# +b111010001 6# +b111010001 <# +b111010001 X# +b111010001 \# +b111010001 t# +b111010001 \% +b111010001 h% #15000000 b0 + 0, @@ -2433,29 +2940,41 @@ b0 I b10 L b0 U 0V -b0 ` -0a -b0 j -0k -b1111100011001000000000110010101 \" -b110010101 `" -b110010101 d" -b110010101 j" -b110 o" -b110010101 (# -b110010101 ,# -b110010101 D# +sU32\x20(2) X +b0 a +0b +sU32\x20(2) d +b0 m +0n +b0 x +0y +b0 $" +0%" +b1111100011001000000000110010101 .# +b110010101 2# +b110010101 6# +b110010101 <# +b110 A# +b110010101 X# +b110010101 \# +b110010101 t# +b110010101 \% +b110010101 h% #16000000 1. 1= b11 L -b1111100011001000000000110010001 \" -b110010001 `" -b110010001 d" -b110010001 j" -b110010001 (# -b110010001 ,# -b110010001 D# +sS32\x20(3) X +sS32\x20(3) d +b1111100011001000000000110010001 .# +b110010001 2# +b110010001 6# +b110010001 <# +b110010001 X# +b110010001 \# +b110010001 t# +b110010001 \% +b110010001 h% #17000000 b0 % b0 ) @@ -2470,16 +2989,1169 @@ b0 G b101 L b0 O b0 S -b0 Z -b0 ^ -b0 d -b0 h -b1111100011001000000000011010001 \" -b11010001 `" -b11010001 d" -b11010001 j" -b11 o" -b11010001 (# -b11010001 ,# -b11010001 D# +sS16\x20(5) X +b0 [ +b0 _ +sS16\x20(5) d +b0 g +b0 k +b0 r +b0 v +b0 | +b0 "" +b1111100011001000000000011010001 .# +b11010001 2# +b11010001 6# +b11010001 <# +b11 A# +b11010001 X# +b11010001 \# +b11010001 t# +b11010001 \% +b11010001 h% #18000000 +sCompareI\x20(4) " +b1011 $ +sHdlNone\x20(0) ' +b1001000110100 + +1/ +00 +b1011 3 +sHdlNone\x20(0) 6 +b1001000110100 : +1> +0? +b1011 B +sHdlNone\x20(0) E +b1001000110100 I +b11 L +b1011 N +sHdlNone\x20(0) Q +b1001000110100 U +sS32\x20(3) X +b1011 Z +sHdlNone\x20(0) ] +b1001000110100 a +sS32\x20(3) d +b10111 f +b1001000 j +b10010001101000 m +b10111 q +b1001000 u +b10010001101000 x +b10111 { +b1001000 !" +b10010001101000 $" +b101101100001000001001000110100 .# +b1001000110100 2# +b1100 4# +b1001000110100 6# +b1001000110100 <# +b1100 ># +0@# +b1001000 A# +b1100 C# +b10 D# +b1100 F# +b10 I# +b1100 K# +b10 N# +b1100 P# +b10 S# +b1100 U# +b1001000110100 X# +b1100 Z# +b1001000110100 \# +b1100 ^# +b10 `# +b1100 b# +b10 e# +b1100 g# +b10 j# +b1100 l# +b10 o# +b1100 q# +b1001000110100 t# +b1100 v# +b10 x# +b1100 z# +b10 }# +b1100 !$ +b10 $$ +b1100 &$ +b10 )$ +b1100 +$ +b10 .$ +b1100 0$ +b10 3$ +b1100 5$ +b10 8$ +b1100 :$ +b10 =$ +b1100 ?$ +b10 B$ +b1100 D$ +b10 G$ +b1100 I$ +b10 L$ +b1100 N$ +b10 Q$ +b1100 S$ +b10 V$ +b1100 X$ +b10 [$ +b1100 ]$ +b10 `$ +b1100 b$ +b10 e$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b1001000110100 \% +0^% +b11 _% +sS32\x20(3) `% +b1011 a% +b10 b% +0d% +b11 e% +sS32\x20(3) f% +b1011 g% +b1001000110100 h% +0j% +b11 k% +sU32\x20(2) l% +b1011 m% +b10 n% +0p% +b11 q% +sU32\x20(2) r% +b1011 s% +b10 t% +0v% +b11 w% +sCmpRBOne\x20(8) x% +b1011 y% +b10 z% +b11 |% +b1011 }% +#19000000 +b11111111 * +b1111111111000100110101011 + +1, +0/ +b11111111 9 +b1111111111000100110101011 : +1; +0> +b11111111 H +b1111111111000100110101011 I +1J +b1 L +b11111111 T +b1111111111000100110101011 U +1V +sS64\x20(1) X +b11111111 ` +b1111111111000100110101011 a +1b +sS64\x20(1) d +b11111110 l +b1111111110001001101010111 m +1n +b11111110 w +b1111111110001001101010111 x +1y +b11111110 #" +b1111111110001001101010111 $" +1%" +b101101101001001000100110101011 .# +b1000100110101011 2# +b1101 4# +b1000100110101011 6# +b1000100110101011 <# +b1101 ># +1@# +b1000100110 A# +b1101 C# +b10001 D# +b1101 F# +b10001 I# +b1101 K# +b10001 N# +b1101 P# +b10001 S# +b1101 U# +b1000100110101011 X# +b1101 Z# +b1000100110101011 \# +b1101 ^# +b10001 `# +b1101 b# +b10001 e# +b1101 g# +b10001 j# +b1101 l# +b10001 o# +b1101 q# +b1000100110101011 t# +b1101 v# +b10001 x# +b1101 z# +b10001 }# +b1101 !$ +b10001 $$ +b1101 &$ +b10001 )$ +b1101 +$ +b10001 .$ +b1101 0$ +b10001 3$ +b1101 5$ +b10001 8$ +b1101 :$ +b10001 =$ +b1101 ?$ +b10001 B$ +b1101 D$ +b10001 G$ +b1101 I$ +b10001 L$ +b1101 N$ +b10001 Q$ +b1101 S$ +b10001 V$ +b1101 X$ +b10001 [$ +b1101 ]$ +b10001 `$ +b1101 b$ +b10001 e$ +b1101 g$ +b1101 k$ +b1101 o$ +b1101 s$ +b1101 w$ +b1101 {$ +b1101 !% +b1101 %% +b1101 )% +b1101 -% +b1101 1% +b1101 5% +b1101 9% +b1101 =% +b1101 A% +b1101 E% +b1101 I% +b1101 M% +b1101 Q% +b1101 U% +b1101 Y% +b1000100110101011 \% +1^% +sS64\x20(1) `% +b10001 b% +1d% +sS64\x20(1) f% +b1000100110101011 h% +1j% +sU64\x20(0) l% +b10001 n% +1p% +sU64\x20(0) r% +b10001 t% +1v% +sCmpRBTwo\x20(9) x% +b10001 z% +#20000000 +sCompare\x20(3) " +b100101 ) +b0 * +b0 + +0, +1/ +b100101 8 +b0 9 +b0 : +0; +1> +b100101 G +b0 H +b0 I +0J +b11 L +b100101 S +b0 T +b0 U +0V +sS32\x20(3) X +b100101 _ +b0 ` +b0 a +0b +sS32\x20(3) d +b11 e +b10110 f +b1001010 k +b0 l +b0 m +0n +sStore\x20(1) o +1p +b10110 q +b1001010 v +b0 w +b0 x +0y +1z +b10110 { +b1001010 "" +b0 #" +b0 $" +0%" +b1111101100001000010100000000000 .# +b10100000000000 2# +b1100 4# +b10100000000000 6# +b10100000000000 <# +b1100 ># +0@# +b10100000 A# +b1100 C# +b101 D# +b1100 F# +b101 I# +b1100 K# +b101 N# +b1100 P# +b101 S# +b1100 U# +b10100000000000 X# +b1100 Z# +b10100000000000 \# +b1100 ^# +b101 `# +b1100 b# +b101 e# +b1100 g# +b101 j# +b1100 l# +b101 o# +b1100 q# +b10100000000000 t# +b1100 v# +b101 x# +b1100 z# +b101 }# +b1100 !$ +b101 $$ +b1100 &$ +b101 )$ +b1100 +$ +b101 .$ +b1100 0$ +b101 3$ +b1100 5$ +b101 8$ +b1100 :$ +b101 =$ +b1100 ?$ +b101 B$ +b1100 D$ +b101 G$ +b1100 I$ +b101 L$ +b1100 N$ +b101 Q$ +b1100 S$ +b101 V$ +b1100 X$ +b101 [$ +b1100 ]$ +b101 `$ +b1100 b$ +b101 e$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b10100000000000 \% +0^% +sS32\x20(3) `% +b101 b% +0d% +sS32\x20(3) f% +b10100000000000 h% +0j% +sU32\x20(2) l% +b101 n% +0p% +sU32\x20(2) r% +b101 t% +0v% +sCmpRBOne\x20(8) x% +b101 z% +#21000000 +0/ +0> +b1 L +sS64\x20(1) X +sS64\x20(1) d +b1111101101001000010100000000000 .# +b1101 4# +b1101 ># +b1101 C# +b1101 F# +b1101 K# +b1101 P# +b1101 U# +b1101 Z# +b1101 ^# +b1101 b# +b1101 g# +b1101 l# +b1101 q# +b1101 v# +b1101 z# +b1101 !$ +b1101 &$ +b1101 +$ +b1101 0$ +b1101 5$ +b1101 :$ +b1101 ?$ +b1101 D$ +b1101 I$ +b1101 N$ +b1101 S$ +b1101 X$ +b1101 ]$ +b1101 b$ +b1101 g$ +b1101 k$ +b1101 o$ +b1101 s$ +b1101 w$ +b1101 {$ +b1101 !% +b1101 %% +b1101 )% +b1101 -% +b1101 1% +b1101 5% +b1101 9% +b1101 =% +b1101 A% +b1101 E% +b1101 I% +b1101 M% +b1101 Q% +b1101 U% +b1101 Y% +1^% +sS64\x20(1) `% +1d% +sS64\x20(1) f% +1j% +sU64\x20(0) l% +1p% +sU64\x20(0) r% +1v% +sCmpRBTwo\x20(9) x% +#22000000 +sCompareI\x20(4) " +b0 ) +b1001000110100 + +0. +1/ +b0 8 +b1001000110100 : +0= +1> +b0 G +b1001000110100 I +b10 L +b0 S +b1001000110100 U +sU32\x20(2) X +b0 _ +b1001000110100 a +sU32\x20(2) d +b0 e +b10111 f +b0 k +b10010001101000 m +sLoad\x20(0) o +0p +b10111 q +b0 v +b10010001101000 x +0z +b10111 { +b0 "" +b10010001101000 $" +b101001100001000001001000110100 .# +b1001000110100 2# +b1100 4# +b1001000110100 6# +b1001000110100 <# +b1100 ># +b1001000 A# +b1100 C# +b10 D# +b1100 F# +b10 I# +b1100 K# +b10 N# +b1100 P# +b10 S# +b1100 U# +b1001000110100 X# +b1100 Z# +b1001000110100 \# +b1100 ^# +b10 `# +b1100 b# +b10 e# +b1100 g# +b10 j# +b1100 l# +b10 o# +b1100 q# +b1001000110100 t# +b1100 v# +b10 x# +b1100 z# +b10 }# +b1100 !$ +b10 $$ +b1100 &$ +b10 )$ +b1100 +$ +b10 .$ +b1100 0$ +b10 3$ +b1100 5$ +b10 8$ +b1100 :$ +b10 =$ +b1100 ?$ +b10 B$ +b1100 D$ +b10 G$ +b1100 I$ +b10 L$ +b1100 N$ +b10 Q$ +b1100 S$ +b10 V$ +b1100 X$ +b10 [$ +b1100 ]$ +b10 `$ +b1100 b$ +b10 e$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b1001000110100 \% +0^% +sS32\x20(3) `% +b10 b% +0d% +sS32\x20(3) f% +b1001000110100 h% +0j% +sU32\x20(2) l% +b10 n% +0p% +sU32\x20(2) r% +b10 t% +0v% +sCmpRBOne\x20(8) x% +b10 z% +#23000000 +b1000100110101011 + +0/ +b1000100110101011 : +0> +b1000100110101011 I +b0 L +b1000100110101011 U +sU64\x20(0) X +b1000100110101011 a +sU64\x20(0) d +b10001001101010110 m +b10001001101010110 x +b10001001101010110 $" +b101001101001001000100110101011 .# +b1000100110101011 2# +b1101 4# +b1000100110101011 6# +b1000100110101011 <# +b1101 ># +1@# +b1000100110 A# +b1101 C# +b10001 D# +b1101 F# +b10001 I# +b1101 K# +b10001 N# +b1101 P# +b10001 S# +b1101 U# +b1000100110101011 X# +b1101 Z# +b1000100110101011 \# +b1101 ^# +b10001 `# +b1101 b# +b10001 e# +b1101 g# +b10001 j# +b1101 l# +b10001 o# +b1101 q# +b1000100110101011 t# +b1101 v# +b10001 x# +b1101 z# +b10001 }# +b1101 !$ +b10001 $$ +b1101 &$ +b10001 )$ +b1101 +$ +b10001 .$ +b1101 0$ +b10001 3$ +b1101 5$ +b10001 8$ +b1101 :$ +b10001 =$ +b1101 ?$ +b10001 B$ +b1101 D$ +b10001 G$ +b1101 I$ +b10001 L$ +b1101 N$ +b10001 Q$ +b1101 S$ +b10001 V$ +b1101 X$ +b10001 [$ +b1101 ]$ +b10001 `$ +b1101 b$ +b10001 e$ +b1101 g$ +b1101 k$ +b1101 o$ +b1101 s$ +b1101 w$ +b1101 {$ +b1101 !% +b1101 %% +b1101 )% +b1101 -% +b1101 1% +b1101 5% +b1101 9% +b1101 =% +b1101 A% +b1101 E% +b1101 I% +b1101 M% +b1101 Q% +b1101 U% +b1101 Y% +b1000100110101011 \% +1^% +sS64\x20(1) `% +b10001 b% +1d% +sS64\x20(1) f% +b1000100110101011 h% +1j% +sU64\x20(0) l% +b10001 n% +1p% +sU64\x20(0) r% +b10001 t% +1v% +sCmpRBTwo\x20(9) x% +b10001 z% +#24000000 +sCompare\x20(3) " +b100101 ) +b0 + +1/ +b100101 8 +b0 : +1> +b100101 G +b0 I +b10 L +b100101 S +b0 U +sU32\x20(2) X +b100101 _ +b0 a +sU32\x20(2) d +b11 e +b10110 f +b1001010 k +b0 m +sStore\x20(1) o +1p +b10110 q +b1001010 v +b0 x +1z +b10110 { +b1001010 "" +b0 $" +b1111101100001000010100001000000 .# +b10100001000000 2# +b1100 4# +b10100001000000 6# +b10100001000000 <# +b1100 ># +0@# +b10100001 A# +b1100 C# +b101 D# +b1100 F# +b101 I# +b1100 K# +b101 N# +b1100 P# +b101 S# +b1100 U# +b10100001000000 X# +b1100 Z# +b10100001000000 \# +b1100 ^# +b101 `# +b1100 b# +b101 e# +b1100 g# +b101 j# +b1100 l# +b101 o# +b1100 q# +b10100001000000 t# +b1100 v# +b101 x# +b1100 z# +b101 }# +b1100 !$ +b101 $$ +b1100 &$ +b101 )$ +b1100 +$ +b101 .$ +b1100 0$ +b101 3$ +b1100 5$ +b101 8$ +b1100 :$ +b101 =$ +b1100 ?$ +b101 B$ +b1100 D$ +b101 G$ +b1100 I$ +b101 L$ +b1100 N$ +b101 Q$ +b1100 S$ +b101 V$ +b1100 X$ +b101 [$ +b1100 ]$ +b101 `$ +b1100 b$ +b101 e$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b10100001000000 \% +0^% +sS32\x20(3) `% +b101 b% +0d% +sS32\x20(3) f% +b10100001000000 h% +0j% +sU32\x20(2) l% +b101 n% +0p% +sU32\x20(2) r% +b101 t% +0v% +sCmpRBOne\x20(8) x% +b101 z% +#25000000 +0/ +0> +b0 L +sU64\x20(0) X +sU64\x20(0) d +b1111101101001000010100001000000 .# +b1101 4# +b1101 ># +b1101 C# +b1101 F# +b1101 K# +b1101 P# +b1101 U# +b1101 Z# +b1101 ^# +b1101 b# +b1101 g# +b1101 l# +b1101 q# +b1101 v# +b1101 z# +b1101 !$ +b1101 &$ +b1101 +$ +b1101 0$ +b1101 5$ +b1101 :$ +b1101 ?$ +b1101 D$ +b1101 I$ +b1101 N$ +b1101 S$ +b1101 X$ +b1101 ]$ +b1101 b$ +b1101 g$ +b1101 k$ +b1101 o$ +b1101 s$ +b1101 w$ +b1101 {$ +b1101 !% +b1101 %% +b1101 )% +b1101 -% +b1101 1% +b1101 5% +b1101 9% +b1101 =% +b1101 A% +b1101 E% +b1101 I% +b1101 M% +b1101 Q% +b1101 U% +b1101 Y% +1^% +sS64\x20(1) `% +1d% +sS64\x20(1) f% +1j% +sU64\x20(0) l% +1p% +sU64\x20(0) r% +1v% +sCmpRBTwo\x20(9) x% +#26000000 +11 +1@ +b1000 L +sCmpRBOne\x20(8) X +sCmpRBOne\x20(8) d +b1111101100001000010100110000000 .# +b10100110000000 2# +b1100 4# +b10100110000000 6# +b10100110000000 <# +b1100 ># +b10100110 A# +b1100 C# +b1100 F# +b1100 K# +b1100 P# +b1100 U# +b10100110000000 X# +b1100 Z# +b10100110000000 \# +b1100 ^# +b1100 b# +b1100 g# +b1100 l# +b1100 q# +b10100110000000 t# +b1100 v# +b1100 z# +b1100 !$ +b1100 &$ +b1100 +$ +b1100 0$ +b1100 5$ +b1100 :$ +b1100 ?$ +b1100 D$ +b1100 I$ +b1100 N$ +b1100 S$ +b1100 X$ +b1100 ]$ +b1100 b$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b10100110000000 \% +0^% +sS32\x20(3) `% +0d% +sS32\x20(3) f% +b10100110000000 h% +0j% +sU32\x20(2) l% +0p% +sU32\x20(2) r% +0v% +sCmpRBOne\x20(8) x% +#27000000 +1. +1= +b1001 L +sCmpRBTwo\x20(9) X +sCmpRBTwo\x20(9) d +b1111101101001000010100110000000 .# +b1101 4# +b1101 ># +b1101 C# +b1101 F# +b1101 K# +b1101 P# +b1101 U# +b1101 Z# +b1101 ^# +b1101 b# +b1101 g# +b1101 l# +b1101 q# +b1101 v# +b1101 z# +b1101 !$ +b1101 &$ +b1101 +$ +b1101 0$ +b1101 5$ +b1101 :$ +b1101 ?$ +b1101 D$ +b1101 I$ +b1101 N$ +b1101 S$ +b1101 X$ +b1101 ]$ +b1101 b$ +b1101 g$ +b1101 k$ +b1101 o$ +b1101 s$ +b1101 w$ +b1101 {$ +b1101 !% +b1101 %% +b1101 )% +b1101 -% +b1101 1% +b1101 5% +b1101 9% +b1101 =% +b1101 A% +b1101 E% +b1101 I% +b1101 M% +b1101 Q% +b1101 U% +b1101 Y% +1^% +sS64\x20(1) `% +1d% +sS64\x20(1) f% +1j% +sU64\x20(0) l% +1p% +sU64\x20(0) r% +1v% +sCmpRBTwo\x20(9) x% +#28000000 +0. +1/ +0= +1> +b1010 L +sCmpEqB\x20(10) X +sCmpEqB\x20(10) d +b1111101100001000010100111000000 .# +b10100111000000 2# +b1100 4# +b10100111000000 6# +b10100111000000 <# +b1100 ># +b10100111 A# +b1100 C# +b1100 F# +b1100 K# +b1100 P# +b1100 U# +b10100111000000 X# +b1100 Z# +b10100111000000 \# +b1100 ^# +b1100 b# +b1100 g# +b1100 l# +b1100 q# +b10100111000000 t# +b1100 v# +b1100 z# +b1100 !$ +b1100 &$ +b1100 +$ +b1100 0$ +b1100 5$ +b1100 :$ +b1100 ?$ +b1100 D$ +b1100 I$ +b1100 N$ +b1100 S$ +b1100 X$ +b1100 ]$ +b1100 b$ +b1100 g$ +b1100 k$ +b1100 o$ +b1100 s$ +b1100 w$ +b1100 {$ +b1100 !% +b1100 %% +b1100 )% +b1100 -% +b1100 1% +b1100 5% +b1100 9% +b1100 =% +b1100 A% +b1100 E% +b1100 I% +b1100 M% +b1100 Q% +b1100 U% +b1100 Y% +b10100111000000 \% +0^% +sS32\x20(3) `% +0d% +sS32\x20(3) f% +b10100111000000 h% +0j% +sU32\x20(2) l% +0p% +sU32\x20(2) r% +0v% +sCmpRBOne\x20(8) x% +#29000000 diff --git a/crates/cpu/tests/simple_power_isa_decoder.rs b/crates/cpu/tests/simple_power_isa_decoder.rs index 1eee0fa..84196d0 100644 --- a/crates/cpu/tests/simple_power_isa_decoder.rs +++ b/crates/cpu/tests/simple_power_isa_decoder.rs @@ -3,7 +3,9 @@ use cpu::{ decoder::simple_power_isa::decode_one_insn, - instruction::{AddSubMOp, MOp, MOpDestReg, MOpRegNum, OutputIntegerMode}, + instruction::{ + AddSubMOp, CompareMOp, CompareMode, MOp, MOpDestReg, MOpRegNum, OutputIntegerMode, + }, util::array_vec::ArrayVec, }; use fayalite::{prelude::*, sim::vcd::VcdWriterDecls, util::RcWriter}; @@ -486,6 +488,181 @@ fn test_cases() -> Vec { false, ), )); + retval.push(insn_single( + "cmpi 3, 0, 4, 0x1234", + 0x2d841234, + None, + CompareMOp::compare_i( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value], + 0x1234.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::S32(), + ), + )); + retval.push(insn_single( + "cmpi 3, 1, 4, -0x7655", + 0x2da489ab, + None, + CompareMOp::compare_i( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value], + (0x89abu16 as i16).cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::S64(), + ), + )); + retval.push(insn_single( + "cmp 3, 0, 4, 5", + 0x7d842800, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::S32(), + ), + )); + retval.push(insn_single( + "cmp 3, 1, 4, 5", + 0x7da42800, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::S64(), + ), + )); + retval.push(insn_single( + "cmpli 3, 0, 4, 0x1234", + 0x29841234, + None, + CompareMOp::compare_i( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value], + 0x1234.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::U32(), + ), + )); + retval.push(insn_single( + "cmpli 3, 1, 4, 0x89ab", + 0x29a489ab, + None, + CompareMOp::compare_i( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value], + 0x89ab.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::U64(), + ), + )); + retval.push(insn_single( + "cmpl 3, 0, 4, 5", + 0x7d842840, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::U32(), + ), + )); + retval.push(insn_single( + "cmpl 3, 1, 4, 5", + 0x7da42840, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::U64(), + ), + )); + retval.push(insn_single( + "cmprb 3, 0, 4, 5", + 0x7d842980, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::CmpRBOne(), + ), + )); + retval.push(insn_single( + "cmprb 3, 1, 4, 5", + 0x7da42980, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::CmpRBTwo(), + ), + )); + retval.push(insn_single( + "cmpeqb 3, 4, 5", + 0x7d8429c0, + None, + CompareMOp::compare( + MOpDestReg::new_sim(&[MOpRegNum::power_isa_cr_reg_num(3)], &[]), + [ + MOpRegNum::power_isa_gpr_reg(4_hdl_u5).value, + MOpRegNum::power_isa_gpr_reg(5_hdl_u5).value, + ], + 0.cast_to_static::>(), + #[hdl(sim)] + OutputIntegerMode::Full64(), + #[hdl(sim)] + CompareMode::CmpEqB(), + ), + )); retval }