text: /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
   * vim: set ts=8 sts=4 et sw=4 tw=99:
   * This Source Code Form is subject to the terms of the Mozilla Public
   * License, v. 2.0. If a copy of the MPL was not distributed with this
   * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  
  #ifndef jit_shared_LOpcodes_shared_h
  #define jit_shared_LOpcodes_shared_h
  
  #define LIR_COMMON_OPCODE_LIST(_)   \
      _(Unbox)                        \
      _(Box)                          \
      _(UnboxFloatingPoint)           \
      _(OsiPoint)                     \
      _(MoveGroup)                    \
      _(Integer)                      \
      _(Pointer)                      \
      _(Double)                       \
      _(Float32)                      \
      _(SimdBox)                      \
      _(SimdUnbox)                    \
      _(SimdSplatX4)                  \
      _(Int32x4)                      \
      _(Float32x4)                    \
      _(SimdReinterpretCast)          \
      _(SimdExtractElementI)          \
      _(SimdExtractElementF)          \
      _(SimdInsertElementI)           \
      _(SimdInsertElementF)           \
      _(SimdSignMaskX4)               \
      _(SimdGeneralShuffleI)          \
      _(SimdGeneralShuffleF)          \
      _(SimdSwizzleI)                 \
      _(SimdSwizzleF)                 \
      _(SimdShuffle)                  \
      _(SimdUnaryArithIx4)            \
      _(SimdUnaryArithFx4)            \
      _(SimdBinaryCompIx4)            \
      _(SimdBinaryCompFx4)            \
      _(SimdBinaryArithIx4)           \
      _(SimdBinaryArithFx4)           \
      _(SimdBinaryBitwiseX4)          \
      _(SimdShift)                    \
      _(SimdSelect)                   \
      _(Value)                        \
      _(CloneLiteral)                 \
      _(Parameter)                    \
      _(Callee)                       \
      _(IsConstructing)               \
      _(TableSwitch)                  \
      _(TableSwitchV)                 \
      _(Goto)                         \
      _(NewArray)                     \
      _(NewArrayCopyOnWrite)          \
      _(NewArrayDynamicLength)        \
      _(ArraySplice)                  \
      _(NewObject)                    \
      _(NewTypedObject)               \
      _(NewDeclEnvObject)             \
      _(NewCallObject)                \
      _(NewSingletonCallObject)       \
      _(NewStringObject)              \
      _(NewDerivedTypedObject)        \
      _(InitElem)                     \
      _(InitElemGetterSetter)         \
      _(MutateProto)                  \
      _(InitProp)                     \
      _(InitPropGetterSetter)         \
      _(CheckOverRecursed)            \
      _(DefVar)                       \
      _(DefLexical)                   \
      _(DefFun)                       \
      _(CallKnown)                    \
      _(CallGeneric)                  \
      _(CallNative)                   \
      _(ApplyArgsGeneric)             \
      _(ApplyArrayGeneric)            \
      _(Bail)                         \
      _(Unreachable)                  \
      _(EncodeSnapshot)               \
      _(GetDynamicName)               \
      _(CallDirectEval)               \
      _(StackArgT)                    \
      _(StackArgV)                    \
      _(CreateThis)                   \
      _(CreateThisWithProto)          \
      _(CreateThisWithTemplate)       \
      _(CreateArgumentsObject)        \
      _(GetArgumentsObjectArg)        \
      _(SetArgumentsObjectArg)        \
      _(ReturnFromCtor)               \
      _(ComputeThis)                  \
      _(BitNotI)                      \
      _(BitNotV)                      \
      _(BitOpI)                       \
      _(BitOpV)                       \
      _(ShiftI)                       \
      _(UrshD)                        \
      _(Return)                       \
      _(Throw)                        \
      _(Phi)                          \
      _(TestIAndBranch)               \
      _(TestDAndBranch)               \
      _(TestFAndBranch)               \
      _(TestVAndBranch)               \
      _(TestOAndBranch)               \
      _(FunctionDispatch)             \
      _(ObjectGroupDispatch)          \
      _(Compare)                      \
      _(CompareAndBranch)             \
      _(CompareD)                     \
      _(CompareDAndBranch)            \
      _(CompareF)                     \
      _(CompareFAndBranch)            \
      _(CompareS)                     \
      _(CompareStrictS)               \
      _(CompareB)                     \
      _(CompareBAndBranch)            \
      _(CompareBitwise)               \
      _(CompareBitwiseAndBranch)      \
      _(CompareVM)                    \
      _(BitAndAndBranch)              \
      _(IsNullOrLikeUndefinedV)       \
      _(IsNullOrLikeUndefinedT)       \
      _(IsNullOrLikeUndefinedAndBranchV)\
      _(IsNullOrLikeUndefinedAndBranchT)\
      _(MinMaxI)                      \
      _(MinMaxD)                      \
      _(MinMaxF)                      \
      _(NegI)                         \
      _(NegD)                         \
      _(NegF)                         \
      _(AbsI)                         \
      _(AbsD)                         \
      _(AbsF)                         \
      _(ClzI)                         \
      _(SqrtD)                        \
      _(SqrtF)                        \
      _(Atan2D)                       \
      _(Hypot)                        \
      _(PowI)                         \
      _(PowD)                         \
      _(PowHalfD)                     \
      _(Random)                       \
      _(MathFunctionD)                \
      _(MathFunctionF)                \
      _(NotI)                         \
      _(NotD)                         \
      _(NotF)                         \
      _(NotO)                         \
      _(NotV)                         \
      _(AddI)                         \
      _(SubI)                         \
      _(MulI)                         \
      _(MathD)                        \
      _(MathF)                        \
      _(DivI)                         \
      _(DivPowTwoI)                   \
      _(ModI)                         \
      _(ModPowTwoI)                   \
      _(ModD)                         \
      _(BinaryV)                      \
      _(Concat)                       \
      _(CharCodeAt)                   \
      _(FromCharCode)                 \
      _(SinCos)                       \
      _(StringSplit)                  \
      _(Int32ToDouble)                \
      _(Float32ToDouble)              \
      _(DoubleToFloat32)              \
      _(Int32ToFloat32)               \
      _(ValueToDouble)                \
      _(ValueToInt32)                 \
      _(ValueToFloat32)               \
      _(DoubleToInt32)                \
      _(Float32ToInt32)               \
      _(TruncateDToInt32)             \
      _(TruncateFToInt32)             \
      _(BooleanToString)              \
      _(IntToString)                  \
      _(DoubleToString)               \
      _(ValueToString)                \
      _(ValueToObjectOrNull)          \
      _(Int32x4ToFloat32x4)           \
      _(Float32x4ToInt32x4)           \
      _(Start)                        \
      _(OsrEntry)                     \
      _(OsrValue)                     \
      _(OsrScopeChain)                \
      _(OsrReturnValue)               \
      _(OsrArgumentsObject)           \
      _(RegExp)                       \
      _(RegExpExec)                   \
      _(RegExpTest)                   \
      _(RegExpReplace)                \
      _(StringReplace)                \
      _(Substr)                       \
      _(BinarySharedStub)             \
      _(UnarySharedStub)              \
      _(Lambda)                       \
      _(LambdaArrow)                  \
      _(LambdaForSingleton)           \
      _(KeepAliveObject)              \
      _(Slots)                        \
      _(Elements)                     \
      _(ConvertElementsToDoubles)     \
      _(MaybeToDoubleElement)         \
      _(MaybeCopyElementsForWrite)    \
      _(LoadSlotV)                    \
      _(LoadSlotT)                    \
      _(StoreSlotV)                   \
      _(StoreSlotT)                   \
      _(GuardShape)                   \
      _(GuardReceiverPolymorphic)     \
      _(GuardObjectGroup)             \
      _(GuardObjectIdentity)          \
      _(GuardClass)                   \
      _(GuardUnboxedExpando)          \
      _(LoadUnboxedExpando)           \
      _(TypeBarrierV)                 \
      _(TypeBarrierO)                 \
      _(MonitorTypes)                 \
      _(PostWriteBarrierO)            \
      _(PostWriteBarrierV)            \
      _(InitializedLength)            \
      _(SetInitializedLength)         \
      _(UnboxedArrayLength)           \
      _(UnboxedArrayInitializedLength) \
      _(IncrementUnboxedArrayInitializedLength) \
      _(SetUnboxedArrayInitializedLength) \
      _(BoundsCheck)                  \
      _(BoundsCheckRange)             \
      _(BoundsCheckLower)             \
      _(LoadElementV)                 \
      _(LoadElementT)                 \
      _(LoadElementHole)              \
      _(LoadUnboxedScalar)            \
      _(LoadUnboxedPointerV)          \
      _(LoadUnboxedPointerT)          \
      _(UnboxObjectOrNull)            \
      _(StoreElementV)                \
      _(StoreElementT)                \
      _(StoreUnboxedScalar)           \
      _(StoreUnboxedPointer)          \
      _(ConvertUnboxedObjectToNative) \
      _(ArrayPopShiftV)               \
      _(ArrayPopShiftT)               \
      _(ArrayPushV)                   \
      _(ArrayPushT)                   \
      _(ArrayConcat)                  \
      _(ArraySlice)                   \
      _(ArrayJoin)                    \
      _(StoreElementHoleV)            \
      _(StoreElementHoleT)            \
      _(LoadTypedArrayElementHole)    \
      _(LoadTypedArrayElementStatic)  \
      _(StoreTypedArrayElementHole)   \
      _(StoreTypedArrayElementStatic) \
      _(AtomicIsLockFree)             \
      _(GuardSharedTypedArray)        \
      _(CompareExchangeTypedArrayElement) \
      _(AtomicExchangeTypedArrayElement) \
      _(AtomicTypedArrayElementBinop) \
      _(AtomicTypedArrayElementBinopForEffect) \
      _(EffectiveAddress)             \
      _(ClampIToUint8)                \
      _(ClampDToUint8)                \
      _(ClampVToUint8)                \
      _(LoadFixedSlotV)               \
      _(LoadFixedSlotT)               \
      _(LoadFixedSlotAndUnbox)        \
      _(StoreFixedSlotV)              \
      _(StoreFixedSlotT)              \
      _(FunctionEnvironment)          \
      _(GetPropertyCacheV)            \
      _(GetPropertyCacheT)            \
      _(GetPropertyPolymorphicV)      \
      _(GetPropertyPolymorphicT)      \
      _(BindNameCache)                \
      _(CallGetProperty)              \
      _(GetNameCache)                 \
      _(CallGetIntrinsicValue)        \
      _(CallGetElement)               \
      _(CallSetElement)               \
      _(CallInitElementArray)         \
      _(CallSetProperty)              \
      _(CallDeleteProperty)           \
      _(CallDeleteElement)            \
      _(SetPropertyCache)             \
      _(SetPropertyPolymorphicV)      \
      _(SetPropertyPolymorphicT)      \
      _(CallIteratorStart)            \
      _(IteratorStart)                \
      _(IteratorMore)                 \
      _(IsNoIterAndBranch)            \
      _(IteratorEnd)                  \
      _(ArrayLength)                  \
      _(SetArrayLength)               \
      _(TypedArrayLength)             \
      _(TypedArrayElements)           \
      _(SetDisjointTypedElements)     \
      _(TypedObjectDescr)             \
      _(TypedObjectElements)          \
      _(SetTypedObjectOffset)         \
      _(StringLength)                 \
      _(ArgumentsLength)              \
      _(GetFrameArgument)             \
      _(SetFrameArgumentT)            \
      _(SetFrameArgumentC)            \
      _(SetFrameArgumentV)            \
      _(RunOncePrologue)              \
      _(Rest)                         \
      _(TypeOfV)                      \
      _(ToIdV)                        \
      _(Floor)                        \
      _(FloorF)                       \
      _(Ceil)                         \
      _(CeilF)                        \
      _(Round)                        \
      _(RoundF)                       \
      _(In)                           \
      _(InArray)                      \
      _(InstanceOfO)                  \
      _(InstanceOfV)                  \
      _(CallInstanceOf)               \
      _(InterruptCheck)               \
      _(AsmJSInterruptCheck)          \
      _(InterruptCheckImplicit)       \
      _(GetDOMProperty)               \
      _(GetDOMMemberV)                \
      _(GetDOMMemberT)                \
      _(SetDOMProperty)               \
      _(CallDOMNative)                \
      _(IsCallable)                   \
      _(IsObject)                     \
      _(IsObjectAndBranch)            \
      _(HasClass)                     \
      _(AsmJSLoadHeap)                \
      _(AsmJSStoreHeap)               \
      _(AsmJSLoadFuncPtr)             \
      _(AsmJSLoadGlobalVar)           \
      _(AsmJSStoreGlobalVar)          \
      _(AsmJSLoadFFIFunc)             \
      _(AsmJSParameter)               \
      _(AsmJSReturn)                  \
      _(AsmJSVoidReturn)              \
      _(AsmJSPassStackArg)            \
      _(AsmJSCall)                    \
      _(AsmJSCompareExchangeHeap)     \
      _(AsmJSAtomicExchangeHeap)      \
      _(AsmJSAtomicBinopHeap)         \
      _(AsmJSAtomicBinopHeapForEffect)\
      _(AsmJSUInt32ToDouble)          \
      _(AsmJSUInt32ToFloat32)         \
      _(RecompileCheck)               \
      _(MemoryBarrier)                \
      _(AssertRangeI)                 \
      _(AssertRangeD)                 \
      _(AssertRangeF)                 \
      _(AssertRangeV)                 \
      _(AssertResultV)                \
      _(AssertResultT)                \
      _(LexicalCheck)                 \
      _(ThrowRuntimeLexicalError)     \
      _(GlobalNameConflictsCheck)     \
      _(Debugger)                     \
      _(NewTarget)                    \
      _(ArrowNewTarget)               \
      _(CheckReturn)                  \
      _(CheckObjCoercible)
  
  #endif /* jit_shared_LOpcodes_shared_h */
  