14 const Instruction*
instr)
const {
15 switch (
instr->arch_opcode()) {
92 case kArm64Float16RoundDown:
93 case kArm64Float16RoundTiesEven:
94 case kArm64Float16RoundTruncate:
95 case kArm64Float16RoundUp:
96 case kArm64Float32Cmp:
97 case kArm64Float32Add:
98 case kArm64Float32Sub:
99 case kArm64Float32Mul:
100 case kArm64Float32Div:
101 case kArm64Float32Abs:
102 case kArm64Float32Abd:
103 case kArm64Float32Neg:
104 case kArm64Float32Sqrt:
105 case kArm64Float32Fnmul:
106 case kArm64Float32RoundDown:
107 case kArm64Float32Max:
108 case kArm64Float32Min:
109 case kArm64Float64Cmp:
110 case kArm64Float64Add:
111 case kArm64Float64Sub:
112 case kArm64Float64Mul:
113 case kArm64Float64Div:
114 case kArm64Float64Max:
115 case kArm64Float64Min:
116 case kArm64Float64Abs:
117 case kArm64Float64Abd:
118 case kArm64Float64Neg:
119 case kArm64Float64Sqrt:
120 case kArm64Float64Fnmul:
121 case kArm64Float64RoundDown:
122 case kArm64Float64RoundTiesAway:
123 case kArm64Float64RoundTruncate:
124 case kArm64Float64RoundTiesEven:
125 case kArm64Float64RoundUp:
126 case kArm64Float32RoundTiesEven:
127 case kArm64Float32RoundTruncate:
128 case kArm64Float32RoundUp:
129 case kArm64Float32ToFloat64:
130 case kArm64Float64ToFloat32:
131 case kArm64Float64ToFloat16RawBits:
132 case kArm64Float16RawBitsToFloat64:
133 case kArm64Float32ToInt32:
134 case kArm64Float64ToInt32:
135 case kArm64Float32ToUint32:
136 case kArm64Float64ToUint32:
137 case kArm64Float32ToInt64:
138 case kArm64Float64ToInt64:
139 case kArm64Float32ToUint64:
140 case kArm64Float64ToUint64:
141 case kArm64Int32ToFloat32:
142 case kArm64Int32ToFloat64:
143 case kArm64Int64ToFloat32:
144 case kArm64Int64ToFloat64:
145 case kArm64Uint32ToFloat32:
146 case kArm64Uint32ToFloat64:
147 case kArm64Uint64ToFloat32:
148 case kArm64Uint64ToFloat64:
149 case kArm64Float64ExtractLowWord32:
150 case kArm64Float64ExtractHighWord32:
151 case kArm64Float64InsertLowWord32:
152 case kArm64Float64InsertHighWord32:
153 case kArm64Float64Mod:
154 case kArm64Float64MoveU64:
155 case kArm64U64MoveFloat64:
156 case kArm64Float64SilenceNaN:
157#if V8_ENABLE_WEBASSEMBLY
169 case kArm64FMulElement:
179 case kArm64FExtractLane:
180 case kArm64FReplaceLane:
185 case kArm64F64x2Qfma:
186 case kArm64F64x2Qfms:
187 case kArm64F64x2Pmin:
188 case kArm64F64x2Pmax:
189 case kArm64F64x2ConvertLowI32x4S:
190 case kArm64F64x2ConvertLowI32x4U:
191 case kArm64F64x2PromoteLowF32x4:
192 case kArm64F32x4SConvertI32x4:
193 case kArm64F32x4UConvertI32x4:
194 case kArm64F32x4Qfma:
195 case kArm64F32x4Qfms:
196 case kArm64F32x4Pmin:
197 case kArm64F32x4Pmax:
198 case kArm64F32x4DemoteF64x2Zero:
199 case kArm64F16x8Pmin:
200 case kArm64F16x8Pmax:
201 case kArm64F32x4PromoteLowF16x8:
202 case kArm64F16x8SConvertI16x8:
203 case kArm64F16x8UConvertI16x8:
204 case kArm64F16x8DemoteF32x4Zero:
205 case kArm64F16x8DemoteF64x2Zero:
206 case kArm64I16x8SConvertF16x8:
207 case kArm64I16x8UConvertF16x8:
208 case kArm64F16x8Qfma:
209 case kArm64F16x8Qfms:
210 case kArm64IExtractLane:
211 case kArm64IReplaceLane:
218 case kArm64I64x2ShrS:
220 case kArm64I64x2ShrU:
221 case kArm64I64x2BitMask:
222 case kArm64I32x4SConvertF32x4:
228 case kArm64I32x4ShrS:
230 case kArm64I32x4UConvertF32x4:
231 case kArm64I32x4ShrU:
232 case kArm64I32x4BitMask:
233 case kArm64I32x4DotI16x8S:
234 case kArm64I16x8DotI8x16S:
235 case kArm64I32x4DotI8x16AddS:
236 case kArm64I8x16Addv:
237 case kArm64I16x8Addv:
238 case kArm64I32x4Addv:
239 case kArm64I64x2AddPair:
240 case kArm64F32x4AddReducePairwise:
241 case kArm64F64x2AddPair:
242 case kArm64I32x4TruncSatF64x2SZero:
243 case kArm64I32x4TruncSatF64x2UZero:
244 case kArm64IExtractLaneU:
245 case kArm64IExtractLaneS:
247 case kArm64I16x8ShrS:
248 case kArm64I16x8SConvertI32x4:
250 case kArm64I16x8ShrU:
251 case kArm64I16x8UConvertI32x4:
252 case kArm64I16x8Q15MulRSatS:
253 case kArm64I16x8BitMask:
255 case kArm64I8x16ShrS:
256 case kArm64I8x16SConvertI16x8:
257 case kArm64I8x16UConvertI16x8:
258 case kArm64I8x16ShrU:
259 case kArm64I8x16BitMask:
260 case kArm64S128Const:
266 case kArm64S128Select:
267 case kArm64S128AndNot:
270 case kArm64S64x2UnzipLeft:
271 case kArm64S64x2UnzipRight:
272 case kArm64S32x4ZipLeft:
273 case kArm64S32x4ZipRight:
274 case kArm64S32x4UnzipLeft:
275 case kArm64S32x4UnzipRight:
276 case kArm64S32x4TransposeLeft:
277 case kArm64S32x4TransposeRight:
278 case kArm64S32x4OneLaneSwizzle:
279 case kArm64S64x1Shuffle:
280 case kArm64S64x2Shuffle:
281 case kArm64S32x1Shuffle:
282 case kArm64S32x2Shuffle:
283 case kArm64S32x4Shuffle:
284 case kArm64S16x1Shuffle:
285 case kArm64S16x2Shuffle:
286 case kArm64S8x2Shuffle:
287 case kArm64S16x8ZipLeft:
288 case kArm64S16x8ZipRight:
289 case kArm64S16x8UnzipLeft:
290 case kArm64S16x8UnzipRight:
291 case kArm64S16x8TransposeLeft:
292 case kArm64S16x8TransposeRight:
293 case kArm64S8x16ZipLeft:
294 case kArm64S8x16ZipRight:
295 case kArm64S8x16UnzipLeft:
296 case kArm64S8x16UnzipRight:
297 case kArm64S8x16TransposeLeft:
298 case kArm64S8x16TransposeRight:
299 case kArm64S8x16Concat:
300 case kArm64I8x16Swizzle:
301 case kArm64I8x16Shuffle:
302 case kArm64S32x4Reverse:
303 case kArm64S32x2Reverse:
304 case kArm64S16x4Reverse:
305 case kArm64S16x2Reverse:
306 case kArm64S8x8Reverse:
307 case kArm64S8x4Reverse:
308 case kArm64S8x2Reverse:
309 case kArm64V128AnyTrue:
310 case kArm64I64x2AllTrue:
311 case kArm64I32x4AllTrue:
312 case kArm64I16x8AllTrue:
313 case kArm64I8x16AllTrue:
314 case kArm64RoundingAverageU:
336 case kArm64TestAndBranch32:
337 case kArm64TestAndBranch:
338 case kArm64CompareAndBranch32:
339 case kArm64CompareAndBranch:
355 case kArm64LdrDecompressTaggedSigned:
356 case kArm64LdrDecompressTagged:
357 case kArm64LdrDecompressProtected:
358 case kArm64LdarDecompressTaggedSigned:
359 case kArm64LdarDecompressTagged:
360 case kArm64LdrDecodeSandboxedPointer:
362#if V8_ENABLE_WEBASSEMBLY
363 case kArm64LoadSplat:
365 case kArm64S128Load8x8S:
366 case kArm64S128Load8x8U:
367 case kArm64S128Load16x4S:
368 case kArm64S128Load16x4U:
369 case kArm64S128Load32x2S:
370 case kArm64S128Load32x2U:
371 case kArm64S128LoadPairDeinterleave:
388 case kArm64StrCompressTagged:
389 case kArm64StlrCompressTagged:
390 case kArm64StrIndirectPointer:
391 case kArm64StrEncodeSandboxedPointer:
394#if V8_ENABLE_WEBASSEMBLY
395 case kArm64StoreLane:
399 case kArm64Word64AtomicLoadUint64:
402 case kArm64Word64AtomicStoreWord64:
403 case kArm64Word64AtomicAddUint64:
404 case kArm64Word64AtomicSubUint64:
405 case kArm64Word64AtomicAndUint64:
406 case kArm64Word64AtomicOrUint64:
407 case kArm64Word64AtomicXorUint64:
408 case kArm64Word64AtomicExchangeUint64:
409 case kArm64Word64AtomicCompareExchangeUint64:
412#define CASE(Name) case k##Name:
425 switch (
instr->arch_opcode()) {
450 if (
instr->addressing_mode() != kMode_None) {
479 case kArm64LdrDecompressTaggedSigned:
480 case kArm64LdrDecompressTagged:
481 case kArm64LdrDecompressProtected:
521 case kArm64Float32Add:
522 case kArm64Float32Sub:
523 case kArm64Float64Add:
524 case kArm64Float64Sub:
527 case kArm64Float32Abs:
528 case kArm64Float32Cmp:
529 case kArm64Float32Neg:
530 case kArm64Float64Abs:
531 case kArm64Float64Cmp:
532 case kArm64Float64Neg:
535 case kArm64Float32Div:
536 case kArm64Float32Sqrt:
539 case kArm64Float64Div:
540 case kArm64Float64Sqrt:
543 case kArm64Float32RoundDown:
544 case kArm64Float32RoundTiesEven:
545 case kArm64Float32RoundTruncate:
546 case kArm64Float32RoundUp:
547 case kArm64Float64RoundDown:
548 case kArm64Float64RoundTiesAway:
549 case kArm64Float64RoundTiesEven:
550 case kArm64Float64RoundTruncate:
551 case kArm64Float64RoundUp:
554 case kArm64Float32ToFloat64:
555 case kArm64Float64ToFloat32:
556 case kArm64Float64ToFloat16RawBits:
557 case kArm64Float16RawBitsToFloat64:
558 case kArm64Float64ToInt32:
559 case kArm64Float64ToUint32:
560 case kArm64Float32ToInt64:
561 case kArm64Float64ToInt64:
562 case kArm64Float32ToUint64:
563 case kArm64Float64ToUint64:
564 case kArm64Int32ToFloat64:
565 case kArm64Int64ToFloat32:
566 case kArm64Int64ToFloat64:
567 case kArm64Uint32ToFloat64:
568 case kArm64Uint64ToFloat32:
569 case kArm64Uint64ToFloat64:
static bool SchedulerSupported()
int GetTargetInstructionFlags(const Instruction *instr) const
static int GetInstructionLatency(const Instruction *instr)
#define COMMON_ARCH_OPCODE_LIST(V)