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;
|
mod stack;
|
||||||
|
|
||||||
/// Returns a builder that can create a corresponding `TargetIsa`
|
/// 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 {
|
macro_rules! isa_builder {
|
||||||
($name:ident, $feature:tt) => {{
|
($name: ident, $feature: tt, $triple: ident) => {{
|
||||||
#[cfg(feature = $feature)]
|
#[cfg(feature = $feature)]
|
||||||
fn $name(triple: Triple) -> Result<Builder, LookupError> {
|
{
|
||||||
Ok($name::isa_builder(triple))
|
Ok($name::isa_builder($triple))
|
||||||
};
|
}
|
||||||
#[cfg(not(feature = $feature))]
|
#[cfg(not(feature = $feature))]
|
||||||
fn $name(_triple: Triple) -> Result<Builder, LookupError> {
|
{
|
||||||
Err(LookupError::SupportDisabled)
|
Err(LookupError::SupportDisabled)
|
||||||
}
|
}
|
||||||
$name
|
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,12 +106,12 @@ macro_rules! isa_builder {
|
|||||||
/// Return a builder that can create a corresponding `TargetIsa`.
|
/// Return a builder that can create a corresponding `TargetIsa`.
|
||||||
pub fn lookup(triple: Triple) -> Result<Builder, LookupError> {
|
pub fn lookup(triple: Triple) -> Result<Builder, LookupError> {
|
||||||
match triple.architecture {
|
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 => {
|
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::Arm { .. } => isa_builder!(arm32, "arm32", triple),
|
||||||
Architecture::Aarch64 { .. } => isa_builder!(arm64, "arm64")(triple),
|
Architecture::Aarch64 { .. } => isa_builder!(arm64, "arm64", triple),
|
||||||
_ => Err(LookupError::Unsupported),
|
_ => Err(LookupError::Unsupported),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user