140 lines
3.0 KiB
Go
140 lines
3.0 KiB
Go
// Copyright 2018 The OPA Authors. All rights reserved.
|
|
// Use of this source code is governed by an Apache2
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package instruction
|
|
|
|
import (
|
|
"github.com/open-policy-agent/opa/internal/wasm/opcode"
|
|
)
|
|
|
|
// I32Const represents the WASM i32.const instruction.
|
|
type I32Const struct {
|
|
Value int32
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32Const) Op() opcode.Opcode {
|
|
return opcode.I32Const
|
|
}
|
|
|
|
// ImmediateArgs returns the i32 value to push onto the stack.
|
|
func (i I32Const) ImmediateArgs() []interface{} {
|
|
return []interface{}{i.Value}
|
|
}
|
|
|
|
// I64Const represents the WASM i64.const instruction.
|
|
type I64Const struct {
|
|
Value int64
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I64Const) Op() opcode.Opcode {
|
|
return opcode.I64Const
|
|
}
|
|
|
|
// ImmediateArgs returns the i64 value to push onto the stack.
|
|
func (i I64Const) ImmediateArgs() []interface{} {
|
|
return []interface{}{i.Value}
|
|
}
|
|
|
|
// F32Const represents the WASM f32.const instruction.
|
|
type F32Const struct {
|
|
Value int32
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (F32Const) Op() opcode.Opcode {
|
|
return opcode.F32Const
|
|
}
|
|
|
|
// ImmediateArgs returns the f32 value to push onto the stack.
|
|
func (i F32Const) ImmediateArgs() []interface{} {
|
|
return []interface{}{i.Value}
|
|
}
|
|
|
|
// F64Const represents the WASM f64.const instruction.
|
|
type F64Const struct {
|
|
Value float64
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (F64Const) Op() opcode.Opcode {
|
|
return opcode.F64Const
|
|
}
|
|
|
|
// ImmediateArgs returns the f64 value to push onto the stack.
|
|
func (i F64Const) ImmediateArgs() []interface{} {
|
|
return []interface{}{i.Value}
|
|
}
|
|
|
|
// I32Eqz represents the WASM i32.eqz instruction.
|
|
type I32Eqz struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32Eqz) Op() opcode.Opcode {
|
|
return opcode.I32Eqz
|
|
}
|
|
|
|
// I32Eq represents the WASM i32.eq instruction.
|
|
type I32Eq struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32Eq) Op() opcode.Opcode {
|
|
return opcode.I32Eq
|
|
}
|
|
|
|
// I32Ne represents the WASM i32.ne instruction.
|
|
type I32Ne struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32Ne) Op() opcode.Opcode {
|
|
return opcode.I32Ne
|
|
}
|
|
|
|
// I32GtS represents the WASM i32.gt_s instruction.
|
|
type I32GtS struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32GtS) Op() opcode.Opcode {
|
|
return opcode.I32GtS
|
|
}
|
|
|
|
// I32GeS represents the WASM i32.ge_s instruction.
|
|
type I32GeS struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32GeS) Op() opcode.Opcode {
|
|
return opcode.I32GeS
|
|
}
|
|
|
|
// I32LtS represents the WASM i32.lt_s instruction.
|
|
type I32LtS struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32LtS) Op() opcode.Opcode {
|
|
return opcode.I32LtS
|
|
}
|
|
|
|
// I32LeS represents the WASM i32.le_s instruction.
|
|
type I32LeS struct {
|
|
NoImmediateArgs
|
|
}
|
|
|
|
// Op returns the opcode of the instruction.
|
|
func (I32LeS) Op() opcode.Opcode {
|
|
return opcode.I32LeS
|
|
}
|