summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/wasm/WASMConstants.h
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Source/JavaScriptCore/wasm/WASMConstants.h
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
downloadqtwebkit-6882a04fb36642862b11efe514251d32070c3d65.tar.gz
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Source/JavaScriptCore/wasm/WASMConstants.h')
-rw-r--r--Source/JavaScriptCore/wasm/WASMConstants.h329
1 files changed, 329 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/wasm/WASMConstants.h b/Source/JavaScriptCore/wasm/WASMConstants.h
new file mode 100644
index 000000000..4e3bd443f
--- /dev/null
+++ b/Source/JavaScriptCore/wasm/WASMConstants.h
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 2015 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * =========================================================================
+ *
+ * Copyright (c) 2015 by the repository authors of
+ * WebAssembly/polyfill-prototype-1.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef WASMConstants_h
+#define WASMConstants_h
+
+#if ENABLE(WEBASSEMBLY)
+
+namespace JSC {
+
+static const uint32_t wasmMagicNumber = 0x6d736177;
+
+enum class WASMOpKind {
+ Statement,
+ Expression
+};
+
+enum class WASMOpStatement : uint8_t {
+ SetLocal,
+ SetGlobal,
+ I32Store8,
+ I32StoreWithOffset8,
+ I32Store16,
+ I32StoreWithOffset16,
+ I32Store32,
+ I32StoreWithOffset32,
+ F32Store,
+ F32StoreWithOffset,
+ F64Store,
+ F64StoreWithOffset,
+ CallInternal,
+ CallIndirect,
+ CallImport,
+ Return,
+ Block,
+ If,
+ IfElse,
+ While,
+ Do,
+ Label,
+ Break,
+ BreakLabel,
+ Continue,
+ ContinueLabel,
+ Switch,
+ NumberOfWASMOpStatements
+};
+
+enum class WASMOpStatementWithImmediate : uint8_t {
+ SetLocal,
+ SetGlobal,
+ NumberOfWASMOpStatementWithImmediates
+};
+
+enum class WASMOpExpressionI32 : uint8_t {
+ ConstantPoolIndex,
+ Immediate,
+ GetLocal,
+ GetGlobal,
+ SetLocal,
+ SetGlobal,
+ SLoad8,
+ SLoadWithOffset8,
+ ULoad8,
+ ULoadWithOffset8,
+ SLoad16,
+ SLoadWithOffset16,
+ ULoad16,
+ ULoadWithOffset16,
+ Load32,
+ LoadWithOffset32,
+ Store8,
+ StoreWithOffset8,
+ Store16,
+ StoreWithOffset16,
+ Store32,
+ StoreWithOffset32,
+ CallInternal,
+ CallIndirect,
+ CallImport,
+ Conditional,
+ Comma,
+ FromF32,
+ FromF64,
+ Negate,
+ Add,
+ Sub,
+ Mul,
+ SDiv,
+ UDiv,
+ SMod,
+ UMod,
+ BitNot,
+ BitOr,
+ BitAnd,
+ BitXor,
+ LeftShift,
+ ArithmeticRightShift,
+ LogicalRightShift,
+ CountLeadingZeros,
+ LogicalNot,
+ EqualI32,
+ EqualF32,
+ EqualF64,
+ NotEqualI32,
+ NotEqualF32,
+ NotEqualF64,
+ SLessThanI32,
+ ULessThanI32,
+ LessThanF32,
+ LessThanF64,
+ SLessThanOrEqualI32,
+ ULessThanOrEqualI32,
+ LessThanOrEqualF32,
+ LessThanOrEqualF64,
+ SGreaterThanI32,
+ UGreaterThanI32,
+ GreaterThanF32,
+ GreaterThanF64,
+ SGreaterThanOrEqualI32,
+ UGreaterThanOrEqualI32,
+ GreaterThanOrEqualF32,
+ GreaterThanOrEqualF64,
+ SMin,
+ UMin,
+ SMax,
+ UMax,
+ Abs,
+ NumberOfWASMOpExpressionI32s
+};
+
+enum class WASMOpExpressionI32WithImmediate : uint8_t {
+ ConstantPoolIndex,
+ Immediate,
+ GetLocal,
+ NumberOfWASMOpExpressionI32WithImmediates
+};
+
+enum class WASMOpExpressionF32 : uint8_t {
+ ConstantPoolIndex,
+ Immediate,
+ GetLocal,
+ GetGlobal,
+ SetLocal,
+ SetGlobal,
+ Load,
+ LoadWithOffset,
+ Store,
+ StoreWithOffset,
+ CallInternal,
+ CallIndirect,
+ Conditional,
+ Comma,
+ FromS32,
+ FromU32,
+ FromF64,
+ Negate,
+ Add,
+ Sub,
+ Mul,
+ Div,
+ Abs,
+ Ceil,
+ Floor,
+ Sqrt,
+ NumberOfWASMOpExpressionF32s
+};
+
+enum class WASMOpExpressionF32WithImmediate : uint8_t {
+ ConstantPoolIndex,
+ GetLocal,
+ NumberOfWASMOpExpressionF32WithImmediates
+};
+
+enum class WASMOpExpressionF64 : uint8_t {
+ ConstantPoolIndex,
+ Immediate,
+ GetLocal,
+ GetGlobal,
+ SetLocal,
+ SetGlobal,
+ Load,
+ LoadWithOffset,
+ Store,
+ StoreWithOffset,
+ CallInternal,
+ CallIndirect,
+ CallImport,
+ Conditional,
+ Comma,
+ FromS32,
+ FromU32,
+ FromF32,
+ Negate,
+ Add,
+ Sub,
+ Mul,
+ Div,
+ Mod,
+ Min,
+ Max,
+ Abs,
+ Ceil,
+ Floor,
+ Sqrt,
+ Cos,
+ Sin,
+ Tan,
+ ACos,
+ ASin,
+ ATan,
+ ATan2,
+ Exp,
+ Ln,
+ Pow,
+ NumberOfWASMOpExpressionF64s
+};
+
+enum class WASMOpExpressionF64WithImmediate : uint8_t {
+ ConstantPoolIndex,
+ GetLocal,
+ NumberOfWASMOpExpressionF64WithImmediates
+};
+
+enum class WASMOpExpressionVoid : uint8_t {
+ CallInternal,
+ CallIndirect,
+ CallImport,
+ NumberOfWASMOpExpressionVoids
+};
+
+enum class WASMVariableTypes : uint8_t {
+ I32 = 1 << 0,
+ F32 = 1 << 1,
+ F64 = 1 << 2,
+ NumberOfVariableTypes = 8
+};
+
+enum class WASMVariableTypesWithImmediate : uint8_t {
+ I32,
+ NumberOfVariableTypesWithImmediates
+};
+
+enum class WASMSwitchCase : uint8_t {
+ CaseWithNoStatements,
+ CaseWithStatement,
+ CaseWithBlockStatement,
+ DefaultWithNoStatements,
+ DefaultWithStatement,
+ DefaultWithBlockStatement,
+ NumberOfSwitchCases
+};
+
+enum class WASMExportFormat : uint8_t {
+ Default,
+ Record,
+ NumberOfExportFormats
+};
+
+enum class WASMTypeConversion {
+ ConvertSigned,
+ ConvertUnsigned,
+ Promote,
+ Demote,
+};
+
+enum class WASMMemoryType {
+ I8,
+ I16,
+ I32,
+ F32,
+ F64
+};
+
+enum class MemoryAccessOffsetMode { NoOffset, WithOffset };
+enum class MemoryAccessConversion { NoConversion, SignExtend, ZeroExtend };
+
+static const uint8_t hasImmediateInOpFlag = 0x80;
+
+static const unsigned opWithImmediateBits = 2;
+static const uint32_t opWithImmediateLimit = 1 << opWithImmediateBits;
+
+static const unsigned immediateBits = 5;
+static const uint32_t immediateLimit = 1 << immediateBits;
+
+} // namespace JSC
+
+#endif // ENABLE(WEBASSEMBLY)
+
+#endif // WASMConstants_h