blob: 164dd16ec9ff13a88a0abbf59bbc4e7803d0aca6 [file] [log] [blame]
// 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.
#include "textflag.h"
TEXT runtime·wasmMove(SB), NOSPLIT, $0-0
loop:
Loop
// *dst = *src
Get R0
Get R1
I64Load $0
I64Store $0
// n--
Get R2
I32Const $1
I32Sub
Tee R2
// n == 0
I32Eqz
If
Return
End
// dst += 8
Get R0
I32Const $8
I32Add
Set R0
// src += 8
Get R1
I32Const $8
I32Add
Set R1
Br loop
End
UNDEF
TEXT runtime·wasmZero(SB), NOSPLIT, $0-0
loop:
Loop
// *dst = 0
Get R0
I64Const $0
I64Store $0
// n--
Get R1
I32Const $1
I32Sub
Tee R1
// n == 0
I32Eqz
If
Return
End
// dst += 8
Get R0
I32Const $8
I32Add
Set R0
Br loop
End
UNDEF
TEXT runtime·wasmDiv(SB), NOSPLIT, $0-0
Get R0
I64Const $-0x8000000000000000
I64Eq
If
Get R1
I64Const $-1
I64Eq
If
I64Const $-0x8000000000000000
Return
End
End
Get R0
Get R1
I64DivS
Return
TEXT runtime·wasmTruncS(SB), NOSPLIT, $0-0
Get R0
Get R0
F64Ne // NaN
If
I64Const $0x8000000000000000
Return
End
Get R0
F64Const $0x7ffffffffffffc00p0 // Maximum truncated representation of 0x7fffffffffffffff
F64Gt
If
I64Const $0x8000000000000000
Return
End
Get R0
F64Const $-0x7ffffffffffffc00p0 // Minimum truncated representation of -0x8000000000000000
F64Lt
If
I64Const $0x8000000000000000
Return
End
Get R0
I64TruncF64S
Return
TEXT runtime·wasmTruncU(SB), NOSPLIT, $0-0
Get R0
Get R0
F64Ne // NaN
If
I64Const $0x8000000000000000
Return
End
Get R0
F64Const $0xfffffffffffff800p0 // Maximum truncated representation of 0xffffffffffffffff
F64Gt
If
I64Const $0x8000000000000000
Return
End
Get R0
F64Const $0.
F64Lt
If
I64Const $0x8000000000000000
Return
End
Get R0
I64TruncF64U
Return
TEXT runtime·exitThread(SB), NOSPLIT, $0-0
UNDEF
TEXT runtime·osyield(SB), NOSPLIT, $0-0
UNDEF
TEXT runtime·usleep(SB), NOSPLIT, $0-0
RET // TODO(neelance): implement usleep
TEXT runtime·currentMemory(SB), NOSPLIT, $0
Get SP
CurrentMemory
I32Store ret+0(FP)
RET
TEXT runtime·growMemory(SB), NOSPLIT, $0
Get SP
I32Load pages+0(FP)
GrowMemory
I32Store ret+8(FP)
RET
TEXT ·resetMemoryDataView(SB), NOSPLIT, $0
CallImport
RET
TEXT ·wasmExit(SB), NOSPLIT, $0
CallImport
RET
TEXT ·wasmWrite(SB), NOSPLIT, $0
CallImport
RET
TEXT ·nanotime1(SB), NOSPLIT, $0
CallImport
RET
TEXT ·walltime(SB), NOSPLIT, $0
CallImport
RET
TEXT ·scheduleTimeoutEvent(SB), NOSPLIT, $0
CallImport
RET
TEXT ·clearTimeoutEvent(SB), NOSPLIT, $0
CallImport
RET
TEXT ·getRandomData(SB), NOSPLIT, $0
CallImport
RET