V8 Project
instruction-codes-arm.h
Go to the documentation of this file.
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_COMPILER_ARM_INSTRUCTION_CODES_ARM_H_
6 #define V8_COMPILER_ARM_INSTRUCTION_CODES_ARM_H_
7 
8 namespace v8 {
9 namespace internal {
10 namespace compiler {
11 
12 // ARM-specific opcodes that specify which assembly sequence to emit.
13 // Most opcodes specify a single instruction.
14 #define TARGET_ARCH_OPCODE_LIST(V) \
15  V(ArmAdd) \
16  V(ArmAnd) \
17  V(ArmBic) \
18  V(ArmCmp) \
19  V(ArmCmn) \
20  V(ArmTst) \
21  V(ArmTeq) \
22  V(ArmOrr) \
23  V(ArmEor) \
24  V(ArmSub) \
25  V(ArmRsb) \
26  V(ArmMul) \
27  V(ArmMla) \
28  V(ArmMls) \
29  V(ArmSdiv) \
30  V(ArmUdiv) \
31  V(ArmMov) \
32  V(ArmMvn) \
33  V(ArmBfc) \
34  V(ArmUbfx) \
35  V(ArmVcmpF64) \
36  V(ArmVaddF64) \
37  V(ArmVsubF64) \
38  V(ArmVmulF64) \
39  V(ArmVmlaF64) \
40  V(ArmVmlsF64) \
41  V(ArmVdivF64) \
42  V(ArmVmodF64) \
43  V(ArmVnegF64) \
44  V(ArmVsqrtF64) \
45  V(ArmVcvtF32F64) \
46  V(ArmVcvtF64F32) \
47  V(ArmVcvtF64S32) \
48  V(ArmVcvtF64U32) \
49  V(ArmVcvtS32F64) \
50  V(ArmVcvtU32F64) \
51  V(ArmVldrF32) \
52  V(ArmVstrF32) \
53  V(ArmVldrF64) \
54  V(ArmVstrF64) \
55  V(ArmLdrb) \
56  V(ArmLdrsb) \
57  V(ArmStrb) \
58  V(ArmLdrh) \
59  V(ArmLdrsh) \
60  V(ArmStrh) \
61  V(ArmLdr) \
62  V(ArmStr) \
63  V(ArmPush) \
64  V(ArmStoreWriteBarrier)
65 
66 
67 // Addressing modes represent the "shape" of inputs to an instruction.
68 // Many instructions support multiple addressing modes. Addressing modes
69 // are encoded into the InstructionCode of the instruction and tell the
70 // code generator after register allocation which assembler method to call.
71 #define TARGET_ADDRESSING_MODE_LIST(V) \
72  V(Offset_RI) /* [%r0 + K] */ \
73  V(Offset_RR) /* [%r0 + %r1] */ \
74  V(Operand2_I) /* K */ \
75  V(Operand2_R) /* %r0 */ \
76  V(Operand2_R_ASR_I) /* %r0 ASR K */ \
77  V(Operand2_R_LSL_I) /* %r0 LSL K */ \
78  V(Operand2_R_LSR_I) /* %r0 LSR K */ \
79  V(Operand2_R_ROR_I) /* %r0 ROR K */ \
80  V(Operand2_R_ASR_R) /* %r0 ASR %r1 */ \
81  V(Operand2_R_LSL_R) /* %r0 LSL %r1 */ \
82  V(Operand2_R_LSR_R) /* %r0 LSR %r1 */ \
83  V(Operand2_R_ROR_R) /* %r0 ROR %r1 */
84 
85 } // namespace compiler
86 } // namespace internal
87 } // namespace v8
88 
89 #endif // V8_COMPILER_ARM_INSTRUCTION_CODES_ARM_H_
Debugger support for the V8 JavaScript engine.
Definition: accessors.cc:20