17 const Instruction*
instr)
const {
18 switch (
instr->arch_opcode()) {
52 case kIA32Float32Sqrt:
53 case kIA32Float32Round:
60 case kIA32Float64Sqrt:
61 case kIA32Float64Round:
62 case kIA32Float32ToFloat64:
63 case kIA32Float64ToFloat32:
64 case kIA32Float32ToInt32:
65 case kIA32Float32ToUint32:
66 case kIA32Float64ToInt32:
67 case kIA32Float64ToUint32:
68 case kSSEInt32ToFloat32:
69 case kIA32Uint32ToFloat32:
70 case kSSEInt32ToFloat64:
71 case kIA32Uint32ToFloat64:
72 case kIA32Float64ExtractLowWord32:
73 case kIA32Float64ExtractHighWord32:
74 case kIA32Float64InsertLowWord32:
75 case kIA32Float64InsertHighWord32:
76 case kIA32Float64FromWord32Pair:
77 case kIA32Float64LoadLowWord32:
78 case kIA32Float64SilenceNaN:
98 case kIA32I32x4TruncF32x4U:
99 case kIA32I32x4TruncF64x2UZero:
100 case kIA32F64x2Splat:
101 case kIA32F64x2ExtractLane:
102 case kIA32F64x2ReplaceLane:
118 case kIA32F64x2Round:
119 case kIA32F64x2ConvertLowI32x4S:
120 case kIA32F64x2ConvertLowI32x4U:
121 case kIA32F64x2PromoteLowF32x4:
122 case kIA32I64x2SplatI32Pair:
123 case kIA32I64x2ReplaceLaneI32Pair:
132 case kIA32I64x2BitMask:
137 case kIA32I64x2ExtMulLowI32x4S:
138 case kIA32I64x2ExtMulHighI32x4S:
139 case kIA32I64x2ExtMulLowI32x4U:
140 case kIA32I64x2ExtMulHighI32x4U:
141 case kIA32I64x2SConvertI32x4Low:
142 case kIA32I64x2SConvertI32x4High:
143 case kIA32I64x2UConvertI32x4Low:
144 case kIA32I64x2UConvertI32x4High:
145 case kIA32F32x4Splat:
146 case kIA32F32x4ExtractLane:
148 case kIA32F32x4SConvertI32x4:
149 case kIA32F32x4UConvertI32x4:
165 case kIA32F32x4Round:
166 case kIA32F32x4DemoteF64x2Zero:
167 case kIA32I32x4Splat:
168 case kIA32I32x4ExtractLane:
169 case kIA32I32x4SConvertF32x4:
170 case kIA32I32x4SConvertI16x8Low:
171 case kIA32I32x4SConvertI16x8High:
184 case kSSEI32x4UConvertF32x4:
185 case kAVXI32x4UConvertF32x4:
186 case kIA32I32x4UConvertI16x8Low:
187 case kIA32I32x4UConvertI16x8High:
196 case kIA32I32x4BitMask:
197 case kIA32I32x4DotI16x8S:
198 case kIA32I32x4DotI8x16I7x16AddS:
199 case kIA32I32x4ExtMulLowI16x8S:
200 case kIA32I32x4ExtMulHighI16x8S:
201 case kIA32I32x4ExtMulLowI16x8U:
202 case kIA32I32x4ExtMulHighI16x8U:
203 case kIA32I32x4ExtAddPairwiseI16x8S:
204 case kIA32I32x4ExtAddPairwiseI16x8U:
205 case kIA32I32x4TruncSatF64x2SZero:
206 case kIA32I32x4TruncSatF64x2UZero:
207 case kIA32I16x8Splat:
208 case kIA32I16x8ExtractLaneS:
209 case kIA32I16x8SConvertI8x16Low:
210 case kIA32I16x8SConvertI8x16High:
214 case kIA32I16x8SConvertI32x4:
216 case kIA32I16x8AddSatS:
218 case kIA32I16x8SubSatS:
228 case kIA32I16x8UConvertI8x16Low:
229 case kIA32I16x8UConvertI8x16High:
231 case kIA32I16x8UConvertI32x4:
232 case kIA32I16x8AddSatU:
233 case kIA32I16x8SubSatU:
240 case kIA32I16x8RoundingAverageU:
242 case kIA32I16x8BitMask:
243 case kIA32I16x8ExtMulLowI8x16S:
244 case kIA32I16x8ExtMulHighI8x16S:
245 case kIA32I16x8ExtMulLowI8x16U:
246 case kIA32I16x8ExtMulHighI8x16U:
247 case kIA32I16x8ExtAddPairwiseI8x16S:
248 case kIA32I16x8ExtAddPairwiseI8x16U:
249 case kIA32I16x8Q15MulRSatS:
250 case kIA32I16x8RelaxedQ15MulRS:
251 case kIA32I16x8DotI8x16I7x16S:
252 case kIA32I8x16Splat:
253 case kIA32I8x16ExtractLaneS:
259 case kIA32S128Store32Lane:
260 case kIA32I8x16SConvertI16x8:
265 case kIA32I8x16AddSatS:
267 case kIA32I8x16SubSatS:
276 case kIA32I8x16UConvertI16x8:
277 case kIA32I8x16AddSatU:
278 case kIA32I8x16SubSatU:
286 case kIA32I8x16RoundingAverageU:
288 case kIA32I8x16BitMask:
289 case kIA32I8x16Popcnt:
292 case kIA32S128AllOnes:
297 case kIA32S128Select:
298 case kIA32S128AndNot:
299 case kIA32I8x16Swizzle:
300 case kIA32I8x16Shuffle:
301 case kIA32S32x4Rotate:
302 case kIA32S32x4Swizzle:
303 case kIA32S32x4Shuffle:
304 case kIA32S16x8Blend:
305 case kIA32S16x8HalfShuffle1:
306 case kIA32S16x8HalfShuffle2:
307 case kIA32S8x16Alignr:
310 case kSSES16x8UnzipHigh:
311 case kAVXS16x8UnzipHigh:
312 case kSSES16x8UnzipLow:
313 case kAVXS16x8UnzipLow:
314 case kSSES8x16UnzipHigh:
315 case kAVXS8x16UnzipHigh:
316 case kSSES8x16UnzipLow:
317 case kAVXS8x16UnzipLow:
318 case kIA32S64x2UnpackHigh:
319 case kIA32S32x4UnpackHigh:
320 case kIA32S16x8UnpackHigh:
321 case kIA32S8x16UnpackHigh:
322 case kIA32S64x2UnpackLow:
323 case kIA32S32x4UnpackLow:
324 case kIA32S16x8UnpackLow:
325 case kIA32S8x16UnpackLow:
326 case kSSES8x16TransposeLow:
327 case kAVXS8x16TransposeLow:
328 case kSSES8x16TransposeHigh:
329 case kAVXS8x16TransposeHigh:
330 case kSSES8x8Reverse:
331 case kAVXS8x8Reverse:
332 case kSSES8x4Reverse:
333 case kAVXS8x4Reverse:
334 case kSSES8x2Reverse:
335 case kAVXS8x2Reverse:
336 case kIA32S128AnyTrue:
337 case kIA32I64x2AllTrue:
338 case kIA32I32x4AllTrue:
339 case kIA32I16x8AllTrue:
340 case kIA32I8x16AllTrue:
341 return (
instr->addressing_mode() == kMode_None)
347 return (
instr->addressing_mode() == kMode_None)
364 case kIA32S128Load8Splat:
365 case kIA32S128Load16Splat:
366 case kIA32S128Load32Splat:
367 case kIA32S128Load64Splat:
368 case kIA32S128Load8x8S:
369 case kIA32S128Load8x8U:
370 case kIA32S128Load16x4S:
371 case kIA32S128Load16x4U:
372 case kIA32S128Load32x2S:
373 case kIA32S128Load32x2U:
385 case kIA32Word32AtomicPairLoad:
388 case kIA32Word32ReleasePairStore:
389 case kIA32Word32SeqCstPairStore:
390 case kIA32Word32AtomicPairAdd:
391 case kIA32Word32AtomicPairSub:
392 case kIA32Word32AtomicPairAnd:
393 case kIA32Word32AtomicPairOr:
394 case kIA32Word32AtomicPairXor:
395 case kIA32Word32AtomicPairExchange:
396 case kIA32Word32AtomicPairCompareExchange:
399#define CASE(Name) case k##Name:
412 switch (
instr->arch_opcode()) {
418 case kIA32Float32Cmp:
419 case kIA32Float64Cmp:
427 case kIA32Float64Max:
428 case kIA32Float64Min:
434 case kIA32Float32ToFloat64:
435 case kIA32Float64ToFloat32:
437 case kIA32Float32Round:
438 case kIA32Float64Round:
439 case kIA32Float32ToInt32:
440 case kIA32Float64ToInt32:
442 case kIA32Float32ToUint32:
444 case kIA32Float64ToUint32:
454 case kIA32Float32Sqrt:
455 case kIA32Float64Sqrt:
457 case kIA32Float64Mod:
459 case kArchTruncateDoubleToI:
static bool SchedulerSupported()
int GetTargetInstructionFlags(const Instruction *instr) const
static int GetInstructionLatency(const Instruction *instr)
#define COMMON_ARCH_OPCODE_LIST(V)
FloatBinopMask::For< FloatBinopOp::Kind::kSub, FloatRepresentation::Float64()> kFloat64Sub
FloatBinopMask::For< FloatBinopOp::Kind::kSub, FloatRepresentation::Float32()> kFloat32Sub
FloatBinopMask::For< FloatBinopOp::Kind::kMul, FloatRepresentation::Float32()> kFloat32Mul
FloatBinopMask::For< FloatBinopOp::Kind::kMul, FloatRepresentation::Float64()> kFloat64Mul
FloatUnaryMask::For< FloatUnaryOp::Kind::kAbs, FloatRepresentation::Float64()> kFloat64Abs
@ kMayNeedDeoptOrTrapCheck