Simplify isa_builder macro
This commit is contained in:
committed by
Nicolas B. Pierron
parent
d2443a75f3
commit
90b0b86f5c
@@ -88,18 +88,17 @@ pub mod registers;
|
||||
mod stack;
|
||||
|
||||
/// Returns a builder that can create a corresponding `TargetIsa`
|
||||
/// or `Err(LookupError::Unsupported)` if not enabled.
|
||||
/// or `Err(LookupError::SupportDisabled)` if not enabled.
|
||||
macro_rules! isa_builder {
|
||||
($name:ident, $feature:tt) => {{
|
||||
($name: ident, $feature: tt, $triple: ident) => {{
|
||||
#[cfg(feature = $feature)]
|
||||
fn $name(triple: Triple) -> Result<Builder, LookupError> {
|
||||
Ok($name::isa_builder(triple))
|
||||
};
|
||||
{
|
||||
Ok($name::isa_builder($triple))
|
||||
}
|
||||
#[cfg(not(feature = $feature))]
|
||||
fn $name(_triple: Triple) -> Result<Builder, LookupError> {
|
||||
{
|
||||
Err(LookupError::SupportDisabled)
|
||||
}
|
||||
$name
|
||||
}};
|
||||
}
|
||||
|
||||
@@ -107,12 +106,12 @@ macro_rules! isa_builder {
|
||||
/// Return a builder that can create a corresponding `TargetIsa`.
|
||||
pub fn lookup(triple: Triple) -> Result<Builder, LookupError> {
|
||||
match triple.architecture {
|
||||
Architecture::Riscv32 | Architecture::Riscv64 => isa_builder!(riscv, "riscv")(triple),
|
||||
Architecture::Riscv32 | Architecture::Riscv64 => isa_builder!(riscv, "riscv", triple),
|
||||
Architecture::I386 | Architecture::I586 | Architecture::I686 | Architecture::X86_64 => {
|
||||
isa_builder!(x86, "x86")(triple)
|
||||
isa_builder!(x86, "x86", triple)
|
||||
}
|
||||
Architecture::Arm { .. } => isa_builder!(arm32, "arm32")(triple),
|
||||
Architecture::Aarch64 { .. } => isa_builder!(arm64, "arm64")(triple),
|
||||
Architecture::Arm { .. } => isa_builder!(arm32, "arm32", triple),
|
||||
Architecture::Aarch64 { .. } => isa_builder!(arm64, "arm64", triple),
|
||||
_ => Err(LookupError::Unsupported),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user