1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2013 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#ifndef V8_COMPILER_OPCODES_H_
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define V8_COMPILER_OPCODES_H_
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
8014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include <iosfwd>
9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
10c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch#include "src/globals.h"
11c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch
12014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Opcodes for control operators.
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define CONTROL_OP_LIST(V) \
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(Start)                 \
15014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Loop)                  \
16014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Branch)                \
17014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Switch)                \
18014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfTrue)                \
19014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfFalse)               \
20014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfSuccess)             \
21014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfException)           \
22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfValue)               \
23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(IfDefault)             \
24014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Merge)                 \
25014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Deoptimize)            \
263b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(DeoptimizeIf)          \
273b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(DeoptimizeUnless)      \
28014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Return)                \
29014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TailCall)              \
30014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Terminate)             \
31014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(OsrNormalEntry)        \
32014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(OsrLoopEntry)          \
33014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Throw)                 \
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(End)
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
36014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Opcodes for constant operators.
37bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define CONSTANT_OP_LIST(V)   \
38bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32Constant)            \
39bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int64Constant)            \
40bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32Constant)          \
41bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float64Constant)          \
42bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(ExternalConstant)         \
43bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(NumberConstant)           \
44c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(PointerConstant)          \
45bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(HeapConstant)             \
46bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(RelocatableInt32Constant) \
47bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(RelocatableInt64Constant)
48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
49f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define INNER_OP_LIST(V)  \
50f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Select)               \
51f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Phi)                  \
52f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(EffectPhi)            \
53f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(InductionVariablePhi) \
54f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Checkpoint)           \
55f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(BeginRegion)          \
56f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(FinishRegion)         \
57f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(FrameState)           \
58f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StateValues)          \
59f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(TypedStateValues)     \
60f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectState)          \
61c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(TypedObjectState)     \
62f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Call)                 \
63f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Parameter)            \
64f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(OsrValue)             \
65c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(OsrGuard)             \
66f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoopExit)             \
67f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoopExitValue)        \
68f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoopExitEffect)       \
69f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Projection)           \
70f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Retain)               \
71f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(TypeGuard)
72b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
73b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COMMON_OP_LIST(V) \
74014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  CONSTANT_OP_LIST(V)     \
75014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  INNER_OP_LIST(V)        \
76014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Dead)
77b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
78b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Opcodes for JavaScript operators.
79b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_COMPARE_BINOP_LIST(V) \
80b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSEqual)                     \
81b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSNotEqual)                  \
82b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSStrictEqual)               \
83b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSStrictNotEqual)            \
84b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSLessThan)                  \
85b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSGreaterThan)               \
86b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSLessThanOrEqual)           \
87b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSGreaterThanOrEqual)
88b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
89b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_BITWISE_BINOP_LIST(V) \
90b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSBitwiseOr)                 \
91b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSBitwiseXor)                \
92b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSBitwiseAnd)                \
93b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSShiftLeft)                 \
94b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSShiftRight)                \
95b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSShiftRightLogical)
96b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
97b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_ARITH_BINOP_LIST(V) \
98b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSAdd)                     \
99b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSSubtract)                \
100b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSMultiply)                \
101b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSDivide)                  \
102b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSModulus)
103b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
104b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_SIMPLE_BINOP_LIST(V) \
105b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_COMPARE_BINOP_LIST(V)      \
106b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_BITWISE_BINOP_LIST(V)      \
107b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_ARITH_BINOP_LIST(V)
108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
109b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_CONVERSION_UNOP_LIST(V) \
110b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSToBoolean)                   \
1113b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(JSToInteger)                   \
1123b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(JSToLength)                    \
113b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSToName)                      \
1143b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(JSToNumber)                    \
1153b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(JSToObject)                    \
1163b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(JSToString)
117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_OTHER_UNOP_LIST(V) \
119b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSTypeOf)
120b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_SIMPLE_UNOP_LIST(V) \
122b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_CONVERSION_UNOP_LIST(V)   \
123b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_OTHER_UNOP_LIST(V)
124b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
125014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define JS_OBJECT_OP_LIST(V)  \
126014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreate)                 \
127014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateArguments)        \
128014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateArray)            \
129014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateClosure)          \
130014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateIterResultObject) \
131c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(JSCreateKeyValueArray)    \
132014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateLiteralArray)     \
133014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateLiteralObject)    \
134014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSCreateLiteralRegExp)    \
135014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSLoadProperty)           \
136014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSLoadNamed)              \
137014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSLoadGlobal)             \
138014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSStoreProperty)          \
139014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSStoreNamed)             \
140014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSStoreGlobal)            \
141014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSDeleteProperty)         \
142014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSHasProperty)            \
143f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(JSInstanceOf)             \
144f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(JSOrdinaryHasInstance)
145b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
146b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_CONTEXT_OP_LIST(V) \
147b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSLoadContext)            \
148b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSStoreContext)           \
149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSCreateFunctionContext)  \
150b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSCreateCatchContext)     \
151b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSCreateWithContext)      \
152b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(JSCreateBlockContext)     \
153958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  V(JSCreateScriptContext)
154b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
15513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch#define JS_OTHER_OP_LIST(V)         \
15613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSCallConstruct)                \
15713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSCallFunction)                 \
15813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSCallRuntime)                  \
15913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSConvertReceiver)              \
16013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSForInNext)                    \
16113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSForInPrepare)                 \
16213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSLoadMessage)                  \
16313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSStoreMessage)                 \
164c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(JSLoadModule)                   \
165c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(JSStoreModule)                  \
16613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSGeneratorStore)               \
16713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSGeneratorRestoreContinuation) \
16813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(JSGeneratorRestoreRegister)     \
169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(JSStackCheck)
170b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
171b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define JS_OP_LIST(V)     \
172b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_SIMPLE_BINOP_LIST(V) \
173b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_SIMPLE_UNOP_LIST(V)  \
174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_OBJECT_OP_LIST(V)    \
175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_CONTEXT_OP_LIST(V)   \
176b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_OTHER_OP_LIST(V)
177b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
178b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Opcodes for VirtuaMachine-level operators.
179f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_CHANGE_OP_LIST(V) \
180f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeTaggedSignedToInt32)       \
181f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeTaggedToInt32)             \
182f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeTaggedToUint32)            \
183f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeTaggedToFloat64)           \
184f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeInt31ToTaggedSigned)       \
185f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeInt32ToTagged)             \
186f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeUint32ToTagged)            \
187f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeFloat64ToTagged)           \
188c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(ChangeFloat64ToTaggedPointer)    \
189f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeTaggedToBit)               \
190f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ChangeBitToTagged)               \
191f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(TruncateTaggedToWord32)          \
192f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(TruncateTaggedToFloat64)         \
193f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(TruncateTaggedToBit)
194f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
195f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_CHECKED_OP_LIST(V) \
196f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedInt32Add)                  \
197f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedInt32Sub)                  \
198f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedInt32Div)                  \
199f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedInt32Mod)                  \
200f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedUint32Div)                 \
201f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedUint32Mod)                 \
202f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedInt32Mul)                  \
203f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(CheckedInt32ToTaggedSigned)       \
204f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedUint32ToInt32)             \
205f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(CheckedUint32ToTaggedSigned)      \
206f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedFloat64ToInt32)            \
207f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedTaggedSignedToInt32)       \
208f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedTaggedToInt32)             \
209f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckedTruncateTaggedToWord32)    \
210f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(CheckedTaggedToFloat64)           \
211c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(CheckedTaggedToTaggedSigned)      \
212c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(CheckedTaggedToTaggedPointer)
213f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
214014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define SIMPLIFIED_COMPARE_BINOP_LIST(V) \
215014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(NumberEqual)                         \
216014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(NumberLessThan)                      \
217014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(NumberLessThanOrEqual)               \
218f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberEqual)              \
219f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberLessThan)           \
220f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberLessThanOrEqual)    \
221014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ReferenceEqual)                      \
222014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(StringEqual)                         \
223014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(StringLessThan)                      \
224014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(StringLessThanOrEqual)
225014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
226f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_NUMBER_BINOP_LIST(V) \
227f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAdd)                          \
228f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSubtract)                     \
229f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberMultiply)                     \
230f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberDivide)                       \
231f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberModulus)                      \
232f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberBitwiseOr)                    \
233f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberBitwiseXor)                   \
234f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberBitwiseAnd)                   \
235f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberShiftLeft)                    \
236f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberShiftRight)                   \
237f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberShiftRightLogical)            \
238f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAtan2)                        \
239f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberImul)                         \
240f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberMax)                          \
241f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberMin)                          \
242f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberPow)
243f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
244f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \
245f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberAdd)                           \
246f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberSubtract)                      \
247f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberMultiply)                      \
248f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberDivide)                        \
249f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberModulus)                       \
250f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberBitwiseAnd)                    \
251f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberBitwiseOr)                     \
252f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberBitwiseXor)                    \
253f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberShiftLeft)                     \
254f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberShiftRight)                    \
255f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(SpeculativeNumberShiftRightLogical)
256f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
257f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_NUMBER_UNOP_LIST(V) \
258f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAbs)                         \
259f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAcos)                        \
260f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAcosh)                       \
261f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAsin)                        \
262f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAsinh)                       \
263f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAtan)                        \
264f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberAtanh)                       \
265f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberCbrt)                        \
266f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberCeil)                        \
267f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberClz32)                       \
268f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberCos)                         \
269f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberCosh)                        \
270f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberExp)                         \
271f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberExpm1)                       \
272f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberFloor)                       \
273f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberFround)                      \
274f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberLog)                         \
275f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberLog1p)                       \
276f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberLog2)                        \
277f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberLog10)                       \
278f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberRound)                       \
279f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSign)                        \
280f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSin)                         \
281f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSinh)                        \
282f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSqrt)                        \
283f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberTan)                         \
284f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberTanh)                        \
285f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberTrunc)                       \
286f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(NumberToBoolean)                   \
287f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberToInt32)                     \
288f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberToUint32)                    \
289c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdoch  V(NumberToUint8Clamped)              \
290f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(NumberSilenceNaN)
291f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
292f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_OTHER_OP_LIST(V) \
293f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(PlainPrimitiveToNumber)         \
294f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(PlainPrimitiveToWord32)         \
295f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(PlainPrimitiveToFloat64)        \
296f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(BooleanNot)                     \
297f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StringCharCodeAt)               \
298f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StringFromCharCode)             \
299f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(StringFromCodePoint)            \
300f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckBounds)                    \
301f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckIf)                        \
302f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckMaps)                      \
303f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckNumber)                    \
304f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckString)                    \
305f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(CheckSmi)                       \
306f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(CheckHeapObject)                \
307f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckFloat64Hole)               \
308f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(CheckTaggedHole)                \
309f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ConvertTaggedHoleToUndefined)   \
310f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Allocate)                       \
311f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoadField)                      \
312f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoadBuffer)                     \
313f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoadElement)                    \
314f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(LoadTypedElement)               \
315f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StoreField)                     \
316f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StoreBuffer)                    \
317f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StoreElement)                   \
318f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(StoreTypedElement)              \
319f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsCallable)               \
320f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsNumber)                 \
321f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsReceiver)               \
322f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsSmi)                    \
323f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsString)                 \
324f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(ObjectIsUndetectable)           \
325f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(ArrayBufferWasNeutered)         \
326f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(EnsureWritableFastElements)     \
327f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(MaybeGrowFastElements)          \
328f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(TransitionElementsKind)
329f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
330f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch#define SIMPLIFIED_OP_LIST(V)                 \
331f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_CHANGE_OP_LIST(V)                \
332f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_CHECKED_OP_LIST(V)               \
333f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_COMPARE_BINOP_LIST(V)            \
334f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_NUMBER_BINOP_LIST(V)             \
335f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_SPECULATIVE_NUMBER_BINOP_LIST(V) \
336f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_NUMBER_UNOP_LIST(V)              \
337f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  SIMPLIFIED_OTHER_OP_LIST(V)
338b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
339b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Opcodes for Machine-level operators.
340014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define MACHINE_COMPARE_BINOP_LIST(V) \
341014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word32Equal)                      \
342014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word64Equal)                      \
343014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Int32LessThan)                    \
344014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Int32LessThanOrEqual)             \
345014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Uint32LessThan)                   \
346014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Uint32LessThanOrEqual)            \
347014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Int64LessThan)                    \
348014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Int64LessThanOrEqual)             \
349014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Uint64LessThan)                   \
350014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Uint64LessThanOrEqual)            \
351014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float32Equal)                     \
352014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float32LessThan)                  \
353014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float32LessThanOrEqual)           \
354014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64Equal)                     \
355014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64LessThan)                  \
356014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64LessThanOrEqual)
357014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
358f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_UNOP_32_LIST(V) \
359f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Clz)                  \
360f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Ctz)                  \
361f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32ReverseBits)          \
362f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32ReverseBytes)
363f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
364f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_BINOP_32_LIST(V) \
365f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32And)                   \
366f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Or)                    \
367f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Xor)                   \
368f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Shl)                   \
369f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Shr)                   \
370f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Sar)                   \
371f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word32Ror)                   \
372f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32Add)                    \
373f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32AddWithOverflow)        \
374f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32Sub)                    \
375f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32SubWithOverflow)        \
376f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32Mul)                    \
377f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32MulWithOverflow)        \
378f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32MulHigh)                \
379f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32Div)                    \
380f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int32Mod)                    \
381f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Uint32Div)                   \
382f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Uint32Mod)                   \
383f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Uint32MulHigh)
384f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
385f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_BINOP_64_LIST(V) \
386f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64And)                   \
387f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Or)                    \
388f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Xor)                   \
389f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Shl)                   \
390f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Shr)                   \
391f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Sar)                   \
392f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Word64Ror)                   \
393f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64Add)                    \
394f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64AddWithOverflow)        \
395f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64Sub)                    \
396f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64SubWithOverflow)        \
397f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64Mul)                    \
398f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64Div)                    \
399f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Int64Mod)                    \
400f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Uint64Div)                   \
401f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Uint64Mod)
402f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
403f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_FLOAT32_UNOP_LIST(V) \
404f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Abs)                      \
405f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Neg)                      \
406f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32RoundDown)                \
407f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32RoundTiesEven)            \
408f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32RoundTruncate)            \
409f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32RoundUp)                  \
410f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Sqrt)
411f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
412f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_FLOAT32_BINOP_LIST(V) \
413f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Add)                       \
414f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Sub)                       \
415f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Mul)                       \
416f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Div)                       \
417f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Max)                       \
418f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float32Min)
419f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
420f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_FLOAT64_UNOP_LIST(V) \
421f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Abs)                      \
422f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Acos)                     \
423f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Acosh)                    \
424f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Asin)                     \
425f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Asinh)                    \
426f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Atan)                     \
427f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Atanh)                    \
428f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Cbrt)                     \
429f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Cos)                      \
430f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Cosh)                     \
431f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Exp)                      \
432f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Expm1)                    \
433f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Log)                      \
434f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Log1p)                    \
435f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Log10)                    \
436f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Log2)                     \
437f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Neg)                      \
438f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64RoundDown)                \
439f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64RoundTiesAway)            \
440f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64RoundTiesEven)            \
441f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64RoundTruncate)            \
442f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64RoundUp)                  \
443f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Sin)                      \
444f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Sinh)                     \
445f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Sqrt)                     \
446f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Tan)                      \
447f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Tanh)
448f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
449f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch#define MACHINE_FLOAT64_BINOP_LIST(V) \
450f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Atan2)                     \
451f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Max)                       \
452f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Min)                       \
453f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Add)                       \
454f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Sub)                       \
455f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Mul)                       \
456f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Div)                       \
457f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Mod)                       \
458f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(Float64Pow)
459f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch
460014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define MACHINE_OP_LIST(V)      \
461f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_UNOP_32_LIST(V)       \
462f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_BINOP_32_LIST(V)      \
463f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_BINOP_64_LIST(V)      \
464014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  MACHINE_COMPARE_BINOP_LIST(V) \
465f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_FLOAT32_BINOP_LIST(V) \
466f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_FLOAT32_UNOP_LIST(V)  \
467f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_FLOAT64_BINOP_LIST(V) \
468f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  MACHINE_FLOAT64_UNOP_LIST(V)  \
46913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(DebugBreak)                 \
47013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Comment)                    \
471014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Load)                       \
472014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Store)                      \
473109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(StackSlot)                  \
474014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word32Popcnt)               \
475014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word64Popcnt)               \
476014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word64Clz)                  \
477014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Word64Ctz)                  \
478109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(Word64ReverseBits)          \
479f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(Word64ReverseBytes)         \
480f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(BitcastTaggedToWord)        \
481bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(BitcastWordToTagged)        \
482f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(BitcastWordToTaggedSigned)  \
483bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(TruncateFloat64ToWord32)    \
484014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeFloat32ToFloat64)     \
485014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeFloat64ToInt32)       \
486014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeFloat64ToUint32)      \
48713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Float64SilenceNaN)          \
4883b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(TruncateFloat64ToUint32)    \
489109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(TruncateFloat32ToInt32)     \
490109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(TruncateFloat32ToUint32)    \
491014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TryTruncateFloat32ToInt64)  \
492014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TryTruncateFloat64ToInt64)  \
493014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TryTruncateFloat32ToUint64) \
494014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TryTruncateFloat64ToUint64) \
495014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeInt32ToFloat64)       \
496014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeInt32ToInt64)         \
497014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeUint32ToFloat64)      \
498014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(ChangeUint32ToUint64)       \
499014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TruncateFloat64ToFloat32)   \
500014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(TruncateInt64ToInt32)       \
501bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(RoundFloat64ToInt32)        \
502109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(RoundInt32ToFloat32)        \
503014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(RoundInt64ToFloat32)        \
504014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(RoundInt64ToFloat64)        \
505109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(RoundUint32ToFloat32)       \
506014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(RoundUint64ToFloat32)       \
507014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(RoundUint64ToFloat64)       \
508014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(BitcastFloat32ToInt32)      \
509014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(BitcastFloat64ToInt64)      \
510014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(BitcastInt32ToFloat32)      \
511014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(BitcastInt64ToFloat64)      \
512014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64ExtractLowWord32)    \
513014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64ExtractHighWord32)   \
514014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64InsertLowWord32)     \
515014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(Float64InsertHighWord32)    \
516014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(LoadStackPointer)           \
517014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(LoadFramePointer)           \
518109988c7ccb6f3fd1a58574fa3dfb88beaef6632Ben Murdoch  V(LoadParentFramePointer)     \
519014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  V(CheckedLoad)                \
5203b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(CheckedStore)               \
521f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(UnalignedLoad)              \
522f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(UnalignedStore)             \
5233b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(Int32PairAdd)               \
5243b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(Int32PairSub)               \
5253b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(Int32PairMul)               \
5263b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(Word32PairShl)              \
5273b9bc31999c9787eb726ecdbfd5796bfdec32a18Ben Murdoch  V(Word32PairShr)              \
528bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Word32PairSar)              \
529f3b273f5e6ffd2f6ba1c18a27a17db41dfb113c3Ben Murdoch  V(ProtectedLoad)              \
530bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(AtomicLoad)                 \
531f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(AtomicStore)                \
532f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  V(UnsafePointerAdd)
533bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
534bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define MACHINE_SIMD_RETURN_SIMD_OP_LIST(V) \
535bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateFloat32x4)                        \
536bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4ReplaceLane)                   \
537bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Abs)                           \
538bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Neg)                           \
539bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Sqrt)                          \
540bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4RecipApprox)                   \
541bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4RecipSqrtApprox)               \
542bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Add)                           \
543bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Sub)                           \
544bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Mul)                           \
545bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Div)                           \
546bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Min)                           \
547bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Max)                           \
548bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4MinNum)                        \
549bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4MaxNum)                        \
550bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Equal)                         \
551bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4NotEqual)                      \
552bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4LessThan)                      \
553bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4LessThanOrEqual)               \
554bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4GreaterThan)                   \
555bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4GreaterThanOrEqual)            \
556bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Select)                        \
557bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Swizzle)                       \
558bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4Shuffle)                       \
559bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4FromInt32x4)                   \
560bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4FromUint32x4)                  \
561bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateInt32x4)                          \
562bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4ReplaceLane)                     \
563bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Neg)                             \
564bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Add)                             \
565bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Sub)                             \
566bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Mul)                             \
567bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Min)                             \
568bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Max)                             \
569bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4ShiftLeftByScalar)               \
570bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4ShiftRightByScalar)              \
571bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Equal)                           \
572bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4NotEqual)                        \
573bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4LessThan)                        \
574bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4LessThanOrEqual)                 \
575bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4GreaterThan)                     \
576bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4GreaterThanOrEqual)              \
577bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Select)                          \
578bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Swizzle)                         \
579bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4Shuffle)                         \
580bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4FromFloat32x4)                   \
581bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4Min)                            \
582bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4Max)                            \
583bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4ShiftLeftByScalar)              \
584bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4ShiftRightByScalar)             \
585bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4LessThan)                       \
586bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4LessThanOrEqual)                \
587bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4GreaterThan)                    \
588bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4GreaterThanOrEqual)             \
589bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint32x4FromFloat32x4)                  \
590bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateBool32x4)                         \
591bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4ReplaceLane)                    \
592bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4And)                            \
593bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Or)                             \
594bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Xor)                            \
595bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Not)                            \
596bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Swizzle)                        \
597bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Shuffle)                        \
598bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4Equal)                          \
599bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4NotEqual)                       \
600bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateInt16x8)                          \
601bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8ReplaceLane)                     \
602bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Neg)                             \
603bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Add)                             \
604bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8AddSaturate)                     \
605bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Sub)                             \
606bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8SubSaturate)                     \
607bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Mul)                             \
608bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Min)                             \
609bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Max)                             \
610bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8ShiftLeftByScalar)               \
611bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8ShiftRightByScalar)              \
612bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Equal)                           \
613bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8NotEqual)                        \
614bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8LessThan)                        \
615bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8LessThanOrEqual)                 \
616bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8GreaterThan)                     \
617bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8GreaterThanOrEqual)              \
618bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Select)                          \
619bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Swizzle)                         \
620bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8Shuffle)                         \
621bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8AddSaturate)                    \
622bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8SubSaturate)                    \
623bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8Min)                            \
624bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8Max)                            \
625bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8ShiftLeftByScalar)              \
626bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8ShiftRightByScalar)             \
627bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8LessThan)                       \
628bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8LessThanOrEqual)                \
629bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8GreaterThan)                    \
630bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint16x8GreaterThanOrEqual)             \
631bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateBool16x8)                         \
632bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8ReplaceLane)                    \
633bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8And)                            \
634bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Or)                             \
635bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Xor)                            \
636bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Not)                            \
637bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Swizzle)                        \
638bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Shuffle)                        \
639bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8Equal)                          \
640bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8NotEqual)                       \
641bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateInt8x16)                          \
642bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16ReplaceLane)                     \
643bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Neg)                             \
644bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Add)                             \
645bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16AddSaturate)                     \
646bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Sub)                             \
647bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16SubSaturate)                     \
648bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Mul)                             \
649bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Min)                             \
650bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Max)                             \
651bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16ShiftLeftByScalar)               \
652bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16ShiftRightByScalar)              \
653bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Equal)                           \
654bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16NotEqual)                        \
655bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16LessThan)                        \
656bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16LessThanOrEqual)                 \
657bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16GreaterThan)                     \
658bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16GreaterThanOrEqual)              \
659bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Select)                          \
660bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Swizzle)                         \
661bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16Shuffle)                         \
662bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16AddSaturate)                    \
663bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16SubSaturate)                    \
664bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16Min)                            \
665bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16Max)                            \
666bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16ShiftLeftByScalar)              \
667bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16ShiftRightByScalar)             \
668bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16LessThan)                       \
669bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16LessThanOrEqual)                \
670bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16GreaterThan)                    \
671bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Uint8x16GreaterThanOrEqual)             \
672bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(CreateBool8x16)                         \
673bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16ReplaceLane)                    \
674bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16And)                            \
675bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Or)                             \
676bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Xor)                            \
677bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Not)                            \
678bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Swizzle)                        \
679bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Shuffle)                        \
680bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16Equal)                          \
68113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Bool8x16NotEqual)
682bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
683bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define MACHINE_SIMD_RETURN_NUM_OP_LIST(V) \
684bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Float32x4ExtractLane)                  \
685bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int32x4ExtractLane)                    \
686bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int16x8ExtractLane)                    \
687bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Int8x16ExtractLane)
688bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
689bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define MACHINE_SIMD_RETURN_BOOL_OP_LIST(V) \
690bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4ExtractLane)                    \
691bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4AnyTrue)                        \
692bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool32x4AllTrue)                        \
693bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8ExtractLane)                    \
694bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8AnyTrue)                        \
695bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool16x8AllTrue)                        \
696bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16ExtractLane)                    \
697bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16AnyTrue)                        \
698bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  V(Bool8x16AllTrue)
699bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
70013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch#define MACHINE_SIMD_GENERIC_OP_LIST(V) \
70113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Load)                        \
70213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Load1)                       \
70313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Load2)                       \
70413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Load3)                       \
70513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Store)                       \
70613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Store1)                      \
70713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Store2)                      \
70813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Store3)                      \
70913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128And)                         \
71013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Or)                          \
71113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Xor)                         \
71213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  V(Simd128Not)
71313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch
714bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define MACHINE_SIMD_OP_LIST(V)       \
715bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  MACHINE_SIMD_RETURN_SIMD_OP_LIST(V) \
716bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  MACHINE_SIMD_RETURN_NUM_OP_LIST(V)  \
71713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  MACHINE_SIMD_RETURN_BOOL_OP_LIST(V) \
71813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch  MACHINE_SIMD_GENERIC_OP_LIST(V)
719bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch
720bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define VALUE_OP_LIST(V)  \
721bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  COMMON_OP_LIST(V)       \
722bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  SIMPLIFIED_OP_LIST(V)   \
723bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  MACHINE_OP_LIST(V)      \
724bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch  MACHINE_SIMD_OP_LIST(V) \
725b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  JS_OP_LIST(V)
726b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
727b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The combination of all operators at all levels and the common operators.
728b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define ALL_OP_LIST(V) \
729b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  CONTROL_OP_LIST(V)   \
730b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  VALUE_OP_LIST(V)
731b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
732b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 {
733b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal {
734b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace compiler {
735b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
736b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Declare an enumeration with all the opcodes at all levels so that they
737b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// can be globally, uniquely numbered.
738c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen Murdochclass V8_EXPORT_PRIVATE IrOpcode {
739b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch public:
740b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  enum Value {
741b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define DECLARE_OPCODE(x) k##x,
742b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    ALL_OP_LIST(DECLARE_OPCODE)
743b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef DECLARE_OPCODE
744b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    kLast = -1
745b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COUNT_OPCODE(x) +1
746b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch            ALL_OP_LIST(COUNT_OPCODE)
747b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef COUNT_OPCODE
748b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  };
749b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
750b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  // Returns the mnemonic name of an opcode.
751958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  static char const* Mnemonic(Value value);
752958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
753014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode for common operator.
754014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsCommonOpcode(Value value) {
755014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return kStart <= value && value <= kDead;
756014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  }
757014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
758014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode for control operator.
759014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsControlOpcode(Value value) {
760014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return kStart <= value && value <= kEnd;
761014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  }
762014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
763014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode for JavaScript operator.
764014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsJsOpcode(Value value) {
765014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return kJSEqual <= value && value <= kJSStackCheck;
766014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  }
767014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
768014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode for constant operator.
769014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsConstantOpcode(Value value) {
770bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch    return kInt32Constant <= value && value <= kRelocatableInt64Constant;
771014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  }
772014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
773014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsPhiOpcode(Value value) {
774014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return value == kPhi || value == kEffectPhi;
775014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  }
776014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
777014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsMergeOpcode(Value value) {
778014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return value == kMerge || value == kLoop;
779b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }
780b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
781014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsIfProjectionOpcode(Value value) {
782014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return kIfTrue <= value && value <= kIfDefault;
783b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }
784b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
785014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode can be inlined.
786014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsInlineeOpcode(Value value) {
787014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return value == kJSCallConstruct || value == kJSCallFunction;
788b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }
789b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
790014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  // Returns true if opcode for comparison operator.
791014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  static bool IsComparisonOpcode(Value value) {
792014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch    return (kJSEqual <= value && value <= kJSGreaterThanOrEqual) ||
793014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch           (kNumberEqual <= value && value <= kStringLessThanOrEqual) ||
794014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch           (kWord32Equal <= value && value <= kFloat64LessThanOrEqual);
795b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  }
796b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch};
797b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
798c8c1d9e03f4babd16833b0f8ccf6aab5fa6e8c7aBen MurdochV8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&, IrOpcode::Value);
799014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
800b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace compiler
801b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace internal
802b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace v8
803b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
804b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif  // V8_COMPILER_OPCODES_H_
805