Compare commits

..

No commits in common. "00ddd602c591599b2f5a8c4bebbc934988a94b29" and "60341e22af7267835d8f8be7fa5900c49e8e3bf5" have entirely different histories.

9 changed files with 26 additions and 24 deletions

View file

@ -4,7 +4,6 @@ on: [push, pull_request]
jobs: jobs:
deps: deps:
runs-on: debian-12
uses: ./.forgejo/workflows/deps.yml uses: ./.forgejo/workflows/deps.yml
test: test:
runs-on: debian-12 runs-on: debian-12
@ -39,7 +38,7 @@ jobs:
z3 \ z3 \
zlib1g-dev zlib1g-dev
- run: | - run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.89.0 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.82.0
source "$HOME/.cargo/env" source "$HOME/.cargo/env"
echo "$PATH" >> "$GITHUB_PATH" echo "$PATH" >> "$GITHUB_PATH"
- uses: https://git.libre-chip.org/mirrors/cache/restore@v3 - uses: https://git.libre-chip.org/mirrors/cache/restore@v3

View file

@ -7,11 +7,11 @@ members = ["crates/*"]
[workspace.package] [workspace.package]
version = "0.1.0" version = "0.1.0"
license = "LGPL-3.0-or-later" license = "LGPL-3.0-or-later"
edition = "2024" edition = "2021"
repository = "" repository = ""
keywords = [] keywords = []
categories = [] categories = []
rust-version = "1.89.0" rust-version = "1.82.0"
[workspace.dependencies] [workspace.dependencies]
fayalite = { git = "https://git.libre-chip.org/libre-chip/fayalite.git", version = "0.3.0", branch = "master" } fayalite = { git = "https://git.libre-chip.org/libre-chip/fayalite.git", version = "0.3.0", branch = "master" }

View file

@ -1,10 +1,10 @@
// SPDX-License-Identifier: LGPL-3.0-or-later // SPDX-License-Identifier: LGPL-3.0-or-later
// See Notices.txt for copyright information // See Notices.txt for copyright information
use crate::{ use crate::{
instruction::{CONST_ZERO_UNIT_NUM, MOpTrait, PRegNum, RenamedMOp, UnitNum, UnitOutRegNum}, instruction::{MOpTrait, PRegNum, RenamedMOp, UnitNum, UnitOutRegNum, CONST_ZERO_UNIT_NUM},
unit::{ unit::{
UnitCancelInput, UnitKind, UnitOutputWrite,
unit_base::{UnitForwardingInfo, UnitToRegAlloc}, unit_base::{UnitForwardingInfo, UnitToRegAlloc},
UnitCancelInput, UnitKind, UnitOutputWrite,
}, },
}; };
use fayalite::prelude::*; use fayalite::prelude::*;

View file

@ -25,7 +25,10 @@ impl<T: MOpTrait> MOpInto<T> for T {
} }
pub trait MOpTrait: Type { pub trait MOpTrait: Type {
type Mapped<NewDestReg: Type, NewSrcRegWidth: Size>: MOpTrait<DestReg = NewDestReg, SrcRegWidth = NewSrcRegWidth>; type Mapped<NewDestReg: Type, NewSrcRegWidth: Size>: MOpTrait<
DestReg = NewDestReg,
SrcRegWidth = NewSrcRegWidth,
>;
type DestReg: Type; type DestReg: Type;
type SrcRegWidth: Size; type SrcRegWidth: Size;
fn dest_reg_ty(self) -> Self::DestReg; fn dest_reg_ty(self) -> Self::DestReg;
@ -70,11 +73,11 @@ pub trait CommonMOpTrait: MOpTrait {
type PrefixPad: KnownSize; type PrefixPad: KnownSize;
type SrcCount: KnownSize; type SrcCount: KnownSize;
type CommonMOpTraitMapped<NewDestReg: Type, NewSrcRegWidth: Size>: CommonMOpTrait< type CommonMOpTraitMapped<NewDestReg: Type, NewSrcRegWidth: Size>: CommonMOpTrait<
DestReg = NewDestReg, DestReg = NewDestReg,
SrcRegWidth = NewSrcRegWidth, SrcRegWidth = NewSrcRegWidth,
PrefixPad = Self::PrefixPad, PrefixPad = Self::PrefixPad,
SrcCount = Self::SrcCount, SrcCount = Self::SrcCount,
>; >;
type CommonMOpTraitDestReg: Type; type CommonMOpTraitDestReg: Type;
type CommonMOpTraitSrcRegWidth: Size; type CommonMOpTraitSrcRegWidth: Size;
fn common_mop_ty( fn common_mop_ty(

View file

@ -3,18 +3,18 @@
use crate::{ use crate::{
config::CpuConfig, config::CpuConfig,
instruction::{ instruction::{
COMMON_MOP_SRC_LEN, MOp, MOpDestReg, MOpRegNum, MOpTrait, MoveRegMOp, PRegNum, MOp, MOpDestReg, MOpRegNum, MOpTrait, MoveRegMOp, PRegNum, RenameTableName, UnitOutRegNum,
RenameTableName, UnitOutRegNum, COMMON_MOP_SRC_LEN,
}, },
unit::{ unit::{
unit_base::{UnitForwardingInfo, UnitInput},
GlobalState, TrapData, UnitMOp, UnitOutput, UnitOutputWrite, UnitResult, GlobalState, TrapData, UnitMOp, UnitOutput, UnitOutputWrite, UnitResult,
UnitResultCompleted, UnitTrait, UnitResultCompleted, UnitTrait,
unit_base::{UnitForwardingInfo, UnitInput},
}, },
util::tree_reduce::tree_reduce_with_state, util::tree_reduce::tree_reduce_with_state,
}; };
use fayalite::{ use fayalite::{
memory::{WriteStruct, splat_mask}, memory::{splat_mask, WriteStruct},
module::{instance_with_loc, memory_with_loc, wire_with_loc}, module::{instance_with_loc, memory_with_loc, wire_with_loc},
prelude::*, prelude::*,
util::ready_valid::ReadyValid, util::ready_valid::ReadyValid,

View file

@ -4,8 +4,8 @@
use crate::{ use crate::{
config::CpuConfig, config::CpuConfig,
instruction::{ instruction::{
AluBranchMOp, LoadStoreMOp, MOp, MOpDestReg, MOpInto, MOpRegNum, MOpTrait, RenamedMOp, mop_enum, AluBranchMOp, LoadStoreMOp, MOp, MOpDestReg, MOpInto, MOpRegNum, MOpTrait,
UnitOutRegNum, mop_enum, RenamedMOp, UnitOutRegNum,
}, },
register::{FlagsMode, PRegValue}, register::{FlagsMode, PRegValue},
unit::unit_base::UnitToRegAlloc, unit::unit_base::UnitToRegAlloc,

View file

@ -4,14 +4,14 @@
use crate::{ use crate::{
config::CpuConfig, config::CpuConfig,
instruction::{ instruction::{
AddSubMOp, AluBranchMOp, AluCommonMOp, COMMON_MOP_SRC_LEN, CommonMOp, LogicalMOp, MOpTrait, AddSubMOp, AluBranchMOp, AluCommonMOp, CommonMOp, LogicalMOp, MOpTrait, OutputIntegerMode,
OutputIntegerMode, RenamedMOp, UnitOutRegNum, RenamedMOp, UnitOutRegNum, COMMON_MOP_SRC_LEN,
}, },
register::{FlagsMode, PRegFlagsPowerISA, PRegFlagsX86, PRegValue}, register::{FlagsMode, PRegFlagsPowerISA, PRegFlagsX86, PRegValue},
unit::{ unit::{
unit_base::{unit_base, ExecuteEnd, ExecuteStart, UnitToRegAlloc},
DynUnit, DynUnitWrapper, GlobalState, UnitKind, UnitMOp, UnitOutput, UnitResult, DynUnit, DynUnitWrapper, GlobalState, UnitKind, UnitMOp, UnitOutput, UnitResult,
UnitResultCompleted, UnitTrait, UnitResultCompleted, UnitTrait,
unit_base::{ExecuteEnd, ExecuteStart, UnitToRegAlloc, unit_base},
}, },
}; };
use fayalite::{ use fayalite::{

View file

@ -3,7 +3,7 @@
use crate::{ use crate::{
config::CpuConfig, config::CpuConfig,
instruction::{COMMON_MOP_SRC_LEN, MOpTrait, PRegNum, UnitNum, UnitOutRegNum}, instruction::{MOpTrait, PRegNum, UnitNum, UnitOutRegNum, COMMON_MOP_SRC_LEN},
register::PRegValue, register::PRegValue,
unit::{UnitCancelInput, UnitOutput, UnitOutputWrite}, unit::{UnitCancelInput, UnitOutput, UnitOutputWrite},
util::tree_reduce::tree_reduce, util::tree_reduce::tree_reduce,

View file

@ -4,7 +4,7 @@
use cpu::{ use cpu::{
config::{CpuConfig, UnitConfig}, config::{CpuConfig, UnitConfig},
instruction::{AddSubMOp, LogicalMOp, MOp, MOpDestReg, MOpRegNum, OutputIntegerMode}, instruction::{AddSubMOp, LogicalMOp, MOp, MOpDestReg, MOpRegNum, OutputIntegerMode},
reg_alloc::{FetchedDecodedMOp, reg_alloc}, reg_alloc::{reg_alloc, FetchedDecodedMOp},
register::{FlagsMode, PRegFlagsPowerISA}, register::{FlagsMode, PRegFlagsPowerISA},
unit::{GlobalState, UnitKind}, unit::{GlobalState, UnitKind},
}; };
@ -12,7 +12,7 @@ use fayalite::{
assert_export_firrtl, assert_export_firrtl,
firrtl::ExportOptions, firrtl::ExportOptions,
prelude::*, prelude::*,
sim::{Simulation, time::SimDuration, vcd::VcdWriterDecls}, sim::{time::SimDuration, vcd::VcdWriterDecls, Simulation},
util::RcWriter, util::RcWriter,
}; };
use std::num::NonZeroUsize; use std::num::NonZeroUsize;