comparison lib/Target/X86/X86SchedSkylakeClient.td @ 121:803732b1fca8

LLVM 5.0
author kono
date Fri, 27 Oct 2017 17:07:41 +0900
parents
children
comparison
equal deleted inserted replaced
120:1172e4bd9c6f 121:803732b1fca8
1 //=- X86SchedSkylake.td - X86 Skylake Client Scheduling ------*- tablegen -*-=//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file defines the machine model for Skylake Client to support
11 // instruction scheduling and other instruction cost heuristics.
12 //
13 //===----------------------------------------------------------------------===//
14
15 def SkylakeClientModel : SchedMachineModel {
16 // All x86 instructions are modeled as a single micro-op, and SKylake can
17 // decode 6 instructions per cycle.
18 let IssueWidth = 6;
19 let MicroOpBufferSize = 224; // Based on the reorder buffer.
20 let LoadLatency = 5;
21 let MispredictPenalty = 14;
22
23 // Based on the LSD (loop-stream detector) queue size and benchmarking data.
24 let LoopMicroOpBufferSize = 50;
25
26 // This flag is set to allow the scheduler to assign a default model to
27 // unrecognized opcodes.
28 let CompleteModel = 0;
29 }
30
31 let SchedModel = SkylakeClientModel in {
32
33 // Skylake Client can issue micro-ops to 8 different ports in one cycle.
34
35 // Ports 0, 1, 5, and 6 handle all computation.
36 // Port 4 gets the data half of stores. Store data can be available later than
37 // the store address, but since we don't model the latency of stores, we can
38 // ignore that.
39 // Ports 2 and 3 are identical. They handle loads and the address half of
40 // stores. Port 7 can handle address calculations.
41 def SKLPort0 : ProcResource<1>;
42 def SKLPort1 : ProcResource<1>;
43 def SKLPort2 : ProcResource<1>;
44 def SKLPort3 : ProcResource<1>;
45 def SKLPort4 : ProcResource<1>;
46 def SKLPort5 : ProcResource<1>;
47 def SKLPort6 : ProcResource<1>;
48 def SKLPort7 : ProcResource<1>;
49
50 // Many micro-ops are capable of issuing on multiple ports.
51 def SKLPort01 : ProcResGroup<[SKLPort0, SKLPort1]>;
52 def SKLPort23 : ProcResGroup<[SKLPort2, SKLPort3]>;
53 def SKLPort237 : ProcResGroup<[SKLPort2, SKLPort3, SKLPort7]>;
54 def SKLPort04 : ProcResGroup<[SKLPort0, SKLPort4]>;
55 def SKLPort05 : ProcResGroup<[SKLPort0, SKLPort5]>;
56 def SKLPort06 : ProcResGroup<[SKLPort0, SKLPort6]>;
57 def SKLPort15 : ProcResGroup<[SKLPort1, SKLPort5]>;
58 def SKLPort16 : ProcResGroup<[SKLPort1, SKLPort6]>;
59 def SKLPort56 : ProcResGroup<[SKLPort5, SKLPort6]>;
60 def SKLPort015 : ProcResGroup<[SKLPort0, SKLPort1, SKLPort5]>;
61 def SKLPort056 : ProcResGroup<[SKLPort0, SKLPort5, SKLPort6]>;
62 def SKLPort0156: ProcResGroup<[SKLPort0, SKLPort1, SKLPort5, SKLPort6]>;
63
64 // 60 Entry Unified Scheduler
65 def SKLPortAny : ProcResGroup<[SKLPort0, SKLPort1, SKLPort2, SKLPort3, SKLPort4,
66 SKLPort5, SKLPort6, SKLPort7]> {
67 let BufferSize=60;
68 }
69
70 // Loads are 5 cycles, so ReadAfterLd registers needn't be available until 5
71 // cycles after the memory operand.
72 def : ReadAdvance<ReadAfterLd, 5>;
73
74 // Many SchedWrites are defined in pairs with and without a folded load.
75 // Instructions with folded loads are usually micro-fused, so they only appear
76 // as two micro-ops when queued in the reservation station.
77 // This multiclass defines the resource usage for variants with and without
78 // folded loads.
79 multiclass SKLWriteResPair<X86FoldableSchedWrite SchedRW,
80 ProcResourceKind ExePort,
81 int Lat> {
82 // Register variant is using a single cycle on ExePort.
83 def : WriteRes<SchedRW, [ExePort]> { let Latency = Lat; }
84
85 // Memory variant also uses a cycle on port 2/3 and adds 5 cycles to the
86 // latency.
87 def : WriteRes<SchedRW.Folded, [SKLPort23, ExePort]> {
88 let Latency = !add(Lat, 5);
89 }
90 }
91
92 // A folded store needs a cycle on port 4 for the store data, but it does not
93 // need an extra port 2/3 cycle to recompute the address.
94 def : WriteRes<WriteRMW, [SKLPort4]>;
95
96 // Arithmetic.
97 defm : SKLWriteResPair<WriteALU, SKLPort0156, 1>; // Simple integer ALU op.
98 defm : SKLWriteResPair<WriteIMul, SKLPort1, 3>; // Integer multiplication.
99 def : WriteRes<WriteIMulH, []> { let Latency = 3; } // Integer multiplication, high part.
100 def SKLDivider : ProcResource<1>; // Integer division issued on port 0.
101 def : WriteRes<WriteIDiv, [SKLPort0, SKLDivider]> { // Integer division.
102 let Latency = 25;
103 let ResourceCycles = [1, 10];
104 }
105 def : WriteRes<WriteIDivLd, [SKLPort23, SKLPort0, SKLDivider]> {
106 let Latency = 29;
107 let ResourceCycles = [1, 1, 10];
108 }
109
110 def : WriteRes<WriteLEA, [SKLPort15]>; // LEA instructions can't fold loads.
111
112 // Integer shifts and rotates.
113 defm : SKLWriteResPair<WriteShift, SKLPort06, 1>;
114
115 // Loads, stores, and moves, not folded with other operations.
116 def : WriteRes<WriteLoad, [SKLPort23]> { let Latency = 5; }
117 def : WriteRes<WriteStore, [SKLPort237, SKLPort4]>;
118 def : WriteRes<WriteMove, [SKLPort0156]>;
119
120 // Idioms that clear a register, like xorps %xmm0, %xmm0.
121 // These can often bypass execution ports completely.
122 def : WriteRes<WriteZero, []>;
123
124 // Branches don't produce values, so they have no latency, but they still
125 // consume resources. Indirect branches can fold loads.
126 defm : SKLWriteResPair<WriteJump, SKLPort06, 1>;
127
128 // Floating point. This covers both scalar and vector operations.
129 defm : SKLWriteResPair<WriteFAdd, SKLPort1, 3>; // Floating point add/sub/compare.
130 defm : SKLWriteResPair<WriteFMul, SKLPort0, 5>; // Floating point multiplication.
131 defm : SKLWriteResPair<WriteFDiv, SKLPort0, 12>; // 10-14 cycles. // Floating point division.
132 defm : SKLWriteResPair<WriteFSqrt, SKLPort0, 15>; // Floating point square root.
133 defm : SKLWriteResPair<WriteFRcp, SKLPort0, 5>; // Floating point reciprocal estimate.
134 defm : SKLWriteResPair<WriteFRsqrt, SKLPort0, 5>; // Floating point reciprocal square root estimate.
135 // defm WriteFMA : X86SchedWritePair; // Fused Multiply Add.
136 defm : SKLWriteResPair<WriteFShuffle, SKLPort5, 1>; // Floating point vector shuffles.
137 defm : SKLWriteResPair<WriteFBlend, SKLPort015, 1>; // Floating point vector blends.
138 def : WriteRes<WriteFVarBlend, [SKLPort5]> { // Fp vector variable blends.
139 let Latency = 2;
140 let ResourceCycles = [2];
141 }
142 def : WriteRes<WriteFVarBlendLd, [SKLPort5, SKLPort23]> {
143 let Latency = 6;
144 let ResourceCycles = [2, 1];
145 }
146
147 // FMA Scheduling helper class.
148 // class FMASC { X86FoldableSchedWrite Sched = WriteFAdd; }
149
150 // Vector integer operations.
151 defm : SKLWriteResPair<WriteVecALU, SKLPort15, 1>; // Vector integer ALU op, no logicals.
152 defm : SKLWriteResPair<WriteVecShift, SKLPort0, 1>; // Vector integer shifts.
153 defm : SKLWriteResPair<WriteVecIMul, SKLPort0, 5>; // Vector integer multiply.
154 defm : SKLWriteResPair<WriteShuffle, SKLPort5, 1>; // Vector shuffles.
155 defm : SKLWriteResPair<WriteBlend, SKLPort15, 1>; // Vector blends.
156
157 def : WriteRes<WriteVarBlend, [SKLPort5]> { // Vector variable blends.
158 let Latency = 2;
159 let ResourceCycles = [2];
160 }
161 def : WriteRes<WriteVarBlendLd, [SKLPort5, SKLPort23]> {
162 let Latency = 6;
163 let ResourceCycles = [2, 1];
164 }
165
166 def : WriteRes<WriteMPSAD, [SKLPort0, SKLPort5]> { // Vector MPSAD.
167 let Latency = 6;
168 let ResourceCycles = [1, 2];
169 }
170 def : WriteRes<WriteMPSADLd, [SKLPort23, SKLPort0, SKLPort5]> {
171 let Latency = 6;
172 let ResourceCycles = [1, 1, 2];
173 }
174
175 // Vector bitwise operations.
176 // These are often used on both floating point and integer vectors.
177 defm : SKLWriteResPair<WriteVecLogic, SKLPort015, 1>; // Vector and/or/xor.
178
179 // Conversion between integer and float.
180 defm : SKLWriteResPair<WriteCvtF2I, SKLPort1, 3>; // Float -> Integer.
181 defm : SKLWriteResPair<WriteCvtI2F, SKLPort1, 4>; // Integer -> Float.
182 defm : SKLWriteResPair<WriteCvtF2F, SKLPort1, 3>; // Float -> Float size conversion.
183
184 // Strings instructions.
185 // Packed Compare Implicit Length Strings, Return Mask
186 // String instructions.
187 def : WriteRes<WritePCmpIStrM, [SKLPort0]> {
188 let Latency = 10;
189 let ResourceCycles = [3];
190 }
191 def : WriteRes<WritePCmpIStrMLd, [SKLPort0, SKLPort23]> {
192 let Latency = 10;
193 let ResourceCycles = [3, 1];
194 }
195 // Packed Compare Explicit Length Strings, Return Mask
196 def : WriteRes<WritePCmpEStrM, [SKLPort0, SKLPort16, SKLPort5]> {
197 let Latency = 10;
198 let ResourceCycles = [3, 2, 4];
199 }
200 def : WriteRes<WritePCmpEStrMLd, [SKLPort05, SKLPort16, SKLPort23]> {
201 let Latency = 10;
202 let ResourceCycles = [6, 2, 1];
203 }
204 // Packed Compare Implicit Length Strings, Return Index
205 def : WriteRes<WritePCmpIStrI, [SKLPort0]> {
206 let Latency = 11;
207 let ResourceCycles = [3];
208 }
209 def : WriteRes<WritePCmpIStrILd, [SKLPort0, SKLPort23]> {
210 let Latency = 11;
211 let ResourceCycles = [3, 1];
212 }
213 // Packed Compare Explicit Length Strings, Return Index
214 def : WriteRes<WritePCmpEStrI, [SKLPort05, SKLPort16]> {
215 let Latency = 11;
216 let ResourceCycles = [6, 2];
217 }
218 def : WriteRes<WritePCmpEStrILd, [SKLPort0, SKLPort16, SKLPort5, SKLPort23]> {
219 let Latency = 11;
220 let ResourceCycles = [3, 2, 2, 1];
221 }
222
223 // AES instructions.
224 def : WriteRes<WriteAESDecEnc, [SKLPort5]> { // Decryption, encryption.
225 let Latency = 7;
226 let ResourceCycles = [1];
227 }
228 def : WriteRes<WriteAESDecEncLd, [SKLPort5, SKLPort23]> {
229 let Latency = 7;
230 let ResourceCycles = [1, 1];
231 }
232 def : WriteRes<WriteAESIMC, [SKLPort5]> { // InvMixColumn.
233 let Latency = 14;
234 let ResourceCycles = [2];
235 }
236 def : WriteRes<WriteAESIMCLd, [SKLPort5, SKLPort23]> {
237 let Latency = 14;
238 let ResourceCycles = [2, 1];
239 }
240 def : WriteRes<WriteAESKeyGen, [SKLPort0, SKLPort5]> { // Key Generation.
241 let Latency = 10;
242 let ResourceCycles = [2, 8];
243 }
244 def : WriteRes<WriteAESKeyGenLd, [SKLPort0, SKLPort5, SKLPort23]> {
245 let Latency = 10;
246 let ResourceCycles = [2, 7, 1];
247 }
248
249 // Carry-less multiplication instructions.
250 def : WriteRes<WriteCLMul, [SKLPort0, SKLPort5]> {
251 let Latency = 7;
252 let ResourceCycles = [2, 1];
253 }
254 def : WriteRes<WriteCLMulLd, [SKLPort0, SKLPort5, SKLPort23]> {
255 let Latency = 7;
256 let ResourceCycles = [2, 1, 1];
257 }
258
259 // Catch-all for expensive system instructions.
260 def : WriteRes<WriteSystem, [SKLPort0156]> { let Latency = 100; } // def WriteSystem : SchedWrite;
261
262 // AVX2.
263 defm : SKLWriteResPair<WriteFShuffle256, SKLPort5, 3>; // Fp 256-bit width vector shuffles.
264 defm : SKLWriteResPair<WriteShuffle256, SKLPort5, 3>; // 256-bit width vector shuffles.
265 def : WriteRes<WriteVarVecShift, [SKLPort0, SKLPort5]> { // Variable vector shifts.
266 let Latency = 2;
267 let ResourceCycles = [2, 1];
268 }
269 def : WriteRes<WriteVarVecShiftLd, [SKLPort0, SKLPort5, SKLPort23]> {
270 let Latency = 6;
271 let ResourceCycles = [2, 1, 1];
272 }
273
274 // Old microcoded instructions that nobody use.
275 def : WriteRes<WriteMicrocoded, [SKLPort0156]> { let Latency = 100; } // def WriteMicrocoded : SchedWrite;
276
277 // Fence instructions.
278 def : WriteRes<WriteFence, [SKLPort23, SKLPort4]>;
279
280 // Nop, not very useful expect it provides a model for nops!
281 def : WriteRes<WriteNop, []>;
282
283 ////////////////////////////////////////////////////////////////////////////////
284 // Horizontal add/sub instructions.
285 ////////////////////////////////////////////////////////////////////////////////
286 // HADD, HSUB PS/PD
287 // x,x / v,v,v.
288 def : WriteRes<WriteFHAdd, [SKLPort1]> {
289 let Latency = 3;
290 }
291
292 // x,m / v,v,m.
293 def : WriteRes<WriteFHAddLd, [SKLPort1, SKLPort23]> {
294 let Latency = 7;
295 let ResourceCycles = [1, 1];
296 }
297
298 // PHADD|PHSUB (S) W/D.
299 // v <- v,v.
300 def : WriteRes<WritePHAdd, [SKLPort15]>;
301
302 // v <- v,m.
303 def : WriteRes<WritePHAddLd, [SKLPort15, SKLPort23]> {
304 let Latency = 5;
305 let ResourceCycles = [1, 1];
306 }
307
308 // Remaining instrs.
309
310 def SKLWriteResGroup1 : SchedWriteRes<[SKLPort0]> {
311 let Latency = 1;
312 let NumMicroOps = 1;
313 let ResourceCycles = [1];
314 }
315 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDSBirr")>;
316 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDSWirr")>;
317 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDUSBirr")>;
318 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PADDUSWirr")>;
319 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PAVGBirr")>;
320 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PAVGWirr")>;
321 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPEQBirr")>;
322 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPEQDirr")>;
323 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPEQWirr")>;
324 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPGTBirr")>;
325 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPGTDirr")>;
326 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PCMPGTWirr")>;
327 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PMAXSWirr")>;
328 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PMAXUBirr")>;
329 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PMINSWirr")>;
330 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PMINUBirr")>;
331 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLDri")>;
332 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLDrr")>;
333 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLQri")>;
334 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLQrr")>;
335 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLWri")>;
336 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSLLWrr")>;
337 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRADri")>;
338 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRADrr")>;
339 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRAWri")>;
340 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRAWrr")>;
341 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLDri")>;
342 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLDrr")>;
343 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLQri")>;
344 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLQrr")>;
345 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLWri")>;
346 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSRLWrr")>;
347 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSUBSBirr")>;
348 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSUBSWirr")>;
349 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSUBUSBirr")>;
350 def: InstRW<[SKLWriteResGroup1], (instregex "MMX_PSUBUSWirr")>;
351
352 def SKLWriteResGroup2 : SchedWriteRes<[SKLPort1]> {
353 let Latency = 1;
354 let NumMicroOps = 1;
355 let ResourceCycles = [1];
356 }
357 def: InstRW<[SKLWriteResGroup2], (instregex "MMX_MASKMOVQ64")>;
358
359 def SKLWriteResGroup3 : SchedWriteRes<[SKLPort5]> {
360 let Latency = 1;
361 let NumMicroOps = 1;
362 let ResourceCycles = [1];
363 }
364 def: InstRW<[SKLWriteResGroup3], (instregex "COMP_FST0r")>;
365 def: InstRW<[SKLWriteResGroup3], (instregex "COM_FST0r")>;
366 def: InstRW<[SKLWriteResGroup3], (instregex "INSERTPSrr")>;
367 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_MOVD64rr")>;
368 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_MOVD64to64rr")>;
369 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PALIGNR64irr")>;
370 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PSHUFBrr64")>;
371 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PSHUFWri")>;
372 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKHBWirr")>;
373 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKHDQirr")>;
374 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKHWDirr")>;
375 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKLBWirr")>;
376 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKLDQirr")>;
377 def: InstRW<[SKLWriteResGroup3], (instregex "MMX_PUNPCKLWDirr")>;
378 def: InstRW<[SKLWriteResGroup3], (instregex "MOV64toPQIrr")>;
379 def: InstRW<[SKLWriteResGroup3], (instregex "MOVDDUPrr")>;
380 def: InstRW<[SKLWriteResGroup3], (instregex "MOVDI2PDIrr")>;
381 def: InstRW<[SKLWriteResGroup3], (instregex "MOVHLPSrr")>;
382 def: InstRW<[SKLWriteResGroup3], (instregex "MOVLHPSrr")>;
383 def: InstRW<[SKLWriteResGroup3], (instregex "MOVSDrr(_REV?)")>;
384 def: InstRW<[SKLWriteResGroup3], (instregex "MOVSHDUPrr")>;
385 def: InstRW<[SKLWriteResGroup3], (instregex "MOVSLDUPrr")>;
386 def: InstRW<[SKLWriteResGroup3], (instregex "MOVUPDrr(_REV?)")>;
387 def: InstRW<[SKLWriteResGroup3], (instregex "MOVUPSrr(_REV?)")>;
388 def: InstRW<[SKLWriteResGroup3], (instregex "PACKSSDWrr")>;
389 def: InstRW<[SKLWriteResGroup3], (instregex "PACKSSWBrr")>;
390 def: InstRW<[SKLWriteResGroup3], (instregex "PACKUSDWrr")>;
391 def: InstRW<[SKLWriteResGroup3], (instregex "PACKUSWBrr")>;
392 def: InstRW<[SKLWriteResGroup3], (instregex "PALIGNRrri")>;
393 def: InstRW<[SKLWriteResGroup3], (instregex "PBLENDWrri")>;
394 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXBDrr")>;
395 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXBQrr")>;
396 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXBWrr")>;
397 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXDQrr")>;
398 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXWDrr")>;
399 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVSXWQrr")>;
400 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXBDrr")>;
401 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXBQrr")>;
402 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXBWrr")>;
403 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXDQrr")>;
404 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXWDrr")>;
405 def: InstRW<[SKLWriteResGroup3], (instregex "PMOVZXWQrr")>;
406 def: InstRW<[SKLWriteResGroup3], (instregex "PSHUFBrr")>;
407 def: InstRW<[SKLWriteResGroup3], (instregex "PSHUFDri")>;
408 def: InstRW<[SKLWriteResGroup3], (instregex "PSHUFHWri")>;
409 def: InstRW<[SKLWriteResGroup3], (instregex "PSHUFLWri")>;
410 def: InstRW<[SKLWriteResGroup3], (instregex "PSLLDQri")>;
411 def: InstRW<[SKLWriteResGroup3], (instregex "PSRLDQri")>;
412 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKHBWrr")>;
413 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKHDQrr")>;
414 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKHQDQrr")>;
415 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKHWDrr")>;
416 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKLBWrr")>;
417 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKLDQrr")>;
418 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKLQDQrr")>;
419 def: InstRW<[SKLWriteResGroup3], (instregex "PUNPCKLWDrr")>;
420 def: InstRW<[SKLWriteResGroup3], (instregex "SHUFPDrri")>;
421 def: InstRW<[SKLWriteResGroup3], (instregex "SHUFPSrri")>;
422 def: InstRW<[SKLWriteResGroup3], (instregex "UCOM_FPr")>;
423 def: InstRW<[SKLWriteResGroup3], (instregex "UCOM_Fr")>;
424 def: InstRW<[SKLWriteResGroup3], (instregex "UNPCKHPDrr")>;
425 def: InstRW<[SKLWriteResGroup3], (instregex "UNPCKHPSrr")>;
426 def: InstRW<[SKLWriteResGroup3], (instregex "UNPCKLPDrr")>;
427 def: InstRW<[SKLWriteResGroup3], (instregex "UNPCKLPSrr")>;
428 def: InstRW<[SKLWriteResGroup3], (instregex "VBROADCASTSSrr")>;
429 def: InstRW<[SKLWriteResGroup3], (instregex "VINSERTPSrr")>;
430 def: InstRW<[SKLWriteResGroup3], (instregex "VMOV64toPQIrr")>;
431 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVDDUPYrr")>;
432 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVDDUPrr")>;
433 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVDI2PDIrr")>;
434 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVHLPSrr")>;
435 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVLHPSrr")>;
436 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVSDrr(_REV?)")>;
437 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVSHDUPYrr")>;
438 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVSHDUPrr")>;
439 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVSLDUPYrr")>;
440 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVSLDUPrr")>;
441 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVUPDYrr(_REV?)")>;
442 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVUPDrr(_REV?)")>;
443 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVUPSYrr(_REV?)")>;
444 def: InstRW<[SKLWriteResGroup3], (instregex "VMOVUPSrr(_REV?)")>;
445 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKSSDWYrr")>;
446 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKSSDWrr")>;
447 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKSSWBYrr")>;
448 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKSSWBrr")>;
449 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKUSDWYrr")>;
450 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKUSDWrr")>;
451 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKUSWBYrr")>;
452 def: InstRW<[SKLWriteResGroup3], (instregex "VPACKUSWBrr")>;
453 def: InstRW<[SKLWriteResGroup3], (instregex "VPALIGNRYrri")>;
454 def: InstRW<[SKLWriteResGroup3], (instregex "VPALIGNRrri")>;
455 def: InstRW<[SKLWriteResGroup3], (instregex "VPBLENDWYrri")>;
456 def: InstRW<[SKLWriteResGroup3], (instregex "VPBLENDWrri")>;
457 def: InstRW<[SKLWriteResGroup3], (instregex "VPBROADCASTDrr")>;
458 def: InstRW<[SKLWriteResGroup3], (instregex "VPBROADCASTQrr")>;
459 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPDYri")>;
460 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPDYrr")>;
461 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPDri")>;
462 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPDrr")>;
463 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPSYri")>;
464 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPSYrr")>;
465 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPSri")>;
466 def: InstRW<[SKLWriteResGroup3], (instregex "VPERMILPSrr")>;
467 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXBDrr")>;
468 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXBQrr")>;
469 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXBWrr")>;
470 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXDQrr")>;
471 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXWDrr")>;
472 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVSXWQrr")>;
473 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXBDrr")>;
474 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXBQrr")>;
475 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXBWrr")>;
476 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXDQrr")>;
477 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXWDrr")>;
478 def: InstRW<[SKLWriteResGroup3], (instregex "VPMOVZXWQrr")>;
479 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFBYrr")>;
480 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFBrr")>;
481 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFDYri")>;
482 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFDri")>;
483 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFHWYri")>;
484 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFHWri")>;
485 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFLWYri")>;
486 def: InstRW<[SKLWriteResGroup3], (instregex "VPSHUFLWri")>;
487 def: InstRW<[SKLWriteResGroup3], (instregex "VPSLLDQYri")>;
488 def: InstRW<[SKLWriteResGroup3], (instregex "VPSLLDQri")>;
489 def: InstRW<[SKLWriteResGroup3], (instregex "VPSRLDQYri")>;
490 def: InstRW<[SKLWriteResGroup3], (instregex "VPSRLDQri")>;
491 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHBWYrr")>;
492 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHBWrr")>;
493 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHDQYrr")>;
494 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHDQrr")>;
495 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHQDQYrr")>;
496 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHQDQrr")>;
497 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHWDYrr")>;
498 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKHWDrr")>;
499 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLBWYrr")>;
500 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLBWrr")>;
501 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLDQYrr")>;
502 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLDQrr")>;
503 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLQDQYrr")>;
504 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLQDQrr")>;
505 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLWDYrr")>;
506 def: InstRW<[SKLWriteResGroup3], (instregex "VPUNPCKLWDrr")>;
507 def: InstRW<[SKLWriteResGroup3], (instregex "VSHUFPDYrri")>;
508 def: InstRW<[SKLWriteResGroup3], (instregex "VSHUFPDrri")>;
509 def: InstRW<[SKLWriteResGroup3], (instregex "VSHUFPSYrri")>;
510 def: InstRW<[SKLWriteResGroup3], (instregex "VSHUFPSrri")>;
511 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKHPDYrr")>;
512 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKHPDrr")>;
513 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKHPSYrr")>;
514 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKHPSrr")>;
515 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKLPDYrr")>;
516 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKLPDrr")>;
517 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKLPSYrr")>;
518 def: InstRW<[SKLWriteResGroup3], (instregex "VUNPCKLPSrr")>;
519
520 def SKLWriteResGroup4 : SchedWriteRes<[SKLPort6]> {
521 let Latency = 1;
522 let NumMicroOps = 1;
523 let ResourceCycles = [1];
524 }
525 def: InstRW<[SKLWriteResGroup4], (instregex "JMP(16|32|64)r")>;
526
527 def SKLWriteResGroup5 : SchedWriteRes<[SKLPort01]> {
528 let Latency = 1;
529 let NumMicroOps = 1;
530 let ResourceCycles = [1];
531 }
532 def: InstRW<[SKLWriteResGroup5], (instregex "PABSBrr")>;
533 def: InstRW<[SKLWriteResGroup5], (instregex "PABSDrr")>;
534 def: InstRW<[SKLWriteResGroup5], (instregex "PABSWrr")>;
535 def: InstRW<[SKLWriteResGroup5], (instregex "PADDSBrr")>;
536 def: InstRW<[SKLWriteResGroup5], (instregex "PADDSWrr")>;
537 def: InstRW<[SKLWriteResGroup5], (instregex "PADDUSBrr")>;
538 def: InstRW<[SKLWriteResGroup5], (instregex "PADDUSWrr")>;
539 def: InstRW<[SKLWriteResGroup5], (instregex "PAVGBrr")>;
540 def: InstRW<[SKLWriteResGroup5], (instregex "PAVGWrr")>;
541 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPEQBrr")>;
542 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPEQDrr")>;
543 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPEQQrr")>;
544 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPEQWrr")>;
545 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPGTBrr")>;
546 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPGTDrr")>;
547 def: InstRW<[SKLWriteResGroup5], (instregex "PCMPGTWrr")>;
548 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXSBrr")>;
549 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXSDrr")>;
550 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXSWrr")>;
551 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXUBrr")>;
552 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXUDrr")>;
553 def: InstRW<[SKLWriteResGroup5], (instregex "PMAXUWrr")>;
554 def: InstRW<[SKLWriteResGroup5], (instregex "PMINSBrr")>;
555 def: InstRW<[SKLWriteResGroup5], (instregex "PMINSDrr")>;
556 def: InstRW<[SKLWriteResGroup5], (instregex "PMINSWrr")>;
557 def: InstRW<[SKLWriteResGroup5], (instregex "PMINUBrr")>;
558 def: InstRW<[SKLWriteResGroup5], (instregex "PMINUDrr")>;
559 def: InstRW<[SKLWriteResGroup5], (instregex "PMINUWrr")>;
560 def: InstRW<[SKLWriteResGroup5], (instregex "PSIGNBrr128")>;
561 def: InstRW<[SKLWriteResGroup5], (instregex "PSIGNDrr128")>;
562 def: InstRW<[SKLWriteResGroup5], (instregex "PSIGNWrr128")>;
563 def: InstRW<[SKLWriteResGroup5], (instregex "PSLLDri")>;
564 def: InstRW<[SKLWriteResGroup5], (instregex "PSLLQri")>;
565 def: InstRW<[SKLWriteResGroup5], (instregex "PSLLWri")>;
566 def: InstRW<[SKLWriteResGroup5], (instregex "PSRADri")>;
567 def: InstRW<[SKLWriteResGroup5], (instregex "PSRAWri")>;
568 def: InstRW<[SKLWriteResGroup5], (instregex "PSRLDri")>;
569 def: InstRW<[SKLWriteResGroup5], (instregex "PSRLQri")>;
570 def: InstRW<[SKLWriteResGroup5], (instregex "PSRLWri")>;
571 def: InstRW<[SKLWriteResGroup5], (instregex "PSUBSBrr")>;
572 def: InstRW<[SKLWriteResGroup5], (instregex "PSUBSWrr")>;
573 def: InstRW<[SKLWriteResGroup5], (instregex "PSUBUSBrr")>;
574 def: InstRW<[SKLWriteResGroup5], (instregex "PSUBUSWrr")>;
575 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSBYrr")>;
576 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSBrr")>;
577 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSDYrr")>;
578 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSDrr")>;
579 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSWYrr")>;
580 def: InstRW<[SKLWriteResGroup5], (instregex "VPABSWrr")>;
581 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDSBYrr")>;
582 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDSBrr")>;
583 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDSWYrr")>;
584 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDSWrr")>;
585 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDUSBYrr")>;
586 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDUSBrr")>;
587 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDUSWYrr")>;
588 def: InstRW<[SKLWriteResGroup5], (instregex "VPADDUSWrr")>;
589 def: InstRW<[SKLWriteResGroup5], (instregex "VPAVGBYrr")>;
590 def: InstRW<[SKLWriteResGroup5], (instregex "VPAVGBrr")>;
591 def: InstRW<[SKLWriteResGroup5], (instregex "VPAVGWYrr")>;
592 def: InstRW<[SKLWriteResGroup5], (instregex "VPAVGWrr")>;
593 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQBYrr")>;
594 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQBrr")>;
595 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQDYrr")>;
596 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQDrr")>;
597 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQQYrr")>;
598 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQQrr")>;
599 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQWYrr")>;
600 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPEQWrr")>;
601 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTBYrr")>;
602 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTBrr")>;
603 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTDYrr")>;
604 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTDrr")>;
605 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTWYrr")>;
606 def: InstRW<[SKLWriteResGroup5], (instregex "VPCMPGTWrr")>;
607 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSBYrr")>;
608 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSBrr")>;
609 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSDYrr")>;
610 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSDrr")>;
611 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSWYrr")>;
612 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXSWrr")>;
613 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUBYrr")>;
614 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUBrr")>;
615 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUDYrr")>;
616 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUDrr")>;
617 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUWYrr")>;
618 def: InstRW<[SKLWriteResGroup5], (instregex "VPMAXUWrr")>;
619 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSBYrr")>;
620 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSBrr")>;
621 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSDYrr")>;
622 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSDrr")>;
623 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSWYrr")>;
624 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINSWrr")>;
625 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUBYrr")>;
626 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUBrr")>;
627 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUDYrr")>;
628 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUDrr")>;
629 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUWYrr")>;
630 def: InstRW<[SKLWriteResGroup5], (instregex "VPMINUWrr")>;
631 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNBYrr256")>;
632 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNBrr128")>;
633 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNDYrr256")>;
634 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNDrr128")>;
635 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNWYrr256")>;
636 def: InstRW<[SKLWriteResGroup5], (instregex "VPSIGNWrr128")>;
637 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLDYri")>;
638 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLDri")>;
639 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLQYri")>;
640 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLQri")>;
641 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLVDYrr")>;
642 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLVDrr")>;
643 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLVQYrr")>;
644 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLVQrr")>;
645 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLWYri")>;
646 def: InstRW<[SKLWriteResGroup5], (instregex "VPSLLWri")>;
647 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRADYri")>;
648 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRADri")>;
649 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRAVDYrr")>;
650 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRAVDrr")>;
651 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRAWYri")>;
652 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRAWri")>;
653 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLDYri")>;
654 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLDri")>;
655 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLQYri")>;
656 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLQri")>;
657 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLVDYrr")>;
658 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLVDrr")>;
659 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLVQYrr")>;
660 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLVQrr")>;
661 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLWYri")>;
662 def: InstRW<[SKLWriteResGroup5], (instregex "VPSRLWri")>;
663 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBSBYrr")>;
664 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBSBrr")>;
665 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBSWYrr")>;
666 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBSWrr")>;
667 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBUSBYrr")>;
668 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBUSBrr")>;
669 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBUSWYrr")>;
670 def: InstRW<[SKLWriteResGroup5], (instregex "VPSUBUSWrr")>;
671
672 def SKLWriteResGroup6 : SchedWriteRes<[SKLPort05]> {
673 let Latency = 1;
674 let NumMicroOps = 1;
675 let ResourceCycles = [1];
676 }
677 def: InstRW<[SKLWriteResGroup6], (instregex "FINCSTP")>;
678 def: InstRW<[SKLWriteResGroup6], (instregex "FNOP")>;
679 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_MOVQ64rr(_REV?)")>;
680 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PABSBrr64")>;
681 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PABSDrr64")>;
682 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PABSWrr64")>;
683 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PADDBirr")>;
684 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PADDDirr")>;
685 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PADDQirr")>;
686 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PADDWirr")>;
687 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PANDNirr")>;
688 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PANDirr")>;
689 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PORirr")>;
690 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSIGNBrr64")>;
691 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSIGNDrr64")>;
692 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSIGNWrr64")>;
693 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSUBBirr")>;
694 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSUBDirr")>;
695 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSUBQirr")>;
696 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PSUBWirr")>;
697 def: InstRW<[SKLWriteResGroup6], (instregex "MMX_PXORirr")>;
698
699 def SKLWriteResGroup7 : SchedWriteRes<[SKLPort06]> {
700 let Latency = 1;
701 let NumMicroOps = 1;
702 let ResourceCycles = [1];
703 }
704 def: InstRW<[SKLWriteResGroup7], (instregex "ADC(16|32|64)ri8")>;
705 def: InstRW<[SKLWriteResGroup7], (instregex "ADC(16|32|64)rr(_REV?)")>;
706 def: InstRW<[SKLWriteResGroup7], (instregex "ADC8rr(_REV?)")>;
707 def: InstRW<[SKLWriteResGroup7], (instregex "ADCX32rr")>;
708 def: InstRW<[SKLWriteResGroup7], (instregex "ADCX64rr")>;
709 def: InstRW<[SKLWriteResGroup7], (instregex "ADOX32rr")>;
710 def: InstRW<[SKLWriteResGroup7], (instregex "ADOX64rr")>;
711 def: InstRW<[SKLWriteResGroup7], (instregex "BT(16|32|64)ri8")>;
712 def: InstRW<[SKLWriteResGroup7], (instregex "BT(16|32|64)rr")>;
713 def: InstRW<[SKLWriteResGroup7], (instregex "BTC(16|32|64)ri8")>;
714 def: InstRW<[SKLWriteResGroup7], (instregex "BTC(16|32|64)rr")>;
715 def: InstRW<[SKLWriteResGroup7], (instregex "BTR(16|32|64)ri8")>;
716 def: InstRW<[SKLWriteResGroup7], (instregex "BTR(16|32|64)rr")>;
717 def: InstRW<[SKLWriteResGroup7], (instregex "BTS(16|32|64)ri8")>;
718 def: InstRW<[SKLWriteResGroup7], (instregex "BTS(16|32|64)rr")>;
719 def: InstRW<[SKLWriteResGroup7], (instregex "CDQ")>;
720 def: InstRW<[SKLWriteResGroup7], (instregex "CLAC")>;
721 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVAE(16|32|64)rr")>;
722 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVB(16|32|64)rr")>;
723 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVE(16|32|64)rr")>;
724 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVG(16|32|64)rr")>;
725 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVGE(16|32|64)rr")>;
726 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVL(16|32|64)rr")>;
727 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVLE(16|32|64)rr")>;
728 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVNE(16|32|64)rr")>;
729 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVNO(16|32|64)rr")>;
730 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVNP(16|32|64)rr")>;
731 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVNS(16|32|64)rr")>;
732 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVO(16|32|64)rr")>;
733 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVP(16|32|64)rr")>;
734 def: InstRW<[SKLWriteResGroup7], (instregex "CMOVS(16|32|64)rr")>;
735 def: InstRW<[SKLWriteResGroup7], (instregex "CQO")>;
736 def: InstRW<[SKLWriteResGroup7], (instregex "JAE_1")>;
737 def: InstRW<[SKLWriteResGroup7], (instregex "JAE_4")>;
738 def: InstRW<[SKLWriteResGroup7], (instregex "JA_1")>;
739 def: InstRW<[SKLWriteResGroup7], (instregex "JA_4")>;
740 def: InstRW<[SKLWriteResGroup7], (instregex "JBE_1")>;
741 def: InstRW<[SKLWriteResGroup7], (instregex "JBE_4")>;
742 def: InstRW<[SKLWriteResGroup7], (instregex "JB_1")>;
743 def: InstRW<[SKLWriteResGroup7], (instregex "JB_4")>;
744 def: InstRW<[SKLWriteResGroup7], (instregex "JE_1")>;
745 def: InstRW<[SKLWriteResGroup7], (instregex "JE_4")>;
746 def: InstRW<[SKLWriteResGroup7], (instregex "JGE_1")>;
747 def: InstRW<[SKLWriteResGroup7], (instregex "JGE_4")>;
748 def: InstRW<[SKLWriteResGroup7], (instregex "JG_1")>;
749 def: InstRW<[SKLWriteResGroup7], (instregex "JG_4")>;
750 def: InstRW<[SKLWriteResGroup7], (instregex "JLE_1")>;
751 def: InstRW<[SKLWriteResGroup7], (instregex "JLE_4")>;
752 def: InstRW<[SKLWriteResGroup7], (instregex "JL_1")>;
753 def: InstRW<[SKLWriteResGroup7], (instregex "JL_4")>;
754 def: InstRW<[SKLWriteResGroup7], (instregex "JMP_1")>;
755 def: InstRW<[SKLWriteResGroup7], (instregex "JMP_4")>;
756 def: InstRW<[SKLWriteResGroup7], (instregex "JNE_1")>;
757 def: InstRW<[SKLWriteResGroup7], (instregex "JNE_4")>;
758 def: InstRW<[SKLWriteResGroup7], (instregex "JNO_1")>;
759 def: InstRW<[SKLWriteResGroup7], (instregex "JNO_4")>;
760 def: InstRW<[SKLWriteResGroup7], (instregex "JNP_1")>;
761 def: InstRW<[SKLWriteResGroup7], (instregex "JNP_4")>;
762 def: InstRW<[SKLWriteResGroup7], (instregex "JNS_1")>;
763 def: InstRW<[SKLWriteResGroup7], (instregex "JNS_4")>;
764 def: InstRW<[SKLWriteResGroup7], (instregex "JO_1")>;
765 def: InstRW<[SKLWriteResGroup7], (instregex "JO_4")>;
766 def: InstRW<[SKLWriteResGroup7], (instregex "JP_1")>;
767 def: InstRW<[SKLWriteResGroup7], (instregex "JP_4")>;
768 def: InstRW<[SKLWriteResGroup7], (instregex "JS_1")>;
769 def: InstRW<[SKLWriteResGroup7], (instregex "JS_4")>;
770 def: InstRW<[SKLWriteResGroup7], (instregex "RORX32ri")>;
771 def: InstRW<[SKLWriteResGroup7], (instregex "RORX64ri")>;
772 def: InstRW<[SKLWriteResGroup7], (instregex "SAR(16|32|64)r1")>;
773 def: InstRW<[SKLWriteResGroup7], (instregex "SAR(16|32|64)ri")>;
774 def: InstRW<[SKLWriteResGroup7], (instregex "SAR8r1")>;
775 def: InstRW<[SKLWriteResGroup7], (instregex "SAR8ri")>;
776 def: InstRW<[SKLWriteResGroup7], (instregex "SARX32rr")>;
777 def: InstRW<[SKLWriteResGroup7], (instregex "SARX64rr")>;
778 def: InstRW<[SKLWriteResGroup7], (instregex "SBB(16|32|64)ri8")>;
779 def: InstRW<[SKLWriteResGroup7], (instregex "SBB(16|32|64)rr(_REV?)")>;
780 def: InstRW<[SKLWriteResGroup7], (instregex "SBB8rr(_REV?)")>;
781 def: InstRW<[SKLWriteResGroup7], (instregex "SETAEr")>;
782 def: InstRW<[SKLWriteResGroup7], (instregex "SETBr")>;
783 def: InstRW<[SKLWriteResGroup7], (instregex "SETEr")>;
784 def: InstRW<[SKLWriteResGroup7], (instregex "SETGEr")>;
785 def: InstRW<[SKLWriteResGroup7], (instregex "SETGr")>;
786 def: InstRW<[SKLWriteResGroup7], (instregex "SETLEr")>;
787 def: InstRW<[SKLWriteResGroup7], (instregex "SETLr")>;
788 def: InstRW<[SKLWriteResGroup7], (instregex "SETNEr")>;
789 def: InstRW<[SKLWriteResGroup7], (instregex "SETNOr")>;
790 def: InstRW<[SKLWriteResGroup7], (instregex "SETNPr")>;
791 def: InstRW<[SKLWriteResGroup7], (instregex "SETNSr")>;
792 def: InstRW<[SKLWriteResGroup7], (instregex "SETOr")>;
793 def: InstRW<[SKLWriteResGroup7], (instregex "SETPr")>;
794 def: InstRW<[SKLWriteResGroup7], (instregex "SETSr")>;
795 def: InstRW<[SKLWriteResGroup7], (instregex "SHL(16|32|64)r1")>;
796 def: InstRW<[SKLWriteResGroup7], (instregex "SHL(16|32|64)ri")>;
797 def: InstRW<[SKLWriteResGroup7], (instregex "SHL8r1")>;
798 def: InstRW<[SKLWriteResGroup7], (instregex "SHL8ri")>;
799 def: InstRW<[SKLWriteResGroup7], (instregex "SHLX32rr")>;
800 def: InstRW<[SKLWriteResGroup7], (instregex "SHLX64rr")>;
801 def: InstRW<[SKLWriteResGroup7], (instregex "SHR(16|32|64)r1")>;
802 def: InstRW<[SKLWriteResGroup7], (instregex "SHR(16|32|64)ri")>;
803 def: InstRW<[SKLWriteResGroup7], (instregex "SHR8r1")>;
804 def: InstRW<[SKLWriteResGroup7], (instregex "SHR8ri")>;
805 def: InstRW<[SKLWriteResGroup7], (instregex "SHRX32rr")>;
806 def: InstRW<[SKLWriteResGroup7], (instregex "SHRX64rr")>;
807 def: InstRW<[SKLWriteResGroup7], (instregex "STAC")>;
808
809 def SKLWriteResGroup8 : SchedWriteRes<[SKLPort15]> {
810 let Latency = 1;
811 let NumMicroOps = 1;
812 let ResourceCycles = [1];
813 }
814 def: InstRW<[SKLWriteResGroup8], (instregex "ANDN32rr")>;
815 def: InstRW<[SKLWriteResGroup8], (instregex "ANDN64rr")>;
816 def: InstRW<[SKLWriteResGroup8], (instregex "BLSI32rr")>;
817 def: InstRW<[SKLWriteResGroup8], (instregex "BLSI64rr")>;
818 def: InstRW<[SKLWriteResGroup8], (instregex "BLSMSK32rr")>;
819 def: InstRW<[SKLWriteResGroup8], (instregex "BLSMSK64rr")>;
820 def: InstRW<[SKLWriteResGroup8], (instregex "BLSR32rr")>;
821 def: InstRW<[SKLWriteResGroup8], (instregex "BLSR64rr")>;
822 def: InstRW<[SKLWriteResGroup8], (instregex "BZHI32rr")>;
823 def: InstRW<[SKLWriteResGroup8], (instregex "BZHI64rr")>;
824 def: InstRW<[SKLWriteResGroup8], (instregex "LEA(16|32|64)r")>;
825
826 def SKLWriteResGroup9 : SchedWriteRes<[SKLPort015]> {
827 let Latency = 1;
828 let NumMicroOps = 1;
829 let ResourceCycles = [1];
830 }
831 def: InstRW<[SKLWriteResGroup9], (instregex "ANDNPDrr")>;
832 def: InstRW<[SKLWriteResGroup9], (instregex "ANDNPSrr")>;
833 def: InstRW<[SKLWriteResGroup9], (instregex "ANDPDrr")>;
834 def: InstRW<[SKLWriteResGroup9], (instregex "ANDPSrr")>;
835 def: InstRW<[SKLWriteResGroup9], (instregex "BLENDPDrri")>;
836 def: InstRW<[SKLWriteResGroup9], (instregex "BLENDPSrri")>;
837 def: InstRW<[SKLWriteResGroup9], (instregex "MMX_MOVD64from64rr")>;
838 def: InstRW<[SKLWriteResGroup9], (instregex "MOVAPDrr(_REV?)")>;
839 def: InstRW<[SKLWriteResGroup9], (instregex "MOVAPSrr(_REV?)")>;
840 def: InstRW<[SKLWriteResGroup9], (instregex "MOVDQArr(_REV?)")>;
841 def: InstRW<[SKLWriteResGroup9], (instregex "MOVDQUrr(_REV?)")>;
842 def: InstRW<[SKLWriteResGroup9], (instregex "MOVPQI2QIrr")>;
843 def: InstRW<[SKLWriteResGroup9], (instregex "MOVSSrr(_REV?)")>;
844 def: InstRW<[SKLWriteResGroup9], (instregex "ORPDrr")>;
845 def: InstRW<[SKLWriteResGroup9], (instregex "ORPSrr")>;
846 def: InstRW<[SKLWriteResGroup9], (instregex "PADDBrr")>;
847 def: InstRW<[SKLWriteResGroup9], (instregex "PADDDrr")>;
848 def: InstRW<[SKLWriteResGroup9], (instregex "PADDQrr")>;
849 def: InstRW<[SKLWriteResGroup9], (instregex "PADDWrr")>;
850 def: InstRW<[SKLWriteResGroup9], (instregex "PANDNrr")>;
851 def: InstRW<[SKLWriteResGroup9], (instregex "PANDrr")>;
852 def: InstRW<[SKLWriteResGroup9], (instregex "PORrr")>;
853 def: InstRW<[SKLWriteResGroup9], (instregex "PSUBBrr")>;
854 def: InstRW<[SKLWriteResGroup9], (instregex "PSUBDrr")>;
855 def: InstRW<[SKLWriteResGroup9], (instregex "PSUBQrr")>;
856 def: InstRW<[SKLWriteResGroup9], (instregex "PSUBWrr")>;
857 def: InstRW<[SKLWriteResGroup9], (instregex "PXORrr")>;
858 def: InstRW<[SKLWriteResGroup9], (instregex "VANDNPDYrr")>;
859 def: InstRW<[SKLWriteResGroup9], (instregex "VANDNPDrr")>;
860 def: InstRW<[SKLWriteResGroup9], (instregex "VANDNPSYrr")>;
861 def: InstRW<[SKLWriteResGroup9], (instregex "VANDNPSrr")>;
862 def: InstRW<[SKLWriteResGroup9], (instregex "VANDPDYrr")>;
863 def: InstRW<[SKLWriteResGroup9], (instregex "VANDPDrr")>;
864 def: InstRW<[SKLWriteResGroup9], (instregex "VANDPSYrr")>;
865 def: InstRW<[SKLWriteResGroup9], (instregex "VANDPSrr")>;
866 def: InstRW<[SKLWriteResGroup9], (instregex "VBLENDPDYrri")>;
867 def: InstRW<[SKLWriteResGroup9], (instregex "VBLENDPDrri")>;
868 def: InstRW<[SKLWriteResGroup9], (instregex "VBLENDPSYrri")>;
869 def: InstRW<[SKLWriteResGroup9], (instregex "VBLENDPSrri")>;
870 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVAPDYrr(_REV?)")>;
871 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVAPDrr(_REV?)")>;
872 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVAPSYrr(_REV?)")>;
873 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVAPSrr(_REV?)")>;
874 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVDQAYrr(_REV?)")>;
875 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVDQArr(_REV?)")>;
876 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVDQUYrr(_REV?)")>;
877 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVDQUrr(_REV?)")>;
878 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVPQI2QIrr")>;
879 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVSSrr(_REV?)")>;
880 def: InstRW<[SKLWriteResGroup9], (instregex "VMOVZPQILo2PQIrr")>;
881 def: InstRW<[SKLWriteResGroup9], (instregex "VORPDYrr")>;
882 def: InstRW<[SKLWriteResGroup9], (instregex "VORPDrr")>;
883 def: InstRW<[SKLWriteResGroup9], (instregex "VORPSYrr")>;
884 def: InstRW<[SKLWriteResGroup9], (instregex "VORPSrr")>;
885 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDBYrr")>;
886 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDBrr")>;
887 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDDYrr")>;
888 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDDrr")>;
889 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDQYrr")>;
890 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDQrr")>;
891 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDWYrr")>;
892 def: InstRW<[SKLWriteResGroup9], (instregex "VPADDWrr")>;
893 def: InstRW<[SKLWriteResGroup9], (instregex "VPANDNYrr")>;
894 def: InstRW<[SKLWriteResGroup9], (instregex "VPANDNrr")>;
895 def: InstRW<[SKLWriteResGroup9], (instregex "VPANDYrr")>;
896 def: InstRW<[SKLWriteResGroup9], (instregex "VPANDrr")>;
897 def: InstRW<[SKLWriteResGroup9], (instregex "VPBLENDDYrri")>;
898 def: InstRW<[SKLWriteResGroup9], (instregex "VPBLENDDrri")>;
899 def: InstRW<[SKLWriteResGroup9], (instregex "VPORYrr")>;
900 def: InstRW<[SKLWriteResGroup9], (instregex "VPORrr")>;
901 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBBYrr")>;
902 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBBrr")>;
903 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBDYrr")>;
904 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBDrr")>;
905 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBQYrr")>;
906 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBQrr")>;
907 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBWYrr")>;
908 def: InstRW<[SKLWriteResGroup9], (instregex "VPSUBWrr")>;
909 def: InstRW<[SKLWriteResGroup9], (instregex "VPXORYrr")>;
910 def: InstRW<[SKLWriteResGroup9], (instregex "VPXORrr")>;
911 def: InstRW<[SKLWriteResGroup9], (instregex "VXORPDYrr")>;
912 def: InstRW<[SKLWriteResGroup9], (instregex "VXORPDrr")>;
913 def: InstRW<[SKLWriteResGroup9], (instregex "VXORPSYrr")>;
914 def: InstRW<[SKLWriteResGroup9], (instregex "VXORPSrr")>;
915 def: InstRW<[SKLWriteResGroup9], (instregex "XORPDrr")>;
916 def: InstRW<[SKLWriteResGroup9], (instregex "XORPSrr")>;
917
918 def SKLWriteResGroup10 : SchedWriteRes<[SKLPort0156]> {
919 let Latency = 1;
920 let NumMicroOps = 1;
921 let ResourceCycles = [1];
922 }
923 def: InstRW<[SKLWriteResGroup10], (instregex "ADD(16|32|64)ri8")>;
924 def: InstRW<[SKLWriteResGroup10], (instregex "ADD(16|32|64)rr(_REV?)")>;
925 def: InstRW<[SKLWriteResGroup10], (instregex "ADD8i8")>;
926 def: InstRW<[SKLWriteResGroup10], (instregex "ADD8ri")>;
927 def: InstRW<[SKLWriteResGroup10], (instregex "ADD8rr(_REV?)")>;
928 def: InstRW<[SKLWriteResGroup10], (instregex "AND(16|32|64)ri8")>;
929 def: InstRW<[SKLWriteResGroup10], (instregex "AND(16|32|64)rr(_REV?)")>;
930 def: InstRW<[SKLWriteResGroup10], (instregex "AND8i8")>;
931 def: InstRW<[SKLWriteResGroup10], (instregex "AND8ri")>;
932 def: InstRW<[SKLWriteResGroup10], (instregex "AND8rr(_REV?)")>;
933 def: InstRW<[SKLWriteResGroup10], (instregex "CBW")>;
934 def: InstRW<[SKLWriteResGroup10], (instregex "CLC")>;
935 def: InstRW<[SKLWriteResGroup10], (instregex "CMC")>;
936 def: InstRW<[SKLWriteResGroup10], (instregex "CMP(16|32|64)ri8")>;
937 def: InstRW<[SKLWriteResGroup10], (instregex "CMP(16|32|64)rr(_REV?)")>;
938 def: InstRW<[SKLWriteResGroup10], (instregex "CMP8i8")>;
939 def: InstRW<[SKLWriteResGroup10], (instregex "CMP8ri")>;
940 def: InstRW<[SKLWriteResGroup10], (instregex "CMP8rr(_REV?)")>;
941 def: InstRW<[SKLWriteResGroup10], (instregex "CWDE")>;
942 def: InstRW<[SKLWriteResGroup10], (instregex "DEC(16|32|64)r")>;
943 def: InstRW<[SKLWriteResGroup10], (instregex "DEC8r")>;
944 def: InstRW<[SKLWriteResGroup10], (instregex "INC(16|32|64)r")>;
945 def: InstRW<[SKLWriteResGroup10], (instregex "INC8r")>;
946 def: InstRW<[SKLWriteResGroup10], (instregex "LAHF")>;
947 def: InstRW<[SKLWriteResGroup10], (instregex "MOV(16|32|64)rr(_REV?)")>;
948 def: InstRW<[SKLWriteResGroup10], (instregex "MOV8ri(_alt?)")>;
949 def: InstRW<[SKLWriteResGroup10], (instregex "MOV8rr(_REV?)")>;
950 def: InstRW<[SKLWriteResGroup10], (instregex "MOVSX(16|32|64)rr16")>;
951 def: InstRW<[SKLWriteResGroup10], (instregex "MOVSX(16|32|64)rr32")>;
952 def: InstRW<[SKLWriteResGroup10], (instregex "MOVSX(16|32|64)rr8")>;
953 def: InstRW<[SKLWriteResGroup10], (instregex "MOVZX(16|32|64)rr16")>;
954 def: InstRW<[SKLWriteResGroup10], (instregex "MOVZX(16|32|64)rr8")>;
955 def: InstRW<[SKLWriteResGroup10], (instregex "NEG(16|32|64)r")>;
956 def: InstRW<[SKLWriteResGroup10], (instregex "NEG8r")>;
957 def: InstRW<[SKLWriteResGroup10], (instregex "NOOP")>;
958 def: InstRW<[SKLWriteResGroup10], (instregex "NOT(16|32|64)r")>;
959 def: InstRW<[SKLWriteResGroup10], (instregex "NOT8r")>;
960 def: InstRW<[SKLWriteResGroup10], (instregex "OR(16|32|64)ri8")>;
961 def: InstRW<[SKLWriteResGroup10], (instregex "OR(16|32|64)rr(_REV?)")>;
962 def: InstRW<[SKLWriteResGroup10], (instregex "OR8i8")>;
963 def: InstRW<[SKLWriteResGroup10], (instregex "OR8ri")>;
964 def: InstRW<[SKLWriteResGroup10], (instregex "OR8rr(_REV?)")>;
965 def: InstRW<[SKLWriteResGroup10], (instregex "SAHF")>;
966 def: InstRW<[SKLWriteResGroup10], (instregex "SGDT64m")>;
967 def: InstRW<[SKLWriteResGroup10], (instregex "SIDT64m")>;
968 def: InstRW<[SKLWriteResGroup10], (instregex "SLDT64m")>;
969 def: InstRW<[SKLWriteResGroup10], (instregex "SMSW16m")>;
970 def: InstRW<[SKLWriteResGroup10], (instregex "STC")>;
971 def: InstRW<[SKLWriteResGroup10], (instregex "STRm")>;
972 def: InstRW<[SKLWriteResGroup10], (instregex "SUB(16|32|64)ri8")>;
973 def: InstRW<[SKLWriteResGroup10], (instregex "SUB(16|32|64)rr(_REV?)")>;
974 def: InstRW<[SKLWriteResGroup10], (instregex "SUB8i8")>;
975 def: InstRW<[SKLWriteResGroup10], (instregex "SUB8ri")>;
976 def: InstRW<[SKLWriteResGroup10], (instregex "SUB8rr(_REV?)")>;
977 def: InstRW<[SKLWriteResGroup10], (instregex "SYSCALL")>;
978 def: InstRW<[SKLWriteResGroup10], (instregex "TEST(16|32|64)rr")>;
979 def: InstRW<[SKLWriteResGroup10], (instregex "TEST8i8")>;
980 def: InstRW<[SKLWriteResGroup10], (instregex "TEST8ri")>;
981 def: InstRW<[SKLWriteResGroup10], (instregex "TEST8rr")>;
982 def: InstRW<[SKLWriteResGroup10], (instregex "XCHG(16|32|64)rr")>;
983 def: InstRW<[SKLWriteResGroup10], (instregex "XOR(16|32|64)ri8")>;
984 def: InstRW<[SKLWriteResGroup10], (instregex "XOR(16|32|64)rr(_REV?)")>;
985 def: InstRW<[SKLWriteResGroup10], (instregex "XOR8i8")>;
986 def: InstRW<[SKLWriteResGroup10], (instregex "XOR8ri")>;
987 def: InstRW<[SKLWriteResGroup10], (instregex "XOR8rr(_REV?)")>;
988
989 def SKLWriteResGroup11 : SchedWriteRes<[SKLPort4,SKLPort237]> {
990 let Latency = 1;
991 let NumMicroOps = 2;
992 let ResourceCycles = [1,1];
993 }
994 def: InstRW<[SKLWriteResGroup11], (instregex "FBSTPm")>;
995 def: InstRW<[SKLWriteResGroup11], (instregex "MMX_MOVD64from64rm")>;
996 def: InstRW<[SKLWriteResGroup11], (instregex "MMX_MOVD64mr")>;
997 def: InstRW<[SKLWriteResGroup11], (instregex "MMX_MOVNTQmr")>;
998 def: InstRW<[SKLWriteResGroup11], (instregex "MMX_MOVQ64mr")>;
999 def: InstRW<[SKLWriteResGroup11], (instregex "MOV(16|32|64)mr")>;
1000 def: InstRW<[SKLWriteResGroup11], (instregex "MOV8mi")>;
1001 def: InstRW<[SKLWriteResGroup11], (instregex "MOV8mr")>;
1002 def: InstRW<[SKLWriteResGroup11], (instregex "MOVAPDmr")>;
1003 def: InstRW<[SKLWriteResGroup11], (instregex "MOVAPSmr")>;
1004 def: InstRW<[SKLWriteResGroup11], (instregex "MOVDQAmr")>;
1005 def: InstRW<[SKLWriteResGroup11], (instregex "MOVDQUmr")>;
1006 def: InstRW<[SKLWriteResGroup11], (instregex "MOVHPDmr")>;
1007 def: InstRW<[SKLWriteResGroup11], (instregex "MOVHPSmr")>;
1008 def: InstRW<[SKLWriteResGroup11], (instregex "MOVLPDmr")>;
1009 def: InstRW<[SKLWriteResGroup11], (instregex "MOVLPSmr")>;
1010 def: InstRW<[SKLWriteResGroup11], (instregex "MOVNTDQmr")>;
1011 def: InstRW<[SKLWriteResGroup11], (instregex "MOVNTI_64mr")>;
1012 def: InstRW<[SKLWriteResGroup11], (instregex "MOVNTImr")>;
1013 def: InstRW<[SKLWriteResGroup11], (instregex "MOVNTPDmr")>;
1014 def: InstRW<[SKLWriteResGroup11], (instregex "MOVNTPSmr")>;
1015 def: InstRW<[SKLWriteResGroup11], (instregex "MOVPDI2DImr")>;
1016 def: InstRW<[SKLWriteResGroup11], (instregex "MOVPQI2QImr")>;
1017 def: InstRW<[SKLWriteResGroup11], (instregex "MOVPQIto64mr")>;
1018 def: InstRW<[SKLWriteResGroup11], (instregex "MOVSSmr")>;
1019 def: InstRW<[SKLWriteResGroup11], (instregex "MOVUPDmr")>;
1020 def: InstRW<[SKLWriteResGroup11], (instregex "MOVUPSmr")>;
1021 def: InstRW<[SKLWriteResGroup11], (instregex "ST_FP32m")>;
1022 def: InstRW<[SKLWriteResGroup11], (instregex "ST_FP64m")>;
1023 def: InstRW<[SKLWriteResGroup11], (instregex "ST_FP80m")>;
1024 def: InstRW<[SKLWriteResGroup11], (instregex "VEXTRACTF128mr")>;
1025 def: InstRW<[SKLWriteResGroup11], (instregex "VEXTRACTI128mr")>;
1026 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVAPDYmr")>;
1027 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVAPDmr")>;
1028 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVAPSYmr")>;
1029 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVAPSmr")>;
1030 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVDQAYmr")>;
1031 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVDQAmr")>;
1032 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVDQUYmr")>;
1033 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVDQUmr")>;
1034 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVHPDmr")>;
1035 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVHPSmr")>;
1036 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVLPDmr")>;
1037 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVLPSmr")>;
1038 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTDQYmr")>;
1039 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTDQmr")>;
1040 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTPDYmr")>;
1041 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTPDmr")>;
1042 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTPSYmr")>;
1043 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVNTPSmr")>;
1044 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVPDI2DImr")>;
1045 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVPQI2QImr")>;
1046 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVPQIto64mr")>;
1047 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVSDmr")>;
1048 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVSSmr")>;
1049 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVUPDYmr")>;
1050 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVUPDmr")>;
1051 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVUPSYmr")>;
1052 def: InstRW<[SKLWriteResGroup11], (instregex "VMOVUPSmr")>;
1053 def: InstRW<[SKLWriteResGroup11], (instregex "VMPTRSTm")>;
1054
1055 def SKLWriteResGroup12 : SchedWriteRes<[SKLPort0]> {
1056 let Latency = 2;
1057 let NumMicroOps = 1;
1058 let ResourceCycles = [1];
1059 }
1060 def: InstRW<[SKLWriteResGroup12], (instregex "COMISDrr")>;
1061 def: InstRW<[SKLWriteResGroup12], (instregex "COMISSrr")>;
1062 def: InstRW<[SKLWriteResGroup12], (instregex "MMX_MOVD64from64rr")>;
1063 def: InstRW<[SKLWriteResGroup12], (instregex "MMX_MOVD64grr")>;
1064 def: InstRW<[SKLWriteResGroup12], (instregex "MMX_PMOVMSKBrr")>;
1065 def: InstRW<[SKLWriteResGroup12], (instregex "MOVMSKPDrr")>;
1066 def: InstRW<[SKLWriteResGroup12], (instregex "MOVMSKPSrr")>;
1067 def: InstRW<[SKLWriteResGroup12], (instregex "MOVPDI2DIrr")>;
1068 def: InstRW<[SKLWriteResGroup12], (instregex "MOVPQIto64rr")>;
1069 def: InstRW<[SKLWriteResGroup12], (instregex "PMOVMSKBrr")>;
1070 def: InstRW<[SKLWriteResGroup12], (instregex "UCOMISDrr")>;
1071 def: InstRW<[SKLWriteResGroup12], (instregex "UCOMISSrr")>;
1072 def: InstRW<[SKLWriteResGroup12], (instregex "VCOMISDrr")>;
1073 def: InstRW<[SKLWriteResGroup12], (instregex "VCOMISSrr")>;
1074 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVMSKPDYrr")>;
1075 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVMSKPDrr")>;
1076 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVMSKPSYrr")>;
1077 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVMSKPSrr")>;
1078 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVPDI2DIrr")>;
1079 def: InstRW<[SKLWriteResGroup12], (instregex "VMOVPQIto64rr")>;
1080 def: InstRW<[SKLWriteResGroup12], (instregex "VPMOVMSKBYrr")>;
1081 def: InstRW<[SKLWriteResGroup12], (instregex "VPMOVMSKBrr")>;
1082 def: InstRW<[SKLWriteResGroup12], (instregex "VTESTPDYrr")>;
1083 def: InstRW<[SKLWriteResGroup12], (instregex "VTESTPDrr")>;
1084 def: InstRW<[SKLWriteResGroup12], (instregex "VTESTPSYrr")>;
1085 def: InstRW<[SKLWriteResGroup12], (instregex "VTESTPSrr")>;
1086 def: InstRW<[SKLWriteResGroup12], (instregex "VUCOMISDrr")>;
1087 def: InstRW<[SKLWriteResGroup12], (instregex "VUCOMISSrr")>;
1088
1089 def SKLWriteResGroup13 : SchedWriteRes<[SKLPort5]> {
1090 let Latency = 2;
1091 let NumMicroOps = 2;
1092 let ResourceCycles = [2];
1093 }
1094 def: InstRW<[SKLWriteResGroup13], (instregex "MMX_MOVQ2DQrr")>;
1095 def: InstRW<[SKLWriteResGroup13], (instregex "MMX_PINSRWirri")>;
1096 def: InstRW<[SKLWriteResGroup13], (instregex "PINSRBrr")>;
1097 def: InstRW<[SKLWriteResGroup13], (instregex "PINSRDrr")>;
1098 def: InstRW<[SKLWriteResGroup13], (instregex "PINSRQrr")>;
1099 def: InstRW<[SKLWriteResGroup13], (instregex "PINSRWrri")>;
1100 def: InstRW<[SKLWriteResGroup13], (instregex "VPINSRBrr")>;
1101 def: InstRW<[SKLWriteResGroup13], (instregex "VPINSRDrr")>;
1102 def: InstRW<[SKLWriteResGroup13], (instregex "VPINSRQrr")>;
1103 def: InstRW<[SKLWriteResGroup13], (instregex "VPINSRWrri")>;
1104
1105 def SKLWriteResGroup14 : SchedWriteRes<[SKLPort05]> {
1106 let Latency = 2;
1107 let NumMicroOps = 2;
1108 let ResourceCycles = [2];
1109 }
1110 def: InstRW<[SKLWriteResGroup14], (instregex "FDECSTP")>;
1111 def: InstRW<[SKLWriteResGroup14], (instregex "MMX_MOVDQ2Qrr")>;
1112
1113 def SKLWriteResGroup15 : SchedWriteRes<[SKLPort06]> {
1114 let Latency = 2;
1115 let NumMicroOps = 2;
1116 let ResourceCycles = [2];
1117 }
1118 def: InstRW<[SKLWriteResGroup15], (instregex "CMOVA(16|32|64)rr")>;
1119 def: InstRW<[SKLWriteResGroup15], (instregex "CMOVBE(16|32|64)rr")>;
1120 def: InstRW<[SKLWriteResGroup15], (instregex "ROL(16|32|64)r1")>;
1121 def: InstRW<[SKLWriteResGroup15], (instregex "ROL(16|32|64)ri")>;
1122 def: InstRW<[SKLWriteResGroup15], (instregex "ROL8r1")>;
1123 def: InstRW<[SKLWriteResGroup15], (instregex "ROL8ri")>;
1124 def: InstRW<[SKLWriteResGroup15], (instregex "ROR(16|32|64)r1")>;
1125 def: InstRW<[SKLWriteResGroup15], (instregex "ROR(16|32|64)ri")>;
1126 def: InstRW<[SKLWriteResGroup15], (instregex "ROR8r1")>;
1127 def: InstRW<[SKLWriteResGroup15], (instregex "ROR8ri")>;
1128 def: InstRW<[SKLWriteResGroup15], (instregex "SETAr")>;
1129 def: InstRW<[SKLWriteResGroup15], (instregex "SETBEr")>;
1130
1131 def SKLWriteResGroup16 : SchedWriteRes<[SKLPort015]> {
1132 let Latency = 2;
1133 let NumMicroOps = 2;
1134 let ResourceCycles = [2];
1135 }
1136 def: InstRW<[SKLWriteResGroup16], (instregex "BLENDVPDrr0")>;
1137 def: InstRW<[SKLWriteResGroup16], (instregex "BLENDVPSrr0")>;
1138 def: InstRW<[SKLWriteResGroup16], (instregex "PBLENDVBrr0")>;
1139 def: InstRW<[SKLWriteResGroup16], (instregex "VBLENDVPDYrr")>;
1140 def: InstRW<[SKLWriteResGroup16], (instregex "VBLENDVPDrr")>;
1141 def: InstRW<[SKLWriteResGroup16], (instregex "VBLENDVPSYrr")>;
1142 def: InstRW<[SKLWriteResGroup16], (instregex "VBLENDVPSrr")>;
1143 def: InstRW<[SKLWriteResGroup16], (instregex "VPBLENDVBYrr")>;
1144 def: InstRW<[SKLWriteResGroup16], (instregex "VPBLENDVBrr")>;
1145
1146 def SKLWriteResGroup17 : SchedWriteRes<[SKLPort0156]> {
1147 let Latency = 2;
1148 let NumMicroOps = 2;
1149 let ResourceCycles = [2];
1150 }
1151 def: InstRW<[SKLWriteResGroup17], (instregex "LFENCE")>;
1152 def: InstRW<[SKLWriteResGroup17], (instregex "WAIT")>;
1153 def: InstRW<[SKLWriteResGroup17], (instregex "XGETBV")>;
1154
1155 def SKLWriteResGroup18 : SchedWriteRes<[SKLPort0,SKLPort237]> {
1156 let Latency = 2;
1157 let NumMicroOps = 2;
1158 let ResourceCycles = [1,1];
1159 }
1160 def: InstRW<[SKLWriteResGroup18], (instregex "MMX_MASKMOVQ64")>;
1161 def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVDQU")>;
1162 def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPDYmr")>;
1163 def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPDmr")>;
1164 def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPSYmr")>;
1165 def: InstRW<[SKLWriteResGroup18], (instregex "VMASKMOVPSmr")>;
1166 def: InstRW<[SKLWriteResGroup18], (instregex "VPMASKMOVDYmr")>;
1167 def: InstRW<[SKLWriteResGroup18], (instregex "VPMASKMOVDmr")>;
1168 def: InstRW<[SKLWriteResGroup18], (instregex "VPMASKMOVQYmr")>;
1169 def: InstRW<[SKLWriteResGroup18], (instregex "VPMASKMOVQmr")>;
1170
1171 def SKLWriteResGroup19 : SchedWriteRes<[SKLPort5,SKLPort01]> {
1172 let Latency = 2;
1173 let NumMicroOps = 2;
1174 let ResourceCycles = [1,1];
1175 }
1176 def: InstRW<[SKLWriteResGroup19], (instregex "PSLLDrr")>;
1177 def: InstRW<[SKLWriteResGroup19], (instregex "PSLLQrr")>;
1178 def: InstRW<[SKLWriteResGroup19], (instregex "PSLLWrr")>;
1179 def: InstRW<[SKLWriteResGroup19], (instregex "PSRADrr")>;
1180 def: InstRW<[SKLWriteResGroup19], (instregex "PSRAWrr")>;
1181 def: InstRW<[SKLWriteResGroup19], (instregex "PSRLDrr")>;
1182 def: InstRW<[SKLWriteResGroup19], (instregex "PSRLQrr")>;
1183 def: InstRW<[SKLWriteResGroup19], (instregex "PSRLWrr")>;
1184 def: InstRW<[SKLWriteResGroup19], (instregex "VPSLLDrr")>;
1185 def: InstRW<[SKLWriteResGroup19], (instregex "VPSLLQrr")>;
1186 def: InstRW<[SKLWriteResGroup19], (instregex "VPSLLWrr")>;
1187 def: InstRW<[SKLWriteResGroup19], (instregex "VPSRADrr")>;
1188 def: InstRW<[SKLWriteResGroup19], (instregex "VPSRAWrr")>;
1189 def: InstRW<[SKLWriteResGroup19], (instregex "VPSRLDrr")>;
1190 def: InstRW<[SKLWriteResGroup19], (instregex "VPSRLQrr")>;
1191 def: InstRW<[SKLWriteResGroup19], (instregex "VPSRLWrr")>;
1192
1193 def SKLWriteResGroup20 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
1194 let Latency = 2;
1195 let NumMicroOps = 2;
1196 let ResourceCycles = [1,1];
1197 }
1198 def: InstRW<[SKLWriteResGroup20], (instregex "CLFLUSH")>;
1199
1200 def SKLWriteResGroup21 : SchedWriteRes<[SKLPort237,SKLPort0156]> {
1201 let Latency = 2;
1202 let NumMicroOps = 2;
1203 let ResourceCycles = [1,1];
1204 }
1205 def: InstRW<[SKLWriteResGroup21], (instregex "SFENCE")>;
1206
1207 def SKLWriteResGroup22 : SchedWriteRes<[SKLPort06,SKLPort15]> {
1208 let Latency = 2;
1209 let NumMicroOps = 2;
1210 let ResourceCycles = [1,1];
1211 }
1212 def: InstRW<[SKLWriteResGroup22], (instregex "BEXTR32rr")>;
1213 def: InstRW<[SKLWriteResGroup22], (instregex "BEXTR64rr")>;
1214 def: InstRW<[SKLWriteResGroup22], (instregex "BSWAP(16|32|64)r")>;
1215
1216 def SKLWriteResGroup23 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
1217 let Latency = 2;
1218 let NumMicroOps = 2;
1219 let ResourceCycles = [1,1];
1220 }
1221 def: InstRW<[SKLWriteResGroup23], (instregex "ADC8i8")>;
1222 def: InstRW<[SKLWriteResGroup23], (instregex "ADC8ri")>;
1223 def: InstRW<[SKLWriteResGroup23], (instregex "CWD")>;
1224 def: InstRW<[SKLWriteResGroup23], (instregex "JRCXZ")>;
1225 def: InstRW<[SKLWriteResGroup23], (instregex "SBB8i8")>;
1226 def: InstRW<[SKLWriteResGroup23], (instregex "SBB8ri")>;
1227
1228 def SKLWriteResGroup24 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort237]> {
1229 let Latency = 2;
1230 let NumMicroOps = 3;
1231 let ResourceCycles = [1,1,1];
1232 }
1233 def: InstRW<[SKLWriteResGroup24], (instregex "EXTRACTPSmr")>;
1234 def: InstRW<[SKLWriteResGroup24], (instregex "PEXTRBmr")>;
1235 def: InstRW<[SKLWriteResGroup24], (instregex "PEXTRDmr")>;
1236 def: InstRW<[SKLWriteResGroup24], (instregex "PEXTRQmr")>;
1237 def: InstRW<[SKLWriteResGroup24], (instregex "PEXTRWmr")>;
1238 def: InstRW<[SKLWriteResGroup24], (instregex "STMXCSR")>;
1239 def: InstRW<[SKLWriteResGroup24], (instregex "VEXTRACTPSmr")>;
1240 def: InstRW<[SKLWriteResGroup24], (instregex "VPEXTRBmr")>;
1241 def: InstRW<[SKLWriteResGroup24], (instregex "VPEXTRDmr")>;
1242 def: InstRW<[SKLWriteResGroup24], (instregex "VPEXTRQmr")>;
1243 def: InstRW<[SKLWriteResGroup24], (instregex "VPEXTRWmr")>;
1244 def: InstRW<[SKLWriteResGroup24], (instregex "VSTMXCSR")>;
1245
1246 def SKLWriteResGroup25 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort237]> {
1247 let Latency = 2;
1248 let NumMicroOps = 3;
1249 let ResourceCycles = [1,1,1];
1250 }
1251 def: InstRW<[SKLWriteResGroup25], (instregex "FNSTCW16m")>;
1252
1253 def SKLWriteResGroup26 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort06]> {
1254 let Latency = 2;
1255 let NumMicroOps = 3;
1256 let ResourceCycles = [1,1,1];
1257 }
1258 def: InstRW<[SKLWriteResGroup26], (instregex "SETAEm")>;
1259 def: InstRW<[SKLWriteResGroup26], (instregex "SETBm")>;
1260 def: InstRW<[SKLWriteResGroup26], (instregex "SETEm")>;
1261 def: InstRW<[SKLWriteResGroup26], (instregex "SETGEm")>;
1262 def: InstRW<[SKLWriteResGroup26], (instregex "SETGm")>;
1263 def: InstRW<[SKLWriteResGroup26], (instregex "SETLEm")>;
1264 def: InstRW<[SKLWriteResGroup26], (instregex "SETLm")>;
1265 def: InstRW<[SKLWriteResGroup26], (instregex "SETNEm")>;
1266 def: InstRW<[SKLWriteResGroup26], (instregex "SETNOm")>;
1267 def: InstRW<[SKLWriteResGroup26], (instregex "SETNPm")>;
1268 def: InstRW<[SKLWriteResGroup26], (instregex "SETNSm")>;
1269 def: InstRW<[SKLWriteResGroup26], (instregex "SETOm")>;
1270 def: InstRW<[SKLWriteResGroup26], (instregex "SETPm")>;
1271 def: InstRW<[SKLWriteResGroup26], (instregex "SETSm")>;
1272
1273 def SKLWriteResGroup27 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort15]> {
1274 let Latency = 2;
1275 let NumMicroOps = 3;
1276 let ResourceCycles = [1,1,1];
1277 }
1278 def: InstRW<[SKLWriteResGroup27], (instregex "MOVBE(16|32|64)mr")>;
1279
1280 def SKLWriteResGroup28 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort0156]> {
1281 let Latency = 2;
1282 let NumMicroOps = 3;
1283 let ResourceCycles = [1,1,1];
1284 }
1285 def: InstRW<[SKLWriteResGroup28], (instregex "PUSH(16|32|64)r")>;
1286 def: InstRW<[SKLWriteResGroup28], (instregex "PUSH(16|32|64)rmr")>;
1287 def: InstRW<[SKLWriteResGroup28], (instregex "PUSH64i8")>;
1288 def: InstRW<[SKLWriteResGroup28], (instregex "STOSB")>;
1289 def: InstRW<[SKLWriteResGroup28], (instregex "STOSL")>;
1290 def: InstRW<[SKLWriteResGroup28], (instregex "STOSQ")>;
1291 def: InstRW<[SKLWriteResGroup28], (instregex "STOSW")>;
1292
1293 def SKLWriteResGroup29 : SchedWriteRes<[SKLPort1]> {
1294 let Latency = 3;
1295 let NumMicroOps = 1;
1296 let ResourceCycles = [1];
1297 }
1298 def: InstRW<[SKLWriteResGroup29], (instregex "BSF(16|32|64)rr")>;
1299 def: InstRW<[SKLWriteResGroup29], (instregex "BSR(16|32|64)rr")>;
1300 def: InstRW<[SKLWriteResGroup29], (instregex "IMUL64rr(i8?)")>;
1301 def: InstRW<[SKLWriteResGroup29], (instregex "IMUL8r")>;
1302 def: InstRW<[SKLWriteResGroup29], (instregex "LZCNT(16|32|64)rr")>;
1303 def: InstRW<[SKLWriteResGroup29], (instregex "MUL8r")>;
1304 def: InstRW<[SKLWriteResGroup29], (instregex "PDEP32rr")>;
1305 def: InstRW<[SKLWriteResGroup29], (instregex "PDEP64rr")>;
1306 def: InstRW<[SKLWriteResGroup29], (instregex "PEXT32rr")>;
1307 def: InstRW<[SKLWriteResGroup29], (instregex "PEXT64rr")>;
1308 def: InstRW<[SKLWriteResGroup29], (instregex "POPCNT(16|32|64)rr")>;
1309 def: InstRW<[SKLWriteResGroup29], (instregex "SHLD(16|32|64)rri8")>;
1310 def: InstRW<[SKLWriteResGroup29], (instregex "SHRD(16|32|64)rri8")>;
1311 def: InstRW<[SKLWriteResGroup29], (instregex "TZCNT(16|32|64)rr")>;
1312
1313 def SKLWriteResGroup29_16 : SchedWriteRes<[SKLPort1, SKLPort0156]> {
1314 let Latency = 3;
1315 let NumMicroOps = 2;
1316 let ResourceCycles = [1,1];
1317 }
1318 def: InstRW<[SKLWriteResGroup29_16], (instregex "IMUL16rr(i8?)")>;
1319
1320 def SKLWriteResGroup29_32 : SchedWriteRes<[SKLPort1]> {
1321 let Latency = 3;
1322 let NumMicroOps = 1;
1323 }
1324 def: InstRW<[SKLWriteResGroup29_32], (instregex "IMUL32rr(i8?)")>;
1325
1326 def SKLWriteResGroup30 : SchedWriteRes<[SKLPort5]> {
1327 let Latency = 3;
1328 let NumMicroOps = 1;
1329 let ResourceCycles = [1];
1330 }
1331 def: InstRW<[SKLWriteResGroup30], (instregex "ADD_FPrST0")>;
1332 def: InstRW<[SKLWriteResGroup30], (instregex "ADD_FST0r")>;
1333 def: InstRW<[SKLWriteResGroup30], (instregex "ADD_FrST0")>;
1334 def: InstRW<[SKLWriteResGroup30], (instregex "MMX_PSADBWirr")>;
1335 def: InstRW<[SKLWriteResGroup30], (instregex "PCMPGTQrr")>;
1336 def: InstRW<[SKLWriteResGroup30], (instregex "PSADBWrr")>;
1337 def: InstRW<[SKLWriteResGroup30], (instregex "SUBR_FPrST0")>;
1338 def: InstRW<[SKLWriteResGroup30], (instregex "SUBR_FST0r")>;
1339 def: InstRW<[SKLWriteResGroup30], (instregex "SUBR_FrST0")>;
1340 def: InstRW<[SKLWriteResGroup30], (instregex "SUB_FPrST0")>;
1341 def: InstRW<[SKLWriteResGroup30], (instregex "SUB_FST0r")>;
1342 def: InstRW<[SKLWriteResGroup30], (instregex "SUB_FrST0")>;
1343 def: InstRW<[SKLWriteResGroup30], (instregex "VBROADCASTSDYrr")>;
1344 def: InstRW<[SKLWriteResGroup30], (instregex "VBROADCASTSSYrr")>;
1345 def: InstRW<[SKLWriteResGroup30], (instregex "VEXTRACTF128rr")>;
1346 def: InstRW<[SKLWriteResGroup30], (instregex "VEXTRACTI128rr")>;
1347 def: InstRW<[SKLWriteResGroup30], (instregex "VINSERTF128rr")>;
1348 def: InstRW<[SKLWriteResGroup30], (instregex "VINSERTI128rr")>;
1349 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTBYrr")>;
1350 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTBrr")>;
1351 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTDYrr")>;
1352 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTQYrr")>;
1353 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTWYrr")>;
1354 def: InstRW<[SKLWriteResGroup30], (instregex "VPBROADCASTWrr")>;
1355 def: InstRW<[SKLWriteResGroup30], (instregex "VPCMPGTQYrr")>;
1356 def: InstRW<[SKLWriteResGroup30], (instregex "VPCMPGTQrr")>;
1357 def: InstRW<[SKLWriteResGroup30], (instregex "VPERM2F128rr")>;
1358 def: InstRW<[SKLWriteResGroup30], (instregex "VPERM2I128rr")>;
1359 def: InstRW<[SKLWriteResGroup30], (instregex "VPERMDYrr")>;
1360 def: InstRW<[SKLWriteResGroup30], (instregex "VPERMPDYri")>;
1361 def: InstRW<[SKLWriteResGroup30], (instregex "VPERMPSYrr")>;
1362 def: InstRW<[SKLWriteResGroup30], (instregex "VPERMQYri")>;
1363 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXBDYrr")>;
1364 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXBQYrr")>;
1365 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXBWYrr")>;
1366 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXDQYrr")>;
1367 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXWDYrr")>;
1368 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVSXWQYrr")>;
1369 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXBDYrr")>;
1370 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXBQYrr")>;
1371 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXBWYrr")>;
1372 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXDQYrr")>;
1373 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXWDYrr")>;
1374 def: InstRW<[SKLWriteResGroup30], (instregex "VPMOVZXWQYrr")>;
1375 def: InstRW<[SKLWriteResGroup30], (instregex "VPSADBWYrr")>;
1376 def: InstRW<[SKLWriteResGroup30], (instregex "VPSADBWrr")>;
1377
1378 def SKLWriteResGroup31 : SchedWriteRes<[SKLPort0,SKLPort5]> {
1379 let Latency = 3;
1380 let NumMicroOps = 2;
1381 let ResourceCycles = [1,1];
1382 }
1383 def: InstRW<[SKLWriteResGroup31], (instregex "EXTRACTPSrr")>;
1384 def: InstRW<[SKLWriteResGroup31], (instregex "MMX_PEXTRWirri")>;
1385 def: InstRW<[SKLWriteResGroup31], (instregex "PEXTRBrr")>;
1386 def: InstRW<[SKLWriteResGroup31], (instregex "PEXTRDrr")>;
1387 def: InstRW<[SKLWriteResGroup31], (instregex "PEXTRQrr")>;
1388 def: InstRW<[SKLWriteResGroup31], (instregex "PEXTRWri")>;
1389 def: InstRW<[SKLWriteResGroup31], (instregex "PEXTRWrr_REV")>;
1390 def: InstRW<[SKLWriteResGroup31], (instregex "PTESTrr")>;
1391 def: InstRW<[SKLWriteResGroup31], (instregex "VEXTRACTPSrr")>;
1392 def: InstRW<[SKLWriteResGroup31], (instregex "VPEXTRBrr")>;
1393 def: InstRW<[SKLWriteResGroup31], (instregex "VPEXTRDrr")>;
1394 def: InstRW<[SKLWriteResGroup31], (instregex "VPEXTRQrr")>;
1395 def: InstRW<[SKLWriteResGroup31], (instregex "VPEXTRWri")>;
1396 def: InstRW<[SKLWriteResGroup31], (instregex "VPEXTRWrr_REV")>;
1397 def: InstRW<[SKLWriteResGroup31], (instregex "VPTESTYrr")>;
1398 def: InstRW<[SKLWriteResGroup31], (instregex "VPTESTrr")>;
1399
1400 def SKLWriteResGroup32 : SchedWriteRes<[SKLPort0,SKLPort0156]> {
1401 let Latency = 3;
1402 let NumMicroOps = 2;
1403 let ResourceCycles = [1,1];
1404 }
1405 def: InstRW<[SKLWriteResGroup32], (instregex "FNSTSW16r")>;
1406
1407 def SKLWriteResGroup33 : SchedWriteRes<[SKLPort06]> {
1408 let Latency = 3;
1409 let NumMicroOps = 3;
1410 let ResourceCycles = [3];
1411 }
1412 def: InstRW<[SKLWriteResGroup33], (instregex "ROL(16|32|64)rCL")>;
1413 def: InstRW<[SKLWriteResGroup33], (instregex "ROL8rCL")>;
1414 def: InstRW<[SKLWriteResGroup33], (instregex "ROR(16|32|64)rCL")>;
1415 def: InstRW<[SKLWriteResGroup33], (instregex "ROR8rCL")>;
1416 def: InstRW<[SKLWriteResGroup33], (instregex "SAR(16|32|64)rCL")>;
1417 def: InstRW<[SKLWriteResGroup33], (instregex "SAR8rCL")>;
1418 def: InstRW<[SKLWriteResGroup33], (instregex "SHL(16|32|64)rCL")>;
1419 def: InstRW<[SKLWriteResGroup33], (instregex "SHL8rCL")>;
1420 def: InstRW<[SKLWriteResGroup33], (instregex "SHR(16|32|64)rCL")>;
1421 def: InstRW<[SKLWriteResGroup33], (instregex "SHR8rCL")>;
1422
1423 def SKLWriteResGroup34 : SchedWriteRes<[SKLPort0156]> {
1424 let Latency = 3;
1425 let NumMicroOps = 3;
1426 let ResourceCycles = [3];
1427 }
1428 def: InstRW<[SKLWriteResGroup34], (instregex "XADD(16|32|64)rr")>;
1429 def: InstRW<[SKLWriteResGroup34], (instregex "XADD8rr")>;
1430 def: InstRW<[SKLWriteResGroup34], (instregex "XCHG8rr")>;
1431
1432 def SKLWriteResGroup35 : SchedWriteRes<[SKLPort0,SKLPort5]> {
1433 let Latency = 3;
1434 let NumMicroOps = 3;
1435 let ResourceCycles = [1,2];
1436 }
1437 def: InstRW<[SKLWriteResGroup35], (instregex "MMX_PHADDSWrr64")>;
1438 def: InstRW<[SKLWriteResGroup35], (instregex "MMX_PHSUBSWrr64")>;
1439
1440 def SKLWriteResGroup36 : SchedWriteRes<[SKLPort5,SKLPort01]> {
1441 let Latency = 3;
1442 let NumMicroOps = 3;
1443 let ResourceCycles = [2,1];
1444 }
1445 def: InstRW<[SKLWriteResGroup36], (instregex "PHADDSWrr128")>;
1446 def: InstRW<[SKLWriteResGroup36], (instregex "PHSUBSWrr128")>;
1447 def: InstRW<[SKLWriteResGroup36], (instregex "VPHADDSWrr128")>;
1448 def: InstRW<[SKLWriteResGroup36], (instregex "VPHADDSWrr256")>;
1449 def: InstRW<[SKLWriteResGroup36], (instregex "VPHSUBSWrr128")>;
1450 def: InstRW<[SKLWriteResGroup36], (instregex "VPHSUBSWrr256")>;
1451
1452 def SKLWriteResGroup37 : SchedWriteRes<[SKLPort5,SKLPort05]> {
1453 let Latency = 3;
1454 let NumMicroOps = 3;
1455 let ResourceCycles = [2,1];
1456 }
1457 def: InstRW<[SKLWriteResGroup37], (instregex "MMX_PHADDWrr64")>;
1458 def: InstRW<[SKLWriteResGroup37], (instregex "MMX_PHADDrr64")>;
1459 def: InstRW<[SKLWriteResGroup37], (instregex "MMX_PHSUBDrr64")>;
1460 def: InstRW<[SKLWriteResGroup37], (instregex "MMX_PHSUBWrr64")>;
1461
1462 def SKLWriteResGroup38 : SchedWriteRes<[SKLPort5,SKLPort015]> {
1463 let Latency = 3;
1464 let NumMicroOps = 3;
1465 let ResourceCycles = [2,1];
1466 }
1467 def: InstRW<[SKLWriteResGroup38], (instregex "PHADDDrr")>;
1468 def: InstRW<[SKLWriteResGroup38], (instregex "PHADDWrr")>;
1469 def: InstRW<[SKLWriteResGroup38], (instregex "PHSUBDrr")>;
1470 def: InstRW<[SKLWriteResGroup38], (instregex "PHSUBWrr")>;
1471 def: InstRW<[SKLWriteResGroup38], (instregex "VPHADDDYrr")>;
1472 def: InstRW<[SKLWriteResGroup38], (instregex "VPHADDDrr")>;
1473 def: InstRW<[SKLWriteResGroup38], (instregex "VPHADDWYrr")>;
1474 def: InstRW<[SKLWriteResGroup38], (instregex "VPHADDWrr")>;
1475 def: InstRW<[SKLWriteResGroup38], (instregex "VPHSUBDYrr")>;
1476 def: InstRW<[SKLWriteResGroup38], (instregex "VPHSUBDrr")>;
1477 def: InstRW<[SKLWriteResGroup38], (instregex "VPHSUBWYrr")>;
1478 def: InstRW<[SKLWriteResGroup38], (instregex "VPHSUBWrr")>;
1479
1480 def SKLWriteResGroup39 : SchedWriteRes<[SKLPort5,SKLPort0156]> {
1481 let Latency = 3;
1482 let NumMicroOps = 3;
1483 let ResourceCycles = [2,1];
1484 }
1485 def: InstRW<[SKLWriteResGroup39], (instregex "MMX_PACKSSDWirr")>;
1486 def: InstRW<[SKLWriteResGroup39], (instregex "MMX_PACKSSWBirr")>;
1487 def: InstRW<[SKLWriteResGroup39], (instregex "MMX_PACKUSWBirr")>;
1488
1489 def SKLWriteResGroup40 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
1490 let Latency = 3;
1491 let NumMicroOps = 3;
1492 let ResourceCycles = [1,2];
1493 }
1494 def: InstRW<[SKLWriteResGroup40], (instregex "CLD")>;
1495
1496 def SKLWriteResGroup41 : SchedWriteRes<[SKLPort237,SKLPort0156]> {
1497 let Latency = 3;
1498 let NumMicroOps = 3;
1499 let ResourceCycles = [1,2];
1500 }
1501 def: InstRW<[SKLWriteResGroup41], (instregex "MFENCE")>;
1502
1503 def SKLWriteResGroup42 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
1504 let Latency = 3;
1505 let NumMicroOps = 3;
1506 let ResourceCycles = [1,2];
1507 }
1508 def: InstRW<[SKLWriteResGroup42], (instregex "RCL(16|32|64)r1")>;
1509 def: InstRW<[SKLWriteResGroup42], (instregex "RCL(16|32|64)ri")>;
1510 def: InstRW<[SKLWriteResGroup42], (instregex "RCL8r1")>;
1511 def: InstRW<[SKLWriteResGroup42], (instregex "RCL8ri")>;
1512 def: InstRW<[SKLWriteResGroup42], (instregex "RCR(16|32|64)r1")>;
1513 def: InstRW<[SKLWriteResGroup42], (instregex "RCR(16|32|64)ri")>;
1514 def: InstRW<[SKLWriteResGroup42], (instregex "RCR8r1")>;
1515 def: InstRW<[SKLWriteResGroup42], (instregex "RCR8ri")>;
1516
1517 def SKLWriteResGroup43 : SchedWriteRes<[SKLPort0,SKLPort4,SKLPort237]> {
1518 let Latency = 3;
1519 let NumMicroOps = 3;
1520 let ResourceCycles = [1,1,1];
1521 }
1522 def: InstRW<[SKLWriteResGroup43], (instregex "FNSTSWm")>;
1523
1524 def SKLWriteResGroup44 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort06]> {
1525 let Latency = 3;
1526 let NumMicroOps = 4;
1527 let ResourceCycles = [1,1,2];
1528 }
1529 def: InstRW<[SKLWriteResGroup44], (instregex "SETAm")>;
1530 def: InstRW<[SKLWriteResGroup44], (instregex "SETBEm")>;
1531
1532 def SKLWriteResGroup45 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort237,SKLPort0156]> {
1533 let Latency = 3;
1534 let NumMicroOps = 4;
1535 let ResourceCycles = [1,1,1,1];
1536 }
1537 def: InstRW<[SKLWriteResGroup45], (instregex "CALL(16|32|64)r")>;
1538
1539 def SKLWriteResGroup46 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort06,SKLPort0156]> {
1540 let Latency = 3;
1541 let NumMicroOps = 4;
1542 let ResourceCycles = [1,1,1,1];
1543 }
1544 def: InstRW<[SKLWriteResGroup46], (instregex "CALL64pcrel32")>;
1545
1546 def SKLWriteResGroup47 : SchedWriteRes<[SKLPort0]> {
1547 let Latency = 4;
1548 let NumMicroOps = 1;
1549 let ResourceCycles = [1];
1550 }
1551 def: InstRW<[SKLWriteResGroup47], (instregex "AESDECLASTrr")>;
1552 def: InstRW<[SKLWriteResGroup47], (instregex "AESDECrr")>;
1553 def: InstRW<[SKLWriteResGroup47], (instregex "AESENCLASTrr")>;
1554 def: InstRW<[SKLWriteResGroup47], (instregex "AESENCrr")>;
1555 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMADDUBSWrr64")>;
1556 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMADDWDirr")>;
1557 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMULHRSWrr64")>;
1558 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMULHUWirr")>;
1559 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMULHWirr")>;
1560 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMULLWirr")>;
1561 def: InstRW<[SKLWriteResGroup47], (instregex "MMX_PMULUDQirr")>;
1562 def: InstRW<[SKLWriteResGroup47], (instregex "MUL_FPrST0")>;
1563 def: InstRW<[SKLWriteResGroup47], (instregex "MUL_FST0r")>;
1564 def: InstRW<[SKLWriteResGroup47], (instregex "MUL_FrST0")>;
1565 def: InstRW<[SKLWriteResGroup47], (instregex "RCPPSr")>;
1566 def: InstRW<[SKLWriteResGroup47], (instregex "RCPSSr")>;
1567 def: InstRW<[SKLWriteResGroup47], (instregex "RSQRTPSr")>;
1568 def: InstRW<[SKLWriteResGroup47], (instregex "RSQRTSSr")>;
1569 def: InstRW<[SKLWriteResGroup47], (instregex "VAESDECLASTrr")>;
1570 def: InstRW<[SKLWriteResGroup47], (instregex "VAESDECrr")>;
1571 def: InstRW<[SKLWriteResGroup47], (instregex "VAESENCLASTrr")>;
1572 def: InstRW<[SKLWriteResGroup47], (instregex "VAESENCrr")>;
1573 def: InstRW<[SKLWriteResGroup47], (instregex "VRCPPSYr")>;
1574 def: InstRW<[SKLWriteResGroup47], (instregex "VRCPPSr")>;
1575 def: InstRW<[SKLWriteResGroup47], (instregex "VRCPSSr")>;
1576 def: InstRW<[SKLWriteResGroup47], (instregex "VRSQRTPSYr")>;
1577 def: InstRW<[SKLWriteResGroup47], (instregex "VRSQRTPSr")>;
1578 def: InstRW<[SKLWriteResGroup47], (instregex "VRSQRTSSr")>;
1579
1580 def SKLWriteResGroup48 : SchedWriteRes<[SKLPort01]> {
1581 let Latency = 4;
1582 let NumMicroOps = 1;
1583 let ResourceCycles = [1];
1584 }
1585 def: InstRW<[SKLWriteResGroup48], (instregex "ADDPDrr")>;
1586 def: InstRW<[SKLWriteResGroup48], (instregex "ADDPSrr")>;
1587 def: InstRW<[SKLWriteResGroup48], (instregex "ADDSDrr")>;
1588 def: InstRW<[SKLWriteResGroup48], (instregex "ADDSSrr")>;
1589 def: InstRW<[SKLWriteResGroup48], (instregex "ADDSUBPDrr")>;
1590 def: InstRW<[SKLWriteResGroup48], (instregex "ADDSUBPSrr")>;
1591 def: InstRW<[SKLWriteResGroup48], (instregex "MULPDrr")>;
1592 def: InstRW<[SKLWriteResGroup48], (instregex "MULPSrr")>;
1593 def: InstRW<[SKLWriteResGroup48], (instregex "MULSDrr")>;
1594 def: InstRW<[SKLWriteResGroup48], (instregex "MULSSrr")>;
1595 def: InstRW<[SKLWriteResGroup48], (instregex "SUBPDrr")>;
1596 def: InstRW<[SKLWriteResGroup48], (instregex "SUBPSrr")>;
1597 def: InstRW<[SKLWriteResGroup48], (instregex "SUBSDrr")>;
1598 def: InstRW<[SKLWriteResGroup48], (instregex "SUBSSrr")>;
1599 def: InstRW<[SKLWriteResGroup48], (instregex "VADDPDYrr")>;
1600 def: InstRW<[SKLWriteResGroup48], (instregex "VADDPDrr")>;
1601 def: InstRW<[SKLWriteResGroup48], (instregex "VADDPSYrr")>;
1602 def: InstRW<[SKLWriteResGroup48], (instregex "VADDPSrr")>;
1603 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSDrr")>;
1604 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSSrr")>;
1605 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPDYrr")>;
1606 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPDrr")>;
1607 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPSYrr")>;
1608 def: InstRW<[SKLWriteResGroup48], (instregex "VADDSUBPSrr")>;
1609 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PDYr")>;
1610 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PDr")>;
1611 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PSYr")>;
1612 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132PSr")>;
1613 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132SDr")>;
1614 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD132SSr")>;
1615 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PDYr")>;
1616 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PDr")>;
1617 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PSYr")>;
1618 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213PSr")>;
1619 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213SDr")>;
1620 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD213SSr")>;
1621 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PDYr")>;
1622 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PDr")>;
1623 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PSYr")>;
1624 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231PSr")>;
1625 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231SDr")>;
1626 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADD231SSr")>;
1627 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PDYr")>;
1628 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PDr")>;
1629 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PSYr")>;
1630 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB132PSr")>;
1631 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PDYr")>;
1632 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PDr")>;
1633 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PSYr")>;
1634 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB213PSr")>;
1635 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PDYr")>;
1636 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PDr")>;
1637 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PSYr")>;
1638 def: InstRW<[SKLWriteResGroup48], (instregex "VFMADDSUB231PSr")>;
1639 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PDYr")>;
1640 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PDr")>;
1641 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PSYr")>;
1642 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132PSr")>;
1643 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132SDr")>;
1644 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB132SSr")>;
1645 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PDYr")>;
1646 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PDr")>;
1647 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PSYr")>;
1648 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213PSr")>;
1649 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213SDr")>;
1650 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB213SSr")>;
1651 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PDYr")>;
1652 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PDr")>;
1653 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PSYr")>;
1654 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231PSr")>;
1655 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231SDr")>;
1656 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUB231SSr")>;
1657 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PDYr")>;
1658 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PDr")>;
1659 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PSYr")>;
1660 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD132PSr")>;
1661 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PDYr")>;
1662 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PDr")>;
1663 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PSYr")>;
1664 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD213PSr")>;
1665 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PDYr")>;
1666 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PDr")>;
1667 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PSYr")>;
1668 def: InstRW<[SKLWriteResGroup48], (instregex "VFMSUBADD231PSr")>;
1669 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PDYr")>;
1670 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PDr")>;
1671 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PSYr")>;
1672 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132PSr")>;
1673 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132SDr")>;
1674 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD132SSr")>;
1675 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PDYr")>;
1676 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PDr")>;
1677 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PSYr")>;
1678 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213PSr")>;
1679 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213SDr")>;
1680 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD213SSr")>;
1681 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PDYr")>;
1682 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PDr")>;
1683 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PSYr")>;
1684 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231PSr")>;
1685 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231SDr")>;
1686 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMADD231SSr")>;
1687 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PDYr")>;
1688 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PDr")>;
1689 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PSYr")>;
1690 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132PSr")>;
1691 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132SDr")>;
1692 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB132SSr")>;
1693 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PDYr")>;
1694 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PDr")>;
1695 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PSYr")>;
1696 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213PSr")>;
1697 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213SDr")>;
1698 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB213SSr")>;
1699 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PDYr")>;
1700 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PDr")>;
1701 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PSYr")>;
1702 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231PSr")>;
1703 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231SDr")>;
1704 def: InstRW<[SKLWriteResGroup48], (instregex "VFNMSUB231SSr")>;
1705 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPDYrr")>;
1706 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPDrr")>;
1707 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPSYrr")>;
1708 def: InstRW<[SKLWriteResGroup48], (instregex "VMULPSrr")>;
1709 def: InstRW<[SKLWriteResGroup48], (instregex "VMULSDrr")>;
1710 def: InstRW<[SKLWriteResGroup48], (instregex "VMULSSrr")>;
1711 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBPDYrr")>;
1712 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBPDrr")>;
1713 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBPSYrr")>;
1714 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBPSrr")>;
1715 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBSDrr")>;
1716 def: InstRW<[SKLWriteResGroup48], (instregex "VSUBSSrr")>;
1717
1718 def SKLWriteResGroup49 : SchedWriteRes<[SKLPort015]> {
1719 let Latency = 4;
1720 let NumMicroOps = 1;
1721 let ResourceCycles = [1];
1722 }
1723 def: InstRW<[SKLWriteResGroup49], (instregex "CMPPDrri")>;
1724 def: InstRW<[SKLWriteResGroup49], (instregex "CMPPSrri")>;
1725 def: InstRW<[SKLWriteResGroup49], (instregex "CMPSSrr")>;
1726 def: InstRW<[SKLWriteResGroup49], (instregex "CVTDQ2PSrr")>;
1727 def: InstRW<[SKLWriteResGroup49], (instregex "CVTPS2DQrr")>;
1728 def: InstRW<[SKLWriteResGroup49], (instregex "CVTTPS2DQrr")>;
1729 def: InstRW<[SKLWriteResGroup49], (instregex "MAXPDrr")>;
1730 def: InstRW<[SKLWriteResGroup49], (instregex "MAXPSrr")>;
1731 def: InstRW<[SKLWriteResGroup49], (instregex "MAXSDrr")>;
1732 def: InstRW<[SKLWriteResGroup49], (instregex "MAXSSrr")>;
1733 def: InstRW<[SKLWriteResGroup49], (instregex "MINPDrr")>;
1734 def: InstRW<[SKLWriteResGroup49], (instregex "MINPSrr")>;
1735 def: InstRW<[SKLWriteResGroup49], (instregex "MINSDrr")>;
1736 def: InstRW<[SKLWriteResGroup49], (instregex "MINSSrr")>;
1737 def: InstRW<[SKLWriteResGroup49], (instregex "PHMINPOSUWrr128")>;
1738 def: InstRW<[SKLWriteResGroup49], (instregex "PMADDUBSWrr")>;
1739 def: InstRW<[SKLWriteResGroup49], (instregex "PMADDWDrr")>;
1740 def: InstRW<[SKLWriteResGroup49], (instregex "PMULDQrr")>;
1741 def: InstRW<[SKLWriteResGroup49], (instregex "PMULHRSWrr")>;
1742 def: InstRW<[SKLWriteResGroup49], (instregex "PMULHUWrr")>;
1743 def: InstRW<[SKLWriteResGroup49], (instregex "PMULHWrr")>;
1744 def: InstRW<[SKLWriteResGroup49], (instregex "PMULLWrr")>;
1745 def: InstRW<[SKLWriteResGroup49], (instregex "PMULUDQrr")>;
1746 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPPDYrri")>;
1747 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPPDrri")>;
1748 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPPSYrri")>;
1749 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPPSrri")>;
1750 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPSDrr")>;
1751 def: InstRW<[SKLWriteResGroup49], (instregex "VCMPSSrr")>;
1752 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTDQ2PSYrr")>;
1753 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTDQ2PSrr")>;
1754 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTPS2DQYrr")>;
1755 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTPS2DQrr")>;
1756 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTTPS2DQYrr")>;
1757 def: InstRW<[SKLWriteResGroup49], (instregex "VCVTTPS2DQrr")>;
1758 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXPDYrr")>;
1759 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXPDrr")>;
1760 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXPSYrr")>;
1761 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXPSrr")>;
1762 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXSDrr")>;
1763 def: InstRW<[SKLWriteResGroup49], (instregex "VMAXSSrr")>;
1764 def: InstRW<[SKLWriteResGroup49], (instregex "VMINPDYrr")>;
1765 def: InstRW<[SKLWriteResGroup49], (instregex "VMINPDrr")>;
1766 def: InstRW<[SKLWriteResGroup49], (instregex "VMINPSYrr")>;
1767 def: InstRW<[SKLWriteResGroup49], (instregex "VMINPSrr")>;
1768 def: InstRW<[SKLWriteResGroup49], (instregex "VMINSDrr")>;
1769 def: InstRW<[SKLWriteResGroup49], (instregex "VMINSSrr")>;
1770 def: InstRW<[SKLWriteResGroup49], (instregex "VPHMINPOSUWrr128")>;
1771 def: InstRW<[SKLWriteResGroup49], (instregex "VPMADDUBSWYrr")>;
1772 def: InstRW<[SKLWriteResGroup49], (instregex "VPMADDUBSWrr")>;
1773 def: InstRW<[SKLWriteResGroup49], (instregex "VPMADDWDYrr")>;
1774 def: InstRW<[SKLWriteResGroup49], (instregex "VPMADDWDrr")>;
1775 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULDQYrr")>;
1776 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULDQrr")>;
1777 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHRSWYrr")>;
1778 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHRSWrr")>;
1779 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHUWYrr")>;
1780 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHUWrr")>;
1781 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHWYrr")>;
1782 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULHWrr")>;
1783 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULLWYrr")>;
1784 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULLWrr")>;
1785 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULUDQYrr")>;
1786 def: InstRW<[SKLWriteResGroup49], (instregex "VPMULUDQrr")>;
1787
1788 def SKLWriteResGroup50 : SchedWriteRes<[SKLPort5]> {
1789 let Latency = 4;
1790 let NumMicroOps = 2;
1791 let ResourceCycles = [2];
1792 }
1793 def: InstRW<[SKLWriteResGroup50], (instregex "MPSADBWrri")>;
1794 def: InstRW<[SKLWriteResGroup50], (instregex "VMPSADBWYrri")>;
1795 def: InstRW<[SKLWriteResGroup50], (instregex "VMPSADBWrri")>;
1796
1797 def SKLWriteResGroup51 : SchedWriteRes<[SKLPort1,SKLPort5]> {
1798 let Latency = 4;
1799 let NumMicroOps = 2;
1800 let ResourceCycles = [1,1];
1801 }
1802 def: InstRW<[SKLWriteResGroup51], (instregex "IMUL64r")>;
1803 def: InstRW<[SKLWriteResGroup51], (instregex "MUL64r")>;
1804 def: InstRW<[SKLWriteResGroup51], (instregex "MULX64rr")>;
1805
1806 def SKLWriteResGroup51_16 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort0156]> {
1807 let Latency = 4;
1808 let NumMicroOps = 4;
1809 }
1810 def: InstRW<[SKLWriteResGroup51_16], (instregex "IMUL16r")>;
1811 def: InstRW<[SKLWriteResGroup51_16], (instregex "MUL16r")>;
1812
1813 def SKLWriteResGroup52 : SchedWriteRes<[SKLPort5,SKLPort01]> {
1814 let Latency = 4;
1815 let NumMicroOps = 2;
1816 let ResourceCycles = [1,1];
1817 }
1818 def: InstRW<[SKLWriteResGroup52], (instregex "VPSLLDYrr")>;
1819 def: InstRW<[SKLWriteResGroup52], (instregex "VPSLLQYrr")>;
1820 def: InstRW<[SKLWriteResGroup52], (instregex "VPSLLWYrr")>;
1821 def: InstRW<[SKLWriteResGroup52], (instregex "VPSRADYrr")>;
1822 def: InstRW<[SKLWriteResGroup52], (instregex "VPSRAWYrr")>;
1823 def: InstRW<[SKLWriteResGroup52], (instregex "VPSRLDYrr")>;
1824 def: InstRW<[SKLWriteResGroup52], (instregex "VPSRLQYrr")>;
1825 def: InstRW<[SKLWriteResGroup52], (instregex "VPSRLWYrr")>;
1826
1827 def SKLWriteResGroup53 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort237]> {
1828 let Latency = 4;
1829 let NumMicroOps = 3;
1830 let ResourceCycles = [1,1,1];
1831 }
1832 def: InstRW<[SKLWriteResGroup53], (instregex "ISTT_FP16m")>;
1833 def: InstRW<[SKLWriteResGroup53], (instregex "ISTT_FP32m")>;
1834 def: InstRW<[SKLWriteResGroup53], (instregex "ISTT_FP64m")>;
1835 def: InstRW<[SKLWriteResGroup53], (instregex "IST_F16m")>;
1836 def: InstRW<[SKLWriteResGroup53], (instregex "IST_F32m")>;
1837 def: InstRW<[SKLWriteResGroup53], (instregex "IST_FP16m")>;
1838 def: InstRW<[SKLWriteResGroup53], (instregex "IST_FP32m")>;
1839 def: InstRW<[SKLWriteResGroup53], (instregex "IST_FP64m")>;
1840
1841 def SKLWriteResGroup54 : SchedWriteRes<[SKLPort0156]> {
1842 let Latency = 4;
1843 let NumMicroOps = 4;
1844 let ResourceCycles = [4];
1845 }
1846 def: InstRW<[SKLWriteResGroup54], (instregex "FNCLEX")>;
1847
1848 def SKLWriteResGroup55 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
1849 let Latency = 4;
1850 let NumMicroOps = 4;
1851 let ResourceCycles = [1,3];
1852 }
1853 def: InstRW<[SKLWriteResGroup55], (instregex "PAUSE")>;
1854
1855 def SKLWriteResGroup56 : SchedWriteRes<[SKLPort015,SKLPort0156]> {
1856 let Latency = 4;
1857 let NumMicroOps = 4;
1858 let ResourceCycles = [1,3];
1859 }
1860 def: InstRW<[SKLWriteResGroup56], (instregex "VZEROUPPER")>;
1861
1862 def SKLWriteResGroup57 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort0156]> {
1863 let Latency = 4;
1864 let NumMicroOps = 4;
1865 let ResourceCycles = [1,1,2];
1866 }
1867 def: InstRW<[SKLWriteResGroup57], (instregex "LAR(16|32|64)rr")>;
1868
1869 def SKLWriteResGroup58 : SchedWriteRes<[SKLPort23]> {
1870 let Latency = 5;
1871 let NumMicroOps = 1;
1872 let ResourceCycles = [1];
1873 }
1874 def: InstRW<[SKLWriteResGroup58], (instregex "MMX_MOVD64from64rm")>;
1875 def: InstRW<[SKLWriteResGroup58], (instregex "MMX_MOVD64rm")>;
1876 def: InstRW<[SKLWriteResGroup58], (instregex "MMX_MOVD64to64rm")>;
1877 def: InstRW<[SKLWriteResGroup58], (instregex "MMX_MOVQ64rm")>;
1878 def: InstRW<[SKLWriteResGroup58], (instregex "MOV(16|32|64)rm")>;
1879 def: InstRW<[SKLWriteResGroup58], (instregex "MOV64toPQIrm")>;
1880 def: InstRW<[SKLWriteResGroup58], (instregex "MOV8rm")>;
1881 def: InstRW<[SKLWriteResGroup58], (instregex "MOVDDUPrm")>;
1882 def: InstRW<[SKLWriteResGroup58], (instregex "MOVDI2PDIrm")>;
1883 def: InstRW<[SKLWriteResGroup58], (instregex "MOVSSrm")>;
1884 def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm16")>;
1885 def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm32")>;
1886 def: InstRW<[SKLWriteResGroup58], (instregex "MOVSX(16|32|64)rm8")>;
1887 def: InstRW<[SKLWriteResGroup58], (instregex "MOVZX(16|32|64)rm16")>;
1888 def: InstRW<[SKLWriteResGroup58], (instregex "MOVZX(16|32|64)rm8")>;
1889 def: InstRW<[SKLWriteResGroup58], (instregex "PREFETCHNTA")>;
1890 def: InstRW<[SKLWriteResGroup58], (instregex "PREFETCHT0")>;
1891 def: InstRW<[SKLWriteResGroup58], (instregex "PREFETCHT1")>;
1892 def: InstRW<[SKLWriteResGroup58], (instregex "PREFETCHT2")>;
1893 def: InstRW<[SKLWriteResGroup58], (instregex "VMOV64toPQIrm")>;
1894 def: InstRW<[SKLWriteResGroup58], (instregex "VMOVDDUPrm")>;
1895 def: InstRW<[SKLWriteResGroup58], (instregex "VMOVDI2PDIrm")>;
1896 def: InstRW<[SKLWriteResGroup58], (instregex "VMOVQI2PQIrm")>;
1897 def: InstRW<[SKLWriteResGroup58], (instregex "VMOVSDrm")>;
1898 def: InstRW<[SKLWriteResGroup58], (instregex "VMOVSSrm")>;
1899
1900 def SKLWriteResGroup59 : SchedWriteRes<[SKLPort0,SKLPort5]> {
1901 let Latency = 5;
1902 let NumMicroOps = 2;
1903 let ResourceCycles = [1,1];
1904 }
1905 def: InstRW<[SKLWriteResGroup59], (instregex "CVTDQ2PDrr")>;
1906 def: InstRW<[SKLWriteResGroup59], (instregex "MMX_CVTPI2PDirr")>;
1907 def: InstRW<[SKLWriteResGroup59], (instregex "VCVTDQ2PDrr")>;
1908
1909 def SKLWriteResGroup60 : SchedWriteRes<[SKLPort5,SKLPort015]> {
1910 let Latency = 5;
1911 let NumMicroOps = 2;
1912 let ResourceCycles = [1,1];
1913 }
1914 def: InstRW<[SKLWriteResGroup60], (instregex "CVTPD2DQrr")>;
1915 def: InstRW<[SKLWriteResGroup60], (instregex "CVTPD2PSrr")>;
1916 def: InstRW<[SKLWriteResGroup60], (instregex "CVTPS2PDrr")>;
1917 def: InstRW<[SKLWriteResGroup60], (instregex "CVTSD2SSrr")>;
1918 def: InstRW<[SKLWriteResGroup60], (instregex "CVTSI2SD64rr")>;
1919 def: InstRW<[SKLWriteResGroup60], (instregex "CVTSI2SDrr")>;
1920 def: InstRW<[SKLWriteResGroup60], (instregex "CVTSI2SSrr")>;
1921 def: InstRW<[SKLWriteResGroup60], (instregex "CVTSS2SDrr")>;
1922 def: InstRW<[SKLWriteResGroup60], (instregex "CVTTPD2DQrr")>;
1923 def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTPD2PIirr")>;
1924 def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTPS2PIirr")>;
1925 def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTTPD2PIirr")>;
1926 def: InstRW<[SKLWriteResGroup60], (instregex "MMX_CVTTPS2PIirr")>;
1927 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTPD2DQrr")>;
1928 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTPD2PSrr")>;
1929 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTPH2PSrr")>;
1930 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTPS2PDrr")>;
1931 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTPS2PHrr")>;
1932 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTSD2SSrr")>;
1933 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTSI2SD64rr")>;
1934 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTSI2SDrr")>;
1935 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTSI2SSrr")>;
1936 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTSS2SDrr")>;
1937 def: InstRW<[SKLWriteResGroup60], (instregex "VCVTTPD2DQrr")>;
1938
1939 def SKLWriteResGroup61 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort06]> {
1940 let Latency = 5;
1941 let NumMicroOps = 3;
1942 let ResourceCycles = [1,1,1];
1943 }
1944 def: InstRW<[SKLWriteResGroup61], (instregex "STR(16|32|64)r")>;
1945
1946 def SKLWriteResGroup62 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort0156]> {
1947 let Latency = 5;
1948 let NumMicroOps = 3;
1949 let ResourceCycles = [1,1,1];
1950 }
1951 def: InstRW<[SKLWriteResGroup62], (instregex "IMUL32r")>;
1952 def: InstRW<[SKLWriteResGroup62], (instregex "MUL32r")>;
1953 def: InstRW<[SKLWriteResGroup62], (instregex "MULX32rr")>;
1954
1955 def SKLWriteResGroup63 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
1956 let Latency = 5;
1957 let NumMicroOps = 5;
1958 let ResourceCycles = [1,4];
1959 }
1960 def: InstRW<[SKLWriteResGroup63], (instregex "XSETBV")>;
1961
1962 def SKLWriteResGroup64 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
1963 let Latency = 5;
1964 let NumMicroOps = 5;
1965 let ResourceCycles = [2,3];
1966 }
1967 def: InstRW<[SKLWriteResGroup64], (instregex "CMPXCHG(16|32|64)rr")>;
1968 def: InstRW<[SKLWriteResGroup64], (instregex "CMPXCHG8rr")>;
1969
1970 def SKLWriteResGroup65 : SchedWriteRes<[SKLPort4,SKLPort237,SKLPort0156]> {
1971 let Latency = 5;
1972 let NumMicroOps = 6;
1973 let ResourceCycles = [1,1,4];
1974 }
1975 def: InstRW<[SKLWriteResGroup65], (instregex "PUSHF16")>;
1976 def: InstRW<[SKLWriteResGroup65], (instregex "PUSHF64")>;
1977
1978 def SKLWriteResGroup66 : SchedWriteRes<[SKLPort5]> {
1979 let Latency = 6;
1980 let NumMicroOps = 1;
1981 let ResourceCycles = [1];
1982 }
1983 def: InstRW<[SKLWriteResGroup66], (instregex "PCLMULQDQrr")>;
1984 def: InstRW<[SKLWriteResGroup66], (instregex "VPCLMULQDQrr")>;
1985
1986 def SKLWriteResGroup67 : SchedWriteRes<[SKLPort23]> {
1987 let Latency = 6;
1988 let NumMicroOps = 1;
1989 let ResourceCycles = [1];
1990 }
1991 def: InstRW<[SKLWriteResGroup67], (instregex "LDDQUrm")>;
1992 def: InstRW<[SKLWriteResGroup67], (instregex "MOVAPDrm")>;
1993 def: InstRW<[SKLWriteResGroup67], (instregex "MOVAPSrm")>;
1994 def: InstRW<[SKLWriteResGroup67], (instregex "MOVDQArm")>;
1995 def: InstRW<[SKLWriteResGroup67], (instregex "MOVDQUrm")>;
1996 def: InstRW<[SKLWriteResGroup67], (instregex "MOVNTDQArm")>;
1997 def: InstRW<[SKLWriteResGroup67], (instregex "MOVSHDUPrm")>;
1998 def: InstRW<[SKLWriteResGroup67], (instregex "MOVSLDUPrm")>;
1999 def: InstRW<[SKLWriteResGroup67], (instregex "MOVUPDrm")>;
2000 def: InstRW<[SKLWriteResGroup67], (instregex "MOVUPSrm")>;
2001 def: InstRW<[SKLWriteResGroup67], (instregex "VBROADCASTSSrm")>;
2002 def: InstRW<[SKLWriteResGroup67], (instregex "VLDDQUrm")>;
2003 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVAPDrm")>;
2004 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVAPSrm")>;
2005 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVDQArm")>;
2006 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVDQUrm")>;
2007 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVNTDQArm")>;
2008 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVSHDUPrm")>;
2009 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVSLDUPrm")>;
2010 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVUPDrm")>;
2011 def: InstRW<[SKLWriteResGroup67], (instregex "VMOVUPSrm")>;
2012 def: InstRW<[SKLWriteResGroup67], (instregex "VPBROADCASTDrm")>;
2013 def: InstRW<[SKLWriteResGroup67], (instregex "VPBROADCASTQrm")>;
2014
2015 def SKLWriteResGroup68 : SchedWriteRes<[SKLPort0]> {
2016 let Latency = 6;
2017 let NumMicroOps = 2;
2018 let ResourceCycles = [2];
2019 }
2020 def: InstRW<[SKLWriteResGroup68], (instregex "MMX_CVTPI2PSirr")>;
2021
2022 def SKLWriteResGroup69 : SchedWriteRes<[SKLPort0,SKLPort23]> {
2023 let Latency = 6;
2024 let NumMicroOps = 2;
2025 let ResourceCycles = [1,1];
2026 }
2027 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PADDSBirm")>;
2028 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PADDSWirm")>;
2029 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PADDUSBirm")>;
2030 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PADDUSWirm")>;
2031 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PAVGBirm")>;
2032 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PAVGWirm")>;
2033 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPEQBirm")>;
2034 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPEQDirm")>;
2035 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPEQWirm")>;
2036 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPGTBirm")>;
2037 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPGTDirm")>;
2038 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PCMPGTWirm")>;
2039 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PMAXSWirm")>;
2040 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PMAXUBirm")>;
2041 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PMINSWirm")>;
2042 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PMINUBirm")>;
2043 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSLLDrm")>;
2044 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSLLQrm")>;
2045 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSLLWrm")>;
2046 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSRADrm")>;
2047 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSRAWrm")>;
2048 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSRLDrm")>;
2049 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSRLQrm")>;
2050 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSRLWrm")>;
2051 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSUBSBirm")>;
2052 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSUBSWirm")>;
2053 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSUBUSBirm")>;
2054 def: InstRW<[SKLWriteResGroup69], (instregex "MMX_PSUBUSWirm")>;
2055
2056 def SKLWriteResGroup70 : SchedWriteRes<[SKLPort0,SKLPort015]> {
2057 let Latency = 6;
2058 let NumMicroOps = 2;
2059 let ResourceCycles = [1,1];
2060 }
2061 def: InstRW<[SKLWriteResGroup70], (instregex "CVTSD2SI64rr")>;
2062 def: InstRW<[SKLWriteResGroup70], (instregex "CVTSD2SIrr")>;
2063 def: InstRW<[SKLWriteResGroup70], (instregex "CVTSS2SI64rr")>;
2064 def: InstRW<[SKLWriteResGroup70], (instregex "CVTSS2SIrr")>;
2065 def: InstRW<[SKLWriteResGroup70], (instregex "CVTTSD2SI64rr")>;
2066 def: InstRW<[SKLWriteResGroup70], (instregex "CVTTSD2SIrr")>;
2067 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTSD2SI64rr")>;
2068 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTSD2SIrr")>;
2069 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTSS2SI64rr")>;
2070 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTSS2SIrr")>;
2071 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTTSD2SI64rr")>;
2072 def: InstRW<[SKLWriteResGroup70], (instregex "VCVTTSD2SIrr")>;
2073
2074 def SKLWriteResGroup71 : SchedWriteRes<[SKLPort5,SKLPort23]> {
2075 let Latency = 6;
2076 let NumMicroOps = 2;
2077 let ResourceCycles = [1,1];
2078 }
2079 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PALIGNR64irm")>;
2080 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PINSRWirmi")>;
2081 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PSHUFBrm64")>;
2082 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PSHUFWmi")>;
2083 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKHBWirm")>;
2084 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKHDQirm")>;
2085 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKHWDirm")>;
2086 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKLBWirm")>;
2087 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKLDQirm")>;
2088 def: InstRW<[SKLWriteResGroup71], (instregex "MMX_PUNPCKLWDirm")>;
2089 def: InstRW<[SKLWriteResGroup71], (instregex "MOVHPDrm")>;
2090 def: InstRW<[SKLWriteResGroup71], (instregex "MOVHPSrm")>;
2091 def: InstRW<[SKLWriteResGroup71], (instregex "MOVLPDrm")>;
2092 def: InstRW<[SKLWriteResGroup71], (instregex "MOVLPSrm")>;
2093 def: InstRW<[SKLWriteResGroup71], (instregex "PINSRBrm")>;
2094 def: InstRW<[SKLWriteResGroup71], (instregex "PINSRDrm")>;
2095 def: InstRW<[SKLWriteResGroup71], (instregex "PINSRQrm")>;
2096 def: InstRW<[SKLWriteResGroup71], (instregex "PINSRWrmi")>;
2097 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXBDrm")>;
2098 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXBQrm")>;
2099 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXBWrm")>;
2100 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXDQrm")>;
2101 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXWDrm")>;
2102 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVSXWQrm")>;
2103 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXBDrm")>;
2104 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXBQrm")>;
2105 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXBWrm")>;
2106 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXDQrm")>;
2107 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXWDrm")>;
2108 def: InstRW<[SKLWriteResGroup71], (instregex "PMOVZXWQrm")>;
2109 def: InstRW<[SKLWriteResGroup71], (instregex "VMOVHPDrm")>;
2110 def: InstRW<[SKLWriteResGroup71], (instregex "VMOVHPSrm")>;
2111 def: InstRW<[SKLWriteResGroup71], (instregex "VMOVLPDrm")>;
2112 def: InstRW<[SKLWriteResGroup71], (instregex "VMOVLPSrm")>;
2113 def: InstRW<[SKLWriteResGroup71], (instregex "VPINSRBrm")>;
2114 def: InstRW<[SKLWriteResGroup71], (instregex "VPINSRDrm")>;
2115 def: InstRW<[SKLWriteResGroup71], (instregex "VPINSRQrm")>;
2116 def: InstRW<[SKLWriteResGroup71], (instregex "VPINSRWrmi")>;
2117 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXBDrm")>;
2118 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXBQrm")>;
2119 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXBWrm")>;
2120 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXDQrm")>;
2121 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXWDrm")>;
2122 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVSXWQrm")>;
2123 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXBDrm")>;
2124 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXBQrm")>;
2125 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXBWrm")>;
2126 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXDQrm")>;
2127 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXWDrm")>;
2128 def: InstRW<[SKLWriteResGroup71], (instregex "VPMOVZXWQrm")>;
2129
2130 def SKLWriteResGroup72 : SchedWriteRes<[SKLPort6,SKLPort23]> {
2131 let Latency = 6;
2132 let NumMicroOps = 2;
2133 let ResourceCycles = [1,1];
2134 }
2135 def: InstRW<[SKLWriteResGroup72], (instregex "FARJMP64")>;
2136 def: InstRW<[SKLWriteResGroup72], (instregex "JMP(16|32|64)m")>;
2137
2138 def SKLWriteResGroup73 : SchedWriteRes<[SKLPort23,SKLPort05]> {
2139 let Latency = 6;
2140 let NumMicroOps = 2;
2141 let ResourceCycles = [1,1];
2142 }
2143 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PABSBrm64")>;
2144 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PABSDrm64")>;
2145 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PABSWrm64")>;
2146 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PADDBirm")>;
2147 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PADDDirm")>;
2148 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PADDQirm")>;
2149 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PADDWirm")>;
2150 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PANDNirm")>;
2151 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PANDirm")>;
2152 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PORirm")>;
2153 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSIGNBrm64")>;
2154 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSIGNDrm64")>;
2155 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSIGNWrm64")>;
2156 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSUBBirm")>;
2157 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSUBDirm")>;
2158 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSUBQirm")>;
2159 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PSUBWirm")>;
2160 def: InstRW<[SKLWriteResGroup73], (instregex "MMX_PXORirm")>;
2161
2162 def SKLWriteResGroup74 : SchedWriteRes<[SKLPort23,SKLPort06]> {
2163 let Latency = 6;
2164 let NumMicroOps = 2;
2165 let ResourceCycles = [1,1];
2166 }
2167 def: InstRW<[SKLWriteResGroup74], (instregex "ADC(16|32|64)rm")>;
2168 def: InstRW<[SKLWriteResGroup74], (instregex "ADC8rm")>;
2169 def: InstRW<[SKLWriteResGroup74], (instregex "ADCX32rm")>;
2170 def: InstRW<[SKLWriteResGroup74], (instregex "ADCX64rm")>;
2171 def: InstRW<[SKLWriteResGroup74], (instregex "ADOX32rm")>;
2172 def: InstRW<[SKLWriteResGroup74], (instregex "ADOX64rm")>;
2173 def: InstRW<[SKLWriteResGroup74], (instregex "BT(16|32|64)mi8")>;
2174 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVAE(16|32|64)rm")>;
2175 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVB(16|32|64)rm")>;
2176 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVE(16|32|64)rm")>;
2177 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVG(16|32|64)rm")>;
2178 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVGE(16|32|64)rm")>;
2179 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVL(16|32|64)rm")>;
2180 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVLE(16|32|64)rm")>;
2181 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVNE(16|32|64)rm")>;
2182 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVNO(16|32|64)rm")>;
2183 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVNP(16|32|64)rm")>;
2184 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVNS(16|32|64)rm")>;
2185 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVO(16|32|64)rm")>;
2186 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVP(16|32|64)rm")>;
2187 def: InstRW<[SKLWriteResGroup74], (instregex "CMOVS(16|32|64)rm")>;
2188 def: InstRW<[SKLWriteResGroup74], (instregex "RORX32mi")>;
2189 def: InstRW<[SKLWriteResGroup74], (instregex "RORX64mi")>;
2190 def: InstRW<[SKLWriteResGroup74], (instregex "SARX32rm")>;
2191 def: InstRW<[SKLWriteResGroup74], (instregex "SARX64rm")>;
2192 def: InstRW<[SKLWriteResGroup74], (instregex "SBB(16|32|64)rm")>;
2193 def: InstRW<[SKLWriteResGroup74], (instregex "SBB8rm")>;
2194 def: InstRW<[SKLWriteResGroup74], (instregex "SHLX32rm")>;
2195 def: InstRW<[SKLWriteResGroup74], (instregex "SHLX64rm")>;
2196 def: InstRW<[SKLWriteResGroup74], (instregex "SHRX32rm")>;
2197 def: InstRW<[SKLWriteResGroup74], (instregex "SHRX64rm")>;
2198
2199 def SKLWriteResGroup75 : SchedWriteRes<[SKLPort23,SKLPort15]> {
2200 let Latency = 6;
2201 let NumMicroOps = 2;
2202 let ResourceCycles = [1,1];
2203 }
2204 def: InstRW<[SKLWriteResGroup75], (instregex "ANDN32rm")>;
2205 def: InstRW<[SKLWriteResGroup75], (instregex "ANDN64rm")>;
2206 def: InstRW<[SKLWriteResGroup75], (instregex "BLSI32rm")>;
2207 def: InstRW<[SKLWriteResGroup75], (instregex "BLSI64rm")>;
2208 def: InstRW<[SKLWriteResGroup75], (instregex "BLSMSK32rm")>;
2209 def: InstRW<[SKLWriteResGroup75], (instregex "BLSMSK64rm")>;
2210 def: InstRW<[SKLWriteResGroup75], (instregex "BLSR32rm")>;
2211 def: InstRW<[SKLWriteResGroup75], (instregex "BLSR64rm")>;
2212 def: InstRW<[SKLWriteResGroup75], (instregex "BZHI32rm")>;
2213 def: InstRW<[SKLWriteResGroup75], (instregex "BZHI64rm")>;
2214 def: InstRW<[SKLWriteResGroup75], (instregex "MOVBE(16|32|64)rm")>;
2215
2216 def SKLWriteResGroup76 : SchedWriteRes<[SKLPort23,SKLPort0156]> {
2217 let Latency = 6;
2218 let NumMicroOps = 2;
2219 let ResourceCycles = [1,1];
2220 }
2221 def: InstRW<[SKLWriteResGroup76], (instregex "ADD(16|32|64)rm")>;
2222 def: InstRW<[SKLWriteResGroup76], (instregex "ADD8rm")>;
2223 def: InstRW<[SKLWriteResGroup76], (instregex "AND(16|32|64)rm")>;
2224 def: InstRW<[SKLWriteResGroup76], (instregex "AND8rm")>;
2225 def: InstRW<[SKLWriteResGroup76], (instregex "CMP(16|32|64)mi8")>;
2226 def: InstRW<[SKLWriteResGroup76], (instregex "CMP(16|32|64)mr")>;
2227 def: InstRW<[SKLWriteResGroup76], (instregex "CMP(16|32|64)rm")>;
2228 def: InstRW<[SKLWriteResGroup76], (instregex "CMP8mi")>;
2229 def: InstRW<[SKLWriteResGroup76], (instregex "CMP8mr")>;
2230 def: InstRW<[SKLWriteResGroup76], (instregex "CMP8rm")>;
2231 def: InstRW<[SKLWriteResGroup76], (instregex "OR(16|32|64)rm")>;
2232 def: InstRW<[SKLWriteResGroup76], (instregex "OR8rm")>;
2233 def: InstRW<[SKLWriteResGroup76], (instregex "POP(16|32|64)r")>;
2234 def: InstRW<[SKLWriteResGroup76], (instregex "POP(16|32|64)rmr")>;
2235 def: InstRW<[SKLWriteResGroup76], (instregex "SUB(16|32|64)rm")>;
2236 def: InstRW<[SKLWriteResGroup76], (instregex "SUB8rm")>;
2237 def: InstRW<[SKLWriteResGroup76], (instregex "TEST(16|32|64)mr")>;
2238 def: InstRW<[SKLWriteResGroup76], (instregex "TEST8mi")>;
2239 def: InstRW<[SKLWriteResGroup76], (instregex "TEST8mr")>;
2240 def: InstRW<[SKLWriteResGroup76], (instregex "XOR(16|32|64)rm")>;
2241 def: InstRW<[SKLWriteResGroup76], (instregex "XOR8rm")>;
2242
2243 def SKLWriteResGroup77 : SchedWriteRes<[SKLPort5,SKLPort01]> {
2244 let Latency = 6;
2245 let NumMicroOps = 3;
2246 let ResourceCycles = [2,1];
2247 }
2248 def: InstRW<[SKLWriteResGroup77], (instregex "HADDPDrr")>;
2249 def: InstRW<[SKLWriteResGroup77], (instregex "HADDPSrr")>;
2250 def: InstRW<[SKLWriteResGroup77], (instregex "HSUBPDrr")>;
2251 def: InstRW<[SKLWriteResGroup77], (instregex "HSUBPSrr")>;
2252 def: InstRW<[SKLWriteResGroup77], (instregex "VHADDPDYrr")>;
2253 def: InstRW<[SKLWriteResGroup77], (instregex "VHADDPDrr")>;
2254 def: InstRW<[SKLWriteResGroup77], (instregex "VHADDPSYrr")>;
2255 def: InstRW<[SKLWriteResGroup77], (instregex "VHADDPSrr")>;
2256 def: InstRW<[SKLWriteResGroup77], (instregex "VHSUBPDYrr")>;
2257 def: InstRW<[SKLWriteResGroup77], (instregex "VHSUBPDrr")>;
2258 def: InstRW<[SKLWriteResGroup77], (instregex "VHSUBPSYrr")>;
2259 def: InstRW<[SKLWriteResGroup77], (instregex "VHSUBPSrr")>;
2260
2261 def SKLWriteResGroup78 : SchedWriteRes<[SKLPort5,SKLPort015]> {
2262 let Latency = 6;
2263 let NumMicroOps = 3;
2264 let ResourceCycles = [2,1];
2265 }
2266 def: InstRW<[SKLWriteResGroup78], (instregex "CVTSI2SS64rr")>;
2267 def: InstRW<[SKLWriteResGroup78], (instregex "VCVTSI2SS64rr")>;
2268
2269 def SKLWriteResGroup79 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort0156]> {
2270 let Latency = 6;
2271 let NumMicroOps = 4;
2272 let ResourceCycles = [1,2,1];
2273 }
2274 def: InstRW<[SKLWriteResGroup79], (instregex "SHLD(16|32|64)rrCL")>;
2275 def: InstRW<[SKLWriteResGroup79], (instregex "SHRD(16|32|64)rrCL")>;
2276
2277 def SKLWriteResGroup80 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort06,SKLPort0156]> {
2278 let Latency = 6;
2279 let NumMicroOps = 4;
2280 let ResourceCycles = [1,1,1,1];
2281 }
2282 def: InstRW<[SKLWriteResGroup80], (instregex "SLDT(16|32|64)r")>;
2283
2284 def SKLWriteResGroup81 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort237,SKLPort015]> {
2285 let Latency = 6;
2286 let NumMicroOps = 4;
2287 let ResourceCycles = [1,1,1,1];
2288 }
2289 def: InstRW<[SKLWriteResGroup81], (instregex "VCVTPS2PHmr")>;
2290
2291 def SKLWriteResGroup82 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06]> {
2292 let Latency = 6;
2293 let NumMicroOps = 4;
2294 let ResourceCycles = [1,1,1,1];
2295 }
2296 def: InstRW<[SKLWriteResGroup82], (instregex "BTC(16|32|64)mi8")>;
2297 def: InstRW<[SKLWriteResGroup82], (instregex "BTR(16|32|64)mi8")>;
2298 def: InstRW<[SKLWriteResGroup82], (instregex "BTS(16|32|64)mi8")>;
2299 def: InstRW<[SKLWriteResGroup82], (instregex "SAR(16|32|64)m1")>;
2300 def: InstRW<[SKLWriteResGroup82], (instregex "SAR(16|32|64)mi")>;
2301 def: InstRW<[SKLWriteResGroup82], (instregex "SAR8m1")>;
2302 def: InstRW<[SKLWriteResGroup82], (instregex "SAR8mi")>;
2303 def: InstRW<[SKLWriteResGroup82], (instregex "SHL(16|32|64)m1")>;
2304 def: InstRW<[SKLWriteResGroup82], (instregex "SHL(16|32|64)mi")>;
2305 def: InstRW<[SKLWriteResGroup82], (instregex "SHL8m1")>;
2306 def: InstRW<[SKLWriteResGroup82], (instregex "SHL8mi")>;
2307 def: InstRW<[SKLWriteResGroup82], (instregex "SHR(16|32|64)m1")>;
2308 def: InstRW<[SKLWriteResGroup82], (instregex "SHR(16|32|64)mi")>;
2309 def: InstRW<[SKLWriteResGroup82], (instregex "SHR8m1")>;
2310 def: InstRW<[SKLWriteResGroup82], (instregex "SHR8mi")>;
2311
2312 def SKLWriteResGroup83 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort0156]> {
2313 let Latency = 6;
2314 let NumMicroOps = 4;
2315 let ResourceCycles = [1,1,1,1];
2316 }
2317 def: InstRW<[SKLWriteResGroup83], (instregex "ADD(16|32|64)mi8")>;
2318 def: InstRW<[SKLWriteResGroup83], (instregex "ADD(16|32|64)mr")>;
2319 def: InstRW<[SKLWriteResGroup83], (instregex "ADD8mi")>;
2320 def: InstRW<[SKLWriteResGroup83], (instregex "ADD8mr")>;
2321 def: InstRW<[SKLWriteResGroup83], (instregex "AND(16|32|64)mi8")>;
2322 def: InstRW<[SKLWriteResGroup83], (instregex "AND(16|32|64)mr")>;
2323 def: InstRW<[SKLWriteResGroup83], (instregex "AND8mi")>;
2324 def: InstRW<[SKLWriteResGroup83], (instregex "AND8mr")>;
2325 def: InstRW<[SKLWriteResGroup83], (instregex "DEC(16|32|64)m")>;
2326 def: InstRW<[SKLWriteResGroup83], (instregex "DEC8m")>;
2327 def: InstRW<[SKLWriteResGroup83], (instregex "INC(16|32|64)m")>;
2328 def: InstRW<[SKLWriteResGroup83], (instregex "INC8m")>;
2329 def: InstRW<[SKLWriteResGroup83], (instregex "NEG(16|32|64)m")>;
2330 def: InstRW<[SKLWriteResGroup83], (instregex "NEG8m")>;
2331 def: InstRW<[SKLWriteResGroup83], (instregex "NOT(16|32|64)m")>;
2332 def: InstRW<[SKLWriteResGroup83], (instregex "NOT8m")>;
2333 def: InstRW<[SKLWriteResGroup83], (instregex "OR(16|32|64)mi8")>;
2334 def: InstRW<[SKLWriteResGroup83], (instregex "OR(16|32|64)mr")>;
2335 def: InstRW<[SKLWriteResGroup83], (instregex "OR8mi")>;
2336 def: InstRW<[SKLWriteResGroup83], (instregex "OR8mr")>;
2337 def: InstRW<[SKLWriteResGroup83], (instregex "POP(16|32|64)rmm")>;
2338 def: InstRW<[SKLWriteResGroup83], (instregex "PUSH(16|32|64)rmm")>;
2339 def: InstRW<[SKLWriteResGroup83], (instregex "SUB(16|32|64)mi8")>;
2340 def: InstRW<[SKLWriteResGroup83], (instregex "SUB(16|32|64)mr")>;
2341 def: InstRW<[SKLWriteResGroup83], (instregex "SUB8mi")>;
2342 def: InstRW<[SKLWriteResGroup83], (instregex "SUB8mr")>;
2343 def: InstRW<[SKLWriteResGroup83], (instregex "XOR(16|32|64)mi8")>;
2344 def: InstRW<[SKLWriteResGroup83], (instregex "XOR(16|32|64)mr")>;
2345 def: InstRW<[SKLWriteResGroup83], (instregex "XOR8mi")>;
2346 def: InstRW<[SKLWriteResGroup83], (instregex "XOR8mr")>;
2347
2348 def SKLWriteResGroup84 : SchedWriteRes<[SKLPort6,SKLPort0156]> {
2349 let Latency = 6;
2350 let NumMicroOps = 6;
2351 let ResourceCycles = [1,5];
2352 }
2353 def: InstRW<[SKLWriteResGroup84], (instregex "STD")>;
2354
2355 def SKLWriteResGroup85 : SchedWriteRes<[SKLPort23]> {
2356 let Latency = 7;
2357 let NumMicroOps = 1;
2358 let ResourceCycles = [1];
2359 }
2360 def: InstRW<[SKLWriteResGroup85], (instregex "LD_F32m")>;
2361 def: InstRW<[SKLWriteResGroup85], (instregex "LD_F64m")>;
2362 def: InstRW<[SKLWriteResGroup85], (instregex "LD_F80m")>;
2363 def: InstRW<[SKLWriteResGroup85], (instregex "VBROADCASTF128")>;
2364 def: InstRW<[SKLWriteResGroup85], (instregex "VBROADCASTI128")>;
2365 def: InstRW<[SKLWriteResGroup85], (instregex "VBROADCASTSDYrm")>;
2366 def: InstRW<[SKLWriteResGroup85], (instregex "VBROADCASTSSYrm")>;
2367 def: InstRW<[SKLWriteResGroup85], (instregex "VLDDQUYrm")>;
2368 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVAPDYrm")>;
2369 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVAPSYrm")>;
2370 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVDDUPYrm")>;
2371 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVDQAYrm")>;
2372 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVDQUYrm")>;
2373 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVNTDQAYrm")>;
2374 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVSHDUPYrm")>;
2375 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVSLDUPYrm")>;
2376 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVUPDYrm")>;
2377 def: InstRW<[SKLWriteResGroup85], (instregex "VMOVUPSYrm")>;
2378 def: InstRW<[SKLWriteResGroup85], (instregex "VPBROADCASTDYrm")>;
2379 def: InstRW<[SKLWriteResGroup85], (instregex "VPBROADCASTQYrm")>;
2380
2381 def SKLWriteResGroup86 : SchedWriteRes<[SKLPort0,SKLPort5]> {
2382 let Latency = 7;
2383 let NumMicroOps = 2;
2384 let ResourceCycles = [1,1];
2385 }
2386 def: InstRW<[SKLWriteResGroup86], (instregex "VCVTDQ2PDYrr")>;
2387
2388 def SKLWriteResGroup87 : SchedWriteRes<[SKLPort0,SKLPort23]> {
2389 let Latency = 7;
2390 let NumMicroOps = 2;
2391 let ResourceCycles = [1,1];
2392 }
2393 def: InstRW<[SKLWriteResGroup87], (instregex "COMISDrm")>;
2394 def: InstRW<[SKLWriteResGroup87], (instregex "COMISSrm")>;
2395 def: InstRW<[SKLWriteResGroup87], (instregex "UCOMISDrm")>;
2396 def: InstRW<[SKLWriteResGroup87], (instregex "UCOMISSrm")>;
2397 def: InstRW<[SKLWriteResGroup87], (instregex "VCOMISDrm")>;
2398 def: InstRW<[SKLWriteResGroup87], (instregex "VCOMISSrm")>;
2399 def: InstRW<[SKLWriteResGroup87], (instregex "VUCOMISDrm")>;
2400 def: InstRW<[SKLWriteResGroup87], (instregex "VUCOMISSrm")>;
2401
2402 def SKLWriteResGroup88 : SchedWriteRes<[SKLPort5,SKLPort23]> {
2403 let Latency = 7;
2404 let NumMicroOps = 2;
2405 let ResourceCycles = [1,1];
2406 }
2407 def: InstRW<[SKLWriteResGroup88], (instregex "INSERTPSrm")>;
2408 def: InstRW<[SKLWriteResGroup88], (instregex "PACKSSDWrm")>;
2409 def: InstRW<[SKLWriteResGroup88], (instregex "PACKSSWBrm")>;
2410 def: InstRW<[SKLWriteResGroup88], (instregex "PACKUSDWrm")>;
2411 def: InstRW<[SKLWriteResGroup88], (instregex "PACKUSWBrm")>;
2412 def: InstRW<[SKLWriteResGroup88], (instregex "PALIGNRrmi")>;
2413 def: InstRW<[SKLWriteResGroup88], (instregex "PBLENDWrmi")>;
2414 def: InstRW<[SKLWriteResGroup88], (instregex "PSHUFBrm")>;
2415 def: InstRW<[SKLWriteResGroup88], (instregex "PSHUFDmi")>;
2416 def: InstRW<[SKLWriteResGroup88], (instregex "PSHUFHWmi")>;
2417 def: InstRW<[SKLWriteResGroup88], (instregex "PSHUFLWmi")>;
2418 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKHBWrm")>;
2419 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKHDQrm")>;
2420 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKHQDQrm")>;
2421 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKHWDrm")>;
2422 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKLBWrm")>;
2423 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKLDQrm")>;
2424 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKLQDQrm")>;
2425 def: InstRW<[SKLWriteResGroup88], (instregex "PUNPCKLWDrm")>;
2426 def: InstRW<[SKLWriteResGroup88], (instregex "SHUFPDrmi")>;
2427 def: InstRW<[SKLWriteResGroup88], (instregex "SHUFPSrmi")>;
2428 def: InstRW<[SKLWriteResGroup88], (instregex "UNPCKHPDrm")>;
2429 def: InstRW<[SKLWriteResGroup88], (instregex "UNPCKHPSrm")>;
2430 def: InstRW<[SKLWriteResGroup88], (instregex "UNPCKLPDrm")>;
2431 def: InstRW<[SKLWriteResGroup88], (instregex "UNPCKLPSrm")>;
2432 def: InstRW<[SKLWriteResGroup88], (instregex "VINSERTPSrm")>;
2433 def: InstRW<[SKLWriteResGroup88], (instregex "VPACKSSDWrm")>;
2434 def: InstRW<[SKLWriteResGroup88], (instregex "VPACKSSWBrm")>;
2435 def: InstRW<[SKLWriteResGroup88], (instregex "VPACKUSDWrm")>;
2436 def: InstRW<[SKLWriteResGroup88], (instregex "VPACKUSWBrm")>;
2437 def: InstRW<[SKLWriteResGroup88], (instregex "VPALIGNRrmi")>;
2438 def: InstRW<[SKLWriteResGroup88], (instregex "VPBLENDWrmi")>;
2439 def: InstRW<[SKLWriteResGroup88], (instregex "VPBROADCASTBrm")>;
2440 def: InstRW<[SKLWriteResGroup88], (instregex "VPBROADCASTWrm")>;
2441 def: InstRW<[SKLWriteResGroup88], (instregex "VPERMILPDmi")>;
2442 def: InstRW<[SKLWriteResGroup88], (instregex "VPERMILPDrm")>;
2443 def: InstRW<[SKLWriteResGroup88], (instregex "VPERMILPSmi")>;
2444 def: InstRW<[SKLWriteResGroup88], (instregex "VPERMILPSrm")>;
2445 def: InstRW<[SKLWriteResGroup88], (instregex "VPSHUFBrm")>;
2446 def: InstRW<[SKLWriteResGroup88], (instregex "VPSHUFDmi")>;
2447 def: InstRW<[SKLWriteResGroup88], (instregex "VPSHUFHWmi")>;
2448 def: InstRW<[SKLWriteResGroup88], (instregex "VPSHUFLWmi")>;
2449 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKHBWrm")>;
2450 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKHDQrm")>;
2451 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKHQDQrm")>;
2452 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKHWDrm")>;
2453 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKLBWrm")>;
2454 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKLDQrm")>;
2455 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKLQDQrm")>;
2456 def: InstRW<[SKLWriteResGroup88], (instregex "VPUNPCKLWDrm")>;
2457 def: InstRW<[SKLWriteResGroup88], (instregex "VSHUFPDrmi")>;
2458 def: InstRW<[SKLWriteResGroup88], (instregex "VSHUFPSrmi")>;
2459 def: InstRW<[SKLWriteResGroup88], (instregex "VUNPCKHPDrm")>;
2460 def: InstRW<[SKLWriteResGroup88], (instregex "VUNPCKHPSrm")>;
2461 def: InstRW<[SKLWriteResGroup88], (instregex "VUNPCKLPDrm")>;
2462 def: InstRW<[SKLWriteResGroup88], (instregex "VUNPCKLPSrm")>;
2463
2464 def SKLWriteResGroup89 : SchedWriteRes<[SKLPort5,SKLPort015]> {
2465 let Latency = 7;
2466 let NumMicroOps = 2;
2467 let ResourceCycles = [1,1];
2468 }
2469 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPD2DQYrr")>;
2470 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPD2PSYrr")>;
2471 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPH2PSYrr")>;
2472 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPS2PDYrr")>;
2473 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTPS2PHYrr")>;
2474 def: InstRW<[SKLWriteResGroup89], (instregex "VCVTTPD2DQYrr")>;
2475
2476 def SKLWriteResGroup90 : SchedWriteRes<[SKLPort01,SKLPort23]> {
2477 let Latency = 7;
2478 let NumMicroOps = 2;
2479 let ResourceCycles = [1,1];
2480 }
2481 def: InstRW<[SKLWriteResGroup90], (instregex "PABSBrm")>;
2482 def: InstRW<[SKLWriteResGroup90], (instregex "PABSDrm")>;
2483 def: InstRW<[SKLWriteResGroup90], (instregex "PABSWrm")>;
2484 def: InstRW<[SKLWriteResGroup90], (instregex "PADDSBrm")>;
2485 def: InstRW<[SKLWriteResGroup90], (instregex "PADDSWrm")>;
2486 def: InstRW<[SKLWriteResGroup90], (instregex "PADDUSBrm")>;
2487 def: InstRW<[SKLWriteResGroup90], (instregex "PADDUSWrm")>;
2488 def: InstRW<[SKLWriteResGroup90], (instregex "PAVGBrm")>;
2489 def: InstRW<[SKLWriteResGroup90], (instregex "PAVGWrm")>;
2490 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPEQBrm")>;
2491 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPEQDrm")>;
2492 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPEQQrm")>;
2493 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPEQWrm")>;
2494 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPGTBrm")>;
2495 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPGTDrm")>;
2496 def: InstRW<[SKLWriteResGroup90], (instregex "PCMPGTWrm")>;
2497 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXSBrm")>;
2498 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXSDrm")>;
2499 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXSWrm")>;
2500 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXUBrm")>;
2501 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXUDrm")>;
2502 def: InstRW<[SKLWriteResGroup90], (instregex "PMAXUWrm")>;
2503 def: InstRW<[SKLWriteResGroup90], (instregex "PMINSBrm")>;
2504 def: InstRW<[SKLWriteResGroup90], (instregex "PMINSDrm")>;
2505 def: InstRW<[SKLWriteResGroup90], (instregex "PMINSWrm")>;
2506 def: InstRW<[SKLWriteResGroup90], (instregex "PMINUBrm")>;
2507 def: InstRW<[SKLWriteResGroup90], (instregex "PMINUDrm")>;
2508 def: InstRW<[SKLWriteResGroup90], (instregex "PMINUWrm")>;
2509 def: InstRW<[SKLWriteResGroup90], (instregex "PSIGNBrm128")>;
2510 def: InstRW<[SKLWriteResGroup90], (instregex "PSIGNDrm128")>;
2511 def: InstRW<[SKLWriteResGroup90], (instregex "PSIGNWrm128")>;
2512 def: InstRW<[SKLWriteResGroup90], (instregex "PSLLDrm")>;
2513 def: InstRW<[SKLWriteResGroup90], (instregex "PSLLQrm")>;
2514 def: InstRW<[SKLWriteResGroup90], (instregex "PSLLWrm")>;
2515 def: InstRW<[SKLWriteResGroup90], (instregex "PSRADrm")>;
2516 def: InstRW<[SKLWriteResGroup90], (instregex "PSRAWrm")>;
2517 def: InstRW<[SKLWriteResGroup90], (instregex "PSRLDrm")>;
2518 def: InstRW<[SKLWriteResGroup90], (instregex "PSRLQrm")>;
2519 def: InstRW<[SKLWriteResGroup90], (instregex "PSRLWrm")>;
2520 def: InstRW<[SKLWriteResGroup90], (instregex "PSUBSBrm")>;
2521 def: InstRW<[SKLWriteResGroup90], (instregex "PSUBSWrm")>;
2522 def: InstRW<[SKLWriteResGroup90], (instregex "PSUBUSBrm")>;
2523 def: InstRW<[SKLWriteResGroup90], (instregex "PSUBUSWrm")>;
2524 def: InstRW<[SKLWriteResGroup90], (instregex "VPABSBrm")>;
2525 def: InstRW<[SKLWriteResGroup90], (instregex "VPABSDrm")>;
2526 def: InstRW<[SKLWriteResGroup90], (instregex "VPABSWrm")>;
2527 def: InstRW<[SKLWriteResGroup90], (instregex "VPADDSBrm")>;
2528 def: InstRW<[SKLWriteResGroup90], (instregex "VPADDSWrm")>;
2529 def: InstRW<[SKLWriteResGroup90], (instregex "VPADDUSBrm")>;
2530 def: InstRW<[SKLWriteResGroup90], (instregex "VPADDUSWrm")>;
2531 def: InstRW<[SKLWriteResGroup90], (instregex "VPAVGBrm")>;
2532 def: InstRW<[SKLWriteResGroup90], (instregex "VPAVGWrm")>;
2533 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPEQBrm")>;
2534 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPEQDrm")>;
2535 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPEQQrm")>;
2536 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPEQWrm")>;
2537 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPGTBrm")>;
2538 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPGTDrm")>;
2539 def: InstRW<[SKLWriteResGroup90], (instregex "VPCMPGTWrm")>;
2540 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXSBrm")>;
2541 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXSDrm")>;
2542 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXSWrm")>;
2543 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXUBrm")>;
2544 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXUDrm")>;
2545 def: InstRW<[SKLWriteResGroup90], (instregex "VPMAXUWrm")>;
2546 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINSBrm")>;
2547 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINSDrm")>;
2548 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINSWrm")>;
2549 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINUBrm")>;
2550 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINUDrm")>;
2551 def: InstRW<[SKLWriteResGroup90], (instregex "VPMINUWrm")>;
2552 def: InstRW<[SKLWriteResGroup90], (instregex "VPSIGNBrm128")>;
2553 def: InstRW<[SKLWriteResGroup90], (instregex "VPSIGNDrm128")>;
2554 def: InstRW<[SKLWriteResGroup90], (instregex "VPSIGNWrm128")>;
2555 def: InstRW<[SKLWriteResGroup90], (instregex "VPSLLDrm")>;
2556 def: InstRW<[SKLWriteResGroup90], (instregex "VPSLLQrm")>;
2557 def: InstRW<[SKLWriteResGroup90], (instregex "VPSLLVDrm")>;
2558 def: InstRW<[SKLWriteResGroup90], (instregex "VPSLLVQrm")>;
2559 def: InstRW<[SKLWriteResGroup90], (instregex "VPSLLWrm")>;
2560 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRADrm")>;
2561 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRAVDrm")>;
2562 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRAWrm")>;
2563 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRLDrm")>;
2564 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRLQrm")>;
2565 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRLVDrm")>;
2566 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRLVQrm")>;
2567 def: InstRW<[SKLWriteResGroup90], (instregex "VPSRLWrm")>;
2568 def: InstRW<[SKLWriteResGroup90], (instregex "VPSUBSBrm")>;
2569 def: InstRW<[SKLWriteResGroup90], (instregex "VPSUBSWrm")>;
2570 def: InstRW<[SKLWriteResGroup90], (instregex "VPSUBUSBrm")>;
2571 def: InstRW<[SKLWriteResGroup90], (instregex "VPSUBUSWrm")>;
2572
2573 def SKLWriteResGroup91 : SchedWriteRes<[SKLPort23,SKLPort015]> {
2574 let Latency = 7;
2575 let NumMicroOps = 2;
2576 let ResourceCycles = [1,1];
2577 }
2578 def: InstRW<[SKLWriteResGroup91], (instregex "ANDNPDrm")>;
2579 def: InstRW<[SKLWriteResGroup91], (instregex "ANDNPSrm")>;
2580 def: InstRW<[SKLWriteResGroup91], (instregex "ANDPDrm")>;
2581 def: InstRW<[SKLWriteResGroup91], (instregex "ANDPSrm")>;
2582 def: InstRW<[SKLWriteResGroup91], (instregex "BLENDPDrmi")>;
2583 def: InstRW<[SKLWriteResGroup91], (instregex "BLENDPSrmi")>;
2584 def: InstRW<[SKLWriteResGroup91], (instregex "ORPDrm")>;
2585 def: InstRW<[SKLWriteResGroup91], (instregex "ORPSrm")>;
2586 def: InstRW<[SKLWriteResGroup91], (instregex "PADDBrm")>;
2587 def: InstRW<[SKLWriteResGroup91], (instregex "PADDDrm")>;
2588 def: InstRW<[SKLWriteResGroup91], (instregex "PADDQrm")>;
2589 def: InstRW<[SKLWriteResGroup91], (instregex "PADDWrm")>;
2590 def: InstRW<[SKLWriteResGroup91], (instregex "PANDNrm")>;
2591 def: InstRW<[SKLWriteResGroup91], (instregex "PANDrm")>;
2592 def: InstRW<[SKLWriteResGroup91], (instregex "PORrm")>;
2593 def: InstRW<[SKLWriteResGroup91], (instregex "PSUBBrm")>;
2594 def: InstRW<[SKLWriteResGroup91], (instregex "PSUBDrm")>;
2595 def: InstRW<[SKLWriteResGroup91], (instregex "PSUBQrm")>;
2596 def: InstRW<[SKLWriteResGroup91], (instregex "PSUBWrm")>;
2597 def: InstRW<[SKLWriteResGroup91], (instregex "PXORrm")>;
2598 def: InstRW<[SKLWriteResGroup91], (instregex "VANDNPDrm")>;
2599 def: InstRW<[SKLWriteResGroup91], (instregex "VANDNPSrm")>;
2600 def: InstRW<[SKLWriteResGroup91], (instregex "VANDPDrm")>;
2601 def: InstRW<[SKLWriteResGroup91], (instregex "VANDPSrm")>;
2602 def: InstRW<[SKLWriteResGroup91], (instregex "VBLENDPDrmi")>;
2603 def: InstRW<[SKLWriteResGroup91], (instregex "VBLENDPSrmi")>;
2604 def: InstRW<[SKLWriteResGroup91], (instregex "VINSERTF128rm")>;
2605 def: InstRW<[SKLWriteResGroup91], (instregex "VINSERTI128rm")>;
2606 def: InstRW<[SKLWriteResGroup91], (instregex "VMASKMOVPDrm")>;
2607 def: InstRW<[SKLWriteResGroup91], (instregex "VMASKMOVPSrm")>;
2608 def: InstRW<[SKLWriteResGroup91], (instregex "VORPDrm")>;
2609 def: InstRW<[SKLWriteResGroup91], (instregex "VORPSrm")>;
2610 def: InstRW<[SKLWriteResGroup91], (instregex "VPADDBrm")>;
2611 def: InstRW<[SKLWriteResGroup91], (instregex "VPADDDrm")>;
2612 def: InstRW<[SKLWriteResGroup91], (instregex "VPADDQrm")>;
2613 def: InstRW<[SKLWriteResGroup91], (instregex "VPADDWrm")>;
2614 def: InstRW<[SKLWriteResGroup91], (instregex "VPANDNrm")>;
2615 def: InstRW<[SKLWriteResGroup91], (instregex "VPANDrm")>;
2616 def: InstRW<[SKLWriteResGroup91], (instregex "VPBLENDDrmi")>;
2617 def: InstRW<[SKLWriteResGroup91], (instregex "VPMASKMOVDrm")>;
2618 def: InstRW<[SKLWriteResGroup91], (instregex "VPMASKMOVQrm")>;
2619 def: InstRW<[SKLWriteResGroup91], (instregex "VPORrm")>;
2620 def: InstRW<[SKLWriteResGroup91], (instregex "VPSUBBrm")>;
2621 def: InstRW<[SKLWriteResGroup91], (instregex "VPSUBDrm")>;
2622 def: InstRW<[SKLWriteResGroup91], (instregex "VPSUBQrm")>;
2623 def: InstRW<[SKLWriteResGroup91], (instregex "VPSUBWrm")>;
2624 def: InstRW<[SKLWriteResGroup91], (instregex "VPXORrm")>;
2625 def: InstRW<[SKLWriteResGroup91], (instregex "VXORPDrm")>;
2626 def: InstRW<[SKLWriteResGroup91], (instregex "VXORPSrm")>;
2627 def: InstRW<[SKLWriteResGroup91], (instregex "XORPDrm")>;
2628 def: InstRW<[SKLWriteResGroup91], (instregex "XORPSrm")>;
2629
2630 def SKLWriteResGroup92 : SchedWriteRes<[SKLPort5,SKLPort23]> {
2631 let Latency = 7;
2632 let NumMicroOps = 3;
2633 let ResourceCycles = [2,1];
2634 }
2635 def: InstRW<[SKLWriteResGroup92], (instregex "MMX_PACKSSDWirm")>;
2636 def: InstRW<[SKLWriteResGroup92], (instregex "MMX_PACKSSWBirm")>;
2637 def: InstRW<[SKLWriteResGroup92], (instregex "MMX_PACKUSWBirm")>;
2638
2639 def SKLWriteResGroup93 : SchedWriteRes<[SKLPort23,SKLPort06]> {
2640 let Latency = 7;
2641 let NumMicroOps = 3;
2642 let ResourceCycles = [1,2];
2643 }
2644 def: InstRW<[SKLWriteResGroup93], (instregex "CMOVA(16|32|64)rm")>;
2645 def: InstRW<[SKLWriteResGroup93], (instregex "CMOVBE(16|32|64)rm")>;
2646
2647 def SKLWriteResGroup94 : SchedWriteRes<[SKLPort23,SKLPort0156]> {
2648 let Latency = 7;
2649 let NumMicroOps = 3;
2650 let ResourceCycles = [1,2];
2651 }
2652 def: InstRW<[SKLWriteResGroup94], (instregex "LEAVE64")>;
2653 def: InstRW<[SKLWriteResGroup94], (instregex "SCASB")>;
2654 def: InstRW<[SKLWriteResGroup94], (instregex "SCASL")>;
2655 def: InstRW<[SKLWriteResGroup94], (instregex "SCASQ")>;
2656 def: InstRW<[SKLWriteResGroup94], (instregex "SCASW")>;
2657
2658 def SKLWriteResGroup95 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort015]> {
2659 let Latency = 7;
2660 let NumMicroOps = 3;
2661 let ResourceCycles = [1,1,1];
2662 }
2663 def: InstRW<[SKLWriteResGroup95], (instregex "CVTTSS2SI64rr")>;
2664 def: InstRW<[SKLWriteResGroup95], (instregex "CVTTSS2SIrr")>;
2665 def: InstRW<[SKLWriteResGroup95], (instregex "VCVTTSS2SI64rr")>;
2666 def: InstRW<[SKLWriteResGroup95], (instregex "VCVTTSS2SIrr")>;
2667
2668 def SKLWriteResGroup96 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort05]> {
2669 let Latency = 7;
2670 let NumMicroOps = 3;
2671 let ResourceCycles = [1,1,1];
2672 }
2673 def: InstRW<[SKLWriteResGroup96], (instregex "FLDCW16m")>;
2674
2675 def SKLWriteResGroup97 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort0156]> {
2676 let Latency = 7;
2677 let NumMicroOps = 3;
2678 let ResourceCycles = [1,1,1];
2679 }
2680 def: InstRW<[SKLWriteResGroup97], (instregex "LDMXCSR")>;
2681 def: InstRW<[SKLWriteResGroup97], (instregex "VLDMXCSR")>;
2682
2683 def SKLWriteResGroup98 : SchedWriteRes<[SKLPort6,SKLPort23,SKLPort0156]> {
2684 let Latency = 7;
2685 let NumMicroOps = 3;
2686 let ResourceCycles = [1,1,1];
2687 }
2688 def: InstRW<[SKLWriteResGroup98], (instregex "LRETQ")>;
2689 def: InstRW<[SKLWriteResGroup98], (instregex "RETQ")>;
2690
2691 def SKLWriteResGroup99 : SchedWriteRes<[SKLPort23,SKLPort06,SKLPort15]> {
2692 let Latency = 7;
2693 let NumMicroOps = 3;
2694 let ResourceCycles = [1,1,1];
2695 }
2696 def: InstRW<[SKLWriteResGroup99], (instregex "BEXTR32rm")>;
2697 def: InstRW<[SKLWriteResGroup99], (instregex "BEXTR64rm")>;
2698
2699 def SKLWriteResGroup100 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06]> {
2700 let Latency = 7;
2701 let NumMicroOps = 5;
2702 let ResourceCycles = [1,1,1,2];
2703 }
2704 def: InstRW<[SKLWriteResGroup100], (instregex "ROL(16|32|64)m1")>;
2705 def: InstRW<[SKLWriteResGroup100], (instregex "ROL(16|32|64)mi")>;
2706 def: InstRW<[SKLWriteResGroup100], (instregex "ROL8m1")>;
2707 def: InstRW<[SKLWriteResGroup100], (instregex "ROL8mi")>;
2708 def: InstRW<[SKLWriteResGroup100], (instregex "ROR(16|32|64)m1")>;
2709 def: InstRW<[SKLWriteResGroup100], (instregex "ROR(16|32|64)mi")>;
2710 def: InstRW<[SKLWriteResGroup100], (instregex "ROR8m1")>;
2711 def: InstRW<[SKLWriteResGroup100], (instregex "ROR8mi")>;
2712
2713 def SKLWriteResGroup101 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort0156]> {
2714 let Latency = 7;
2715 let NumMicroOps = 5;
2716 let ResourceCycles = [1,1,1,2];
2717 }
2718 def: InstRW<[SKLWriteResGroup101], (instregex "XADD(16|32|64)rm")>;
2719 def: InstRW<[SKLWriteResGroup101], (instregex "XADD8rm")>;
2720
2721 def SKLWriteResGroup102 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,SKLPort0156]> {
2722 let Latency = 7;
2723 let NumMicroOps = 5;
2724 let ResourceCycles = [1,1,1,1,1];
2725 }
2726 def: InstRW<[SKLWriteResGroup102], (instregex "CALL(16|32|64)m")>;
2727 def: InstRW<[SKLWriteResGroup102], (instregex "FARCALL64")>;
2728
2729 def SKLWriteResGroup103 : SchedWriteRes<[SKLPort6,SKLPort06,SKLPort15,SKLPort0156]> {
2730 let Latency = 7;
2731 let NumMicroOps = 7;
2732 let ResourceCycles = [1,3,1,2];
2733 }
2734 def: InstRW<[SKLWriteResGroup103], (instregex "LOOP")>;
2735
2736 def SKLWriteResGroup104 : SchedWriteRes<[SKLPort0]> {
2737 let Latency = 8;
2738 let NumMicroOps = 2;
2739 let ResourceCycles = [2];
2740 }
2741 def: InstRW<[SKLWriteResGroup104], (instregex "AESIMCrr")>;
2742 def: InstRW<[SKLWriteResGroup104], (instregex "VAESIMCrr")>;
2743
2744 def SKLWriteResGroup105 : SchedWriteRes<[SKLPort015]> {
2745 let Latency = 8;
2746 let NumMicroOps = 2;
2747 let ResourceCycles = [2];
2748 }
2749 def: InstRW<[SKLWriteResGroup105], (instregex "PMULLDrr")>;
2750 def: InstRW<[SKLWriteResGroup105], (instregex "ROUNDPDr")>;
2751 def: InstRW<[SKLWriteResGroup105], (instregex "ROUNDPSr")>;
2752 def: InstRW<[SKLWriteResGroup105], (instregex "ROUNDSDr")>;
2753 def: InstRW<[SKLWriteResGroup105], (instregex "ROUNDSSr")>;
2754 def: InstRW<[SKLWriteResGroup105], (instregex "VPMULLDYrr")>;
2755 def: InstRW<[SKLWriteResGroup105], (instregex "VPMULLDrr")>;
2756 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDPDr")>;
2757 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDPSr")>;
2758 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDSDr")>;
2759 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDSSr")>;
2760 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDYPDr")>;
2761 def: InstRW<[SKLWriteResGroup105], (instregex "VROUNDYPSr")>;
2762
2763 def SKLWriteResGroup106 : SchedWriteRes<[SKLPort0,SKLPort23]> {
2764 let Latency = 8;
2765 let NumMicroOps = 2;
2766 let ResourceCycles = [1,1];
2767 }
2768 def: InstRW<[SKLWriteResGroup106], (instregex "VTESTPDrm")>;
2769 def: InstRW<[SKLWriteResGroup106], (instregex "VTESTPSrm")>;
2770
2771 def SKLWriteResGroup107 : SchedWriteRes<[SKLPort1,SKLPort23]> {
2772 let Latency = 8;
2773 let NumMicroOps = 2;
2774 let ResourceCycles = [1,1];
2775 }
2776 def: InstRW<[SKLWriteResGroup107], (instregex "BSF(16|32|64)rm")>;
2777 def: InstRW<[SKLWriteResGroup107], (instregex "BSR(16|32|64)rm")>;
2778 def: InstRW<[SKLWriteResGroup107], (instregex "IMUL64m")>;
2779 def: InstRW<[SKLWriteResGroup107], (instregex "IMUL(32|64)rm(i8?)")>;
2780 def: InstRW<[SKLWriteResGroup107], (instregex "IMUL8m")>;
2781 def: InstRW<[SKLWriteResGroup107], (instregex "LZCNT(16|32|64)rm")>;
2782 def: InstRW<[SKLWriteResGroup107], (instregex "MUL(16|32|64)m")>;
2783 def: InstRW<[SKLWriteResGroup107], (instregex "MUL8m")>;
2784 def: InstRW<[SKLWriteResGroup107], (instregex "PDEP32rm")>;
2785 def: InstRW<[SKLWriteResGroup107], (instregex "PDEP64rm")>;
2786 def: InstRW<[SKLWriteResGroup107], (instregex "PEXT32rm")>;
2787 def: InstRW<[SKLWriteResGroup107], (instregex "PEXT64rm")>;
2788 def: InstRW<[SKLWriteResGroup107], (instregex "POPCNT(16|32|64)rm")>;
2789 def: InstRW<[SKLWriteResGroup107], (instregex "TZCNT(16|32|64)rm")>;
2790
2791 def SKLWriteResGroup107_16 : SchedWriteRes<[SKLPort1, SKLPort0156, SKLPort23]> {
2792 let Latency = 3;
2793 let NumMicroOps = 3;
2794 let ResourceCycles = [1,1,1];
2795 }
2796 def: InstRW<[SKLWriteResGroup107_16], (instregex "IMUL16rm(i8?)")>;
2797
2798 def SKLWriteResGroup107_16_2 : SchedWriteRes<[SKLPort1, SKLPort0156, SKLPort23]> {
2799 let Latency = 3;
2800 let NumMicroOps = 5;
2801 }
2802 def: InstRW<[SKLWriteResGroup107_16_2], (instregex "IMUL16m")>;
2803 def: InstRW<[SKLWriteResGroup107_16_2], (instregex "MUL16m")>;
2804
2805 def SKLWriteResGroup107_32 : SchedWriteRes<[SKLPort1, SKLPort0156, SKLPort23]> {
2806 let Latency = 3;
2807 let NumMicroOps = 3;
2808 let ResourceCycles = [1,1,1];
2809 }
2810 def: InstRW<[SKLWriteResGroup107_32], (instregex "IMUL32m")>;
2811 def: InstRW<[SKLWriteResGroup107_32], (instregex "MUL32m")>;
2812
2813 def SKLWriteResGroup108 : SchedWriteRes<[SKLPort5,SKLPort23]> {
2814 let Latency = 8;
2815 let NumMicroOps = 2;
2816 let ResourceCycles = [1,1];
2817 }
2818 def: InstRW<[SKLWriteResGroup108], (instregex "FCOM32m")>;
2819 def: InstRW<[SKLWriteResGroup108], (instregex "FCOM64m")>;
2820 def: InstRW<[SKLWriteResGroup108], (instregex "FCOMP32m")>;
2821 def: InstRW<[SKLWriteResGroup108], (instregex "FCOMP64m")>;
2822 def: InstRW<[SKLWriteResGroup108], (instregex "MMX_PSADBWirm")>;
2823 def: InstRW<[SKLWriteResGroup108], (instregex "VPACKSSDWYrm")>;
2824 def: InstRW<[SKLWriteResGroup108], (instregex "VPACKSSWBYrm")>;
2825 def: InstRW<[SKLWriteResGroup108], (instregex "VPACKUSDWYrm")>;
2826 def: InstRW<[SKLWriteResGroup108], (instregex "VPACKUSWBYrm")>;
2827 def: InstRW<[SKLWriteResGroup108], (instregex "VPALIGNRYrmi")>;
2828 def: InstRW<[SKLWriteResGroup108], (instregex "VPBLENDWYrmi")>;
2829 def: InstRW<[SKLWriteResGroup108], (instregex "VPBROADCASTBYrm")>;
2830 def: InstRW<[SKLWriteResGroup108], (instregex "VPBROADCASTWYrm")>;
2831 def: InstRW<[SKLWriteResGroup108], (instregex "VPERMILPDYmi")>;
2832 def: InstRW<[SKLWriteResGroup108], (instregex "VPERMILPDYrm")>;
2833 def: InstRW<[SKLWriteResGroup108], (instregex "VPERMILPSYmi")>;
2834 def: InstRW<[SKLWriteResGroup108], (instregex "VPERMILPSYrm")>;
2835 def: InstRW<[SKLWriteResGroup108], (instregex "VPMOVSXBDYrm")>;
2836 def: InstRW<[SKLWriteResGroup108], (instregex "VPMOVSXBQYrm")>;
2837 def: InstRW<[SKLWriteResGroup108], (instregex "VPMOVSXWQYrm")>;
2838 def: InstRW<[SKLWriteResGroup108], (instregex "VPSHUFBYrm")>;
2839 def: InstRW<[SKLWriteResGroup108], (instregex "VPSHUFDYmi")>;
2840 def: InstRW<[SKLWriteResGroup108], (instregex "VPSHUFHWYmi")>;
2841 def: InstRW<[SKLWriteResGroup108], (instregex "VPSHUFLWYmi")>;
2842 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKHBWYrm")>;
2843 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKHDQYrm")>;
2844 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKHQDQYrm")>;
2845 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKHWDYrm")>;
2846 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKLBWYrm")>;
2847 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKLDQYrm")>;
2848 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKLQDQYrm")>;
2849 def: InstRW<[SKLWriteResGroup108], (instregex "VPUNPCKLWDYrm")>;
2850 def: InstRW<[SKLWriteResGroup108], (instregex "VSHUFPDYrmi")>;
2851 def: InstRW<[SKLWriteResGroup108], (instregex "VSHUFPSYrmi")>;
2852 def: InstRW<[SKLWriteResGroup108], (instregex "VUNPCKHPDYrm")>;
2853 def: InstRW<[SKLWriteResGroup108], (instregex "VUNPCKHPSYrm")>;
2854 def: InstRW<[SKLWriteResGroup108], (instregex "VUNPCKLPDYrm")>;
2855 def: InstRW<[SKLWriteResGroup108], (instregex "VUNPCKLPSYrm")>;
2856
2857 def SKLWriteResGroup109 : SchedWriteRes<[SKLPort01,SKLPort23]> {
2858 let Latency = 8;
2859 let NumMicroOps = 2;
2860 let ResourceCycles = [1,1];
2861 }
2862 def: InstRW<[SKLWriteResGroup109], (instregex "VPABSBYrm")>;
2863 def: InstRW<[SKLWriteResGroup109], (instregex "VPABSDYrm")>;
2864 def: InstRW<[SKLWriteResGroup109], (instregex "VPABSWYrm")>;
2865 def: InstRW<[SKLWriteResGroup109], (instregex "VPADDSBYrm")>;
2866 def: InstRW<[SKLWriteResGroup109], (instregex "VPADDSWYrm")>;
2867 def: InstRW<[SKLWriteResGroup109], (instregex "VPADDUSBYrm")>;
2868 def: InstRW<[SKLWriteResGroup109], (instregex "VPADDUSWYrm")>;
2869 def: InstRW<[SKLWriteResGroup109], (instregex "VPAVGBYrm")>;
2870 def: InstRW<[SKLWriteResGroup109], (instregex "VPAVGWYrm")>;
2871 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPEQBYrm")>;
2872 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPEQDYrm")>;
2873 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPEQQYrm")>;
2874 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPEQWYrm")>;
2875 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPGTBYrm")>;
2876 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPGTDYrm")>;
2877 def: InstRW<[SKLWriteResGroup109], (instregex "VPCMPGTWYrm")>;
2878 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXSBYrm")>;
2879 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXSDYrm")>;
2880 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXSWYrm")>;
2881 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXUBYrm")>;
2882 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXUDYrm")>;
2883 def: InstRW<[SKLWriteResGroup109], (instregex "VPMAXUWYrm")>;
2884 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINSBYrm")>;
2885 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINSDYrm")>;
2886 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINSWYrm")>;
2887 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINUBYrm")>;
2888 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINUDYrm")>;
2889 def: InstRW<[SKLWriteResGroup109], (instregex "VPMINUWYrm")>;
2890 def: InstRW<[SKLWriteResGroup109], (instregex "VPSIGNBYrm256")>;
2891 def: InstRW<[SKLWriteResGroup109], (instregex "VPSIGNDYrm256")>;
2892 def: InstRW<[SKLWriteResGroup109], (instregex "VPSIGNWYrm256")>;
2893 def: InstRW<[SKLWriteResGroup109], (instregex "VPSLLDYrm")>;
2894 def: InstRW<[SKLWriteResGroup109], (instregex "VPSLLQYrm")>;
2895 def: InstRW<[SKLWriteResGroup109], (instregex "VPSLLVDYrm")>;
2896 def: InstRW<[SKLWriteResGroup109], (instregex "VPSLLVQYrm")>;
2897 def: InstRW<[SKLWriteResGroup109], (instregex "VPSLLWYrm")>;
2898 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRADYrm")>;
2899 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRAVDYrm")>;
2900 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRAWYrm")>;
2901 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRLDYrm")>;
2902 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRLQYrm")>;
2903 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRLVDYrm")>;
2904 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRLVQYrm")>;
2905 def: InstRW<[SKLWriteResGroup109], (instregex "VPSRLWYrm")>;
2906 def: InstRW<[SKLWriteResGroup109], (instregex "VPSUBSBYrm")>;
2907 def: InstRW<[SKLWriteResGroup109], (instregex "VPSUBSWYrm")>;
2908 def: InstRW<[SKLWriteResGroup109], (instregex "VPSUBUSBYrm")>;
2909 def: InstRW<[SKLWriteResGroup109], (instregex "VPSUBUSWYrm")>;
2910
2911 def SKLWriteResGroup110 : SchedWriteRes<[SKLPort23,SKLPort015]> {
2912 let Latency = 8;
2913 let NumMicroOps = 2;
2914 let ResourceCycles = [1,1];
2915 }
2916 def: InstRW<[SKLWriteResGroup110], (instregex "VANDNPDYrm")>;
2917 def: InstRW<[SKLWriteResGroup110], (instregex "VANDNPSYrm")>;
2918 def: InstRW<[SKLWriteResGroup110], (instregex "VANDPDYrm")>;
2919 def: InstRW<[SKLWriteResGroup110], (instregex "VANDPSYrm")>;
2920 def: InstRW<[SKLWriteResGroup110], (instregex "VBLENDPDYrmi")>;
2921 def: InstRW<[SKLWriteResGroup110], (instregex "VBLENDPSYrmi")>;
2922 def: InstRW<[SKLWriteResGroup110], (instregex "VMASKMOVPDYrm")>;
2923 def: InstRW<[SKLWriteResGroup110], (instregex "VMASKMOVPSYrm")>;
2924 def: InstRW<[SKLWriteResGroup110], (instregex "VORPDYrm")>;
2925 def: InstRW<[SKLWriteResGroup110], (instregex "VORPSYrm")>;
2926 def: InstRW<[SKLWriteResGroup110], (instregex "VPADDBYrm")>;
2927 def: InstRW<[SKLWriteResGroup110], (instregex "VPADDDYrm")>;
2928 def: InstRW<[SKLWriteResGroup110], (instregex "VPADDQYrm")>;
2929 def: InstRW<[SKLWriteResGroup110], (instregex "VPADDWYrm")>;
2930 def: InstRW<[SKLWriteResGroup110], (instregex "VPANDNYrm")>;
2931 def: InstRW<[SKLWriteResGroup110], (instregex "VPANDYrm")>;
2932 def: InstRW<[SKLWriteResGroup110], (instregex "VPBLENDDYrmi")>;
2933 def: InstRW<[SKLWriteResGroup110], (instregex "VPMASKMOVDYrm")>;
2934 def: InstRW<[SKLWriteResGroup110], (instregex "VPMASKMOVQYrm")>;
2935 def: InstRW<[SKLWriteResGroup110], (instregex "VPORYrm")>;
2936 def: InstRW<[SKLWriteResGroup110], (instregex "VPSUBBYrm")>;
2937 def: InstRW<[SKLWriteResGroup110], (instregex "VPSUBDYrm")>;
2938 def: InstRW<[SKLWriteResGroup110], (instregex "VPSUBQYrm")>;
2939 def: InstRW<[SKLWriteResGroup110], (instregex "VPSUBWYrm")>;
2940 def: InstRW<[SKLWriteResGroup110], (instregex "VPXORYrm")>;
2941 def: InstRW<[SKLWriteResGroup110], (instregex "VXORPDYrm")>;
2942 def: InstRW<[SKLWriteResGroup110], (instregex "VXORPSYrm")>;
2943
2944 def SKLWriteResGroup111 : SchedWriteRes<[SKLPort23,SKLPort015]> {
2945 let Latency = 8;
2946 let NumMicroOps = 3;
2947 let ResourceCycles = [1,2];
2948 }
2949 def: InstRW<[SKLWriteResGroup111], (instregex "BLENDVPDrm0")>;
2950 def: InstRW<[SKLWriteResGroup111], (instregex "BLENDVPSrm0")>;
2951 def: InstRW<[SKLWriteResGroup111], (instregex "PBLENDVBrm0")>;
2952 def: InstRW<[SKLWriteResGroup111], (instregex "VBLENDVPDrm")>;
2953 def: InstRW<[SKLWriteResGroup111], (instregex "VBLENDVPSrm")>;
2954 def: InstRW<[SKLWriteResGroup111], (instregex "VPBLENDVBYrm")>;
2955 def: InstRW<[SKLWriteResGroup111], (instregex "VPBLENDVBrm")>;
2956
2957 def SKLWriteResGroup112 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
2958 let Latency = 8;
2959 let NumMicroOps = 4;
2960 let ResourceCycles = [1,2,1];
2961 }
2962 def: InstRW<[SKLWriteResGroup112], (instregex "MMX_PHADDSWrm64")>;
2963 def: InstRW<[SKLWriteResGroup112], (instregex "MMX_PHSUBSWrm64")>;
2964
2965 def SKLWriteResGroup113 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort05]> {
2966 let Latency = 8;
2967 let NumMicroOps = 4;
2968 let ResourceCycles = [2,1,1];
2969 }
2970 def: InstRW<[SKLWriteResGroup113], (instregex "MMX_PHADDWrm64")>;
2971 def: InstRW<[SKLWriteResGroup113], (instregex "MMX_PHADDrm64")>;
2972 def: InstRW<[SKLWriteResGroup113], (instregex "MMX_PHSUBDrm64")>;
2973 def: InstRW<[SKLWriteResGroup113], (instregex "MMX_PHSUBWrm64")>;
2974
2975 def SKLWriteResGroup114 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort237,SKLPort015]> {
2976 let Latency = 8;
2977 let NumMicroOps = 4;
2978 let ResourceCycles = [1,1,1,1];
2979 }
2980 def: InstRW<[SKLWriteResGroup114], (instregex "VCVTPS2PHYmr")>;
2981
2982 def SKLWriteResGroup115 : SchedWriteRes<[SKLPort23,SKLPort237,SKLPort06]> {
2983 let Latency = 8;
2984 let NumMicroOps = 5;
2985 let ResourceCycles = [1,1,3];
2986 }
2987 def: InstRW<[SKLWriteResGroup115], (instregex "ROR(16|32|64)mCL")>;
2988 def: InstRW<[SKLWriteResGroup115], (instregex "ROR8mCL")>;
2989
2990 def SKLWriteResGroup116 : SchedWriteRes<[SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
2991 let Latency = 8;
2992 let NumMicroOps = 5;
2993 let ResourceCycles = [1,1,1,2];
2994 }
2995 def: InstRW<[SKLWriteResGroup116], (instregex "RCL(16|32|64)m1")>;
2996 def: InstRW<[SKLWriteResGroup116], (instregex "RCL(16|32|64)mi")>;
2997 def: InstRW<[SKLWriteResGroup116], (instregex "RCL8m1")>;
2998 def: InstRW<[SKLWriteResGroup116], (instregex "RCL8mi")>;
2999 def: InstRW<[SKLWriteResGroup116], (instregex "RCR(16|32|64)m1")>;
3000 def: InstRW<[SKLWriteResGroup116], (instregex "RCR(16|32|64)mi")>;
3001 def: InstRW<[SKLWriteResGroup116], (instregex "RCR8m1")>;
3002 def: InstRW<[SKLWriteResGroup116], (instregex "RCR8mi")>;
3003
3004 def SKLWriteResGroup117 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06]> {
3005 let Latency = 8;
3006 let NumMicroOps = 6;
3007 let ResourceCycles = [1,1,1,3];
3008 }
3009 def: InstRW<[SKLWriteResGroup117], (instregex "ROL(16|32|64)mCL")>;
3010 def: InstRW<[SKLWriteResGroup117], (instregex "ROL8mCL")>;
3011 def: InstRW<[SKLWriteResGroup117], (instregex "SAR(16|32|64)mCL")>;
3012 def: InstRW<[SKLWriteResGroup117], (instregex "SAR8mCL")>;
3013 def: InstRW<[SKLWriteResGroup117], (instregex "SHL(16|32|64)mCL")>;
3014 def: InstRW<[SKLWriteResGroup117], (instregex "SHL8mCL")>;
3015 def: InstRW<[SKLWriteResGroup117], (instregex "SHR(16|32|64)mCL")>;
3016 def: InstRW<[SKLWriteResGroup117], (instregex "SHR8mCL")>;
3017
3018 def SKLWriteResGroup118 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort0156]> {
3019 let Latency = 8;
3020 let NumMicroOps = 6;
3021 let ResourceCycles = [1,1,1,3];
3022 }
3023 def: InstRW<[SKLWriteResGroup118], (instregex "ADC(16|32|64)mi8")>;
3024 def: InstRW<[SKLWriteResGroup118], (instregex "ADC8mi")>;
3025
3026 def SKLWriteResGroup119 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
3027 let Latency = 8;
3028 let NumMicroOps = 6;
3029 let ResourceCycles = [1,1,1,2,1];
3030 }
3031 def: InstRW<[SKLWriteResGroup119], (instregex "ADC(16|32|64)mr")>;
3032 def: InstRW<[SKLWriteResGroup119], (instregex "ADC8mr")>;
3033 def: InstRW<[SKLWriteResGroup119], (instregex "CMPXCHG(16|32|64)rm")>;
3034 def: InstRW<[SKLWriteResGroup119], (instregex "CMPXCHG8rm")>;
3035 def: InstRW<[SKLWriteResGroup119], (instregex "SBB(16|32|64)mi8")>;
3036 def: InstRW<[SKLWriteResGroup119], (instregex "SBB(16|32|64)mr")>;
3037 def: InstRW<[SKLWriteResGroup119], (instregex "SBB8mi")>;
3038 def: InstRW<[SKLWriteResGroup119], (instregex "SBB8mr")>;
3039
3040 def SKLWriteResGroup120 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3041 let Latency = 9;
3042 let NumMicroOps = 2;
3043 let ResourceCycles = [1,1];
3044 }
3045 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_CVTPI2PSirm")>;
3046 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMADDUBSWrm64")>;
3047 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMADDWDirm")>;
3048 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMULHRSWrm64")>;
3049 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMULHUWirm")>;
3050 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMULHWirm")>;
3051 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMULLWirm")>;
3052 def: InstRW<[SKLWriteResGroup120], (instregex "MMX_PMULUDQirm")>;
3053 def: InstRW<[SKLWriteResGroup120], (instregex "RCPSSm")>;
3054 def: InstRW<[SKLWriteResGroup120], (instregex "RSQRTSSm")>;
3055 def: InstRW<[SKLWriteResGroup120], (instregex "VRCPSSm")>;
3056 def: InstRW<[SKLWriteResGroup120], (instregex "VRSQRTSSm")>;
3057 def: InstRW<[SKLWriteResGroup120], (instregex "VTESTPDYrm")>;
3058 def: InstRW<[SKLWriteResGroup120], (instregex "VTESTPSYrm")>;
3059
3060 def SKLWriteResGroup121 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3061 let Latency = 9;
3062 let NumMicroOps = 2;
3063 let ResourceCycles = [1,1];
3064 }
3065 def: InstRW<[SKLWriteResGroup121], (instregex "PCMPGTQrm")>;
3066 def: InstRW<[SKLWriteResGroup121], (instregex "PSADBWrm")>;
3067 def: InstRW<[SKLWriteResGroup121], (instregex "VPCMPGTQrm")>;
3068 def: InstRW<[SKLWriteResGroup121], (instregex "VPMOVSXBWYrm")>;
3069 def: InstRW<[SKLWriteResGroup121], (instregex "VPMOVSXDQYrm")>;
3070 def: InstRW<[SKLWriteResGroup121], (instregex "VPMOVSXWDYrm")>;
3071 def: InstRW<[SKLWriteResGroup121], (instregex "VPMOVZXWDYrm")>;
3072 def: InstRW<[SKLWriteResGroup121], (instregex "VPSADBWrm")>;
3073
3074 def SKLWriteResGroup122 : SchedWriteRes<[SKLPort01,SKLPort23]> {
3075 let Latency = 9;
3076 let NumMicroOps = 2;
3077 let ResourceCycles = [1,1];
3078 }
3079 def: InstRW<[SKLWriteResGroup122], (instregex "ADDSDrm")>;
3080 def: InstRW<[SKLWriteResGroup122], (instregex "ADDSSrm")>;
3081 def: InstRW<[SKLWriteResGroup122], (instregex "MULSDrm")>;
3082 def: InstRW<[SKLWriteResGroup122], (instregex "MULSSrm")>;
3083 def: InstRW<[SKLWriteResGroup122], (instregex "SUBSDrm")>;
3084 def: InstRW<[SKLWriteResGroup122], (instregex "SUBSSrm")>;
3085 def: InstRW<[SKLWriteResGroup122], (instregex "VADDSDrm")>;
3086 def: InstRW<[SKLWriteResGroup122], (instregex "VADDSSrm")>;
3087 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD132SDm")>;
3088 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD132SSm")>;
3089 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD213SDm")>;
3090 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD213SSm")>;
3091 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD231SDm")>;
3092 def: InstRW<[SKLWriteResGroup122], (instregex "VFMADD231SSm")>;
3093 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB132SDm")>;
3094 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB132SSm")>;
3095 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB213SDm")>;
3096 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB213SSm")>;
3097 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB231SDm")>;
3098 def: InstRW<[SKLWriteResGroup122], (instregex "VFMSUB231SSm")>;
3099 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD132SDm")>;
3100 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD132SSm")>;
3101 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD213SDm")>;
3102 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD213SSm")>;
3103 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD231SDm")>;
3104 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMADD231SSm")>;
3105 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB132SDm")>;
3106 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB132SSm")>;
3107 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB213SDm")>;
3108 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB213SSm")>;
3109 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB231SDm")>;
3110 def: InstRW<[SKLWriteResGroup122], (instregex "VFNMSUB231SSm")>;
3111 def: InstRW<[SKLWriteResGroup122], (instregex "VMULSDrm")>;
3112 def: InstRW<[SKLWriteResGroup122], (instregex "VMULSSrm")>;
3113 def: InstRW<[SKLWriteResGroup122], (instregex "VSUBSDrm")>;
3114 def: InstRW<[SKLWriteResGroup122], (instregex "VSUBSSrm")>;
3115
3116 def SKLWriteResGroup123 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3117 let Latency = 9;
3118 let NumMicroOps = 2;
3119 let ResourceCycles = [1,1];
3120 }
3121 def: InstRW<[SKLWriteResGroup123], (instregex "CMPSSrm")>;
3122 def: InstRW<[SKLWriteResGroup123], (instregex "CVTPS2PDrm")>;
3123 def: InstRW<[SKLWriteResGroup123], (instregex "MAXSDrm")>;
3124 def: InstRW<[SKLWriteResGroup123], (instregex "MAXSSrm")>;
3125 def: InstRW<[SKLWriteResGroup123], (instregex "MINSDrm")>;
3126 def: InstRW<[SKLWriteResGroup123], (instregex "MINSSrm")>;
3127 def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVTPS2PIirm")>;
3128 def: InstRW<[SKLWriteResGroup123], (instregex "MMX_CVTTPS2PIirm")>;
3129 def: InstRW<[SKLWriteResGroup123], (instregex "VCMPSDrm")>;
3130 def: InstRW<[SKLWriteResGroup123], (instregex "VCMPSSrm")>;
3131 def: InstRW<[SKLWriteResGroup123], (instregex "VCVTPH2PSrm")>;
3132 def: InstRW<[SKLWriteResGroup123], (instregex "VCVTPS2PDrm")>;
3133 def: InstRW<[SKLWriteResGroup123], (instregex "VMAXSDrm")>;
3134 def: InstRW<[SKLWriteResGroup123], (instregex "VMAXSSrm")>;
3135 def: InstRW<[SKLWriteResGroup123], (instregex "VMINSDrm")>;
3136 def: InstRW<[SKLWriteResGroup123], (instregex "VMINSSrm")>;
3137
3138 def SKLWriteResGroup124 : SchedWriteRes<[SKLPort5,SKLPort015]> {
3139 let Latency = 9;
3140 let NumMicroOps = 3;
3141 let ResourceCycles = [1,2];
3142 }
3143 def: InstRW<[SKLWriteResGroup124], (instregex "DPPDrri")>;
3144 def: InstRW<[SKLWriteResGroup124], (instregex "VDPPDrri")>;
3145
3146 def SKLWriteResGroup125 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3147 let Latency = 9;
3148 let NumMicroOps = 3;
3149 let ResourceCycles = [1,2];
3150 }
3151 def: InstRW<[SKLWriteResGroup125], (instregex "VBLENDVPDYrm")>;
3152 def: InstRW<[SKLWriteResGroup125], (instregex "VBLENDVPSYrm")>;
3153
3154 def SKLWriteResGroup126 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
3155 let Latency = 9;
3156 let NumMicroOps = 3;
3157 let ResourceCycles = [1,1,1];
3158 }
3159 def: InstRW<[SKLWriteResGroup126], (instregex "PTESTrm")>;
3160 def: InstRW<[SKLWriteResGroup126], (instregex "VPTESTrm")>;
3161
3162 def SKLWriteResGroup127 : SchedWriteRes<[SKLPort1,SKLPort5,SKLPort23]> {
3163 let Latency = 9;
3164 let NumMicroOps = 3;
3165 let ResourceCycles = [1,1,1];
3166 }
3167 def: InstRW<[SKLWriteResGroup127], (instregex "MULX64rm")>;
3168
3169 def SKLWriteResGroup128 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
3170 let Latency = 9;
3171 let NumMicroOps = 4;
3172 let ResourceCycles = [2,1,1];
3173 }
3174 def: InstRW<[SKLWriteResGroup128], (instregex "PHADDSWrm128")>;
3175 def: InstRW<[SKLWriteResGroup128], (instregex "PHSUBSWrm128")>;
3176 def: InstRW<[SKLWriteResGroup128], (instregex "VPHADDSWrm128")>;
3177 def: InstRW<[SKLWriteResGroup128], (instregex "VPHSUBSWrm128")>;
3178
3179 def SKLWriteResGroup129 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3180 let Latency = 9;
3181 let NumMicroOps = 4;
3182 let ResourceCycles = [2,1,1];
3183 }
3184 def: InstRW<[SKLWriteResGroup129], (instregex "PHADDDrm")>;
3185 def: InstRW<[SKLWriteResGroup129], (instregex "PHADDWrm")>;
3186 def: InstRW<[SKLWriteResGroup129], (instregex "PHSUBDrm")>;
3187 def: InstRW<[SKLWriteResGroup129], (instregex "PHSUBWrm")>;
3188 def: InstRW<[SKLWriteResGroup129], (instregex "VPHADDDrm")>;
3189 def: InstRW<[SKLWriteResGroup129], (instregex "VPHADDWrm")>;
3190 def: InstRW<[SKLWriteResGroup129], (instregex "VPHSUBDrm")>;
3191 def: InstRW<[SKLWriteResGroup129], (instregex "VPHSUBWrm")>;
3192
3193 def SKLWriteResGroup130 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort237,SKLPort0156]> {
3194 let Latency = 9;
3195 let NumMicroOps = 4;
3196 let ResourceCycles = [1,1,1,1];
3197 }
3198 def: InstRW<[SKLWriteResGroup130], (instregex "SHLD(16|32|64)mri8")>;
3199 def: InstRW<[SKLWriteResGroup130], (instregex "SHRD(16|32|64)mri8")>;
3200
3201 def SKLWriteResGroup131 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort23,SKLPort0156]> {
3202 let Latency = 9;
3203 let NumMicroOps = 5;
3204 let ResourceCycles = [1,2,1,1];
3205 }
3206 def: InstRW<[SKLWriteResGroup131], (instregex "LAR(16|32|64)rm")>;
3207 def: InstRW<[SKLWriteResGroup131], (instregex "LSL(16|32|64)rm")>;
3208
3209 def SKLWriteResGroup132 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3210 let Latency = 10;
3211 let NumMicroOps = 2;
3212 let ResourceCycles = [1,1];
3213 }
3214 def: InstRW<[SKLWriteResGroup132], (instregex "AESDECLASTrm")>;
3215 def: InstRW<[SKLWriteResGroup132], (instregex "AESDECrm")>;
3216 def: InstRW<[SKLWriteResGroup132], (instregex "AESENCLASTrm")>;
3217 def: InstRW<[SKLWriteResGroup132], (instregex "AESENCrm")>;
3218 def: InstRW<[SKLWriteResGroup132], (instregex "RCPPSm")>;
3219 def: InstRW<[SKLWriteResGroup132], (instregex "RSQRTPSm")>;
3220 def: InstRW<[SKLWriteResGroup132], (instregex "VAESDECLASTrm")>;
3221 def: InstRW<[SKLWriteResGroup132], (instregex "VAESDECrm")>;
3222 def: InstRW<[SKLWriteResGroup132], (instregex "VAESENCLASTrm")>;
3223 def: InstRW<[SKLWriteResGroup132], (instregex "VAESENCrm")>;
3224 def: InstRW<[SKLWriteResGroup132], (instregex "VRCPPSm")>;
3225 def: InstRW<[SKLWriteResGroup132], (instregex "VRSQRTPSm")>;
3226
3227 def SKLWriteResGroup133 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3228 let Latency = 10;
3229 let NumMicroOps = 2;
3230 let ResourceCycles = [1,1];
3231 }
3232 def: InstRW<[SKLWriteResGroup133], (instregex "ADD_F32m")>;
3233 def: InstRW<[SKLWriteResGroup133], (instregex "ADD_F64m")>;
3234 def: InstRW<[SKLWriteResGroup133], (instregex "ILD_F16m")>;
3235 def: InstRW<[SKLWriteResGroup133], (instregex "ILD_F32m")>;
3236 def: InstRW<[SKLWriteResGroup133], (instregex "ILD_F64m")>;
3237 def: InstRW<[SKLWriteResGroup133], (instregex "SUBR_F32m")>;
3238 def: InstRW<[SKLWriteResGroup133], (instregex "SUBR_F64m")>;
3239 def: InstRW<[SKLWriteResGroup133], (instregex "SUB_F32m")>;
3240 def: InstRW<[SKLWriteResGroup133], (instregex "SUB_F64m")>;
3241 def: InstRW<[SKLWriteResGroup133], (instregex "VPCMPGTQYrm")>;
3242 def: InstRW<[SKLWriteResGroup133], (instregex "VPERM2F128rm")>;
3243 def: InstRW<[SKLWriteResGroup133], (instregex "VPERM2I128rm")>;
3244 def: InstRW<[SKLWriteResGroup133], (instregex "VPERMDYrm")>;
3245 def: InstRW<[SKLWriteResGroup133], (instregex "VPERMPDYmi")>;
3246 def: InstRW<[SKLWriteResGroup133], (instregex "VPERMPSYrm")>;
3247 def: InstRW<[SKLWriteResGroup133], (instregex "VPERMQYmi")>;
3248 def: InstRW<[SKLWriteResGroup133], (instregex "VPMOVZXBDYrm")>;
3249 def: InstRW<[SKLWriteResGroup133], (instregex "VPMOVZXBQYrm")>;
3250 def: InstRW<[SKLWriteResGroup133], (instregex "VPMOVZXBWYrm")>;
3251 def: InstRW<[SKLWriteResGroup133], (instregex "VPMOVZXDQYrm")>;
3252 def: InstRW<[SKLWriteResGroup133], (instregex "VPMOVZXWQYrm")>;
3253 def: InstRW<[SKLWriteResGroup133], (instregex "VPSADBWYrm")>;
3254
3255 def SKLWriteResGroup134 : SchedWriteRes<[SKLPort01,SKLPort23]> {
3256 let Latency = 10;
3257 let NumMicroOps = 2;
3258 let ResourceCycles = [1,1];
3259 }
3260 def: InstRW<[SKLWriteResGroup134], (instregex "ADDPDrm")>;
3261 def: InstRW<[SKLWriteResGroup134], (instregex "ADDPSrm")>;
3262 def: InstRW<[SKLWriteResGroup134], (instregex "ADDSUBPDrm")>;
3263 def: InstRW<[SKLWriteResGroup134], (instregex "ADDSUBPSrm")>;
3264 def: InstRW<[SKLWriteResGroup134], (instregex "MULPDrm")>;
3265 def: InstRW<[SKLWriteResGroup134], (instregex "MULPSrm")>;
3266 def: InstRW<[SKLWriteResGroup134], (instregex "SUBPDrm")>;
3267 def: InstRW<[SKLWriteResGroup134], (instregex "SUBPSrm")>;
3268 def: InstRW<[SKLWriteResGroup134], (instregex "VADDPDrm")>;
3269 def: InstRW<[SKLWriteResGroup134], (instregex "VADDPSrm")>;
3270 def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPDrm")>;
3271 def: InstRW<[SKLWriteResGroup134], (instregex "VADDSUBPSrm")>;
3272 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD132PDm")>;
3273 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD132PSm")>;
3274 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD213PDm")>;
3275 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD213PSm")>;
3276 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD231PDm")>;
3277 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADD231PSm")>;
3278 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB132PDm")>;
3279 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB132PSm")>;
3280 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB213PDm")>;
3281 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB213PSm")>;
3282 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB231PDm")>;
3283 def: InstRW<[SKLWriteResGroup134], (instregex "VFMADDSUB231PSm")>;
3284 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB132PDm")>;
3285 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB132PSm")>;
3286 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB213PDm")>;
3287 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB213PSm")>;
3288 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB231PDm")>;
3289 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUB231PSm")>;
3290 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD132PDm")>;
3291 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD132PSm")>;
3292 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD213PDm")>;
3293 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD213PSm")>;
3294 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD231PDm")>;
3295 def: InstRW<[SKLWriteResGroup134], (instregex "VFMSUBADD231PSm")>;
3296 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD132PDm")>;
3297 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD132PSm")>;
3298 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD213PDm")>;
3299 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD213PSm")>;
3300 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD231PDm")>;
3301 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMADD231PSm")>;
3302 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB132PDm")>;
3303 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB132PSm")>;
3304 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB213PDm")>;
3305 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB213PSm")>;
3306 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB231PDm")>;
3307 def: InstRW<[SKLWriteResGroup134], (instregex "VFNMSUB231PSm")>;
3308 def: InstRW<[SKLWriteResGroup134], (instregex "VMULPDrm")>;
3309 def: InstRW<[SKLWriteResGroup134], (instregex "VMULPSrm")>;
3310 def: InstRW<[SKLWriteResGroup134], (instregex "VSUBPDrm")>;
3311 def: InstRW<[SKLWriteResGroup134], (instregex "VSUBPSrm")>;
3312
3313 def SKLWriteResGroup135 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3314 let Latency = 10;
3315 let NumMicroOps = 2;
3316 let ResourceCycles = [1,1];
3317 }
3318 def: InstRW<[SKLWriteResGroup135], (instregex "CMPPDrmi")>;
3319 def: InstRW<[SKLWriteResGroup135], (instregex "CMPPSrmi")>;
3320 def: InstRW<[SKLWriteResGroup135], (instregex "CVTDQ2PSrm")>;
3321 def: InstRW<[SKLWriteResGroup135], (instregex "CVTPS2DQrm")>;
3322 def: InstRW<[SKLWriteResGroup135], (instregex "CVTSS2SDrm")>;
3323 def: InstRW<[SKLWriteResGroup135], (instregex "CVTTPS2DQrm")>;
3324 def: InstRW<[SKLWriteResGroup135], (instregex "MAXPDrm")>;
3325 def: InstRW<[SKLWriteResGroup135], (instregex "MAXPSrm")>;
3326 def: InstRW<[SKLWriteResGroup135], (instregex "MINPDrm")>;
3327 def: InstRW<[SKLWriteResGroup135], (instregex "MINPSrm")>;
3328 def: InstRW<[SKLWriteResGroup135], (instregex "PHMINPOSUWrm128")>;
3329 def: InstRW<[SKLWriteResGroup135], (instregex "PMADDUBSWrm")>;
3330 def: InstRW<[SKLWriteResGroup135], (instregex "PMADDWDrm")>;
3331 def: InstRW<[SKLWriteResGroup135], (instregex "PMULDQrm")>;
3332 def: InstRW<[SKLWriteResGroup135], (instregex "PMULHRSWrm")>;
3333 def: InstRW<[SKLWriteResGroup135], (instregex "PMULHUWrm")>;
3334 def: InstRW<[SKLWriteResGroup135], (instregex "PMULHWrm")>;
3335 def: InstRW<[SKLWriteResGroup135], (instregex "PMULLWrm")>;
3336 def: InstRW<[SKLWriteResGroup135], (instregex "PMULUDQrm")>;
3337 def: InstRW<[SKLWriteResGroup135], (instregex "VCMPPDrmi")>;
3338 def: InstRW<[SKLWriteResGroup135], (instregex "VCMPPSrmi")>;
3339 def: InstRW<[SKLWriteResGroup135], (instregex "VCVTDQ2PSrm")>;
3340 def: InstRW<[SKLWriteResGroup135], (instregex "VCVTPH2PSYrm")>;
3341 def: InstRW<[SKLWriteResGroup135], (instregex "VCVTPS2DQrm")>;
3342 def: InstRW<[SKLWriteResGroup135], (instregex "VCVTSS2SDrm")>;
3343 def: InstRW<[SKLWriteResGroup135], (instregex "VCVTTPS2DQrm")>;
3344 def: InstRW<[SKLWriteResGroup135], (instregex "VMAXPDrm")>;
3345 def: InstRW<[SKLWriteResGroup135], (instregex "VMAXPSrm")>;
3346 def: InstRW<[SKLWriteResGroup135], (instregex "VMINPDrm")>;
3347 def: InstRW<[SKLWriteResGroup135], (instregex "VMINPSrm")>;
3348 def: InstRW<[SKLWriteResGroup135], (instregex "VPHMINPOSUWrm128")>;
3349 def: InstRW<[SKLWriteResGroup135], (instregex "VPMADDUBSWrm")>;
3350 def: InstRW<[SKLWriteResGroup135], (instregex "VPMADDWDrm")>;
3351 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULDQrm")>;
3352 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULHRSWrm")>;
3353 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULHUWrm")>;
3354 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULHWrm")>;
3355 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULLWrm")>;
3356 def: InstRW<[SKLWriteResGroup135], (instregex "VPMULUDQrm")>;
3357
3358 def SKLWriteResGroup136 : SchedWriteRes<[SKLPort0]> {
3359 let Latency = 10;
3360 let NumMicroOps = 3;
3361 let ResourceCycles = [3];
3362 }
3363 def: InstRW<[SKLWriteResGroup136], (instregex "PCMPISTRIrr")>;
3364 def: InstRW<[SKLWriteResGroup136], (instregex "PCMPISTRM128rr")>;
3365 def: InstRW<[SKLWriteResGroup136], (instregex "VPCMPISTRIrr")>;
3366 def: InstRW<[SKLWriteResGroup136], (instregex "VPCMPISTRM128rr")>;
3367
3368 def SKLWriteResGroup137 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3369 let Latency = 10;
3370 let NumMicroOps = 3;
3371 let ResourceCycles = [2,1];
3372 }
3373 def: InstRW<[SKLWriteResGroup137], (instregex "MPSADBWrmi")>;
3374 def: InstRW<[SKLWriteResGroup137], (instregex "VMPSADBWrmi")>;
3375
3376 def SKLWriteResGroup138 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
3377 let Latency = 10;
3378 let NumMicroOps = 3;
3379 let ResourceCycles = [1,1,1];
3380 }
3381 def: InstRW<[SKLWriteResGroup138], (instregex "MMX_CVTPI2PDirm")>;
3382 def: InstRW<[SKLWriteResGroup138], (instregex "VPTESTYrm")>;
3383
3384 def SKLWriteResGroup139 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3385 let Latency = 10;
3386 let NumMicroOps = 3;
3387 let ResourceCycles = [1,1,1];
3388 }
3389 def: InstRW<[SKLWriteResGroup139], (instregex "CVTSD2SSrm")>;
3390 def: InstRW<[SKLWriteResGroup139], (instregex "VCVTSD2SSrm")>;
3391
3392 def SKLWriteResGroup140 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
3393 let Latency = 10;
3394 let NumMicroOps = 4;
3395 let ResourceCycles = [2,1,1];
3396 }
3397 def: InstRW<[SKLWriteResGroup140], (instregex "VPHADDSWrm256")>;
3398 def: InstRW<[SKLWriteResGroup140], (instregex "VPHSUBSWrm256")>;
3399
3400 def SKLWriteResGroup141 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3401 let Latency = 10;
3402 let NumMicroOps = 4;
3403 let ResourceCycles = [2,1,1];
3404 }
3405 def: InstRW<[SKLWriteResGroup141], (instregex "VPHADDDYrm")>;
3406 def: InstRW<[SKLWriteResGroup141], (instregex "VPHADDWYrm")>;
3407 def: InstRW<[SKLWriteResGroup141], (instregex "VPHSUBDYrm")>;
3408 def: InstRW<[SKLWriteResGroup141], (instregex "VPHSUBWYrm")>;
3409
3410 def SKLWriteResGroup142 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort06,SKLPort0156]> {
3411 let Latency = 10;
3412 let NumMicroOps = 4;
3413 let ResourceCycles = [1,1,1,1];
3414 }
3415 def: InstRW<[SKLWriteResGroup142], (instregex "MULX32rm")>;
3416
3417 def SKLWriteResGroup143 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
3418 let Latency = 10;
3419 let NumMicroOps = 8;
3420 let ResourceCycles = [1,1,1,1,1,3];
3421 }
3422 def: InstRW<[SKLWriteResGroup143], (instregex "ADD8mi")>;
3423 def: InstRW<[SKLWriteResGroup143], (instregex "AND8mi")>;
3424 def: InstRW<[SKLWriteResGroup143], (instregex "OR8mi")>;
3425 def: InstRW<[SKLWriteResGroup143], (instregex "SUB8mi")>;
3426 def: InstRW<[SKLWriteResGroup143], (instregex "XCHG(16|32|64)rm")>;
3427 def: InstRW<[SKLWriteResGroup143], (instregex "XCHG8rm")>;
3428 def: InstRW<[SKLWriteResGroup143], (instregex "XOR8mi")>;
3429
3430 def SKLWriteResGroup144 : SchedWriteRes<[SKLPort05,SKLPort0156]> {
3431 let Latency = 10;
3432 let NumMicroOps = 10;
3433 let ResourceCycles = [9,1];
3434 }
3435 def: InstRW<[SKLWriteResGroup144], (instregex "MMX_EMMS")>;
3436
3437 def SKLWriteResGroup145 : SchedWriteRes<[SKLPort0]> {
3438 let Latency = 11;
3439 let NumMicroOps = 1;
3440 let ResourceCycles = [1];
3441 }
3442 def: InstRW<[SKLWriteResGroup145], (instregex "DIVPSrr")>;
3443 def: InstRW<[SKLWriteResGroup145], (instregex "DIVSSrr")>;
3444 def: InstRW<[SKLWriteResGroup145], (instregex "VDIVPSYrr")>;
3445 def: InstRW<[SKLWriteResGroup145], (instregex "VDIVPSrr")>;
3446 def: InstRW<[SKLWriteResGroup145], (instregex "VDIVSSrr")>;
3447
3448 def SKLWriteResGroup146 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3449 let Latency = 11;
3450 let NumMicroOps = 2;
3451 let ResourceCycles = [1,1];
3452 }
3453 def: InstRW<[SKLWriteResGroup146], (instregex "MUL_F32m")>;
3454 def: InstRW<[SKLWriteResGroup146], (instregex "MUL_F64m")>;
3455 def: InstRW<[SKLWriteResGroup146], (instregex "VRCPPSYm")>;
3456 def: InstRW<[SKLWriteResGroup146], (instregex "VRSQRTPSYm")>;
3457
3458 def SKLWriteResGroup147 : SchedWriteRes<[SKLPort01,SKLPort23]> {
3459 let Latency = 11;
3460 let NumMicroOps = 2;
3461 let ResourceCycles = [1,1];
3462 }
3463 def: InstRW<[SKLWriteResGroup147], (instregex "VADDPDYrm")>;
3464 def: InstRW<[SKLWriteResGroup147], (instregex "VADDPSYrm")>;
3465 def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPDYrm")>;
3466 def: InstRW<[SKLWriteResGroup147], (instregex "VADDSUBPSYrm")>;
3467 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD132PDYm")>;
3468 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD132PSYm")>;
3469 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD213PDYm")>;
3470 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD213PSYm")>;
3471 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD231PDYm")>;
3472 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADD231PSYm")>;
3473 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB132PDYm")>;
3474 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB132PSYm")>;
3475 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB213PDYm")>;
3476 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB213PSYm")>;
3477 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB231PDYm")>;
3478 def: InstRW<[SKLWriteResGroup147], (instregex "VFMADDSUB231PSYm")>;
3479 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB132PDYm")>;
3480 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB132PSYm")>;
3481 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB213PDYm")>;
3482 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB213PSYm")>;
3483 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB231PDYm")>;
3484 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUB231PSYm")>;
3485 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD132PDYm")>;
3486 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD132PSYm")>;
3487 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD213PDYm")>;
3488 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD213PSYm")>;
3489 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD231PDYm")>;
3490 def: InstRW<[SKLWriteResGroup147], (instregex "VFMSUBADD231PSYm")>;
3491 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD132PDYm")>;
3492 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD132PSYm")>;
3493 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD213PDYm")>;
3494 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD213PSYm")>;
3495 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD231PDYm")>;
3496 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMADD231PSYm")>;
3497 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB132PDYm")>;
3498 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB132PSYm")>;
3499 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB213PDYm")>;
3500 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB213PSYm")>;
3501 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB231PDYm")>;
3502 def: InstRW<[SKLWriteResGroup147], (instregex "VFNMSUB231PSYm")>;
3503 def: InstRW<[SKLWriteResGroup147], (instregex "VMULPDYrm")>;
3504 def: InstRW<[SKLWriteResGroup147], (instregex "VMULPSYrm")>;
3505 def: InstRW<[SKLWriteResGroup147], (instregex "VSUBPDYrm")>;
3506 def: InstRW<[SKLWriteResGroup147], (instregex "VSUBPSYrm")>;
3507
3508 def SKLWriteResGroup148 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3509 let Latency = 11;
3510 let NumMicroOps = 2;
3511 let ResourceCycles = [1,1];
3512 }
3513 def: InstRW<[SKLWriteResGroup148], (instregex "VCMPPDYrmi")>;
3514 def: InstRW<[SKLWriteResGroup148], (instregex "VCMPPSYrmi")>;
3515 def: InstRW<[SKLWriteResGroup148], (instregex "VCVTDQ2PSYrm")>;
3516 def: InstRW<[SKLWriteResGroup148], (instregex "VCVTPS2DQYrm")>;
3517 def: InstRW<[SKLWriteResGroup148], (instregex "VCVTPS2PDYrm")>;
3518 def: InstRW<[SKLWriteResGroup148], (instregex "VCVTTPS2DQYrm")>;
3519 def: InstRW<[SKLWriteResGroup148], (instregex "VMAXPDYrm")>;
3520 def: InstRW<[SKLWriteResGroup148], (instregex "VMAXPSYrm")>;
3521 def: InstRW<[SKLWriteResGroup148], (instregex "VMINPDYrm")>;
3522 def: InstRW<[SKLWriteResGroup148], (instregex "VMINPSYrm")>;
3523 def: InstRW<[SKLWriteResGroup148], (instregex "VPMADDUBSWYrm")>;
3524 def: InstRW<[SKLWriteResGroup148], (instregex "VPMADDWDYrm")>;
3525 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULDQYrm")>;
3526 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULHRSWYrm")>;
3527 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULHUWYrm")>;
3528 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULHWYrm")>;
3529 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULLWYrm")>;
3530 def: InstRW<[SKLWriteResGroup148], (instregex "VPMULUDQYrm")>;
3531
3532 def SKLWriteResGroup149 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3533 let Latency = 11;
3534 let NumMicroOps = 3;
3535 let ResourceCycles = [2,1];
3536 }
3537 def: InstRW<[SKLWriteResGroup149], (instregex "FICOM16m")>;
3538 def: InstRW<[SKLWriteResGroup149], (instregex "FICOM32m")>;
3539 def: InstRW<[SKLWriteResGroup149], (instregex "FICOMP16m")>;
3540 def: InstRW<[SKLWriteResGroup149], (instregex "FICOMP32m")>;
3541 def: InstRW<[SKLWriteResGroup149], (instregex "VMPSADBWYrmi")>;
3542
3543 def SKLWriteResGroup150 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
3544 let Latency = 11;
3545 let NumMicroOps = 3;
3546 let ResourceCycles = [1,1,1];
3547 }
3548 def: InstRW<[SKLWriteResGroup150], (instregex "CVTDQ2PDrm")>;
3549 def: InstRW<[SKLWriteResGroup150], (instregex "VCVTDQ2PDrm")>;
3550
3551 def SKLWriteResGroup151 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort015]> {
3552 let Latency = 11;
3553 let NumMicroOps = 3;
3554 let ResourceCycles = [1,1,1];
3555 }
3556 def: InstRW<[SKLWriteResGroup151], (instregex "CVTSD2SI64rm")>;
3557 def: InstRW<[SKLWriteResGroup151], (instregex "CVTSD2SIrm")>;
3558 def: InstRW<[SKLWriteResGroup151], (instregex "CVTSS2SI64rm")>;
3559 def: InstRW<[SKLWriteResGroup151], (instregex "CVTSS2SIrm")>;
3560 def: InstRW<[SKLWriteResGroup151], (instregex "CVTTSD2SI64rm")>;
3561 def: InstRW<[SKLWriteResGroup151], (instregex "CVTTSD2SIrm")>;
3562 def: InstRW<[SKLWriteResGroup151], (instregex "CVTTSS2SIrm")>;
3563 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTSD2SI64rm")>;
3564 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTSD2SIrm")>;
3565 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTSS2SI64rm")>;
3566 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTSS2SIrm")>;
3567 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTTSD2SI64rm")>;
3568 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTTSD2SIrm")>;
3569 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTTSS2SI64rm")>;
3570 def: InstRW<[SKLWriteResGroup151], (instregex "VCVTTSS2SIrm")>;
3571
3572 def SKLWriteResGroup152 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3573 let Latency = 11;
3574 let NumMicroOps = 3;
3575 let ResourceCycles = [1,1,1];
3576 }
3577 def: InstRW<[SKLWriteResGroup152], (instregex "CVTPD2DQrm")>;
3578 def: InstRW<[SKLWriteResGroup152], (instregex "CVTPD2PSrm")>;
3579 def: InstRW<[SKLWriteResGroup152], (instregex "CVTTPD2DQrm")>;
3580 def: InstRW<[SKLWriteResGroup152], (instregex "MMX_CVTPD2PIirm")>;
3581 def: InstRW<[SKLWriteResGroup152], (instregex "MMX_CVTTPD2PIirm")>;
3582
3583 def SKLWriteResGroup153 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
3584 let Latency = 11;
3585 let NumMicroOps = 6;
3586 let ResourceCycles = [1,1,1,2,1];
3587 }
3588 def: InstRW<[SKLWriteResGroup153], (instregex "SHLD(16|32|64)mrCL")>;
3589 def: InstRW<[SKLWriteResGroup153], (instregex "SHRD(16|32|64)mrCL")>;
3590
3591 def SKLWriteResGroup154 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort0156]> {
3592 let Latency = 11;
3593 let NumMicroOps = 7;
3594 let ResourceCycles = [2,3,2];
3595 }
3596 def: InstRW<[SKLWriteResGroup154], (instregex "RCL(16|32|64)rCL")>;
3597 def: InstRW<[SKLWriteResGroup154], (instregex "RCR(16|32|64)rCL")>;
3598
3599 def SKLWriteResGroup155 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort15,SKLPort0156]> {
3600 let Latency = 11;
3601 let NumMicroOps = 9;
3602 let ResourceCycles = [1,5,1,2];
3603 }
3604 def: InstRW<[SKLWriteResGroup155], (instregex "RCL8rCL")>;
3605
3606 def SKLWriteResGroup156 : SchedWriteRes<[SKLPort06,SKLPort0156]> {
3607 let Latency = 11;
3608 let NumMicroOps = 11;
3609 let ResourceCycles = [2,9];
3610 }
3611 def: InstRW<[SKLWriteResGroup156], (instregex "LOOPE")>;
3612 def: InstRW<[SKLWriteResGroup156], (instregex "LOOPNE")>;
3613
3614 def SKLWriteResGroup157 : SchedWriteRes<[SKLPort0]> {
3615 let Latency = 12;
3616 let NumMicroOps = 1;
3617 let ResourceCycles = [1];
3618 }
3619 def: InstRW<[SKLWriteResGroup157], (instregex "VSQRTPSYr")>;
3620 def: InstRW<[SKLWriteResGroup157], (instregex "VSQRTPSr")>;
3621 def: InstRW<[SKLWriteResGroup157], (instregex "VSQRTSSr")>;
3622
3623 def SKLWriteResGroup158 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3624 let Latency = 12;
3625 let NumMicroOps = 2;
3626 let ResourceCycles = [1,1];
3627 }
3628 def: InstRW<[SKLWriteResGroup158], (instregex "PCLMULQDQrm")>;
3629 def: InstRW<[SKLWriteResGroup158], (instregex "VPCLMULQDQrm")>;
3630
3631 def SKLWriteResGroup159 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
3632 let Latency = 12;
3633 let NumMicroOps = 4;
3634 let ResourceCycles = [2,1,1];
3635 }
3636 def: InstRW<[SKLWriteResGroup159], (instregex "HADDPDrm")>;
3637 def: InstRW<[SKLWriteResGroup159], (instregex "HADDPSrm")>;
3638 def: InstRW<[SKLWriteResGroup159], (instregex "HSUBPDrm")>;
3639 def: InstRW<[SKLWriteResGroup159], (instregex "HSUBPSrm")>;
3640 def: InstRW<[SKLWriteResGroup159], (instregex "VHADDPDrm")>;
3641 def: InstRW<[SKLWriteResGroup159], (instregex "VHADDPSrm")>;
3642 def: InstRW<[SKLWriteResGroup159], (instregex "VHSUBPDrm")>;
3643 def: InstRW<[SKLWriteResGroup159], (instregex "VHSUBPSrm")>;
3644
3645 def SKLWriteResGroup160 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort015]> {
3646 let Latency = 12;
3647 let NumMicroOps = 4;
3648 let ResourceCycles = [1,1,1,1];
3649 }
3650 def: InstRW<[SKLWriteResGroup160], (instregex "CVTTSS2SI64rm")>;
3651
3652 def SKLWriteResGroup161 : SchedWriteRes<[SKLPort0]> {
3653 let Latency = 13;
3654 let NumMicroOps = 1;
3655 let ResourceCycles = [1];
3656 }
3657 def: InstRW<[SKLWriteResGroup161], (instregex "SQRTPSr")>;
3658 def: InstRW<[SKLWriteResGroup161], (instregex "SQRTSSr")>;
3659
3660 def SKLWriteResGroup162 : SchedWriteRes<[SKLPort5,SKLPort23]> {
3661 let Latency = 13;
3662 let NumMicroOps = 3;
3663 let ResourceCycles = [2,1];
3664 }
3665 def: InstRW<[SKLWriteResGroup162], (instregex "ADD_FI16m")>;
3666 def: InstRW<[SKLWriteResGroup162], (instregex "ADD_FI32m")>;
3667 def: InstRW<[SKLWriteResGroup162], (instregex "SUBR_FI16m")>;
3668 def: InstRW<[SKLWriteResGroup162], (instregex "SUBR_FI32m")>;
3669 def: InstRW<[SKLWriteResGroup162], (instregex "SUB_FI16m")>;
3670 def: InstRW<[SKLWriteResGroup162], (instregex "SUB_FI32m")>;
3671
3672 def SKLWriteResGroup163 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
3673 let Latency = 13;
3674 let NumMicroOps = 3;
3675 let ResourceCycles = [1,1,1];
3676 }
3677 def: InstRW<[SKLWriteResGroup163], (instregex "VCVTDQ2PDYrm")>;
3678
3679 def SKLWriteResGroup164 : SchedWriteRes<[SKLPort5,SKLPort015]> {
3680 let Latency = 13;
3681 let NumMicroOps = 4;
3682 let ResourceCycles = [1,3];
3683 }
3684 def: InstRW<[SKLWriteResGroup164], (instregex "DPPSrri")>;
3685 def: InstRW<[SKLWriteResGroup164], (instregex "VDPPSYrri")>;
3686 def: InstRW<[SKLWriteResGroup164], (instregex "VDPPSrri")>;
3687
3688 def SKLWriteResGroup165 : SchedWriteRes<[SKLPort5,SKLPort01,SKLPort23]> {
3689 let Latency = 13;
3690 let NumMicroOps = 4;
3691 let ResourceCycles = [2,1,1];
3692 }
3693 def: InstRW<[SKLWriteResGroup165], (instregex "VHADDPDYrm")>;
3694 def: InstRW<[SKLWriteResGroup165], (instregex "VHADDPSYrm")>;
3695 def: InstRW<[SKLWriteResGroup165], (instregex "VHSUBPDYrm")>;
3696 def: InstRW<[SKLWriteResGroup165], (instregex "VHSUBPSYrm")>;
3697
3698 def SKLWriteResGroup166 : SchedWriteRes<[SKLPort0]> {
3699 let Latency = 14;
3700 let NumMicroOps = 1;
3701 let ResourceCycles = [1];
3702 }
3703 def: InstRW<[SKLWriteResGroup166], (instregex "DIVPDrr")>;
3704 def: InstRW<[SKLWriteResGroup166], (instregex "DIVSDrr")>;
3705 def: InstRW<[SKLWriteResGroup166], (instregex "VDIVPDYrr")>;
3706 def: InstRW<[SKLWriteResGroup166], (instregex "VDIVPDrr")>;
3707 def: InstRW<[SKLWriteResGroup166], (instregex "VDIVSDrr")>;
3708
3709 def SKLWriteResGroup167 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3710 let Latency = 14;
3711 let NumMicroOps = 3;
3712 let ResourceCycles = [2,1];
3713 }
3714 def: InstRW<[SKLWriteResGroup167], (instregex "AESIMCrm")>;
3715 def: InstRW<[SKLWriteResGroup167], (instregex "VAESIMCrm")>;
3716
3717 def SKLWriteResGroup168 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3718 let Latency = 14;
3719 let NumMicroOps = 3;
3720 let ResourceCycles = [1,2];
3721 }
3722 def: InstRW<[SKLWriteResGroup168], (instregex "PMULLDrm")>;
3723 def: InstRW<[SKLWriteResGroup168], (instregex "ROUNDPDm")>;
3724 def: InstRW<[SKLWriteResGroup168], (instregex "ROUNDPSm")>;
3725 def: InstRW<[SKLWriteResGroup168], (instregex "ROUNDSDm")>;
3726 def: InstRW<[SKLWriteResGroup168], (instregex "ROUNDSSm")>;
3727 def: InstRW<[SKLWriteResGroup168], (instregex "VPMULLDrm")>;
3728 def: InstRW<[SKLWriteResGroup168], (instregex "VROUNDPDm")>;
3729 def: InstRW<[SKLWriteResGroup168], (instregex "VROUNDPSm")>;
3730 def: InstRW<[SKLWriteResGroup168], (instregex "VROUNDSDm")>;
3731 def: InstRW<[SKLWriteResGroup168], (instregex "VROUNDSSm")>;
3732
3733 def SKLWriteResGroup169 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
3734 let Latency = 14;
3735 let NumMicroOps = 3;
3736 let ResourceCycles = [1,1,1];
3737 }
3738 def: InstRW<[SKLWriteResGroup169], (instregex "MUL_FI16m")>;
3739 def: InstRW<[SKLWriteResGroup169], (instregex "MUL_FI32m")>;
3740
3741 def SKLWriteResGroup170 : SchedWriteRes<[SKLPort1,SKLPort06,SKLPort15,SKLPort0156]> {
3742 let Latency = 14;
3743 let NumMicroOps = 10;
3744 let ResourceCycles = [2,4,1,3];
3745 }
3746 def: InstRW<[SKLWriteResGroup170], (instregex "RCR8rCL")>;
3747
3748 def SKLWriteResGroup171 : SchedWriteRes<[SKLPort0]> {
3749 let Latency = 15;
3750 let NumMicroOps = 1;
3751 let ResourceCycles = [1];
3752 }
3753 def: InstRW<[SKLWriteResGroup171], (instregex "DIVR_FPrST0")>;
3754 def: InstRW<[SKLWriteResGroup171], (instregex "DIVR_FST0r")>;
3755 def: InstRW<[SKLWriteResGroup171], (instregex "DIVR_FrST0")>;
3756
3757 def SKLWriteResGroup172 : SchedWriteRes<[SKLPort23,SKLPort015]> {
3758 let Latency = 15;
3759 let NumMicroOps = 3;
3760 let ResourceCycles = [1,2];
3761 }
3762 def: InstRW<[SKLWriteResGroup172], (instregex "VPMULLDYrm")>;
3763 def: InstRW<[SKLWriteResGroup172], (instregex "VROUNDYPDm")>;
3764 def: InstRW<[SKLWriteResGroup172], (instregex "VROUNDYPSm")>;
3765
3766 def SKLWriteResGroup173 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3767 let Latency = 15;
3768 let NumMicroOps = 4;
3769 let ResourceCycles = [1,1,2];
3770 }
3771 def: InstRW<[SKLWriteResGroup173], (instregex "DPPDrmi")>;
3772 def: InstRW<[SKLWriteResGroup173], (instregex "VDPPDrmi")>;
3773
3774 def SKLWriteResGroup174 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort237,SKLPort06,SKLPort15,SKLPort0156]> {
3775 let Latency = 15;
3776 let NumMicroOps = 10;
3777 let ResourceCycles = [1,1,1,5,1,1];
3778 }
3779 def: InstRW<[SKLWriteResGroup174], (instregex "RCL(16|32|64)mCL")>;
3780 def: InstRW<[SKLWriteResGroup174], (instregex "RCL8mCL")>;
3781
3782 def SKLWriteResGroup175 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3783 let Latency = 16;
3784 let NumMicroOps = 2;
3785 let ResourceCycles = [1,1];
3786 }
3787 def: InstRW<[SKLWriteResGroup175], (instregex "DIVSSrm")>;
3788 def: InstRW<[SKLWriteResGroup175], (instregex "VDIVSSrm")>;
3789
3790 def SKLWriteResGroup176 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3791 let Latency = 16;
3792 let NumMicroOps = 4;
3793 let ResourceCycles = [3,1];
3794 }
3795 def: InstRW<[SKLWriteResGroup176], (instregex "PCMPISTRIrm")>;
3796 def: InstRW<[SKLWriteResGroup176], (instregex "PCMPISTRM128rm")>;
3797 def: InstRW<[SKLWriteResGroup176], (instregex "VPCMPISTRIrm")>;
3798 def: InstRW<[SKLWriteResGroup176], (instregex "VPCMPISTRM128rm")>;
3799
3800 def SKLWriteResGroup177 : SchedWriteRes<[SKLPort4,SKLPort23,SKLPort237,SKLPort06,SKLPort15,SKLPort0156]> {
3801 let Latency = 16;
3802 let NumMicroOps = 14;
3803 let ResourceCycles = [1,1,1,4,2,5];
3804 }
3805 def: InstRW<[SKLWriteResGroup177], (instregex "CMPXCHG8B")>;
3806
3807 def SKLWriteResGroup178 : SchedWriteRes<[SKLPort0156]> {
3808 let Latency = 16;
3809 let NumMicroOps = 16;
3810 let ResourceCycles = [16];
3811 }
3812 def: InstRW<[SKLWriteResGroup178], (instregex "VZEROALL")>;
3813
3814 def SKLWriteResGroup179 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3815 let Latency = 17;
3816 let NumMicroOps = 2;
3817 let ResourceCycles = [1,1];
3818 }
3819 def: InstRW<[SKLWriteResGroup179], (instregex "DIVPSrm")>;
3820 def: InstRW<[SKLWriteResGroup179], (instregex "VDIVPSrm")>;
3821 def: InstRW<[SKLWriteResGroup179], (instregex "VSQRTSSm")>;
3822
3823 def SKLWriteResGroup180 : SchedWriteRes<[SKLPort0,SKLPort1,SKLPort5,SKLPort6,SKLPort05,SKLPort0156]> {
3824 let Latency = 17;
3825 let NumMicroOps = 15;
3826 let ResourceCycles = [2,1,2,4,2,4];
3827 }
3828 def: InstRW<[SKLWriteResGroup180], (instregex "XCH_F")>;
3829
3830 def SKLWriteResGroup181 : SchedWriteRes<[SKLPort0]> {
3831 let Latency = 18;
3832 let NumMicroOps = 1;
3833 let ResourceCycles = [1];
3834 }
3835 def: InstRW<[SKLWriteResGroup181], (instregex "VSQRTPDYr")>;
3836 def: InstRW<[SKLWriteResGroup181], (instregex "VSQRTPDr")>;
3837 def: InstRW<[SKLWriteResGroup181], (instregex "VSQRTSDr")>;
3838
3839 def SKLWriteResGroup182 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3840 let Latency = 18;
3841 let NumMicroOps = 2;
3842 let ResourceCycles = [1,1];
3843 }
3844 def: InstRW<[SKLWriteResGroup182], (instregex "SQRTSSm")>;
3845 def: InstRW<[SKLWriteResGroup182], (instregex "VDIVPSYrm")>;
3846 def: InstRW<[SKLWriteResGroup182], (instregex "VSQRTPSm")>;
3847
3848 def SKLWriteResGroup183 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort0156]> {
3849 let Latency = 18;
3850 let NumMicroOps = 8;
3851 let ResourceCycles = [4,3,1];
3852 }
3853 def: InstRW<[SKLWriteResGroup183], (instregex "PCMPESTRIrr")>;
3854 def: InstRW<[SKLWriteResGroup183], (instregex "VPCMPESTRIrr")>;
3855
3856 def SKLWriteResGroup184 : SchedWriteRes<[SKLPort5,SKLPort6,SKLPort06,SKLPort0156]> {
3857 let Latency = 18;
3858 let NumMicroOps = 8;
3859 let ResourceCycles = [1,1,1,5];
3860 }
3861 def: InstRW<[SKLWriteResGroup184], (instregex "CPUID")>;
3862 def: InstRW<[SKLWriteResGroup184], (instregex "RDTSC")>;
3863
3864 def SKLWriteResGroup185 : SchedWriteRes<[SKLPort1,SKLPort23,SKLPort237,SKLPort06,SKLPort15,SKLPort0156]> {
3865 let Latency = 18;
3866 let NumMicroOps = 11;
3867 let ResourceCycles = [2,1,1,4,1,2];
3868 }
3869 def: InstRW<[SKLWriteResGroup185], (instregex "RCR(16|32|64)mCL")>;
3870 def: InstRW<[SKLWriteResGroup185], (instregex "RCR8mCL")>;
3871
3872 def SKLWriteResGroup186 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3873 let Latency = 19;
3874 let NumMicroOps = 2;
3875 let ResourceCycles = [1,1];
3876 }
3877 def: InstRW<[SKLWriteResGroup186], (instregex "DIVSDrm")>;
3878 def: InstRW<[SKLWriteResGroup186], (instregex "SQRTPSm")>;
3879 def: InstRW<[SKLWriteResGroup186], (instregex "VDIVSDrm")>;
3880 def: InstRW<[SKLWriteResGroup186], (instregex "VSQRTPSYm")>;
3881
3882 def SKLWriteResGroup187 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3883 let Latency = 19;
3884 let NumMicroOps = 5;
3885 let ResourceCycles = [1,1,3];
3886 }
3887 def: InstRW<[SKLWriteResGroup187], (instregex "DPPSrmi")>;
3888 def: InstRW<[SKLWriteResGroup187], (instregex "VDPPSrmi")>;
3889
3890 def SKLWriteResGroup188 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort015,SKLPort0156]> {
3891 let Latency = 19;
3892 let NumMicroOps = 9;
3893 let ResourceCycles = [4,3,1,1];
3894 }
3895 def: InstRW<[SKLWriteResGroup188], (instregex "PCMPESTRM128rr")>;
3896 def: InstRW<[SKLWriteResGroup188], (instregex "VPCMPESTRM128rr")>;
3897
3898 def SKLWriteResGroup189 : SchedWriteRes<[SKLPort0]> {
3899 let Latency = 20;
3900 let NumMicroOps = 1;
3901 let ResourceCycles = [1];
3902 }
3903 def: InstRW<[SKLWriteResGroup189], (instregex "DIV_FPrST0")>;
3904 def: InstRW<[SKLWriteResGroup189], (instregex "DIV_FST0r")>;
3905 def: InstRW<[SKLWriteResGroup189], (instregex "DIV_FrST0")>;
3906 def: InstRW<[SKLWriteResGroup189], (instregex "SQRTPDr")>;
3907 def: InstRW<[SKLWriteResGroup189], (instregex "SQRTSDr")>;
3908
3909 def SKLWriteResGroup190 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3910 let Latency = 20;
3911 let NumMicroOps = 2;
3912 let ResourceCycles = [1,1];
3913 }
3914 def: InstRW<[SKLWriteResGroup190], (instregex "DIVPDrm")>;
3915 def: InstRW<[SKLWriteResGroup190], (instregex "VDIVPDrm")>;
3916
3917 def SKLWriteResGroup191 : SchedWriteRes<[SKLPort5,SKLPort23,SKLPort015]> {
3918 let Latency = 20;
3919 let NumMicroOps = 5;
3920 let ResourceCycles = [1,1,3];
3921 }
3922 def: InstRW<[SKLWriteResGroup191], (instregex "VDPPSYrmi")>;
3923
3924 def SKLWriteResGroup192 : SchedWriteRes<[SKLPort4,SKLPort5,SKLPort6,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
3925 let Latency = 20;
3926 let NumMicroOps = 8;
3927 let ResourceCycles = [1,1,1,1,1,1,2];
3928 }
3929 def: InstRW<[SKLWriteResGroup192], (instregex "INSB")>;
3930 def: InstRW<[SKLWriteResGroup192], (instregex "INSL")>;
3931 def: InstRW<[SKLWriteResGroup192], (instregex "INSW")>;
3932
3933 def SKLWriteResGroup193 : SchedWriteRes<[SKLPort5,SKLPort6,SKLPort0156]> {
3934 let Latency = 20;
3935 let NumMicroOps = 10;
3936 let ResourceCycles = [1,2,7];
3937 }
3938 def: InstRW<[SKLWriteResGroup193], (instregex "MWAITrr")>;
3939
3940 def SKLWriteResGroup194 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort015]> {
3941 let Latency = 20;
3942 let NumMicroOps = 11;
3943 let ResourceCycles = [3,6,2];
3944 }
3945 def: InstRW<[SKLWriteResGroup194], (instregex "AESKEYGENASSIST128rr")>;
3946 def: InstRW<[SKLWriteResGroup194], (instregex "VAESKEYGENASSIST128rr")>;
3947
3948 def SKLWriteResGroup195 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3949 let Latency = 21;
3950 let NumMicroOps = 2;
3951 let ResourceCycles = [1,1];
3952 }
3953 def: InstRW<[SKLWriteResGroup195], (instregex "VDIVPDYrm")>;
3954
3955 def SKLWriteResGroup196 : SchedWriteRes<[SKLPort0,SKLPort23]> {
3956 let Latency = 22;
3957 let NumMicroOps = 2;
3958 let ResourceCycles = [1,1];
3959 }
3960 def: InstRW<[SKLWriteResGroup196], (instregex "DIV_F32m")>;
3961 def: InstRW<[SKLWriteResGroup196], (instregex "DIV_F64m")>;
3962
3963 def SKLWriteResGroup196_1 : SchedWriteRes<[SKLPort0, SKLPort23, SKLPort5, SKLPort015]> {
3964 let Latency = 22;
3965 let NumMicroOps = 5;
3966 let ResourceCycles = [1,2,1,1];
3967 }
3968 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERDPSrm")>;
3969 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERDPDrm")>;
3970 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERQPDrm")>;
3971 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERQPSrm")>;
3972 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERDDrm")>;
3973 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERDQrm")>;
3974 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERQDrm")>;
3975 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERQQrm")>;
3976 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERDDrm")>;
3977 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERQDrm")>;
3978 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERDQrm")>;
3979 def: InstRW<[SKLWriteResGroup196_1], (instregex "VPGATHERQQrm")>;
3980 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERDPSrm")>;
3981 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERQPSrm")>;
3982 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERDPDrm")>;
3983 def: InstRW<[SKLWriteResGroup196_1], (instregex "VGATHERQPDrm")>;
3984
3985 def SKLWriteResGroup196_2 : SchedWriteRes<[SKLPort0, SKLPort23, SKLPort5, SKLPort015]> {
3986 let Latency = 25;
3987 let NumMicroOps = 5;
3988 let ResourceCycles = [1,2,1,1];
3989 }
3990 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERDPSYrm")>;
3991 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERQPDYrm")>;
3992 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERQPSYrm")>;
3993 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERDDYrm")>;
3994 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERDQYrm")>;
3995 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERQDYrm")>;
3996 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERQQYrm")>;
3997 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERDDYrm")>;
3998 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERQDYrm")>;
3999 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERDQYrm")>;
4000 def: InstRW<[SKLWriteResGroup196_2], (instregex "VPGATHERQQYrm")>;
4001 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERDPSYrm")>;
4002 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERQPSYrm")>;
4003 def: InstRW<[SKLWriteResGroup196_2], (instregex "VGATHERDPDYrm")>;
4004
4005 def SKLWriteResGroup197 : SchedWriteRes<[SKLPort0,SKLPort23]> {
4006 let Latency = 23;
4007 let NumMicroOps = 2;
4008 let ResourceCycles = [1,1];
4009 }
4010 def: InstRW<[SKLWriteResGroup197], (instregex "VSQRTSDm")>;
4011
4012 def SKLWriteResGroup198 : SchedWriteRes<[SKLPort0,SKLPort4,SKLPort5,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
4013 let Latency = 23;
4014 let NumMicroOps = 19;
4015 let ResourceCycles = [2,1,4,1,1,4,6];
4016 }
4017 def: InstRW<[SKLWriteResGroup198], (instregex "CMPXCHG16B")>;
4018
4019 def SKLWriteResGroup199 : SchedWriteRes<[SKLPort0,SKLPort23]> {
4020 let Latency = 24;
4021 let NumMicroOps = 2;
4022 let ResourceCycles = [1,1];
4023 }
4024 def: InstRW<[SKLWriteResGroup199], (instregex "VSQRTPDm")>;
4025
4026 def SKLWriteResGroup200 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort0156]> {
4027 let Latency = 24;
4028 let NumMicroOps = 9;
4029 let ResourceCycles = [4,3,1,1];
4030 }
4031 def: InstRW<[SKLWriteResGroup200], (instregex "PCMPESTRIrm")>;
4032 def: InstRW<[SKLWriteResGroup200], (instregex "VPCMPESTRIrm")>;
4033
4034 def SKLWriteResGroup201 : SchedWriteRes<[SKLPort0,SKLPort23]> {
4035 let Latency = 25;
4036 let NumMicroOps = 2;
4037 let ResourceCycles = [1,1];
4038 }
4039 def: InstRW<[SKLWriteResGroup201], (instregex "SQRTSDm")>;
4040 def: InstRW<[SKLWriteResGroup201], (instregex "VSQRTPDYm")>;
4041
4042 def SKLWriteResGroup202 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
4043 let Latency = 25;
4044 let NumMicroOps = 3;
4045 let ResourceCycles = [1,1,1];
4046 }
4047 def: InstRW<[SKLWriteResGroup202], (instregex "DIV_FI16m")>;
4048 def: InstRW<[SKLWriteResGroup202], (instregex "DIV_FI32m")>;
4049
4050 def SKLWriteResGroup203 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort015,SKLPort0156]> {
4051 let Latency = 25;
4052 let NumMicroOps = 10;
4053 let ResourceCycles = [4,3,1,1,1];
4054 }
4055 def: InstRW<[SKLWriteResGroup203], (instregex "PCMPESTRM128rm")>;
4056 def: InstRW<[SKLWriteResGroup203], (instregex "VPCMPESTRM128rm")>;
4057
4058 def SKLWriteResGroup204 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort015]> {
4059 let Latency = 25;
4060 let NumMicroOps = 11;
4061 let ResourceCycles = [3,6,1,1];
4062 }
4063 def: InstRW<[SKLWriteResGroup204], (instregex "AESKEYGENASSIST128rm")>;
4064 def: InstRW<[SKLWriteResGroup204], (instregex "VAESKEYGENASSIST128rm")>;
4065
4066 def SKLWriteResGroup205 : SchedWriteRes<[SKLPort0,SKLPort23]> {
4067 let Latency = 26;
4068 let NumMicroOps = 2;
4069 let ResourceCycles = [1,1];
4070 }
4071 def: InstRW<[SKLWriteResGroup205], (instregex "SQRTPDm")>;
4072
4073 def SKLWriteResGroup206 : SchedWriteRes<[SKLPort0,SKLPort23]> {
4074 let Latency = 27;
4075 let NumMicroOps = 2;
4076 let ResourceCycles = [1,1];
4077 }
4078 def: InstRW<[SKLWriteResGroup206], (instregex "DIVR_F32m")>;
4079 def: InstRW<[SKLWriteResGroup206], (instregex "DIVR_F64m")>;
4080
4081 def SKLWriteResGroup207 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23,SKLPort0156]> {
4082 let Latency = 28;
4083 let NumMicroOps = 8;
4084 let ResourceCycles = [2,4,1,1];
4085 }
4086 def: InstRW<[SKLWriteResGroup207], (instregex "IDIV(16|32|64)m")>;
4087 def: InstRW<[SKLWriteResGroup207], (instregex "IDIV8m")>;
4088
4089 def SKLWriteResGroup208 : SchedWriteRes<[SKLPort0,SKLPort5,SKLPort23]> {
4090 let Latency = 30;
4091 let NumMicroOps = 3;
4092 let ResourceCycles = [1,1,1];
4093 }
4094 def: InstRW<[SKLWriteResGroup208], (instregex "DIVR_FI16m")>;
4095 def: InstRW<[SKLWriteResGroup208], (instregex "DIVR_FI32m")>;
4096
4097 def SKLWriteResGroup209 : SchedWriteRes<[SKLPort5,SKLPort6,SKLPort23,SKLPort06,SKLPort0156]> {
4098 let Latency = 35;
4099 let NumMicroOps = 23;
4100 let ResourceCycles = [1,5,3,4,10];
4101 }
4102 def: InstRW<[SKLWriteResGroup209], (instregex "IN32ri")>;
4103 def: InstRW<[SKLWriteResGroup209], (instregex "IN32rr")>;
4104 def: InstRW<[SKLWriteResGroup209], (instregex "IN8ri")>;
4105 def: InstRW<[SKLWriteResGroup209], (instregex "IN8rr")>;
4106
4107 def SKLWriteResGroup210 : SchedWriteRes<[SKLPort5,SKLPort6,SKLPort23,SKLPort237,SKLPort06,SKLPort0156]> {
4108 let Latency = 35;
4109 let NumMicroOps = 23;
4110 let ResourceCycles = [1,5,2,1,4,10];
4111 }
4112 def: InstRW<[SKLWriteResGroup210], (instregex "OUT32ir")>;
4113 def: InstRW<[SKLWriteResGroup210], (instregex "OUT32rr")>;
4114 def: InstRW<[SKLWriteResGroup210], (instregex "OUT8ir")>;
4115 def: InstRW<[SKLWriteResGroup210], (instregex "OUT8rr")>;
4116
4117 def SKLWriteResGroup211 : SchedWriteRes<[SKLPort1,SKLPort6,SKLPort23,SKLPort0156]> {
4118 let Latency = 37;
4119 let NumMicroOps = 31;
4120 let ResourceCycles = [1,8,1,21];
4121 }
4122 def: InstRW<[SKLWriteResGroup211], (instregex "XRSTOR(64?)")>;
4123
4124 def SKLWriteResGroup212 : SchedWriteRes<[SKLPort1,SKLPort4,SKLPort5,SKLPort6,SKLPort23,SKLPort237,SKLPort15,SKLPort0156]> {
4125 let Latency = 40;
4126 let NumMicroOps = 18;
4127 let ResourceCycles = [1,1,2,3,1,1,1,8];
4128 }
4129 def: InstRW<[SKLWriteResGroup212], (instregex "VMCLEARm")>;
4130
4131 def SKLWriteResGroup213 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,SKLPort0156]> {
4132 let Latency = 41;
4133 let NumMicroOps = 39;
4134 let ResourceCycles = [1,10,1,1,26];
4135 }
4136 def: InstRW<[SKLWriteResGroup213], (instregex "XSAVE64")>;
4137
4138 def SKLWriteResGroup214 : SchedWriteRes<[SKLPort5,SKLPort0156]> {
4139 let Latency = 42;
4140 let NumMicroOps = 22;
4141 let ResourceCycles = [2,20];
4142 }
4143 def: InstRW<[SKLWriteResGroup214], (instregex "RDTSCP")>;
4144
4145 def SKLWriteResGroup215 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,SKLPort0156]> {
4146 let Latency = 42;
4147 let NumMicroOps = 40;
4148 let ResourceCycles = [1,11,1,1,26];
4149 }
4150 def: InstRW<[SKLWriteResGroup215], (instregex "XSAVE")>;
4151
4152 def SKLWriteResGroup216 : SchedWriteRes<[SKLPort4,SKLPort6,SKLPort23,SKLPort237,SKLPort0156]> {
4153 let Latency = 46;
4154 let NumMicroOps = 44;
4155 let ResourceCycles = [1,11,1,1,30];
4156 }
4157 def: InstRW<[SKLWriteResGroup216], (instregex "XSAVEOPT")>;
4158
4159 def SKLWriteResGroup217 : SchedWriteRes<[SKLPort0,SKLPort23,SKLPort05,SKLPort06,SKLPort0156]> {
4160 let Latency = 62;
4161 let NumMicroOps = 64;
4162 let ResourceCycles = [2,8,5,10,39];
4163 }
4164 def: InstRW<[SKLWriteResGroup217], (instregex "FLDENVm")>;
4165 def: InstRW<[SKLWriteResGroup217], (instregex "FLDENVm")>;
4166
4167 def SKLWriteResGroup218 : SchedWriteRes<[SKLPort0,SKLPort6,SKLPort23,SKLPort05,SKLPort06,SKLPort15,SKLPort0156]> {
4168 let Latency = 63;
4169 let NumMicroOps = 88;
4170 let ResourceCycles = [4,4,31,1,2,1,45];
4171 }
4172 def: InstRW<[SKLWriteResGroup218], (instregex "FXRSTOR64")>;
4173
4174 def SKLWriteResGroup219 : SchedWriteRes<[SKLPort0,SKLPort6,SKLPort23,SKLPort05,SKLPort06,SKLPort15,SKLPort0156]> {
4175 let Latency = 63;
4176 let NumMicroOps = 90;
4177 let ResourceCycles = [4,2,33,1,2,1,47];
4178 }
4179 def: InstRW<[SKLWriteResGroup219], (instregex "FXRSTOR")>;
4180
4181 def SKLWriteResGroup220 : SchedWriteRes<[SKLPort5,SKLPort05,SKLPort0156]> {
4182 let Latency = 75;
4183 let NumMicroOps = 15;
4184 let ResourceCycles = [6,3,6];
4185 }
4186 def: InstRW<[SKLWriteResGroup220], (instregex "FNINIT")>;
4187
4188 def SKLWriteResGroup221 : SchedWriteRes<[SKLPort0,SKLPort1,SKLPort5,SKLPort6,SKLPort05,SKLPort0156]> {
4189 let Latency = 76;
4190 let NumMicroOps = 32;
4191 let ResourceCycles = [7,2,8,3,1,11];
4192 }
4193 def: InstRW<[SKLWriteResGroup221], (instregex "DIV(16|32|64)r")>;
4194
4195 def SKLWriteResGroup222 : SchedWriteRes<[SKLPort0,SKLPort1,SKLPort5,SKLPort6,SKLPort06,SKLPort0156]> {
4196 let Latency = 102;
4197 let NumMicroOps = 66;
4198 let ResourceCycles = [4,2,4,8,14,34];
4199 }
4200 def: InstRW<[SKLWriteResGroup222], (instregex "IDIV(16|32|64)r")>;
4201
4202 def SKLWriteResGroup223 : SchedWriteRes<[SKLPort0,SKLPort1,SKLPort4,SKLPort5,SKLPort6,SKLPort237,SKLPort06,SKLPort0156]> {
4203 let Latency = 106;
4204 let NumMicroOps = 100;
4205 let ResourceCycles = [9,1,11,16,1,11,21,30];
4206 }
4207 def: InstRW<[SKLWriteResGroup223], (instregex "FSTENVm")>;
4208 def: InstRW<[SKLWriteResGroup223], (instregex "FSTENVm")>;
4209
4210 } // SchedModel