// Copyright 2017 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_ASMJS_ASM_NAMES_H_ #define V8_ASMJS_ASM_NAMES_H_ // V(stdlib.Math., constant-value) #define STDLIB_MATH_VALUE_LIST(V) \ V(E, 2.718281828459045) \ V(LN10, 2.302585092994046) \ V(LN2, 0.6931471805599453) \ V(LOG2E, 1.4426950408889634) \ V(LOG10E, 0.4342944819032518) \ V(PI, 3.141592653589793) \ V(SQRT1_2, 0.7071067811865476) \ V(SQRT2, 1.4142135623730951) // V(stdlib.Math., Name, wasm-opcode, asm-js-type) #define STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \ V(acos, Acos, kExprF64Acos, dq2d) \ V(asin, Asin, kExprF64Asin, dq2d) \ V(atan, Atan, kExprF64Atan, dq2d) \ V(cos, Cos, kExprF64Cos, dq2d) \ V(sin, Sin, kExprF64Sin, dq2d) \ V(tan, Tan, kExprF64Tan, dq2d) \ V(exp, Exp, kExprF64Exp, dq2d) \ V(log, Log, kExprF64Log, dq2d) \ V(atan2, Atan2, kExprF64Atan2, dqdq2d) \ V(pow, Pow, kExprF64Pow, dqdq2d) \ V(imul, Imul, kExprI32Mul, ii2s) \ V(clz32, Clz32, kExprI32Clz, i2s) // V(stdlib.Math., Name, unused, asm-js-type) #define STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V) \ V(ceil, Ceil, x, ceil_like) \ V(floor, Floor, x, ceil_like) \ V(sqrt, Sqrt, x, ceil_like) // V(stdlib.Math., Name, unused, asm-js-type) #define STDLIB_MATH_FUNCTION_LIST(V) \ V(min, Min, x, minmax) \ V(max, Max, x, minmax) \ V(abs, Abs, x, abs) \ V(fround, Fround, x, fround) \ STDLIB_MATH_FUNCTION_MONOMORPHIC_LIST(V) \ STDLIB_MATH_FUNCTION_CEIL_LIKE_LIST(V) // V(stdlib., wasm-load-type, wasm-store-type, wasm-type) #define STDLIB_ARRAY_TYPE_LIST(V) \ V(Int8Array, Mem8S, Mem8, I32) \ V(Uint8Array, Mem8U, Mem8, I32) \ V(Int16Array, Mem16S, Mem16, I32) \ V(Uint16Array, Mem16U, Mem16, I32) \ V(Int32Array, Mem, Mem, I32) \ V(Uint32Array, Mem, Mem, I32) \ V(Float32Array, Mem, Mem, F32) \ V(Float64Array, Mem, Mem, F64) #define STDLIB_OTHER_LIST(V) \ V(Infinity) \ V(NaN) \ V(Math) // clang-format off (for return) #define KEYWORD_NAME_LIST(V) \ V(arguments) \ V(break) \ V(case) \ V(const) \ V(continue) \ V(default) \ V(do) \ V(else) \ V(eval) \ V(for) \ V(function) \ V(if) \ V(new) \ V(return ) \ V(switch) \ V(var) \ V(while) // clang-format on // V(token-string, token-name) #define LONG_SYMBOL_NAME_LIST(V) \ V("<=", LE) \ V(">=", GE) \ V("==", EQ) \ V("!=", NE) \ V("<<", SHL) \ V(">>", SAR) \ V(">>>", SHR) \ V("'use asm'", UseAsm) // clang-format off #define SIMPLE_SINGLE_TOKEN_LIST(V) \ V('+') V('-') V('*') V('%') V('~') V('^') V('&') V('|') V('(') V(')') \ V('[') V(']') V('{') V('}') V(':') V(';') V(',') V('?') // clang-format on // V(name, value, string-name) #define SPECIAL_TOKEN_LIST(V) \ V(kUninitialized, 0, "{uninitalized}") \ V(kEndOfInput, -1, "{end of input}") \ V(kParseError, -2, "{parse error}") \ V(kUnsigned, -3, "{unsigned value}") \ V(kDouble, -4, "{double value}") #endif // V8_ASMJS_ASM_NAMES_H_