14 const Instruction*
instr)
const {
15 switch (
instr->arch_opcode()) {
16 case kX64TraceInstruction:
70 case kSSEFloat32Round:
71 case kSSEFloat32ToFloat64:
79 case kSSEFloat64Round:
84 case kSSEFloat64ToFloat32:
85 case kSSEFloat64ToFloat16RawBits:
86 case kSSEFloat16RawBitsToFloat64:
87 case kSSEFloat32ToInt32:
88 case kSSEFloat32ToUint32:
89 case kSSEFloat64ToInt32:
90 case kSSEFloat64ToUint32:
91 case kSSEFloat64ToInt64:
92 case kSSEFloat32ToInt64:
93 case kSSEFloat64ToUint64:
94 case kSSEFloat32ToUint64:
95 case kSSEInt32ToFloat64:
96 case kSSEInt32ToFloat32:
97 case kSSEInt64ToFloat32:
98 case kSSEInt64ToFloat64:
99 case kSSEUint64ToFloat32:
100 case kSSEUint64ToFloat64:
101 case kSSEUint32ToFloat64:
102 case kSSEUint32ToFloat32:
103 case kSSEFloat64ExtractLowWord32:
104 case kSSEFloat64ExtractHighWord32:
105 case kSSEFloat64InsertLowWord32:
106 case kSSEFloat64InsertHighWord32:
107 case kSSEFloat64LoadLowWord32:
108 case kSSEFloat64SilenceNaN:
137 case kX64I32x4TruncF64x2UZero:
138 case kX64I32x4TruncF32x4U:
139 case kX64I32x8TruncF32x8U:
141 case kX64FExtractLane:
142 case kX64FReplaceLane:
167 case kX64F64x2ConvertLowI32x4S:
168 case kX64F64x4ConvertI32x4S:
169 case kX64F64x2ConvertLowI32x4U:
170 case kX64F64x2PromoteLowF32x4:
171 case kX64F32x4SConvertI32x4:
172 case kX64F32x8SConvertI32x8:
173 case kX64F32x4UConvertI32x4:
174 case kX64F32x8UConvertI32x8:
182 case kX64F32x4DemoteF64x2Zero:
183 case kX64F32x4DemoteF64x4:
185 case kX64I16x8SConvertF16x8:
186 case kX64I16x8UConvertF16x8:
187 case kX64F16x8SConvertI16x8:
188 case kX64F16x8UConvertI16x8:
189 case kX64F16x8DemoteF32x4Zero:
190 case kX64F16x8DemoteF64x2Zero:
191 case kX64F32x4PromoteLowF16x8:
197 case kX64IExtractLane:
211 case kX64I64x2ExtMulLowI32x4S:
212 case kX64I64x2ExtMulHighI32x4S:
213 case kX64I64x4ExtMulI32x4S:
214 case kX64I64x2ExtMulLowI32x4U:
215 case kX64I64x2ExtMulHighI32x4U:
216 case kX64I64x4ExtMulI32x4U:
217 case kX64I64x2SConvertI32x4Low:
218 case kX64I64x2SConvertI32x4High:
219 case kX64I64x4SConvertI32x4:
220 case kX64I64x2UConvertI32x4Low:
221 case kX64I64x2UConvertI32x4High:
222 case kX64I64x4UConvertI32x4:
223 case kX64I32x4SConvertF32x4:
224 case kX64I32x8SConvertF32x8:
225 case kX64I32x4SConvertI16x8Low:
226 case kX64I32x4SConvertI16x8High:
227 case kX64I32x8SConvertI16x8:
230 case kX64I32x4UConvertF32x4:
231 case kX64I32x8UConvertF32x8:
232 case kX64I32x4UConvertI16x8Low:
233 case kX64I32x4UConvertI16x8High:
234 case kX64I32x8UConvertI16x8:
239 case kX64I32x4DotI16x8S:
240 case kX64I32x8DotI16x16S:
241 case kX64I32x4DotI8x16I7x16AddS:
242 case kX64I32x8DotI8x32I7x32AddS:
243 case kX64I32x4ExtMulLowI16x8S:
244 case kX64I32x4ExtMulHighI16x8S:
245 case kX64I32x8ExtMulI16x8S:
246 case kX64I32x4ExtMulLowI16x8U:
247 case kX64I32x4ExtMulHighI16x8U:
248 case kX64I32x8ExtMulI16x8U:
249 case kX64I32x4ExtAddPairwiseI16x8S:
250 case kX64I32x8ExtAddPairwiseI16x16S:
251 case kX64I32x4ExtAddPairwiseI16x8U:
252 case kX64I32x8ExtAddPairwiseI16x16U:
253 case kX64I32x4TruncSatF64x2SZero:
254 case kX64I32x4TruncSatF64x2UZero:
255 case kX64I32X4ShiftZeroExtendI8x16:
256 case kX64IExtractLaneS:
257 case kX64I16x8SConvertI8x16Low:
258 case kX64I16x8SConvertI8x16High:
259 case kX64I16x16SConvertI8x16:
260 case kX64I16x8SConvertI32x4:
261 case kX64I16x16SConvertI32x8:
264 case kX64I16x8UConvertI8x16Low:
265 case kX64I16x8UConvertI8x16High:
266 case kX64I16x16UConvertI8x16:
267 case kX64I16x8UConvertI32x4:
268 case kX64I16x16UConvertI32x8:
271 case kX64IRoundingAverageU:
272 case kX64I16x8ExtMulLowI8x16S:
273 case kX64I16x8ExtMulHighI8x16S:
274 case kX64I16x16ExtMulI8x16S:
275 case kX64I16x8ExtMulLowI8x16U:
276 case kX64I16x8ExtMulHighI8x16U:
277 case kX64I16x16ExtMulI8x16U:
278 case kX64I16x8ExtAddPairwiseI8x16S:
279 case kX64I16x16ExtAddPairwiseI8x32S:
280 case kX64I16x8ExtAddPairwiseI8x16U:
281 case kX64I16x16ExtAddPairwiseI8x32U:
282 case kX64I16x8Q15MulRSatS:
283 case kX64I16x8RelaxedQ15MulRS:
284 case kX64I16x8DotI8x16I7x16S:
285 case kX64I16x16DotI8x32I7x32S:
286 case kX64I8x16SConvertI16x8:
287 case kX64I8x32SConvertI16x16:
288 case kX64I8x16UConvertI16x8:
289 case kX64I8x32UConvertI16x16:
301 case kX64I8x16Swizzle:
303 case kX64I8x16Shuffle:
304 case kX64I8x16Popcnt:
306 case kX64S32x4Rotate:
307 case kX64S32x4Swizzle:
308 case kX64S32x4Shuffle:
310 case kX64S16x8HalfShuffle1:
311 case kX64S16x8HalfShuffle2:
312 case kX64S8x16Alignr:
315 case kX64S16x8UnzipHigh:
316 case kX64S16x8UnzipLow:
317 case kX64S8x16UnzipHigh:
318 case kX64S8x16UnzipLow:
319 case kX64S64x2UnpackHigh:
320 case kX64S32x4UnpackHigh:
321 case kX64S16x8UnpackHigh:
322 case kX64S8x16UnpackHigh:
323 case kX64S32x8UnpackHigh:
324 case kX64S64x2UnpackLow:
325 case kX64S32x4UnpackLow:
326 case kX64S16x8UnpackLow:
327 case kX64S8x16UnpackLow:
328 case kX64S32x8UnpackLow:
329 case kX64S8x16TransposeLow:
330 case kX64S8x16TransposeHigh:
331 case kX64S8x8Reverse:
332 case kX64S8x4Reverse:
333 case kX64S8x2Reverse:
334 case kX64V128AnyTrue:
338 case kX64ExtractF128:
340 return (
instr->addressing_mode() == kMode_None)
348 return (
instr->addressing_mode() == kMode_None)
367 case kX64S128Store32Lane:
368 case kX64S128Store64Lane:
374 if (
instr->HasOutput()) {
382 case kX64MovqDecompressTaggedSigned:
383 case kX64MovqDecompressTagged:
384 case kX64MovqDecompressProtected:
385 case kX64MovqCompressTagged:
386 case kX64MovqStoreIndirectPointer:
387 case kX64MovqDecodeSandboxedPointer:
388 case kX64MovqEncodeSandboxedPointer:
395 case kX64S128Load8Splat:
396 case kX64S256Load8Splat:
397 case kX64S128Load16Splat:
398 case kX64S256Load16Splat:
399 case kX64S128Load32Splat:
400 case kX64S256Load32Splat:
401 case kX64S128Load64Splat:
402 case kX64S256Load64Splat:
403 case kX64S128Load8x8S:
404 case kX64S128Load8x8U:
405 case kX64S128Load16x4S:
406 case kX64S128Load16x4U:
407 case kX64S128Load32x2S:
408 case kX64S128Load32x2U:
409 case kX64S256Load8x16S:
410 case kX64S256Load8x16U:
411 case kX64S256Load8x8U:
412 case kX64S256Load16x8S:
413 case kX64S256Load16x8U:
414 case kX64S256Load32x4S:
415 case kX64S256Load32x4U:
429 case kX64Word64AtomicStoreWord64:
430 case kX64Word64AtomicAddUint64:
431 case kX64Word64AtomicSubUint64:
432 case kX64Word64AtomicAndUint64:
433 case kX64Word64AtomicOrUint64:
434 case kX64Word64AtomicXorUint64:
435 case kX64Word64AtomicExchangeUint64:
436 case kX64Word64AtomicCompareExchangeUint64:
439#define CASE(Name) case k##Name:
452 switch (
instr->arch_opcode()) {
475 case kSSEFloat32ToFloat64:
476 case kSSEFloat64ToFloat32:
477 case kSSEFloat32Round:
478 case kSSEFloat64Round:
479 case kSSEFloat32ToInt32:
480 case kSSEFloat32ToUint32:
481 case kSSEFloat64ToInt32:
482 case kSSEFloat64ToUint32:
494 case kSSEFloat32Sqrt:
495 case kSSEFloat64Sqrt:
497 case kSSEFloat32ToInt64:
498 case kSSEFloat64ToInt64:
499 case kSSEFloat32ToUint64:
500 case kSSEFloat64ToUint64:
501 case kSSEFloat64ToFloat16RawBits:
502 case kSSEFloat16RawBitsToFloat64:
506 case kArchTruncateDoubleToI:
static bool SchedulerSupported()
int GetTargetInstructionFlags(const Instruction *instr) const
static int GetInstructionLatency(const Instruction *instr)
#define COMMON_ARCH_OPCODE_LIST(V)
@ kMayNeedDeoptOrTrapCheck
#define DCHECK_LE(v1, v2)