@@ -1983,31 +1983,45 @@ struct InstructionTranslator<Context: TranslatorContext>: InstructionVisitor {
19831983 }
19841984 try visitUnary ( operand, instruction)
19851985 }
1986- mutating func visitI32WrapI64( ) throws -> Output { try visitConversion ( . i64, . i32, Instruction . i32WrapI64) }
1987- mutating func visitI32TruncF32S( ) throws -> Output { try visitConversion ( . f32, . i32, Instruction . i32TruncF32S) }
1988- mutating func visitI32TruncF32U( ) throws -> Output { try visitConversion ( . f32, . i32, Instruction . i32TruncF32U) }
1989- mutating func visitI32TruncF64S( ) throws -> Output { try visitConversion ( . f64, . i32, Instruction . i32TruncF64S) }
1990- mutating func visitI32TruncF64U( ) throws -> Output { try visitConversion ( . f64, . i32, Instruction . i32TruncF64U) }
1991- mutating func visitI64ExtendI32S( ) throws -> Output { try visitConversion ( . i32, . i64, Instruction . i64ExtendI32S) }
1992- mutating func visitI64ExtendI32U( ) throws -> Output { try visitConversion ( . i32, . i64, Instruction . i64ExtendI32U) }
1993- mutating func visitI64TruncF32S( ) throws -> Output { try visitConversion ( . f32, . i64, Instruction . i64TruncF32S) }
1994- mutating func visitI64TruncF32U( ) throws -> Output { try visitConversion ( . f32, . i64, Instruction . i64TruncF32U) }
1995- mutating func visitI64TruncF64S( ) throws -> Output { try visitConversion ( . f64, . i64, Instruction . i64TruncF64S) }
1996- mutating func visitI64TruncF64U( ) throws -> Output { try visitConversion ( . f64, . i64, Instruction . i64TruncF64U) }
1997- mutating func visitF32ConvertI32S( ) throws -> Output { try visitConversion ( . i32, . f32, Instruction . f32ConvertI32S) }
1998- mutating func visitF32ConvertI32U( ) throws -> Output { try visitConversion ( . i32, . f32, Instruction . f32ConvertI32U) }
1999- mutating func visitF32ConvertI64S( ) throws -> Output { try visitConversion ( . i64, . f32, Instruction . f32ConvertI64S) }
2000- mutating func visitF32ConvertI64U( ) throws -> Output { try visitConversion ( . i64, . f32, Instruction . f32ConvertI64U) }
2001- mutating func visitF32DemoteF64( ) throws -> Output { try visitConversion ( . f64, . f32, Instruction . f32DemoteF64) }
2002- mutating func visitF64ConvertI32S( ) throws -> Output { try visitConversion ( . i32, . f64, Instruction . f64ConvertI32S) }
2003- mutating func visitF64ConvertI32U( ) throws -> Output { try visitConversion ( . i32, . f64, Instruction . f64ConvertI32U) }
2004- mutating func visitF64ConvertI64S( ) throws -> Output { try visitConversion ( . i64, . f64, Instruction . f64ConvertI64S) }
2005- mutating func visitF64ConvertI64U( ) throws -> Output { try visitConversion ( . i64, . f64, Instruction . f64ConvertI64U) }
2006- mutating func visitF64PromoteF32( ) throws -> Output { try visitConversion ( . f32, . f64, Instruction . f64PromoteF32) }
2007- mutating func visitI32ReinterpretF32( ) throws -> Output { try visitConversion ( . f32, . i32, Instruction . i32ReinterpretF32) }
2008- mutating func visitI64ReinterpretF64( ) throws -> Output { try visitConversion ( . f64, . i64, Instruction . i64ReinterpretF64) }
2009- mutating func visitF32ReinterpretI32( ) throws -> Output { try visitConversion ( . i32, . f32, Instruction . f32ReinterpretI32) }
2010- mutating func visitF64ReinterpretI64( ) throws -> Output { try visitConversion ( . i64, . f64, Instruction . f64ReinterpretI64) }
1986+ mutating func visitConversion( _ conversion: WasmParser . Instruction . Conversion ) throws {
1987+ let from : ValueType , to : ValueType , instruction : ( Instruction . UnaryOperand ) -> Instruction
1988+ switch conversion {
1989+ case . i32WrapI64: ( from, to, instruction) = ( . i64, . i32, Instruction . i32WrapI64)
1990+ case . i32TruncF32S: ( from, to, instruction) = ( . f32, . i32, Instruction . i32TruncF32S)
1991+ case . i32TruncF32U: ( from, to, instruction) = ( . f32, . i32, Instruction . i32TruncF32U)
1992+ case . i32TruncF64S: ( from, to, instruction) = ( . f64, . i32, Instruction . i32TruncF64S)
1993+ case . i32TruncF64U: ( from, to, instruction) = ( . f64, . i32, Instruction . i32TruncF64U)
1994+ case . i64ExtendI32S: ( from, to, instruction) = ( . i32, . i64, Instruction . i64ExtendI32S)
1995+ case . i64ExtendI32U: ( from, to, instruction) = ( . i32, . i64, Instruction . i64ExtendI32U)
1996+ case . i64TruncF32S: ( from, to, instruction) = ( . f32, . i64, Instruction . i64TruncF32S)
1997+ case . i64TruncF32U: ( from, to, instruction) = ( . f32, . i64, Instruction . i64TruncF32U)
1998+ case . i64TruncF64S: ( from, to, instruction) = ( . f64, . i64, Instruction . i64TruncF64S)
1999+ case . i64TruncF64U: ( from, to, instruction) = ( . f64, . i64, Instruction . i64TruncF64U)
2000+ case . f32ConvertI32S: ( from, to, instruction) = ( . i32, . f32, Instruction . f32ConvertI32S)
2001+ case . f32ConvertI32U: ( from, to, instruction) = ( . i32, . f32, Instruction . f32ConvertI32U)
2002+ case . f32ConvertI64S: ( from, to, instruction) = ( . i64, . f32, Instruction . f32ConvertI64S)
2003+ case . f32ConvertI64U: ( from, to, instruction) = ( . i64, . f32, Instruction . f32ConvertI64U)
2004+ case . f32DemoteF64: ( from, to, instruction) = ( . f64, . f32, Instruction . f32DemoteF64)
2005+ case . f64ConvertI32S: ( from, to, instruction) = ( . i32, . f64, Instruction . f64ConvertI32S)
2006+ case . f64ConvertI32U: ( from, to, instruction) = ( . i32, . f64, Instruction . f64ConvertI32U)
2007+ case . f64ConvertI64S: ( from, to, instruction) = ( . i64, . f64, Instruction . f64ConvertI64S)
2008+ case . f64ConvertI64U: ( from, to, instruction) = ( . i64, . f64, Instruction . f64ConvertI64U)
2009+ case . f64PromoteF32: ( from, to, instruction) = ( . f32, . f64, Instruction . f64PromoteF32)
2010+ case . i32ReinterpretF32: ( from, to, instruction) = ( . f32, . i32, Instruction . i32ReinterpretF32)
2011+ case . i64ReinterpretF64: ( from, to, instruction) = ( . f64, . i64, Instruction . i64ReinterpretF64)
2012+ case . f32ReinterpretI32: ( from, to, instruction) = ( . i32, . f32, Instruction . f32ReinterpretI32)
2013+ case . f64ReinterpretI64: ( from, to, instruction) = ( . i64, . f64, Instruction . f64ReinterpretI64)
2014+ case . i32TruncSatF32S: ( from, to, instruction) = ( . f32, . i32, Instruction . i32TruncSatF32S)
2015+ case . i32TruncSatF32U: ( from, to, instruction) = ( . f32, . i32, Instruction . i32TruncSatF32U)
2016+ case . i32TruncSatF64S: ( from, to, instruction) = ( . f64, . i32, Instruction . i32TruncSatF64S)
2017+ case . i32TruncSatF64U: ( from, to, instruction) = ( . f64, . i32, Instruction . i32TruncSatF64U)
2018+ case . i64TruncSatF32S: ( from, to, instruction) = ( . f32, . i64, Instruction . i64TruncSatF32S)
2019+ case . i64TruncSatF32U: ( from, to, instruction) = ( . f32, . i64, Instruction . i64TruncSatF32U)
2020+ case . i64TruncSatF64S: ( from, to, instruction) = ( . f64, . i64, Instruction . i64TruncSatF64S)
2021+ case . i64TruncSatF64U: ( from, to, instruction) = ( . f64, . i64, Instruction . i64TruncSatF64U)
2022+ }
2023+ try visitConversion ( from, to, instruction)
2024+ }
20112025
20122026 mutating func visitMemoryInit( dataIndex: UInt32 ) throws -> Output {
20132027 try self . module. validateDataSegment ( dataIndex)
@@ -2173,14 +2187,6 @@ struct InstructionTranslator<Context: TranslatorContext>: InstructionVisitor {
21732187 return . tableSize( Instruction . TableSizeOperand ( tableIndex: table, result: LVReg ( result) ) )
21742188 }
21752189 }
2176- mutating func visitI32TruncSatF32S( ) throws -> Output { try visitConversion ( . f32, . i32, Instruction . i32TruncSatF32S) }
2177- mutating func visitI32TruncSatF32U( ) throws -> Output { try visitConversion ( . f32, . i32, Instruction . i32TruncSatF32U) }
2178- mutating func visitI32TruncSatF64S( ) throws -> Output { try visitConversion ( . f64, . i32, Instruction . i32TruncSatF64S) }
2179- mutating func visitI32TruncSatF64U( ) throws -> Output { try visitConversion ( . f64, . i32, Instruction . i32TruncSatF64U) }
2180- mutating func visitI64TruncSatF32S( ) throws -> Output { try visitConversion ( . f32, . i64, Instruction . i64TruncSatF32S) }
2181- mutating func visitI64TruncSatF32U( ) throws -> Output { try visitConversion ( . f32, . i64, Instruction . i64TruncSatF32U) }
2182- mutating func visitI64TruncSatF64S( ) throws -> Output { try visitConversion ( . f64, . i64, Instruction . i64TruncSatF64S) }
2183- mutating func visitI64TruncSatF64U( ) throws -> Output { try visitConversion ( . f64, . i64, Instruction . i64TruncSatF64U) }
21842190}
21852191
21862192struct TranslationError : Error , CustomStringConvertible {
0 commit comments