v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
asm-names.h
Go to the documentation of this file.
1// Copyright 2017 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_ASMJS_ASM_NAMES_H_
6#define V8_ASMJS_ASM_NAMES_H_
7
8// V(stdlib.Math.<name>, constant-value)
9#define STDLIB_MATH_VALUE_LIST(V) \
10 V(E, 2.718281828459045) \
11 V(LN10, 2.302585092994046) \
12 V(LN2, 0.6931471805599453) \
13 V(LOG2E, 1.4426950408889634) \
14 V(LOG10E, 0.4342944819032518) \
15 V(PI, 3.141592653589793) \
16 V(SQRT1_2, 0.7071067811865476) \
17 V(SQRT2, 1.4142135623730951)
18
19// V(stdlib.Math.<name>, Name, wasm-opcode, asm-js-type)
20#define STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \
21 V(acos, Acos, kExprF64Acos, dq2d) \
22 V(asin, Asin, kExprF64Asin, dq2d) \
23 V(atan, Atan, kExprF64Atan, dq2d) \
24 V(cos, Cos, kExprF64Cos, dq2d) \
25 V(sin, Sin, kExprF64Sin, dq2d) \
26 V(tan, Tan, kExprF64Tan, dq2d) \
27 V(exp, Exp, kExprF64Exp, dq2d) \
28 V(log, Log, kExprF64Log, dq2d) \
29 V(atan2, Atan2, kExprF64Atan2, dqdq2d) \
30 V(pow, Pow, kExprF64Pow, dqdq2d) \
31 V(imul, Imul, kExprI32Mul, ii2s) \
32 V(clz32, Clz32, kExprI32Clz, i2s)
33
34// V(stdlib.Math.<name>, Name, unused, asm-js-type)
35#define STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V) \
36 V(ceil, Ceil, x, ceil_like) \
37 V(floor, Floor, x, ceil_like) \
38 V(sqrt, Sqrt, x, ceil_like)
39
40// V(stdlib.Math.<name>, Name, unused, asm-js-type)
41#define STDLIB_MATH_FUNCTION_LIST(V) \
42 V(min, Min, x, minmax) \
43 V(max, Max, x, minmax) \
44 V(abs, Abs, x, abs) \
45 V(fround, Fround, x, fround) \
46 STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \
47 STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V)
48
49// V(stdlib.<name>, wasm-load-type, wasm-store-type, wasm-type)
50#define STDLIB_ARRAY_TYPE_LIST(V) \
51 V(Int8Array, Mem8S, Mem8, I32) \
52 V(Uint8Array, Mem8U, Mem8, I32) \
53 V(Int16Array, Mem16S, Mem16, I32) \
54 V(Uint16Array, Mem16U, Mem16, I32) \
55 V(Int32Array, Mem, Mem, I32) \
56 V(Uint32Array, Mem, Mem, I32) \
57 V(Float32Array, Mem, Mem, F32) \
58 V(Float64Array, Mem, Mem, F64)
59
60#define STDLIB_OTHER_LIST(V) \
61 V(Infinity) \
62 V(NaN) \
63 V(Math)
64
65// clang-format off (for return)
66#define KEYWORD_NAME_LIST(V) \
67 V(arguments) \
68 V(break) \
69 V(case) \
70 V(const) \
71 V(continue) \
72 V(default) \
73 V(do) \
74 V(else) \
75 V(eval) \
76 V(for) \
77 V(function) \
78 V(if) \
79 V(new) \
80 V(return ) \
81 V(switch) \
82 V(var) \
83 V(while)
84// clang-format on
85
86// V(token-string, token-name)
87#define LONG_SYMBOL_NAME_LIST(V) \
88 V("<=", LE) \
89 V(">=", GE) \
90 V("==", EQ) \
91 V("!=", NE) \
92 V("<<", SHL) \
93 V(">>", SAR) \
94 V(">>>", SHR) \
95 V("'use asm'", UseAsm)
96
97// clang-format off
98#define SIMPLE_SINGLE_TOKEN_LIST(V) \
99 V('+') V('-') V('*') V('%') V('~') V('^') V('&') V('|') V('(') V(')') \
100 V('[') V(']') V('{') V('}') V(':') V(';') V(',') V('?')
101// clang-format on
102
103// V(name, value, string-name)
104#define SPECIAL_TOKEN_LIST(V) \
105 V(kUninitialized, 0, "{uninitialized}") \
106 V(kEndOfInput, -1, "{end of input}") \
107 V(kParseError, -2, "{parse error}") \
108 V(kUnsigned, -3, "{unsigned value}") \
109 V(kDouble, -4, "{double value}")
110
111#endif // V8_ASMJS_ASM_NAMES_H_