/* * Copyright (C) 2023 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Autogenerated, do not modify. */ template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Sub::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Mul::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32DivS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32DivU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32RemS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32RemU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32And::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Or::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Xor::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Shl::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32ShrU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32ShrS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Rotr::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Rotl::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Eq::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Ne::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32LtS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32LeS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32LtU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32LeU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32GtS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32GeS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32GtU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32GeU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Clz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Ctz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Popcnt::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Eqz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Add::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Sub::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Mul::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64DivS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64DivU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64RemS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64RemU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64And::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Or::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Xor::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Shl::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64ShrU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64ShrS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Rotr::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Rotl::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Eq::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64Ne::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64LtS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64LeS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64LtU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64LeU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64GtS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64GeS::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64GtU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI64GeU::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Clz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Ctz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Popcnt::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Eqz::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Add::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Sub::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Mul::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Div::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Min::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Max::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Abs::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Neg::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Copysign::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Ceil::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Floor::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Trunc::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Nearest::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32Sqrt::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Eq::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Ne::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Lt::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Le::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Gt::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF32Ge::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Add::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Sub::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Mul::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Div::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Min::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Max::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Abs::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Neg::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Copysign::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Ceil::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Floor::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Trunc::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Nearest::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64Sqrt::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Eq::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Ne::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Lt::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Le::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Gt::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmF64Ge::emit(this, result, lhs, rhs); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32TruncSF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32TruncSF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32TruncUF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32TruncUF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32WrapI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64TruncSF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64TruncSF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64TruncUF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64TruncUF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64ExtendSI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64ExtendUI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32ConvertSI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32ConvertUI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32ConvertSI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32ConvertUI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32DemoteF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF32ReinterpretI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64ConvertSI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64ConvertUI32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64ConvertSI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64ConvertUI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64PromoteF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmF64ReinterpretI64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32ReinterpretF32::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64ReinterpretF64::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Extend8S::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI32Extend16S::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Extend8S::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Extend16S::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType operand, ExpressionType& result) -> PartialResult { result = push(); WasmI64Extend32S::emit(this, result, operand); return { }; } template<> auto LLIntGenerator::addOp(ExpressionType lhs, ExpressionType rhs, ExpressionType& result) -> PartialResult { result = push(); WasmI32Add::emit(this, result, lhs, rhs); return { }; } // SHA1Hash: 3d3a1f42aeb06c9364881766680c852da64d3ae3