// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package wasm

import "cmd/internal/obj"

//go:generate go run ../stringer.go -i $GOFILE -o anames.go -p wasm

const (
	/* mark flags */
	DONE          = 1 << iota
	PRESERVEFLAGS // not allowed to clobber flags
)

/*
 *	wasm
 */
const (
	AGet = obj.ABaseWasm + obj.A_ARCHSPECIFIC + iota
	ASet
	ATee
	ANot // alias for I32Eqz

	// The following are low-level WebAssembly instructions.
	// Their order matters, since it matches the opcode encoding.
	// Gaps in the encoding are indicated by comments.

	AUnreachable // opcode 0x00
	ANop
	ABlock
	ALoop
	AIf
	AElse

	AEnd // opcode 0x0B
	ABr
	ABrIf
	ABrTable
	// ACall and AReturn are WebAssembly instructions. obj.ACALL and obj.ARET are higher level instructions
	// with Go semantics, e.g. they manipulate the Go stack on the linear memory.
	AReturn
	ACall
	ACallIndirect

	ADrop // opcode 0x1A
	ASelect

	ALocalGet // opcode 0x20
	ALocalSet
	ALocalTee
	AGlobalGet
	AGlobalSet

	AI32Load // opcode 0x28
	AI64Load
	AF32Load
	AF64Load
	AI32Load8S
	AI32Load8U
	AI32Load16S
	AI32Load16U
	AI64Load8S
	AI64Load8U
	AI64Load16S
	AI64Load16U
	AI64Load32S
	AI64Load32U
	AI32Store
	AI64Store
	AF32Store
	AF64Store
	AI32Store8
	AI32Store16
	AI64Store8
	AI64Store16
	AI64Store32
	ACurrentMemory
	AGrowMemory

	AI32Const
	AI64Const
	AF32Const
	AF64Const

	AI32Eqz
	AI32Eq
	AI32Ne
	AI32LtS
	AI32LtU
	AI32GtS
	AI32GtU
	AI32LeS
	AI32LeU
	AI32GeS
	AI32GeU

	AI64Eqz
	AI64Eq
	AI64Ne
	AI64LtS
	AI64LtU
	AI64GtS
	AI64GtU
	AI64LeS
	AI64LeU
	AI64GeS
	AI64GeU

	AF32Eq
	AF32Ne
	AF32Lt
	AF32Gt
	AF32Le
	AF32Ge

	AF64Eq
	AF64Ne
	AF64Lt
	AF64Gt
	AF64Le
	AF64Ge

	AI32Clz
	AI32Ctz
	AI32Popcnt
	AI32Add
	AI32Sub
	AI32Mul
	AI32DivS
	AI32DivU
	AI32RemS
	AI32RemU
	AI32And
	AI32Or
	AI32Xor
	AI32Shl
	AI32ShrS
	AI32ShrU
	AI32Rotl
	AI32Rotr

	AI64Clz
	AI64Ctz
	AI64Popcnt
	AI64Add
	AI64Sub
	AI64Mul
	AI64DivS
	AI64DivU
	AI64RemS
	AI64RemU
	AI64And
	AI64Or
	AI64Xor
	AI64Shl
	AI64ShrS
	AI64ShrU
	AI64Rotl
	AI64Rotr

	AF32Abs
	AF32Neg
	AF32Ceil
	AF32Floor
	AF32Trunc
	AF32Nearest
	AF32Sqrt
	AF32Add
	AF32Sub
	AF32Mul
	AF32Div
	AF32Min
	AF32Max
	AF32Copysign

	AF64Abs
	AF64Neg
	AF64Ceil
	AF64Floor
	AF64Trunc
	AF64Nearest
	AF64Sqrt
	AF64Add
	AF64Sub
	AF64Mul
	AF64Div
	AF64Min
	AF64Max
	AF64Copysign

	AI32WrapI64
	AI32TruncF32S
	AI32TruncF32U
	AI32TruncF64S
	AI32TruncF64U
	AI64ExtendI32S
	AI64ExtendI32U
	AI64TruncF32S
	AI64TruncF32U
	AI64TruncF64S
	AI64TruncF64U
	AF32ConvertI32S
	AF32ConvertI32U
	AF32ConvertI64S
	AF32ConvertI64U
	AF32DemoteF64
	AF64ConvertI32S
	AF64ConvertI32U
	AF64ConvertI64S
	AF64ConvertI64U
	AF64PromoteF32
	AI32ReinterpretF32
	AI64ReinterpretF64
	AF32ReinterpretI32
	AF64ReinterpretI64
	AI32Extend8S
	AI32Extend16S
	AI64Extend8S
	AI64Extend16S
	AI64Extend32S

	AI32TruncSatF32S // opcode 0xFC 0x00
	AI32TruncSatF32U
	AI32TruncSatF64S
	AI32TruncSatF64U
	AI64TruncSatF32S
	AI64TruncSatF32U
	AI64TruncSatF64S
	AI64TruncSatF64U

	AMemoryInit
	ADataDrop
	AMemoryCopy
	AMemoryFill
	ATableInit
	AElemDrop
	ATableCopy
	ATableGrow
	ATableSize
	ATableFill

	// WASM Vector instructions 0xFD 0x00 and following
	AV128Load
	AV128Load8x8S
	AV128Load8x8U
	AV128Load16x4S
	AV128Load16x4U
	AV128Load32x2S
	AV128Load32x2U
	AV128Load8Splat
	AV128Load16Splat
	AV128Load32Splat
	AV128Load64Splat
	AV128Store
	AV128Const
	AI8x16Shuffle16
	AI8x16Swizzle
	AI8x16Splat
	AI16x8Splat
	AI32x4Splat
	AI64x2Splat
	AF32x4Splat
	AF64x2Splat
	AI8x16ExtractLaneS
	AI8x16ExtractLaneU
	AI8x16ReplaceLane
	AI16x8ExtractLaneS
	AI16x8ExtractLaneU
	AI16x8ReplaceLane
	AI32x4ExtractLane
	AI32x4ReplaceLane
	AI64x2ExtractLane
	AI64x2ReplaceLane
	AF32x4ExtractLane
	AF32x4ReplaceLane
	AF64x2ExtractLane
	AF64x2ReplaceLane
	AI8x16Eq
	AI8x16Ne
	AI8x16LtS
	AI8x16LtU
	AI8x16GtS
	AI8x16GtU
	AI8x16LeS
	AI8x16LeU
	AI8x16GeS
	AI8x16GeU
	AI16x8Eq
	AI16x8Ne
	AI16x8LtS
	AI16x8LtU
	AI16x8GtS
	AI16x8GtU
	AI16x8LeS
	AI16x8LeU
	AI16x8GeS
	AI16x8GeU
	AI32x4Eq
	AI32x4Ne
	AI32x4LtS
	AI32x4LtU
	AI32x4GtS
	AI32x4GtU
	AI32x4LeS
	AI32x4LeU
	AI32x4GeS
	AI32x4GeU
	AF32x4Eq
	AF32x4Ne
	AF32x4Lt
	AF32x4Gt
	AF32x4Le
	AF32x4Ge
	AF64x2Eq
	AF64x2Ne
	AF64x2Lt
	AF64x2Gt
	AF64x2Le
	AF64x2Ge
	AV128Not
	AV128And
	AV128Andnot
	AV128Or
	AV128Xor
	AV128Bitselect
	AV128AnyTrue
	AV128Load8Lane
	AV128Load16Lane
	AV128Load32Lane
	AV128Load64Lane
	AV128Store8Lane
	AV128Store16Lane
	AV128Store32Lane
	AV128Store64Lane
	AV128Load32Zero
	AV128Load64Zero
	AF32x4DemoteF64x2Zero
	AF64x2PromoteLowF32x4
	AI8x16Abs
	AI8x16Neg
	AI8x16Popcnt
	AI8x16AllTrue
	AI8x16Bitmask
	AI8x16NarrowI16x8S
	AI8x16NarrowI16x8U
	AF32x4Ceil
	AF32x4Floor
	AF32x4Trunc
	AF32x4Nearest
	AI8x16Shl
	AI8x16ShrS
	AI8x16ShrU
	AI8x16Add
	AI8x16AddSatS
	AI8x16AddSatU
	AI8x16Sub
	AI8x16SubSatS
	AI8x16SubSatU
	AF64x2Ceil
	AF64x2Floor
	AI8x16MinS
	AI8x16MinU
	AI8x16MaxS
	AI8x16MaxU
	AF64x2Trunc
	AI8x16AvgrU
	AI16x8ExtaddPairwiseI8x16S
	AI16x8ExtaddPairwiseI8x16U
	AI32x4ExtaddPairwiseI16x8S
	AI32x4ExtaddPairwiseI16x8U

	// WASM Vector instructions 0xFD 0x80 and following but followed by a 0x01
	// e.g. 0xFD 0x80 0x01, 0xFD  0x81  0x01, etc.
	AI16x8Abs
	AI16x8Neg
	AI16x8Q15MulrSatS
	AI16x8AllTrue
	AI16x8Bitmask
	AI16x8NarrowI32x4S
	AI16x8NarrowI32x4U
	AI16x8ExtendLowI8x16S
	AI16x8ExtendHighI8x16S
	AI16x8ExtendLowI8x16U
	AI16x8ExtendHighI8x16U
	AI16x8Shl
	AI16x8ShrS
	AI16x8ShrU
	AI16x8Add
	AI16x8AddSatS
	AI16x8AddSatU
	AI16x8Sub
	AI16x8SubSatS
	AI16x8SubSatU
	AF64x2Nearest
	AI16x8Mul
	AI16x8MinS
	AI16x8MinU
	AI16x8MaxS
	AI16x8MaxU
	AReservedFD9A01 // 0xFD 0x9A 0x01
	AI16x8AvgrU
	AI16x8ExtMulLowI8x16S
	AI16x8ExtMulHighI8x16S
	AI16x8ExtMulLowI8x16U
	AI16x8ExtMulHighI8x16U
	AI32x4Abs
	AI32x4Neg
	AReservedFDA201
	AI32x4AllTrue
	AI32x4Bitmask
	AReservedFDA501
	AReservedFDA601
	AI32x4ExtendLowI16x8S
	AI32x4ExtendHighI16x8S
	AI32x4ExtendLowI16x8U
	AI32x4ExtendHighI16x8U
	AI32x4Shl
	AI32x4ShrS
	AI32x4ShrU
	AI32x4Add
	AReservedFDAF01
	AReservedFDB001
	AI32x4Sub
	AReservedFDB201
	AReservedFDB301
	AReservedFDB401
	AI32x4Mul
	AI32x4MinS
	AI32x4MinU
	AI32x4MaxS
	AI32x4MaxU
	AI32x4DotI16x8S
	AReservedFDBB01
	AI32x4ExtMulLowI16x8S
	AI32x4ExtMulHighI16x8S
	AI32x4ExtMulLowI16x8U
	AI32x4ExtMulHighI16x8U
	AI64x2Abs
	AI64x2Neg
	AReservedFDC201
	AI64x2AllTrue
	AI64x2Bitmask
	AReservedFDC501
	AReservedFDC601
	AI64x2ExtendLowI32x4S
	AI64x2ExtendHighI32x4S
	AI64x2ExtendLowI32x4U
	AI64x2ExtendHighI32x4U
	AI64x2Shl
	AI64x2ShrS
	AI64x2ShrU
	AI64x2Add
	AReservedFDCF01
	AReservedFDD001
	AI64x2Sub
	AReservedFDD201
	AReservedFDD301
	AReservedFDD401
	AI64x2Mul
	AI64x2Eq
	AI64x2Ne
	AI64x2LtS
	AI64x2GtS
	AI64x2LeS
	AI64x2GeS
	AI64x2ExtMulLowI32x4S
	AI64x2ExtMulHighI32x4S
	AI64x2ExtMulLowI32x4U
	AI64x2ExtMulHighI32x4U
	AF32x4Abs
	AF32x4Neg
	AReservedFDE201
	AF32x4Sqrt
	AF32x4Add
	AF32x4Sub
	AF32x4Mul
	AF32x4Div
	AF32x4Min
	AF32x4Max
	AF32x4Pmin
	AF32x4Pmax
	AF64x2Abs
	AF64x2Neg
	AReservedFDEE01
	AF64x2Sqrt
	AF64x2Add
	AF64x2Sub
	AF64x2Mul
	AF64x2Div
	AF64x2Min
	AF64x2Max
	AF64x2Pmin
	AF64x2Pmax
	AI32x4TruncSatF32x4S
	AI32x4TruncSatF32x4U
	AF32x4ConvertI32x4S
	AF32x4ConvertI32x4U
	AI32x4TruncSatF64x2SZero
	AI32x4TruncSatF64x2UZero
	AF64x2ConvertLowI32x4S
	AF64x2ConvertLowI32x4U

	// WASM Vector instructions 0xFD 0x80 and following but followed by a 0x02
	// e.g. 0xFD 0x80 0x02, 0xFD 0x81 0x02, etc.
	AI8x16RelaxedSwizzle
	AI32x4RelaxedTruncF32x4S
	AI32x4RelaxedTruncF32x4U
	AI32x4RelaxedTruncF64x2S
	AI32x4RelaxedTruncF64x2U
	AF32x4RelaxedMadd
	AF32x4RelaxedNmadd
	AF64x2RelaxedMadd
	AF64x2RelaxedNmadd
	AI8x16RelaxedLaneselect
	AI16x8RelaxedLaneselect
	AI32x4RelaxedLaneselect
	AI64x2RelaxedLaneselect
	AF32x4RelaxedMin
	AF32x4RelaxedMax
	AF64x2RelaxedMin
	AF64x2RelaxedMax
	AI16x8RelaxedQ15MulrS
	AI16x8RelaxedDotI8x16I7x16S
	AI32x4RelaxedDotI8x16I7x16AddS

	ALast // Sentinel: End of low-level WebAssembly instructions.

	ARESUMEPOINT
	// ACALLNORESUME is a call which is not followed by a resume point.
	// It is allowed inside of WebAssembly blocks, whereas obj.ACALL is not.
	// However, it is not allowed to switch goroutines while inside of an ACALLNORESUME call.
	ACALLNORESUME

	ARETUNWIND

	AMOVB
	AMOVH
	AMOVW
	AMOVD

	AWORD
	ALAST
)

const (
	REG_NONE = 0
)

const (
	// globals
	REG_SP = obj.RBaseWasm + iota // SP is currently 32-bit, until 64-bit memory operations are available
	REG_CTXT
	REG_g
	// RET* are used by runtime.return0 and runtime.reflectcall. These functions pass return values in registers.
	REG_RET0
	REG_RET1
	REG_RET2
	REG_RET3
	REG_PAUSE

	// i32 locals
	REG_R0
	REG_R1
	REG_R2
	REG_R3
	REG_R4
	REG_R5
	REG_R6
	REG_R7
	REG_R8
	REG_R9
	REG_R10
	REG_R11
	REG_R12
	REG_R13
	REG_R14
	REG_R15

	// f32 locals
	REG_F0
	REG_F1
	REG_F2
	REG_F3
	REG_F4
	REG_F5
	REG_F6
	REG_F7
	REG_F8
	REG_F9
	REG_F10
	REG_F11
	REG_F12
	REG_F13
	REG_F14
	REG_F15

	// f64 locals
	REG_F16
	REG_F17
	REG_F18
	REG_F19
	REG_F20
	REG_F21
	REG_F22
	REG_F23
	REG_F24
	REG_F25
	REG_F26
	REG_F27
	REG_F28
	REG_F29
	REG_F30
	REG_F31

	// v128 locals
	REG_V0
	REG_V1
	REG_V2
	REG_V3
	REG_V4
	REG_V5
	REG_V6
	REG_V7
	REG_V8
	REG_V9
	REG_V10
	REG_V11
	REG_V12
	REG_V13
	REG_V14
	REG_V15

	REG_PC_B // also first parameter, i32

	MAXREG

	MINREG  = REG_SP
	REGSP   = REG_SP
	REGCTXT = REG_CTXT
	REGG    = REG_g
)
