// Generated by opcode_generator.rb from JavaScriptCore/b3/air/AirOpcode.opcodes -- do not edit!
#ifndef AirOpcode_h
#define AirOpcode_h
#if ENABLE(B3_JIT)
#pragma push_macro("RotateLeft32")
#pragma push_macro("RotateLeft64")
#pragma push_macro("RotateRight32")
#pragma push_macro("RotateRight64")
#pragma push_macro("StoreFence")
#pragma push_macro("LoadFence")
#pragma push_macro("MemoryFence")
#undef RotateLeft32
#undef RotateLeft64
#undef RotateRight32
#undef RotateRight64
#undef StoreFence
#undef LoadFence
#undef MemoryFence
namespace JSC { namespace B3 { namespace Air {
enum Opcode : int16_t {
    Nop,
    Add32,
    AddZeroExtend64,
    AddSignExtend64,
    Add8,
    Add16,
    Add64,
    AddDouble,
    AddFloat,
    Sub32,
    Sub64,
    SubDouble,
    SubFloat,
    Neg32,
    Neg64,
    NegateDouble,
    NegateFloat,
    Mul32,
    UMull32,
    Mul64,
    MultiplyAdd32,
    MultiplyAdd64,
    MultiplyAddSignExtend32,
    MultiplyAddZeroExtend32,
    MultiplySub32,
    MultiplySub64,
    MultiplySubSignExtend32,
    MultiplySubZeroExtend32,
    MultiplyNeg32,
    MultiplyNeg64,
    MultiplyNegSignExtend32,
    MultiplyNegZeroExtend32,
    MultiplySignExtend32,
    MultiplyZeroExtend32,
    Div32,
    UDiv32,
    Div64,
    UDiv64,
    MulDouble,
    MulFloat,
    DivDouble,
    DivFloat,
    X86ConvertToDoubleWord32,
    X86ConvertToQuadWord64,
    X86Div32,
    X86UDiv32,
    X86Div64,
    X86UDiv64,
    Lea32,
    Lea64,
    And32,
    And64,
    AndDouble,
    AndFloat,
    OrDouble,
    OrFloat,
    XorDouble,
    XorFloat,
    Lshift32,
    Lshift64,
    Rshift32,
    Rshift64,
    Urshift32,
    Urshift64,
    RotateRight32,
    RotateRight64,
    RotateLeft32,
    RotateLeft64,
    Or32,
    Or64,
    Xor32,
    Xor64,
    Not32,
    Not64,
    AbsDouble,
    AbsFloat,
    CeilDouble,
    CeilFloat,
    FloorDouble,
    FloorFloat,
    SqrtDouble,
    SqrtFloat,
    ConvertInt32ToDouble,
    ConvertInt64ToDouble,
    ConvertInt32ToFloat,
    ConvertInt64ToFloat,
    CountLeadingZeros32,
    CountLeadingZeros64,
    ConvertDoubleToFloat,
    ConvertFloatToDouble,
    Move,
    Swap32,
    Swap64,
    MoveWithIncrement64,
    Move32,
    MoveWithIncrement32,
    LoadPair32,
    LoadPair64,
    StorePair32,
    StorePair64,
    SignExtend8To64,
    SignExtend16To64,
    SignExtend32To64,
    ZeroExtend8To32,
    SignExtend8To32,
    ZeroExtend16To32,
    SignExtend16To32,
    MoveFloat,
    MoveDouble,
    LoadPairFloat,
    LoadPairDouble,
    StorePairFloat,
    StorePairDouble,
    MoveVector,
    MoveZeroToDouble,
    MoveZeroToFloat,
    Move64ToDouble,
    Move32ToDoubleHi,
    Move32ToFloat,
    MoveDoubleTo64,
    MoveDoubleHiTo32,
    MoveFloatTo32,
    Load8,
    LoadAcq8,
    Store8,
    StoreRel8,
    Load8SignedExtendTo32,
    LoadAcq8SignedExtendTo32,
    Load16,
    LoadAcq16,
    Load16SignedExtendTo32,
    LoadAcq16SignedExtendTo32,
    Store16,
    StoreRel16,
    LoadAcq32,
    StoreRel32,
    LoadAcq64,
    StoreRel64,
    Xchg8,
    Xchg16,
    Xchg32,
    Xchg64,
    ExtractUnsignedBitfield32,
    ExtractUnsignedBitfield64,
    InsertUnsignedBitfieldInZero32,
    InsertUnsignedBitfieldInZero64,
    InsertBitField32,
    InsertBitField64,
    ClearBitField32,
    ClearBitField64,
    ClearBitsWithMask32,
    ClearBitsWithMask64,
    ReverseBits64,
    ReverseBits32,
    OrNot32,
    OrNot64,
    XorNot32,
    XorNot64,
    XorNotLeftShift32,
    XorNotRightShift32,
    XorNotUnsignedRightShift32,
    XorNotLeftShift64,
    XorNotRightShift64,
    XorNotUnsignedRightShift64,
    ExtractInsertBitfieldAtLowEnd32,
    ExtractInsertBitfieldAtLowEnd64,
    InsertSignedBitfieldInZero32,
    InsertSignedBitfieldInZero64,
    ExtractSignedBitfield32,
    ExtractSignedBitfield64,
    ExtractRegister32,
    ExtractRegister64,
    AddLeftShift32,
    AddRightShift32,
    AddUnsignedRightShift32,
    AddLeftShift64,
    AddRightShift64,
    AddUnsignedRightShift64,
    SubLeftShift32,
    SubRightShift32,
    SubUnsignedRightShift32,
    SubLeftShift64,
    SubRightShift64,
    SubUnsignedRightShift64,
    AndLeftShift32,
    AndRightShift32,
    AndUnsignedRightShift32,
    AndLeftShift64,
    AndRightShift64,
    AndUnsignedRightShift64,
    XorLeftShift32,
    XorRightShift32,
    XorUnsignedRightShift32,
    XorLeftShift64,
    XorRightShift64,
    XorUnsignedRightShift64,
    OrLeftShift32,
    OrRightShift32,
    OrUnsignedRightShift32,
    OrLeftShift64,
    OrRightShift64,
    OrUnsignedRightShift64,
    FloatMax,
    FloatMin,
    DoubleMax,
    DoubleMin,
    AtomicStrongCAS8,
    AtomicStrongCAS16,
    AtomicStrongCAS32,
    AtomicStrongCAS64,
    BranchAtomicStrongCAS8,
    BranchAtomicStrongCAS16,
    BranchAtomicStrongCAS32,
    BranchAtomicStrongCAS64,
    AtomicAdd8,
    AtomicAdd16,
    AtomicAdd32,
    AtomicAdd64,
    AtomicSub8,
    AtomicSub16,
    AtomicSub32,
    AtomicSub64,
    AtomicAnd8,
    AtomicAnd16,
    AtomicAnd32,
    AtomicAnd64,
    AtomicOr8,
    AtomicOr16,
    AtomicOr32,
    AtomicOr64,
    AtomicXor8,
    AtomicXor16,
    AtomicXor32,
    AtomicXor64,
    AtomicNeg8,
    AtomicNeg16,
    AtomicNeg32,
    AtomicNeg64,
    AtomicNot8,
    AtomicNot16,
    AtomicNot32,
    AtomicNot64,
    AtomicXchgAdd8,
    AtomicXchgAdd16,
    AtomicXchgAdd32,
    AtomicXchgAdd64,
    AtomicXchg8,
    AtomicXchg16,
    AtomicXchg32,
    AtomicXchg64,
    LoadLink8,
    LoadLinkAcq8,
    StoreCond8,
    StoreCondRel8,
    LoadLink16,
    LoadLinkAcq16,
    StoreCond16,
    StoreCondRel16,
    LoadLink32,
    LoadLinkAcq32,
    StoreCond32,
    StoreCondRel32,
    LoadLinkPair32,
    LoadLink64,
    LoadLinkAcq64,
    StoreCondPair32,
    StoreCond64,
    StoreCondRel64,
    Depend32,
    Depend64,
    AtomicXchgOr8,
    AtomicXchgOr16,
    AtomicXchgOr32,
    AtomicXchgOr64,
    AtomicXchgClear8,
    AtomicXchgClear16,
    AtomicXchgClear32,
    AtomicXchgClear64,
    AtomicXchgXor8,
    AtomicXchgXor16,
    AtomicXchgXor32,
    AtomicXchgXor64,
    Compare32,
    Compare64,
    Test32,
    Test64,
    CompareDouble,
    CompareFloat,
    CompareDoubleWithZero,
    CompareFloatWithZero,
    Branch8,
    Branch32,
    Branch64,
    BranchTest8,
    BranchTest32,
    BranchTest64,
    BranchTestBit64,
    BranchTestBit32,
    BranchDouble,
    BranchFloat,
    BranchDoubleWithZero,
    BranchFloatWithZero,
    BranchAdd32,
    BranchAdd64,
    BranchMul32,
    BranchMul64,
    BranchSub32,
    BranchSub64,
    BranchNeg32,
    BranchNeg64,
    MoveConditionally32,
    MoveConditionally64,
    MoveConditionallyTest32,
    MoveConditionallyTest64,
    MoveConditionallyDouble,
    MoveConditionallyDoubleWithZero,
    MoveConditionallyFloat,
    MoveConditionallyFloatWithZero,
    MoveDoubleConditionally32,
    MoveDoubleConditionally64,
    MoveDoubleConditionallyTest32,
    MoveDoubleConditionallyTest64,
    MoveDoubleConditionallyDouble,
    MoveDoubleConditionallyDoubleWithZero,
    MoveDoubleConditionallyFloat,
    MoveDoubleConditionallyFloatWithZero,
    MemoryFence,
    StoreFence,
    LoadFence,
    Jump,
    RetVoid,
    Ret32,
    Ret64,
    RetFloat,
    RetDouble,
    VectorReplaceLaneInt64,
    VectorReplaceLaneInt32,
    VectorReplaceLaneInt16,
    VectorReplaceLaneInt8,
    VectorReplaceLaneFloat64,
    VectorReplaceLaneFloat32,
    VectorExtractLaneInt64,
    VectorExtractLaneInt32,
    VectorExtractLaneSignedInt16,
    VectorExtractLaneUnsignedInt16,
    VectorExtractLaneSignedInt8,
    VectorExtractLaneUnsignedInt8,
    VectorExtractLaneFloat64,
    VectorExtractLaneFloat32,
    VectorSplatInt8,
    VectorSplatInt16,
    VectorSplatInt32,
    VectorSplatInt64,
    VectorSplatFloat32,
    VectorSplatFloat64,
    CompareFloatingPointVectorUnordered,
    CompareFloatingPointVector,
    CompareIntegerVector,
    CompareIntegerVectorWithZero,
    VectorUnsignedMax,
    VectorUnsignedMin,
    VectorAdd,
    VectorSub,
    VectorAddSat,
    VectorSubSat,
    VectorMul,
    VectorMulByElementFloat32,
    VectorMulByElementFloat64,
    VectorDiv,
    VectorMin,
    VectorMax,
    VectorPmin,
    VectorPmax,
    VectorNarrow,
    VectorBitwiseSelect,
    VectorNot,
    VectorAnd,
    VectorAndnot,
    VectorOr,
    VectorXor,
    MoveZeroToVector,
    VectorUshl,
    VectorSshr,
    VectorUshr,
    VectorSshl,
    VectorUshl8,
    VectorUshr8,
    VectorSshr8,
    VectorHorizontalAdd,
    VectorZipUpper,
    VectorUnzipEven,
    VectorExtractPair,
    VectorAbs,
    VectorAbsInt64,
    VectorNeg,
    VectorPopcnt,
    VectorCeil,
    VectorFloor,
    VectorTrunc,
    VectorTruncSat,
    VectorTruncSatUnsignedFloat32,
    VectorTruncSatSignedFloat64,
    VectorTruncSatUnsignedFloat64,
    VectorConvert,
    VectorConvertUnsigned,
    VectorConvertLow,
    VectorConvertLowSignedInt32,
    VectorConvertLowUnsignedInt32,
    VectorNearest,
    VectorSqrt,
    VectorExtendLow,
    VectorExtendHigh,
    VectorPromote,
    VectorDemote,
    VectorLoad8Splat,
    VectorLoad16Splat,
    VectorLoad32Splat,
    VectorLoad64Splat,
    VectorLoad8Lane,
    VectorLoad16Lane,
    VectorLoad32Lane,
    VectorLoad64Lane,
    VectorStore8Lane,
    VectorStore16Lane,
    VectorStore32Lane,
    VectorStore64Lane,
    VectorAnyTrue,
    VectorAllTrue,
    VectorBitmask,
    VectorExtaddPairwise,
    VectorExtaddPairwiseUnsignedInt16,
    VectorAddPairwise,
    VectorAvgRound,
    VectorMulSat,
    VectorDotProduct,
    VectorSwizzle,
    VectorSwizzle2,
    VectorFusedMulAdd,
    VectorFusedNegMulAdd,
    VectorDupElementInt8,
    VectorDupElementInt16,
    VectorDupElementInt32,
    VectorDupElementInt64,
    VectorDupElementFloat32,
    VectorDupElementFloat64,
    Oops,
    EntrySwitch,
    Shuffle,
    Patch,
    CCall,
    ColdCCall,
    WasmBoundsCheck,
};
static const unsigned numOpcodes = 452;
} } } // namespace JSC::B3::Air
namespace WTF {
class PrintStream;
JS_EXPORT_PRIVATE void printInternal(PrintStream&, JSC::B3::Air::Opcode);
} // namespace WTF
#pragma pop_macro("RotateLeft32")
#pragma pop_macro("RotateLeft64")
#pragma pop_macro("RotateRight32")
#pragma pop_macro("RotateRight64")
#pragma pop_macro("StoreFence")
#pragma pop_macro("LoadFence")
#pragma pop_macro("MemoryFence")
#endif // ENABLE(B3_JIT)
#endif // AirOpcode_h
