...
Text file src/runtime/sys_wasm.s
1 // Copyright 2018 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 #include "textflag.h"
6
7 TEXT runtime·wasmMove(SB), NOSPLIT, $0-0
8 loop:
9 Loop
10 // *dst = *src
11 Get R0
12 Get R1
13 I64Load $0
14 I64Store $0
15
16 // n--
17 Get R2
18 I32Const $1
19 I32Sub
20 Set R2
21
22 // n == 0
23 Get R2
24 I32Eqz
25 If
26 Return
27 End
28
29 // dst += 8
30 Get R0
31 I32Const $8
32 I32Add
33 Set R0
34
35 // src += 8
36 Get R1
37 I32Const $8
38 I32Add
39 Set R1
40
41 Br loop
42 End
43 UNDEF
44
45 TEXT runtime·wasmZero(SB), NOSPLIT, $0-0
46 loop:
47 Loop
48 // *dst = 0
49 Get R0
50 I64Const $0
51 I64Store $0
52
53 // n--
54 Get R1
55 I32Const $1
56 I32Sub
57 Set R1
58
59 // n == 0
60 Get R1
61 I32Eqz
62 If
63 Return
64 End
65
66 // dst += 8
67 Get R0
68 I32Const $8
69 I32Add
70 Set R0
71
72 Br loop
73 End
74 UNDEF
75
76 TEXT runtime·wasmDiv(SB), NOSPLIT, $0-0
77 Get R0
78 I64Const $-0x8000000000000000
79 I64Eq
80 If
81 Get R1
82 I64Const $-1
83 I64Eq
84 If
85 I64Const $-0x8000000000000000
86 Return
87 End
88 End
89 Get R0
90 Get R1
91 I64DivS
92 Return
93
94 TEXT runtime·wasmTruncS(SB), NOSPLIT, $0-0
95 Get R0
96 Get R0
97 F64Ne // NaN
98 If
99 I64Const $0x8000000000000000
100 Return
101 End
102
103 Get R0
104 F64Const $9223372036854775807.
105 F64Gt
106 If
107 I64Const $0x8000000000000000
108 Return
109 End
110
111 Get R0
112 F64Const $-9223372036854775808.
113 F64Lt
114 If
115 I64Const $0x8000000000000000
116 Return
117 End
118
119 Get R0
120 I64TruncF64S
121 Return
122
123 TEXT runtime·wasmTruncU(SB), NOSPLIT, $0-0
124 Get R0
125 Get R0
126 F64Ne // NaN
127 If
128 I64Const $0x8000000000000000
129 Return
130 End
131
132 Get R0
133 F64Const $18446744073709551615.
134 F64Gt
135 If
136 I64Const $0x8000000000000000
137 Return
138 End
139
140 Get R0
141 F64Const $0.
142 F64Lt
143 If
144 I64Const $0x8000000000000000
145 Return
146 End
147
148 Get R0
149 I64TruncF64U
150 Return
151
152 TEXT runtime·exitThread(SB), NOSPLIT, $0-0
153 UNDEF
154
155 TEXT runtime·osyield(SB), NOSPLIT, $0-0
156 UNDEF
157
158 TEXT runtime·usleep(SB), NOSPLIT, $0-0
159 RET // TODO(neelance): implement usleep
160
161 TEXT runtime·currentMemory(SB), NOSPLIT, $0
162 Get SP
163 CurrentMemory
164 I32Store ret+0(FP)
165 RET
166
167 TEXT runtime·growMemory(SB), NOSPLIT, $0
168 Get SP
169 I32Load pages+0(FP)
170 GrowMemory
171 I32Store ret+8(FP)
172 RET
173
174 TEXT ·wasmExit(SB), NOSPLIT, $0
175 CallImport
176 RET
177
178 TEXT ·wasmWrite(SB), NOSPLIT, $0
179 CallImport
180 RET
181
182 TEXT ·nanotime(SB), NOSPLIT, $0
183 CallImport
184 RET
185
186 TEXT ·walltime(SB), NOSPLIT, $0
187 CallImport
188 RET
189
190 TEXT ·scheduleTimeoutEvent(SB), NOSPLIT, $0
191 CallImport
192 RET
193
194 TEXT ·clearTimeoutEvent(SB), NOSPLIT, $0
195 CallImport
196 RET
197
198 TEXT ·getRandomData(SB), NOSPLIT, $0
199 CallImport
200 RET
View as plain text