Mercurial > hg > Members > tobaru > cbc > CbC_llvm
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 |