mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 22:34:45 +00:00
more cleanup
This commit is contained in:
parent
7735ca21ea
commit
76e26e47f3
2 changed files with 3 additions and 43 deletions
|
@ -81,6 +81,7 @@ impl Index<IntWidth> for IntrinsicName {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
macro_rules! float_intrinsic {
|
macro_rules! float_intrinsic {
|
||||||
($name:literal) => {{
|
($name:literal) => {{
|
||||||
let mut output = IntrinsicName::default();
|
let mut output = IntrinsicName::default();
|
||||||
|
@ -93,6 +94,7 @@ macro_rules! float_intrinsic {
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[macro_export]
|
||||||
macro_rules! int_intrinsic {
|
macro_rules! int_intrinsic {
|
||||||
($name:literal) => {{
|
($name:literal) => {{
|
||||||
let mut output = IntrinsicName::default();
|
let mut output = IntrinsicName::default();
|
||||||
|
|
|
@ -49,6 +49,7 @@ use morphic_lib::{
|
||||||
CalleeSpecVar, FuncName, FuncSpec, FuncSpecSolutions, ModSolutions, UpdateMode, UpdateModeVar,
|
CalleeSpecVar, FuncName, FuncSpec, FuncSpecSolutions, ModSolutions, UpdateMode, UpdateModeVar,
|
||||||
};
|
};
|
||||||
use roc_builtins::bitcode::{self, FloatWidth, IntWidth, IntrinsicName};
|
use roc_builtins::bitcode::{self, FloatWidth, IntWidth, IntrinsicName};
|
||||||
|
use roc_builtins::{float_intrinsic, int_intrinsic};
|
||||||
use roc_collections::all::{ImMap, MutMap, MutSet};
|
use roc_collections::all::{ImMap, MutMap, MutSet};
|
||||||
use roc_module::low_level::LowLevel;
|
use roc_module::low_level::LowLevel;
|
||||||
use roc_module::symbol::{Interns, ModuleId, Symbol};
|
use roc_module::symbol::{Interns, ModuleId, Symbol};
|
||||||
|
@ -563,49 +564,6 @@ fn add_intrinsics<'ctx>(ctx: &'ctx Context, module: &Module<'ctx>) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! define_float_intrinsic {
|
|
||||||
($name:literal, $output:expr) => {
|
|
||||||
$output.options[1] = concat!($name, ".f32");
|
|
||||||
$output.options[2] = concat!($name, ".f64");
|
|
||||||
$output.options[3] = concat!($name, ".f128");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! define_int_intrinsic {
|
|
||||||
($name:literal, $output:expr) => {
|
|
||||||
$output.options[4] = concat!($name, ".i8");
|
|
||||||
$output.options[5] = concat!($name, ".i16");
|
|
||||||
$output.options[6] = concat!($name, ".i32");
|
|
||||||
$output.options[7] = concat!($name, ".i64");
|
|
||||||
$output.options[8] = concat!($name, ".i128");
|
|
||||||
$output.options[9] = concat!($name, ".i8");
|
|
||||||
$output.options[10] = concat!($name, ".i16");
|
|
||||||
$output.options[11] = concat!($name, ".i32");
|
|
||||||
$output.options[12] = concat!($name, ".i64");
|
|
||||||
$output.options[13] = concat!($name, ".i128");
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! float_intrinsic {
|
|
||||||
($name:literal) => {{
|
|
||||||
let mut output = IntrinsicName::default();
|
|
||||||
|
|
||||||
define_float_intrinsic!($name, output);
|
|
||||||
|
|
||||||
output
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
||||||
macro_rules! int_intrinsic {
|
|
||||||
($name:literal) => {{
|
|
||||||
let mut output = IntrinsicName::default();
|
|
||||||
|
|
||||||
define_int_intrinsic!($name, output);
|
|
||||||
|
|
||||||
output
|
|
||||||
}};
|
|
||||||
}
|
|
||||||
|
|
||||||
const LLVM_POW: IntrinsicName = float_intrinsic!("llvm.pow");
|
const LLVM_POW: IntrinsicName = float_intrinsic!("llvm.pow");
|
||||||
const LLVM_FABS: IntrinsicName = float_intrinsic!("llvm.fabs");
|
const LLVM_FABS: IntrinsicName = float_intrinsic!("llvm.fabs");
|
||||||
static LLVM_SQRT: IntrinsicName = float_intrinsic!("llvm.sqrt");
|
static LLVM_SQRT: IntrinsicName = float_intrinsic!("llvm.sqrt");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue