exprs

package
v0.0.0-...-27647ab Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2023 License: BSD-3-Clause Imports: 2 Imported by: 0

Documentation

Overview

blocktype ::=

  typeidx
| valtype?

instr ::= ...

| nop
| unreachable
| block blocktype instr* end
| loop blocktype instr* end
| if blocktype instr* else instr* end
| br labelidx
| br_if labelidx
| br_table vec(labelidx) labelidx
| return
| call funcidx
| call_indirect tableidx typeidx

memarg ::= {offset u32 , align u32}

ww ::=

  8
| 16
| 32
| 64

instr ::= ...

| inn.load memarg
| fnn.load memarg
| v128.load memarg
| inn.store memarg
| fnn.store memarg
| v128.store memarg
| inn.load8_sx memarg
| inn.load16_sx memarg
| i64.load32_sx memarg
| inn.store8 memarg
| inn.store16 memarg
| i64.store32 memarg
| v128.load8x8_sx memarg
| v128.load16x4_sx memarg
| v128.load32x2_sx memarg
| v128.load32_zero memarg
| v128.load64_zero memarg
| v128.loadww_splat memarg
| v128.loadww_lane memarg laneidx
| v128.storeww_lane memarg laneidx
| memory.size
| memory.grow
| memory.fill
| memory.copy
| memory.init dataidx
| data.drop dataidx

nn, mm ::=

  32
| 64

sx ::=

  u
| s

instr ::= ...

| inn.const inn
| fnn.const f nn
| inn.iunop
| fnn.funop
| inn.ibinop
| fnn.fbinop
| inn.itestop
| inn.irelop
| fnn.frelop
| inn.extend8_s
| inn.extend16_s
| i64.extend32_s
| i32.wrap_i64
| i64.extend_i32_sx
| inn.trunc_fmm_sx
| inn.trunc_sat_fmm_sx
| f32.demote_f64
| f64.promote_f32
| fnn.convert_imm_sx
| inn.reinterpret_fnn
| fnn.reinterpret_inn

iunop ::=

  clz
| ctz
| popcnt

ibinop ::=

  add
| sub
| mul
| div_sx
| rem_sx
| and
| or
| xor
| shl
| shr_sx
| rotl
| rotr

funop ::=

  abs
| neg
| sqrt
| ceil
| floor
| trunc
| nearest

fbinop ::=

  add
| sub
| mul
| div
| min
| max
| copysign

itestop ::=

eqz

irelop ::=

  eq
| ne
| lt_sx
| gt_sx
| le_sx
| ge_sx

frelop ::=

  eq
| ne
| lt
| gt
| le
| ge

// conventions

unop ::=

  iunop
| funop
| extendN_s

binop ::=

  ibinop
| fbinop

testop ::=

itestop

relop ::=

  irelop
| frelop

cvtop ::=

  wrap
| extend
| trunc
| trunc_sat
| convert
| demote
| promote
| reinterpret

instr ::= ...

| drop
| select (valtype*)?

instr ::= ...

| ref.null reftype
| ref.is_null
| ref.func funcidx

instr ::= ...

| table.get tableidx
| table.set tableidx
| table.size tableidx
| table.grow tableidx
| table.fill tableidx
| table.copy tableidx tableidx
| table.init tableidx elemidx
| elem.drop elemidx

instr ::= ...

| local.get localidx
| local.set localidx
| local.tee localidx
| global.get globalidx
| global.set globalidx

ishape ::=

  i8x16
| i16x8
| i32x4
| i64x2

fshape ::=

  f32x4
| f64x2

shape ::=

  ishape
| fshape

half ::=

  low
| high

laneidx ::=

u8

instr ::= ...

| v128.const i128
| v128.vvunop
| v128.vvbinop
| v128.vvternop
| v128.vvtestop
| i8x16.shuffle laneidx 16
| i8x16.swizzle
| shape.splat
| i8x16.extract_lane_sx laneidx
| i16x8.extract_lane_sx laneidx
| i32x4.extract_lane laneidx
| i64x2.extract_lane laneidx
| fshape.extract_lane laneidx
| shape.replace_lane laneidx
| i8x16.virelop
| i16x8.virelop
| i32x4.virelop
| i64x2.eq
| i64x2.ne
| i64x2.lt_s
| i64x2.gt_s
| i64x2.le_s
| i64x2.ge_s
| fshape.vfrelop
| ishape.viunop
| i8x16.popcnt
| i16x8.q15mulr_sat_s
| i32x4.dot_i16x8_s
| fshape.vfunop
| ishape.vitestop
| ishape.bitmask
| i8x16.narrow_i16x8_sx
| i16x8.narrow_i32x4_sx
| i16x8.extend_half _i8x16_sx
| i32x4.extend_half _i16x8_sx
| i64x2.extend_half _i32x4_sx
| ishape.vishiftop
| ishape.vibinop
| i8x16.viminmaxop
| i16x8.viminmaxop
| i32x4.viminmaxop
| i8x16.visatbinop
| i16x8.visatbinop
| i16x8.mul
| i32x4.mul
| i64x2.mul
| i8x16.avgr_u
| i16x8.avgr_u
| i16x8.extmul_half _i8x16_sx
| i32x4.extmul_half _i16x8_sx
| i64x2.extmul_half _i32x4_sx
| i16x8.extadd_pairwise_i8x16_sx
| i32x4.extadd_pairwise_i16x8_sx
| fshape.vfbinop
| i32x4.trunc_sat_f32x4_sx
| i32x4.trunc_sat_f64x2_sx_zero
| f32x4.convert_i32x4_sx
| f32x4.demote_f64x2_zero
| f64x2.convert_low_i32x4_sx
| f64x2.promote_low_f32x4

vvunop ::=

not

vvbinop ::=

  and
| andnot
| or
| xor

vvternop ::=

bitselect

vvtestop ::=

any_true

vitestop ::=

all_true

virelop ::=

  eq
| ne
| lt_sx
| gt_sx
| le_sx
| ge_sx

vfrelop ::=

  eq
| ne
| lt
| gt
| le
| ge

viunop ::=

  abs
| neg

vibinop ::=

  add
| sub

viminmaxop ::=

  min_sx
| max_sx

visatbinop ::=

  add_sat_sx
| sub_sat_sx

vishiftop ::=

  shl
| shr_sx

vfunop ::=

  abs
| neg
| sqrt
| ceil
| floor
| trunc
| nearest

vfbinop ::=

  add
| sub
| mul
| div
| min
| max
| pmin
| pmax

// conventions

vunop ::=

  viunop
| vfunop
| popcnt

vbinop ::=

  vibinop
| vfbinop
| viminmaxop
| visatbinop
| mul
| avgr_u
| q15mulr_sat_s

vtestop ::=

vitestop

vrelop ::=

  virelop
| vfrelop

vcvtop ::=

  extend
| trunc_sat
| convert
| demote
| promote

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Block

type Block struct {
	Id string
	S  []Expr
	// contains filtered or unexported fields
}

func (Block) Text

func (e Block) Text() text.Element

type Const

type Const struct {
	S  string
	Ty wt.Type
	// contains filtered or unexported fields
}

func (Const) Text

func (e Const) Text() text.Element

type Expr

type Expr interface {
	Text() text.Element
	// contains filtered or unexported methods
}

type If

type If struct {
	Then []Expr
	Else []Expr
	// contains filtered or unexported fields
}

func (If) Text

func (e If) Text() text.Element

type LocalGet

type LocalGet struct {
	I int
	// contains filtered or unexported fields
}

func (LocalGet) Text

func (e LocalGet) Text() text.Element

type Nop

type Nop struct {
	// contains filtered or unexported fields
}

func (Nop) Text

func (e Nop) Text() text.Element

type Select

type Select struct {
	C Expr
	T Expr
	F Expr
	// contains filtered or unexported fields
}

func (Select) Text

func (e Select) Text() text.Element

type SetLocal

type SetLocal struct {
	N string
	V Expr
	// contains filtered or unexported fields
}

func (SetLocal) Text

func (e SetLocal) Text() text.Element

type Unreachable

type Unreachable struct {
	// contains filtered or unexported fields
}

func (Unreachable) Text

func (e Unreachable) Text() text.Element

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL