V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
instruction-codes-arm.h
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_BACKEND_ARM_INSTRUCTION_CODES_ARM_H_
6
#define V8_COMPILER_BACKEND_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(ArmClz) \
19
V(ArmCmp) \
20
V(ArmCmn) \
21
V(ArmTst) \
22
V(ArmTeq) \
23
V(ArmOrr) \
24
V(ArmEor) \
25
V(ArmSub) \
26
V(ArmRsb) \
27
V(ArmMul) \
28
V(ArmMla) \
29
V(ArmMls) \
30
V(ArmSmull) \
31
V(ArmSmmul) \
32
V(ArmSmmla) \
33
V(ArmUmull) \
34
V(ArmSdiv) \
35
V(ArmUdiv) \
36
V(ArmMov) \
37
V(ArmMvn) \
38
V(ArmBfc) \
39
V(ArmUbfx) \
40
V(ArmSbfx) \
41
V(ArmSxtb) \
42
V(ArmSxth) \
43
V(ArmSxtab) \
44
V(ArmSxtah) \
45
V(ArmUxtb) \
46
V(ArmUxth) \
47
V(ArmUxtab) \
48
V(ArmRbit) \
49
V(ArmRev) \
50
V(ArmUxtah) \
51
V(ArmAddPair) \
52
V(ArmSubPair) \
53
V(ArmMulPair) \
54
V(ArmLslPair) \
55
V(ArmLsrPair) \
56
V(ArmAsrPair) \
57
V(ArmVcmpF32) \
58
V(ArmVaddF32) \
59
V(ArmVsubF32) \
60
V(ArmVmulF32) \
61
V(ArmVmlaF32) \
62
V(ArmVmlsF32) \
63
V(ArmVdivF32) \
64
V(ArmVabsF32) \
65
V(ArmVnegF32) \
66
V(ArmVsqrtF32) \
67
V(ArmVcmpF64) \
68
V(ArmVaddF64) \
69
V(ArmVsubF64) \
70
V(ArmVmulF64) \
71
V(ArmVmlaF64) \
72
V(ArmVmlsF64) \
73
V(ArmVdivF64) \
74
V(ArmVmodF64) \
75
V(ArmVabsF64) \
76
V(ArmVnegF64) \
77
V(ArmVsqrtF64) \
78
V(ArmVrintmF32) \
79
V(ArmVrintmF64) \
80
V(ArmVrintpF32) \
81
V(ArmVrintpF64) \
82
V(ArmVrintzF32) \
83
V(ArmVrintzF64) \
84
V(ArmVrintaF64) \
85
V(ArmVrintnF32) \
86
V(ArmVrintnF64) \
87
V(ArmVcvtF32F64) \
88
V(ArmVcvtF64F32) \
89
V(ArmVcvtF32S32) \
90
V(ArmVcvtF32U32) \
91
V(ArmVcvtF64S32) \
92
V(ArmVcvtF64U32) \
93
V(ArmVcvtS32F32) \
94
V(ArmVcvtU32F32) \
95
V(ArmVcvtS32F64) \
96
V(ArmVcvtU32F64) \
97
V(ArmVmovU32F32) \
98
V(ArmVmovF32U32) \
99
V(ArmVmovLowU32F64) \
100
V(ArmVmovLowF64U32) \
101
V(ArmVmovHighU32F64) \
102
V(ArmVmovHighF64U32) \
103
V(ArmVmovF64U32U32) \
104
V(ArmVmovU32U32F64) \
105
V(ArmVldrF32) \
106
V(ArmVstrF32) \
107
V(ArmVldrF64) \
108
V(ArmVld1F64) \
109
V(ArmVstrF64) \
110
V(ArmVst1F64) \
111
V(ArmVld1S128) \
112
V(ArmVst1S128) \
113
V(ArmFloat32Max) \
114
V(ArmFloat64Max) \
115
V(ArmFloat32Min) \
116
V(ArmFloat64Min) \
117
V(ArmFloat64SilenceNaN) \
118
V(ArmLdrb) \
119
V(ArmLdrsb) \
120
V(ArmStrb) \
121
V(ArmLdrh) \
122
V(ArmLdrsh) \
123
V(ArmStrh) \
124
V(ArmLdr) \
125
V(ArmStr) \
126
V(ArmPush) \
127
V(ArmPoke) \
128
V(ArmPeek) \
129
V(ArmDsbIsb) \
130
V(ArmF32x4Splat) \
131
V(ArmF32x4ExtractLane) \
132
V(ArmF32x4ReplaceLane) \
133
V(ArmF32x4SConvertI32x4) \
134
V(ArmF32x4UConvertI32x4) \
135
V(ArmF32x4Abs) \
136
V(ArmF32x4Neg) \
137
V(ArmF32x4RecipApprox) \
138
V(ArmF32x4RecipSqrtApprox) \
139
V(ArmF32x4Add) \
140
V(ArmF32x4AddHoriz) \
141
V(ArmF32x4Sub) \
142
V(ArmF32x4Mul) \
143
V(ArmF32x4Min) \
144
V(ArmF32x4Max) \
145
V(ArmF32x4Eq) \
146
V(ArmF32x4Ne) \
147
V(ArmF32x4Lt) \
148
V(ArmF32x4Le) \
149
V(ArmI32x4Splat) \
150
V(ArmI32x4ExtractLane) \
151
V(ArmI32x4ReplaceLane) \
152
V(ArmI32x4SConvertF32x4) \
153
V(ArmI32x4SConvertI16x8Low) \
154
V(ArmI32x4SConvertI16x8High) \
155
V(ArmI32x4Neg) \
156
V(ArmI32x4Shl) \
157
V(ArmI32x4ShrS) \
158
V(ArmI32x4Add) \
159
V(ArmI32x4AddHoriz) \
160
V(ArmI32x4Sub) \
161
V(ArmI32x4Mul) \
162
V(ArmI32x4MinS) \
163
V(ArmI32x4MaxS) \
164
V(ArmI32x4Eq) \
165
V(ArmI32x4Ne) \
166
V(ArmI32x4GtS) \
167
V(ArmI32x4GeS) \
168
V(ArmI32x4UConvertF32x4) \
169
V(ArmI32x4UConvertI16x8Low) \
170
V(ArmI32x4UConvertI16x8High) \
171
V(ArmI32x4ShrU) \
172
V(ArmI32x4MinU) \
173
V(ArmI32x4MaxU) \
174
V(ArmI32x4GtU) \
175
V(ArmI32x4GeU) \
176
V(ArmI16x8Splat) \
177
V(ArmI16x8ExtractLane) \
178
V(ArmI16x8ReplaceLane) \
179
V(ArmI16x8SConvertI8x16Low) \
180
V(ArmI16x8SConvertI8x16High) \
181
V(ArmI16x8Neg) \
182
V(ArmI16x8Shl) \
183
V(ArmI16x8ShrS) \
184
V(ArmI16x8SConvertI32x4) \
185
V(ArmI16x8Add) \
186
V(ArmI16x8AddSaturateS) \
187
V(ArmI16x8AddHoriz) \
188
V(ArmI16x8Sub) \
189
V(ArmI16x8SubSaturateS) \
190
V(ArmI16x8Mul) \
191
V(ArmI16x8MinS) \
192
V(ArmI16x8MaxS) \
193
V(ArmI16x8Eq) \
194
V(ArmI16x8Ne) \
195
V(ArmI16x8GtS) \
196
V(ArmI16x8GeS) \
197
V(ArmI16x8UConvertI8x16Low) \
198
V(ArmI16x8UConvertI8x16High) \
199
V(ArmI16x8ShrU) \
200
V(ArmI16x8UConvertI32x4) \
201
V(ArmI16x8AddSaturateU) \
202
V(ArmI16x8SubSaturateU) \
203
V(ArmI16x8MinU) \
204
V(ArmI16x8MaxU) \
205
V(ArmI16x8GtU) \
206
V(ArmI16x8GeU) \
207
V(ArmI8x16Splat) \
208
V(ArmI8x16ExtractLane) \
209
V(ArmI8x16ReplaceLane) \
210
V(ArmI8x16Neg) \
211
V(ArmI8x16Shl) \
212
V(ArmI8x16ShrS) \
213
V(ArmI8x16SConvertI16x8) \
214
V(ArmI8x16Add) \
215
V(ArmI8x16AddSaturateS) \
216
V(ArmI8x16Sub) \
217
V(ArmI8x16SubSaturateS) \
218
V(ArmI8x16Mul) \
219
V(ArmI8x16MinS) \
220
V(ArmI8x16MaxS) \
221
V(ArmI8x16Eq) \
222
V(ArmI8x16Ne) \
223
V(ArmI8x16GtS) \
224
V(ArmI8x16GeS) \
225
V(ArmI8x16ShrU) \
226
V(ArmI8x16UConvertI16x8) \
227
V(ArmI8x16AddSaturateU) \
228
V(ArmI8x16SubSaturateU) \
229
V(ArmI8x16MinU) \
230
V(ArmI8x16MaxU) \
231
V(ArmI8x16GtU) \
232
V(ArmI8x16GeU) \
233
V(ArmS128Zero) \
234
V(ArmS128Dup) \
235
V(ArmS128And) \
236
V(ArmS128Or) \
237
V(ArmS128Xor) \
238
V(ArmS128Not) \
239
V(ArmS128Select) \
240
V(ArmS32x4ZipLeft) \
241
V(ArmS32x4ZipRight) \
242
V(ArmS32x4UnzipLeft) \
243
V(ArmS32x4UnzipRight) \
244
V(ArmS32x4TransposeLeft) \
245
V(ArmS32x4TransposeRight) \
246
V(ArmS32x4Shuffle) \
247
V(ArmS16x8ZipLeft) \
248
V(ArmS16x8ZipRight) \
249
V(ArmS16x8UnzipLeft) \
250
V(ArmS16x8UnzipRight) \
251
V(ArmS16x8TransposeLeft) \
252
V(ArmS16x8TransposeRight) \
253
V(ArmS8x16ZipLeft) \
254
V(ArmS8x16ZipRight) \
255
V(ArmS8x16UnzipLeft) \
256
V(ArmS8x16UnzipRight) \
257
V(ArmS8x16TransposeLeft) \
258
V(ArmS8x16TransposeRight) \
259
V(ArmS8x16Concat) \
260
V(ArmS8x16Shuffle) \
261
V(ArmS32x2Reverse) \
262
V(ArmS16x4Reverse) \
263
V(ArmS16x2Reverse) \
264
V(ArmS8x8Reverse) \
265
V(ArmS8x4Reverse) \
266
V(ArmS8x2Reverse) \
267
V(ArmS1x4AnyTrue) \
268
V(ArmS1x4AllTrue) \
269
V(ArmS1x8AnyTrue) \
270
V(ArmS1x8AllTrue) \
271
V(ArmS1x16AnyTrue) \
272
V(ArmS1x16AllTrue) \
273
V(ArmWord32AtomicPairLoad) \
274
V(ArmWord32AtomicPairStore) \
275
V(ArmWord32AtomicPairAdd) \
276
V(ArmWord32AtomicPairSub) \
277
V(ArmWord32AtomicPairAnd) \
278
V(ArmWord32AtomicPairOr) \
279
V(ArmWord32AtomicPairXor) \
280
V(ArmWord32AtomicPairExchange) \
281
V(ArmWord32AtomicPairCompareExchange)
282
283
// Addressing modes represent the "shape" of inputs to an instruction.
284
// Many instructions support multiple addressing modes. Addressing modes
285
// are encoded into the InstructionCode of the instruction and tell the
286
// code generator after register allocation which assembler method to call.
287
#define TARGET_ADDRESSING_MODE_LIST(V) \
288
V(Offset_RI)
/* [%r0 + K] */
\
289
V(Offset_RR)
/* [%r0 + %r1] */
\
290
V(Operand2_I)
/* K */
\
291
V(Operand2_R)
/* %r0 */
\
292
V(Operand2_R_ASR_I)
/* %r0 ASR K */
\
293
V(Operand2_R_LSL_I)
/* %r0 LSL K */
\
294
V(Operand2_R_LSR_I)
/* %r0 LSR K */
\
295
V(Operand2_R_ROR_I)
/* %r0 ROR K */
\
296
V(Operand2_R_ASR_R)
/* %r0 ASR %r1 */
\
297
V(Operand2_R_LSL_R)
/* %r0 LSL %r1 */
\
298
V(Operand2_R_LSR_R)
/* %r0 LSR %r1 */
\
299
V(Operand2_R_ROR_R)
/* %r0 ROR %r1 */
300
301
}
// namespace compiler
302
}
// namespace internal
303
}
// namespace v8
304
305
#endif // V8_COMPILER_BACKEND_ARM_INSTRUCTION_CODES_ARM_H_
v8
Definition:
libplatform.h:13
v8
src
compiler
backend
arm
instruction-codes-arm.h
Generated on Tue Dec 25 2018 14:38:26 by
1.8.14