Skip to content
Snippets Groups Projects

Fix float constants in LLVM

Merged rarbore2 requested to merge fix_floats_llvm into main
Files
3
+ 7
10
use std::collections::BTreeMap;
use std::fmt::{Error, Write};
use std::iter::zip;
use std::mem::transmute;
use std::sync::atomic::{AtomicUsize, Ordering};
use hercules_ir::*;
@@ -264,18 +265,14 @@ impl<'a> CPUContext<'a> {
Constant::UnsignedInteger32(val) => write!(body, "i32 {} to i32\n", val)?,
Constant::UnsignedInteger64(val) => write!(body, "i64 {} to i64\n", val)?,
Constant::Float32(val) => {
if val.fract() == 0.0 {
write!(body, "float {}.0 to float\n", val)?
} else {
write!(body, "float {} to float\n", val)?
}
write!(body, "float 0x{:016x} to float\n", unsafe {
transmute::<f64, u64>(*val as f64)
})?;
}
Constant::Float64(val) => {
if val.fract() == 0.0 {
write!(body, "double {}.0 to double\n", val)?
} else {
write!(body, "double {} to double\n", val)?
}
write!(body, "float 0x{:016x} to float\n", unsafe {
transmute::<f64, u64>(*val)
})?;
}
_ => unreachable!(),
}
Loading