1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2014 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_INSTRUCTION_CODES_H_
6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define V8_COMPILER_INSTRUCTION_CODES_H_
7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
8958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include <iosfwd>
9958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#if V8_TARGET_ARCH_ARM
11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/arm/instruction-codes-arm.h"
12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_ARM64
13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/arm64/instruction-codes-arm64.h"
14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_IA32
15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/ia32/instruction-codes-ia32.h"
16958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#elif V8_TARGET_ARCH_MIPS
17958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/compiler/mips/instruction-codes-mips.h"
18958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#elif V8_TARGET_ARCH_MIPS64
19958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/compiler/mips64/instruction-codes-mips64.h"
20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#elif V8_TARGET_ARCH_X64
21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/compiler/x64/instruction-codes-x64.h"
22014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#elif V8_TARGET_ARCH_PPC
23014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/compiler/ppc/instruction-codes-ppc.h"
241b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#elif V8_TARGET_ARCH_S390
251b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#include "src/compiler/s390/instruction-codes-s390.h"
26014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#elif V8_TARGET_ARCH_X87
27014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/compiler/x87/instruction-codes-x87.h"
28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#else
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define TARGET_ARCH_OPCODE_LIST(V)
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define TARGET_ADDRESSING_MODE_LIST(V)
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif
32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/utils.h"
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 {
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal {
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace compiler {
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
38014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch// Modes for ArchStoreWithWriteBarrier below.
39014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochenum class RecordWriteMode { kValueIsMap, kValueIsPointer, kValueIsAny };
40014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
41014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Target-specific opcodes that specify which assembly sequence to emit.
43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Most opcodes specify a single instruction.
441b268ca467c924004286c97bac133db489cf43d0Ben Murdoch#define COMMON_ARCH_OPCODE_LIST(V)        \
451b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchCallCodeObject)                   \
461b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTailCallCodeObjectFromJSFunction) \
471b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTailCallCodeObject)               \
481b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchCallJSFunction)                   \
491b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTailCallJSFunctionFromJSFunction) \
501b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTailCallJSFunction)               \
51537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(ArchTailCallAddress)                  \
521b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchPrepareCallCFunction)             \
531b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchCallCFunction)                    \
541b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchPrepareTailCall)                  \
551b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchJmp)                              \
561b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchLookupSwitch)                     \
571b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTableSwitch)                      \
581b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchNop)                              \
5921efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(ArchDebugBreak)                       \
6021efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(ArchComment)                          \
611b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchThrowTerminator)                  \
621b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchDeoptimize)                       \
631b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchRet)                              \
641b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchStackPointer)                     \
651b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchFramePointer)                     \
661b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchParentFramePointer)               \
671b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchTruncateDoubleToI)                \
681b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(ArchStoreWithWriteBarrier)            \
691b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadInt8)                      \
701b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadUint8)                     \
711b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadInt16)                     \
721b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadUint16)                    \
731b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadWord32)                    \
741b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadWord64)                    \
751b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadFloat32)                   \
761b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedLoadFloat64)                   \
771b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreWord8)                    \
781b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreWord16)                   \
791b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreWord32)                   \
801b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreWord64)                   \
811b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreFloat32)                  \
821b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  V(CheckedStoreFloat64)                  \
83537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(ArchStackSlot)                        \
84537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicLoadInt8)                       \
85537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicLoadUint8)                      \
86537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicLoadInt16)                      \
87537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicLoadUint16)                     \
88537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicLoadWord32)                     \
89537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicStoreWord8)                     \
90537ba893e2530051ec7f296e769fdd37bb4ae4a0Ben Murdoch  V(AtomicStoreWord16)                    \
9121efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(AtomicStoreWord32)                    \
9221efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Atan)                   \
9321efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Atan2)                  \
9421efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Atanh)                  \
9521efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Cbrt)                   \
9621efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Cos)                    \
9721efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Exp)                    \
9821efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Expm1)                  \
9921efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Log)                    \
10021efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Log1p)                  \
10121efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Log10)                  \
10221efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Log2)                   \
10321efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Sin)                    \
10421efce637eb329c94f1323b6a2334a1c977e1a9dBen Murdoch  V(Ieee754Float64Tan)
105014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
106014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#define ARCH_OPCODE_LIST(V)  \
107014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  COMMON_ARCH_OPCODE_LIST(V) \
108b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  TARGET_ARCH_OPCODE_LIST(V)
109b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
110b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum ArchOpcode {
111b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define DECLARE_ARCH_OPCODE(Name) k##Name,
112b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  ARCH_OPCODE_LIST(DECLARE_ARCH_OPCODE)
113b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef DECLARE_ARCH_OPCODE
114b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COUNT_ARCH_OPCODE(Name) +1
115b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kLastArchOpcode = -1 ARCH_OPCODE_LIST(COUNT_ARCH_OPCODE)
116b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef COUNT_ARCH_OPCODE
117b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch};
118b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
119958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const ArchOpcode& ao);
120b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
121b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Addressing modes represent the "shape" of inputs to an instruction.
122b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Many instructions support multiple addressing modes. Addressing modes
123b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// are encoded into the InstructionCode of the instruction and tell the
124b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// code generator after register allocation which assembler method to call.
125b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define ADDRESSING_MODE_LIST(V) \
126b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  V(None)                       \
127b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  TARGET_ADDRESSING_MODE_LIST(V)
128b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
129b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum AddressingMode {
130b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define DECLARE_ADDRESSING_MODE(Name) kMode_##Name,
131b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  ADDRESSING_MODE_LIST(DECLARE_ADDRESSING_MODE)
132b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef DECLARE_ADDRESSING_MODE
133b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#define COUNT_ADDRESSING_MODE(Name) +1
134b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kLastAddressingMode = -1 ADDRESSING_MODE_LIST(COUNT_ADDRESSING_MODE)
135b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#undef COUNT_ADDRESSING_MODE
136b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch};
137b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
138958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const AddressingMode& am);
139b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
140b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The mode of the flags continuation (see below).
1411b268ca467c924004286c97bac133db489cf43d0Ben Murdochenum FlagsMode {
1421b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  kFlags_none = 0,
1431b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  kFlags_branch = 1,
1441b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  kFlags_deoptimize = 2,
1451b268ca467c924004286c97bac133db489cf43d0Ben Murdoch  kFlags_set = 3
1461b268ca467c924004286c97bac133db489cf43d0Ben Murdoch};
147b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
148958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const FlagsMode& fm);
149b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
150b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The condition of flags continuation (see below).
151b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochenum FlagsCondition {
152b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kEqual,
153b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kNotEqual,
154b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kSignedLessThan,
155b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kSignedGreaterThanOrEqual,
156b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kSignedLessThanOrEqual,
157b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kSignedGreaterThan,
158b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnsignedLessThan,
159b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnsignedGreaterThanOrEqual,
160b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnsignedLessThanOrEqual,
161b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnsignedGreaterThan,
162014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatLessThanOrUnordered,
163014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatGreaterThanOrEqual,
164014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatLessThanOrEqual,
165014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatGreaterThanOrUnordered,
166014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatLessThan,
167014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatGreaterThanOrEqualOrUnordered,
168014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatLessThanOrEqualOrUnordered,
169014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch  kFloatGreaterThan,
170b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnorderedEqual,
171b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kUnorderedNotEqual,
172b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kOverflow,
173b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  kNotOverflow
174b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch};
175b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
176958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierinline FlagsCondition NegateFlagsCondition(FlagsCondition condition) {
177958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier  return static_cast<FlagsCondition>(condition ^ 1);
178958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier}
179958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier
180014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben MurdochFlagsCondition CommuteFlagsCondition(FlagsCondition condition);
181014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch
182958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernierstd::ostream& operator<<(std::ostream& os, const FlagsCondition& fc);
183b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
184b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// The InstructionCode is an opaque, target-specific integer that encodes
185b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// what code to emit for an instruction in the code generator. It is not
186b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// interesting to the register allocator, as the inputs and flags on the
187b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// instructions specify everything of interest.
188b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochtypedef int32_t InstructionCode;
189b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
190b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Helpers for encoding / decoding InstructionCode into the fields needed
191b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// for code generation. We encode the instruction, addressing mode, and flags
192b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// continuation into a single InstructionCode which is stored as part of
193b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// the instruction.
194014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<ArchOpcode, 0, 8> ArchOpcodeField;
195014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<AddressingMode, 8, 5> AddressingModeField;
196014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<FlagsMode, 13, 2> FlagsModeField;
197014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<FlagsCondition, 15, 5> FlagsConditionField;
198014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdochtypedef BitField<int, 20, 12> MiscField;
199b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
200b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace compiler
201b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace internal
202b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch}  // namespace v8
203b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
204b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#endif  // V8_COMPILER_INSTRUCTION_CODES_H_
205