// Integer instructions use crate::{wasm::ToLSBytes, MacroAssembler, Result}; use wasmparser::{Ieee32, Ieee64}; impl MacroAssembler { /// Sub two numbers. pub fn _sub(&mut self) -> Result<()> { self._swap1()?; self.asm._sub() } /// Push a 32-bit integer value on the stack. pub fn _i32_const(&mut self, value: i32) -> Result<()> { if value == 0 { self._push0() } else { self.push(value.to_ls_bytes().as_ref()) } } /// Push a 64-bit integer value on the stack. pub fn _i64_const(&mut self, value: i64) -> Result<()> { if value == 0 { self._push0() } else { self.push(value.to_ls_bytes().as_ref()) } } /// Push a 32-bit float value on the stack. pub fn _f32_const(&mut self, _value: Ieee32) -> Result<()> { todo!() } /// Push a 64-bit float value on the stack. pub fn _f64_const(&mut self, _value: Ieee64) -> Result<()> { todo!() } /// wrap a 64-bit integer to a 32-bit integer. pub fn _i32_wrap_i64(&mut self) -> Result<()> { todo!() } /// Extend a signed 32-bit integer to a 64-bit integer. pub fn _i64_extend_i32_s(&mut self) -> Result<()> { todo!() } /// Extend an unsigned 32-bit integer to a 64-bit integer. pub fn _i64_extend_i32_u(&mut self) -> Result<()> { todo!() } /// Truncate a 64-bit float to a signed 32-bit integer. pub fn _f32_demote_f64(&mut self) -> Result<()> { todo!() } /// Truncate a 64-bit float to an unsigned 32-bit integer. pub fn _f64_promote_f32(&mut self) -> Result<()> { todo!() } /// Convert a signed 32-bit integer to a 32-bit float. pub fn _i32_reinterpret_f32(&mut self) -> Result<()> { todo!() } /// Convert a signed 64-bit integer to a 64-bit float. pub fn _i64_reinterpret_f64(&mut self) -> Result<()> { todo!() } /// Convert a 32-bit float to a signed 32-bit integer. pub fn _f32_reinterpret_i32(&mut self) -> Result<()> { todo!() } /// Convert a 64-bit float to a signed 64-bit integer. pub fn _f64_reinterpret_i64(&mut self) -> Result<()> { todo!() } /// sign-agnostic rotate left /// /// Return the result of rotating i1 left by k bits. pub fn _rotl(&mut self) -> Result<()> { todo!() } /// sign-agnostic rotate right /// /// Return the result of rotating i1 right by k bits. pub fn _rotr(&mut self) -> Result<()> { todo!() } /// sign-agnostic count leading zero bits /// /// Return the number of leading zero bits in i, all zero bits /// are considered leading if the value is zero. pub fn _clz(&mut self) -> Result<()> { todo!() } /// sign-agnostic count leading zero bits /// /// Return the number of leading zero bits in i, all zero bits /// are considered trailing if the value is zero. pub fn _ctz(&mut self) -> Result<()> { todo!() } /// sign-agnostic count number of one bits /// /// Return the count of no zero bits in i. pub fn _popcnt(&mut self) -> Result<()> { todo!() } /// Truncate a 32-bit float to an integer pub fn _trunc_f32(&mut self) -> Result<()> { todo!() } /// Truncate a 64-bit float to an integer pub fn _trunc_f64(&mut self) -> Result<()> { todo!() } }