summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/wasm/WASMConstants.h
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-05-30 12:48:17 +0200
commit881da28418d380042aa95a97f0cbd42560a64f7c (patch)
treea794dff3274695e99c651902dde93d934ea7a5af /Source/JavaScriptCore/wasm/WASMConstants.h
parent7e104c57a70fdf551bb3d22a5d637cdcbc69dbea (diff)
parent0fcedcd17cc00d3dd44c718b3cb36c1033319671 (diff)
downloadqtwebkit-881da28418d380042aa95a97f0cbd42560a64f7c.tar.gz
Merge 'wip/next' into dev
Change-Id: Iff9ee5e23bb326c4371ec8ed81d56f2f05d680e9
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