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