more cleanup

This commit is contained in:
Folkert 2021-10-20 17:05:59 +02:00
parent 7735ca21ea
commit 76e26e47f3
2 changed files with 3 additions and 43 deletions

View file

@ -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();

View file

@ -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");