use serde::Deserialize;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub enum BranchPredictorKind {
#[default]
Static,
GShare,
Perceptron,
#[serde(alias = "TAGE")]
Tage,
Tournament,
#[serde(alias = "SC-L-TAGE")]
ScLTage,
}
mod ittage;
mod loop_predictor;
mod sc;
mod simple;
mod tage;
pub use ittage::IttageConfig;
pub use loop_predictor::LoopConfig;
pub use sc::{
GehlConfig, LocalGehlConfig, MAX_GEHL_TABLES, MAX_LOCAL_HISTORIES, ScConfig, ScConfigError,
};
pub use simple::{PerceptronConfig, TournamentConfig};
pub use tage::{
MAX_TAGE_BANKS, MAX_TAGE_HISTORY, TageAllocation, TageBanking, TageConfig, TageHashing,
TageHistoryMode, TageUpdate,
};