V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
instruction-codes-ia32.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_IA32_INSTRUCTION_CODES_IA32_H_
6
#define V8_COMPILER_BACKEND_IA32_INSTRUCTION_CODES_IA32_H_
7
8
namespace
v8
{
9
namespace
internal {
10
namespace
compiler {
11
12
// IA32-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(IA32Add) \
16
V(IA32And) \
17
V(IA32Cmp) \
18
V(IA32Cmp16) \
19
V(IA32Cmp8) \
20
V(IA32Test) \
21
V(IA32Test16) \
22
V(IA32Test8) \
23
V(IA32Or) \
24
V(IA32Xor) \
25
V(IA32Sub) \
26
V(IA32Imul) \
27
V(IA32ImulHigh) \
28
V(IA32UmulHigh) \
29
V(IA32Idiv) \
30
V(IA32Udiv) \
31
V(IA32Not) \
32
V(IA32Neg) \
33
V(IA32Shl) \
34
V(IA32Shr) \
35
V(IA32Sar) \
36
V(IA32AddPair) \
37
V(IA32SubPair) \
38
V(IA32MulPair) \
39
V(IA32ShlPair) \
40
V(IA32ShrPair) \
41
V(IA32SarPair) \
42
V(IA32Ror) \
43
V(IA32Lzcnt) \
44
V(IA32Tzcnt) \
45
V(IA32Popcnt) \
46
V(IA32Bswap) \
47
V(LFence) \
48
V(SSEFloat32Cmp) \
49
V(SSEFloat32Add) \
50
V(SSEFloat32Sub) \
51
V(SSEFloat32Mul) \
52
V(SSEFloat32Div) \
53
V(SSEFloat32Abs) \
54
V(SSEFloat32Neg) \
55
V(SSEFloat32Sqrt) \
56
V(SSEFloat32Round) \
57
V(SSEFloat64Cmp) \
58
V(SSEFloat64Add) \
59
V(SSEFloat64Sub) \
60
V(SSEFloat64Mul) \
61
V(SSEFloat64Div) \
62
V(SSEFloat64Mod) \
63
V(SSEFloat32Max) \
64
V(SSEFloat64Max) \
65
V(SSEFloat32Min) \
66
V(SSEFloat64Min) \
67
V(SSEFloat64Abs) \
68
V(SSEFloat64Neg) \
69
V(SSEFloat64Sqrt) \
70
V(SSEFloat64Round) \
71
V(SSEFloat32ToFloat64) \
72
V(SSEFloat64ToFloat32) \
73
V(SSEFloat32ToInt32) \
74
V(SSEFloat32ToUint32) \
75
V(SSEFloat64ToInt32) \
76
V(SSEFloat64ToUint32) \
77
V(SSEInt32ToFloat32) \
78
V(SSEUint32ToFloat32) \
79
V(SSEInt32ToFloat64) \
80
V(SSEUint32ToFloat64) \
81
V(SSEFloat64ExtractLowWord32) \
82
V(SSEFloat64ExtractHighWord32) \
83
V(SSEFloat64InsertLowWord32) \
84
V(SSEFloat64InsertHighWord32) \
85
V(SSEFloat64LoadLowWord32) \
86
V(SSEFloat64SilenceNaN) \
87
V(AVXFloat32Add) \
88
V(AVXFloat32Sub) \
89
V(AVXFloat32Mul) \
90
V(AVXFloat32Div) \
91
V(AVXFloat64Add) \
92
V(AVXFloat64Sub) \
93
V(AVXFloat64Mul) \
94
V(AVXFloat64Div) \
95
V(AVXFloat64Abs) \
96
V(AVXFloat64Neg) \
97
V(AVXFloat32Abs) \
98
V(AVXFloat32Neg) \
99
V(IA32Movsxbl) \
100
V(IA32Movzxbl) \
101
V(IA32Movb) \
102
V(IA32Movsxwl) \
103
V(IA32Movzxwl) \
104
V(IA32Movw) \
105
V(IA32Movl) \
106
V(IA32Movss) \
107
V(IA32Movsd) \
108
V(IA32Movdqu) \
109
V(IA32BitcastFI) \
110
V(IA32BitcastIF) \
111
V(IA32Lea) \
112
V(IA32Push) \
113
V(IA32PushFloat32) \
114
V(IA32PushFloat64) \
115
V(IA32PushSimd128) \
116
V(IA32Poke) \
117
V(IA32Peek) \
118
V(IA32StackCheck) \
119
V(SSEF32x4Splat) \
120
V(AVXF32x4Splat) \
121
V(SSEF32x4ExtractLane) \
122
V(AVXF32x4ExtractLane) \
123
V(SSEF32x4ReplaceLane) \
124
V(AVXF32x4ReplaceLane) \
125
V(IA32F32x4SConvertI32x4) \
126
V(SSEF32x4UConvertI32x4) \
127
V(AVXF32x4UConvertI32x4) \
128
V(SSEF32x4Abs) \
129
V(AVXF32x4Abs) \
130
V(SSEF32x4Neg) \
131
V(AVXF32x4Neg) \
132
V(IA32F32x4RecipApprox) \
133
V(IA32F32x4RecipSqrtApprox) \
134
V(SSEF32x4Add) \
135
V(AVXF32x4Add) \
136
V(SSEF32x4AddHoriz) \
137
V(AVXF32x4AddHoriz) \
138
V(SSEF32x4Sub) \
139
V(AVXF32x4Sub) \
140
V(SSEF32x4Mul) \
141
V(AVXF32x4Mul) \
142
V(SSEF32x4Min) \
143
V(AVXF32x4Min) \
144
V(SSEF32x4Max) \
145
V(AVXF32x4Max) \
146
V(SSEF32x4Eq) \
147
V(AVXF32x4Eq) \
148
V(SSEF32x4Ne) \
149
V(AVXF32x4Ne) \
150
V(SSEF32x4Lt) \
151
V(AVXF32x4Lt) \
152
V(SSEF32x4Le) \
153
V(AVXF32x4Le) \
154
V(IA32I32x4Splat) \
155
V(IA32I32x4ExtractLane) \
156
V(SSEI32x4ReplaceLane) \
157
V(AVXI32x4ReplaceLane) \
158
V(SSEI32x4SConvertF32x4) \
159
V(AVXI32x4SConvertF32x4) \
160
V(IA32I32x4SConvertI16x8Low) \
161
V(IA32I32x4SConvertI16x8High) \
162
V(IA32I32x4Neg) \
163
V(SSEI32x4Shl) \
164
V(AVXI32x4Shl) \
165
V(SSEI32x4ShrS) \
166
V(AVXI32x4ShrS) \
167
V(SSEI32x4Add) \
168
V(AVXI32x4Add) \
169
V(SSEI32x4AddHoriz) \
170
V(AVXI32x4AddHoriz) \
171
V(SSEI32x4Sub) \
172
V(AVXI32x4Sub) \
173
V(SSEI32x4Mul) \
174
V(AVXI32x4Mul) \
175
V(SSEI32x4MinS) \
176
V(AVXI32x4MinS) \
177
V(SSEI32x4MaxS) \
178
V(AVXI32x4MaxS) \
179
V(SSEI32x4Eq) \
180
V(AVXI32x4Eq) \
181
V(SSEI32x4Ne) \
182
V(AVXI32x4Ne) \
183
V(SSEI32x4GtS) \
184
V(AVXI32x4GtS) \
185
V(SSEI32x4GeS) \
186
V(AVXI32x4GeS) \
187
V(SSEI32x4UConvertF32x4) \
188
V(AVXI32x4UConvertF32x4) \
189
V(IA32I32x4UConvertI16x8Low) \
190
V(IA32I32x4UConvertI16x8High) \
191
V(SSEI32x4ShrU) \
192
V(AVXI32x4ShrU) \
193
V(SSEI32x4MinU) \
194
V(AVXI32x4MinU) \
195
V(SSEI32x4MaxU) \
196
V(AVXI32x4MaxU) \
197
V(SSEI32x4GtU) \
198
V(AVXI32x4GtU) \
199
V(SSEI32x4GeU) \
200
V(AVXI32x4GeU) \
201
V(IA32I16x8Splat) \
202
V(IA32I16x8ExtractLane) \
203
V(SSEI16x8ReplaceLane) \
204
V(AVXI16x8ReplaceLane) \
205
V(IA32I16x8SConvertI8x16Low) \
206
V(IA32I16x8SConvertI8x16High) \
207
V(IA32I16x8Neg) \
208
V(SSEI16x8Shl) \
209
V(AVXI16x8Shl) \
210
V(SSEI16x8ShrS) \
211
V(AVXI16x8ShrS) \
212
V(SSEI16x8SConvertI32x4) \
213
V(AVXI16x8SConvertI32x4) \
214
V(SSEI16x8Add) \
215
V(AVXI16x8Add) \
216
V(SSEI16x8AddSaturateS) \
217
V(AVXI16x8AddSaturateS) \
218
V(SSEI16x8AddHoriz) \
219
V(AVXI16x8AddHoriz) \
220
V(SSEI16x8Sub) \
221
V(AVXI16x8Sub) \
222
V(SSEI16x8SubSaturateS) \
223
V(AVXI16x8SubSaturateS) \
224
V(SSEI16x8Mul) \
225
V(AVXI16x8Mul) \
226
V(SSEI16x8MinS) \
227
V(AVXI16x8MinS) \
228
V(SSEI16x8MaxS) \
229
V(AVXI16x8MaxS) \
230
V(SSEI16x8Eq) \
231
V(AVXI16x8Eq) \
232
V(SSEI16x8Ne) \
233
V(AVXI16x8Ne) \
234
V(SSEI16x8GtS) \
235
V(AVXI16x8GtS) \
236
V(SSEI16x8GeS) \
237
V(AVXI16x8GeS) \
238
V(IA32I16x8UConvertI8x16Low) \
239
V(IA32I16x8UConvertI8x16High) \
240
V(SSEI16x8ShrU) \
241
V(AVXI16x8ShrU) \
242
V(SSEI16x8UConvertI32x4) \
243
V(AVXI16x8UConvertI32x4) \
244
V(SSEI16x8AddSaturateU) \
245
V(AVXI16x8AddSaturateU) \
246
V(SSEI16x8SubSaturateU) \
247
V(AVXI16x8SubSaturateU) \
248
V(SSEI16x8MinU) \
249
V(AVXI16x8MinU) \
250
V(SSEI16x8MaxU) \
251
V(AVXI16x8MaxU) \
252
V(SSEI16x8GtU) \
253
V(AVXI16x8GtU) \
254
V(SSEI16x8GeU) \
255
V(AVXI16x8GeU) \
256
V(IA32I8x16Splat) \
257
V(IA32I8x16ExtractLane) \
258
V(SSEI8x16ReplaceLane) \
259
V(AVXI8x16ReplaceLane) \
260
V(SSEI8x16SConvertI16x8) \
261
V(AVXI8x16SConvertI16x8) \
262
V(IA32I8x16Neg) \
263
V(SSEI8x16Shl) \
264
V(AVXI8x16Shl) \
265
V(IA32I8x16ShrS) \
266
V(SSEI8x16Add) \
267
V(AVXI8x16Add) \
268
V(SSEI8x16AddSaturateS) \
269
V(AVXI8x16AddSaturateS) \
270
V(SSEI8x16Sub) \
271
V(AVXI8x16Sub) \
272
V(SSEI8x16SubSaturateS) \
273
V(AVXI8x16SubSaturateS) \
274
V(SSEI8x16Mul) \
275
V(AVXI8x16Mul) \
276
V(SSEI8x16MinS) \
277
V(AVXI8x16MinS) \
278
V(SSEI8x16MaxS) \
279
V(AVXI8x16MaxS) \
280
V(SSEI8x16Eq) \
281
V(AVXI8x16Eq) \
282
V(SSEI8x16Ne) \
283
V(AVXI8x16Ne) \
284
V(SSEI8x16GtS) \
285
V(AVXI8x16GtS) \
286
V(SSEI8x16GeS) \
287
V(AVXI8x16GeS) \
288
V(SSEI8x16UConvertI16x8) \
289
V(AVXI8x16UConvertI16x8) \
290
V(SSEI8x16AddSaturateU) \
291
V(AVXI8x16AddSaturateU) \
292
V(SSEI8x16SubSaturateU) \
293
V(AVXI8x16SubSaturateU) \
294
V(IA32I8x16ShrU) \
295
V(SSEI8x16MinU) \
296
V(AVXI8x16MinU) \
297
V(SSEI8x16MaxU) \
298
V(AVXI8x16MaxU) \
299
V(SSEI8x16GtU) \
300
V(AVXI8x16GtU) \
301
V(SSEI8x16GeU) \
302
V(AVXI8x16GeU) \
303
V(IA32S128Zero) \
304
V(SSES128Not) \
305
V(AVXS128Not) \
306
V(SSES128And) \
307
V(AVXS128And) \
308
V(SSES128Or) \
309
V(AVXS128Or) \
310
V(SSES128Xor) \
311
V(AVXS128Xor) \
312
V(SSES128Select) \
313
V(AVXS128Select) \
314
V(IA32S8x16Shuffle) \
315
V(IA32S32x4Swizzle) \
316
V(IA32S32x4Shuffle) \
317
V(IA32S16x8Blend) \
318
V(IA32S16x8HalfShuffle1) \
319
V(IA32S16x8HalfShuffle2) \
320
V(IA32S8x16Alignr) \
321
V(IA32S16x8Dup) \
322
V(IA32S8x16Dup) \
323
V(SSES16x8UnzipHigh) \
324
V(AVXS16x8UnzipHigh) \
325
V(SSES16x8UnzipLow) \
326
V(AVXS16x8UnzipLow) \
327
V(SSES8x16UnzipHigh) \
328
V(AVXS8x16UnzipHigh) \
329
V(SSES8x16UnzipLow) \
330
V(AVXS8x16UnzipLow) \
331
V(IA32S64x2UnpackHigh) \
332
V(IA32S32x4UnpackHigh) \
333
V(IA32S16x8UnpackHigh) \
334
V(IA32S8x16UnpackHigh) \
335
V(IA32S64x2UnpackLow) \
336
V(IA32S32x4UnpackLow) \
337
V(IA32S16x8UnpackLow) \
338
V(IA32S8x16UnpackLow) \
339
V(SSES8x16TransposeLow) \
340
V(AVXS8x16TransposeLow) \
341
V(SSES8x16TransposeHigh) \
342
V(AVXS8x16TransposeHigh) \
343
V(SSES8x8Reverse) \
344
V(AVXS8x8Reverse) \
345
V(SSES8x4Reverse) \
346
V(AVXS8x4Reverse) \
347
V(SSES8x2Reverse) \
348
V(AVXS8x2Reverse) \
349
V(IA32S1x4AnyTrue) \
350
V(IA32S1x4AllTrue) \
351
V(IA32S1x8AnyTrue) \
352
V(IA32S1x8AllTrue) \
353
V(IA32S1x16AnyTrue) \
354
V(IA32S1x16AllTrue) \
355
V(IA32Word32AtomicPairLoad) \
356
V(IA32Word32AtomicPairStore) \
357
V(IA32Word32AtomicPairAdd) \
358
V(IA32Word32AtomicPairSub) \
359
V(IA32Word32AtomicPairAnd) \
360
V(IA32Word32AtomicPairOr) \
361
V(IA32Word32AtomicPairXor) \
362
V(IA32Word32AtomicPairExchange) \
363
V(IA32Word32AtomicPairCompareExchange)
364
365
// Addressing modes represent the "shape" of inputs to an instruction.
366
// Many instructions support multiple addressing modes. Addressing modes
367
// are encoded into the InstructionCode of the instruction and tell the
368
// code generator after register allocation which assembler method to call.
369
//
370
// We use the following local notation for addressing modes:
371
//
372
// M = memory operand
373
// R = base register
374
// N = index register * N for N in {1, 2, 4, 8}
375
// I = immediate displacement (int32_t)
376
377
#define TARGET_ADDRESSING_MODE_LIST(V) \
378
V(MR)
/* [%r1 ] */
\
379
V(MRI)
/* [%r1 + K] */
\
380
V(MR1)
/* [%r1 + %r2*1 ] */
\
381
V(MR2)
/* [%r1 + %r2*2 ] */
\
382
V(MR4)
/* [%r1 + %r2*4 ] */
\
383
V(MR8)
/* [%r1 + %r2*8 ] */
\
384
V(MR1I)
/* [%r1 + %r2*1 + K] */
\
385
V(MR2I)
/* [%r1 + %r2*2 + K] */
\
386
V(MR4I)
/* [%r1 + %r2*3 + K] */
\
387
V(MR8I)
/* [%r1 + %r2*4 + K] */
\
388
V(M1)
/* [ %r2*1 ] */
\
389
V(M2)
/* [ %r2*2 ] */
\
390
V(M4)
/* [ %r2*4 ] */
\
391
V(M8)
/* [ %r2*8 ] */
\
392
V(M1I)
/* [ %r2*1 + K] */
\
393
V(M2I)
/* [ %r2*2 + K] */
\
394
V(M4I)
/* [ %r2*4 + K] */
\
395
V(M8I)
/* [ %r2*8 + K] */
\
396
V(MI)
/* [ K] */
397
398
}
// namespace compiler
399
}
// namespace internal
400
}
// namespace v8
401
402
#endif // V8_COMPILER_BACKEND_IA32_INSTRUCTION_CODES_IA32_H_
v8
Definition:
libplatform.h:13
v8
src
compiler
backend
ia32
instruction-codes-ia32.h
Generated on Tue Dec 25 2018 14:38:28 by
1.8.14