Add custom legalization for floating point constants.
Use the simplest expansion which materializes the bits of the floating point constant as an integer and then bit-casts to the floating point type. In the future, we may want to use constant pools instead. Either way, we need custom legalization. Also add a legalize_monomorphic() function to the Python targetISA class which permits the configuration of a default legalization action for monomorphic instructions, just like legalize_type() does for polymorphic instructions.
This commit is contained in:
@@ -599,6 +599,11 @@ impl Ieee32 {
|
||||
pub fn with_float(x: f32) -> Ieee32 {
|
||||
Ieee32(unsafe { mem::transmute(x) })
|
||||
}
|
||||
|
||||
/// Get the bitwise representation.
|
||||
pub fn bits(self) -> u32 {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Ieee32 {
|
||||
@@ -630,6 +635,11 @@ impl Ieee64 {
|
||||
pub fn with_float(x: f64) -> Ieee64 {
|
||||
Ieee64(unsafe { mem::transmute(x) })
|
||||
}
|
||||
|
||||
/// Get the bitwise representation.
|
||||
pub fn bits(self) -> u64 {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for Ieee64 {
|
||||
|
||||
Reference in New Issue
Block a user