1 | // Generated by opcode_generator.rb from /home/dima/wk/webkit/Source/JavaScriptCore/b3/air/AirOpcode.opcodes -- do not edit! |
2 | #ifndef AirOpcodeGenerated_h |
3 | #define AirOpcodeGenerated_h |
4 | #include "AirInstInlines.h" |
5 | #include "wtf/PrintStream.h" |
6 | namespace WTF { |
7 | using namespace JSC::B3::Air; |
8 | void printInternal(PrintStream& out, Opcode opcode) |
9 | { |
10 | switch (opcode) { |
11 | case Opcode::Nop: |
12 | out.print("Nop" ); |
13 | return; |
14 | case Opcode::Add32: |
15 | out.print("Add32" ); |
16 | return; |
17 | case Opcode::Add8: |
18 | out.print("Add8" ); |
19 | return; |
20 | case Opcode::Add16: |
21 | out.print("Add16" ); |
22 | return; |
23 | case Opcode::Add64: |
24 | out.print("Add64" ); |
25 | return; |
26 | case Opcode::AddDouble: |
27 | out.print("AddDouble" ); |
28 | return; |
29 | case Opcode::AddFloat: |
30 | out.print("AddFloat" ); |
31 | return; |
32 | case Opcode::Sub32: |
33 | out.print("Sub32" ); |
34 | return; |
35 | case Opcode::Sub64: |
36 | out.print("Sub64" ); |
37 | return; |
38 | case Opcode::SubDouble: |
39 | out.print("SubDouble" ); |
40 | return; |
41 | case Opcode::SubFloat: |
42 | out.print("SubFloat" ); |
43 | return; |
44 | case Opcode::Neg32: |
45 | out.print("Neg32" ); |
46 | return; |
47 | case Opcode::Neg64: |
48 | out.print("Neg64" ); |
49 | return; |
50 | case Opcode::NegateDouble: |
51 | out.print("NegateDouble" ); |
52 | return; |
53 | case Opcode::NegateFloat: |
54 | out.print("NegateFloat" ); |
55 | return; |
56 | case Opcode::Mul32: |
57 | out.print("Mul32" ); |
58 | return; |
59 | case Opcode::Mul64: |
60 | out.print("Mul64" ); |
61 | return; |
62 | case Opcode::MultiplyAdd32: |
63 | out.print("MultiplyAdd32" ); |
64 | return; |
65 | case Opcode::MultiplyAdd64: |
66 | out.print("MultiplyAdd64" ); |
67 | return; |
68 | case Opcode::MultiplySub32: |
69 | out.print("MultiplySub32" ); |
70 | return; |
71 | case Opcode::MultiplySub64: |
72 | out.print("MultiplySub64" ); |
73 | return; |
74 | case Opcode::MultiplyNeg32: |
75 | out.print("MultiplyNeg32" ); |
76 | return; |
77 | case Opcode::MultiplyNeg64: |
78 | out.print("MultiplyNeg64" ); |
79 | return; |
80 | case Opcode::MultiplySignExtend32: |
81 | out.print("MultiplySignExtend32" ); |
82 | return; |
83 | case Opcode::Div32: |
84 | out.print("Div32" ); |
85 | return; |
86 | case Opcode::UDiv32: |
87 | out.print("UDiv32" ); |
88 | return; |
89 | case Opcode::Div64: |
90 | out.print("Div64" ); |
91 | return; |
92 | case Opcode::UDiv64: |
93 | out.print("UDiv64" ); |
94 | return; |
95 | case Opcode::MulDouble: |
96 | out.print("MulDouble" ); |
97 | return; |
98 | case Opcode::MulFloat: |
99 | out.print("MulFloat" ); |
100 | return; |
101 | case Opcode::DivDouble: |
102 | out.print("DivDouble" ); |
103 | return; |
104 | case Opcode::DivFloat: |
105 | out.print("DivFloat" ); |
106 | return; |
107 | case Opcode::X86ConvertToDoubleWord32: |
108 | out.print("X86ConvertToDoubleWord32" ); |
109 | return; |
110 | case Opcode::X86ConvertToQuadWord64: |
111 | out.print("X86ConvertToQuadWord64" ); |
112 | return; |
113 | case Opcode::X86Div32: |
114 | out.print("X86Div32" ); |
115 | return; |
116 | case Opcode::X86UDiv32: |
117 | out.print("X86UDiv32" ); |
118 | return; |
119 | case Opcode::X86Div64: |
120 | out.print("X86Div64" ); |
121 | return; |
122 | case Opcode::X86UDiv64: |
123 | out.print("X86UDiv64" ); |
124 | return; |
125 | case Opcode::Lea32: |
126 | out.print("Lea32" ); |
127 | return; |
128 | case Opcode::Lea64: |
129 | out.print("Lea64" ); |
130 | return; |
131 | case Opcode::And32: |
132 | out.print("And32" ); |
133 | return; |
134 | case Opcode::And64: |
135 | out.print("And64" ); |
136 | return; |
137 | case Opcode::AndDouble: |
138 | out.print("AndDouble" ); |
139 | return; |
140 | case Opcode::AndFloat: |
141 | out.print("AndFloat" ); |
142 | return; |
143 | case Opcode::OrDouble: |
144 | out.print("OrDouble" ); |
145 | return; |
146 | case Opcode::OrFloat: |
147 | out.print("OrFloat" ); |
148 | return; |
149 | case Opcode::XorDouble: |
150 | out.print("XorDouble" ); |
151 | return; |
152 | case Opcode::XorFloat: |
153 | out.print("XorFloat" ); |
154 | return; |
155 | case Opcode::Lshift32: |
156 | out.print("Lshift32" ); |
157 | return; |
158 | case Opcode::Lshift64: |
159 | out.print("Lshift64" ); |
160 | return; |
161 | case Opcode::Rshift32: |
162 | out.print("Rshift32" ); |
163 | return; |
164 | case Opcode::Rshift64: |
165 | out.print("Rshift64" ); |
166 | return; |
167 | case Opcode::Urshift32: |
168 | out.print("Urshift32" ); |
169 | return; |
170 | case Opcode::Urshift64: |
171 | out.print("Urshift64" ); |
172 | return; |
173 | case Opcode::RotateRight32: |
174 | out.print("RotateRight32" ); |
175 | return; |
176 | case Opcode::RotateRight64: |
177 | out.print("RotateRight64" ); |
178 | return; |
179 | case Opcode::RotateLeft32: |
180 | out.print("RotateLeft32" ); |
181 | return; |
182 | case Opcode::RotateLeft64: |
183 | out.print("RotateLeft64" ); |
184 | return; |
185 | case Opcode::Or32: |
186 | out.print("Or32" ); |
187 | return; |
188 | case Opcode::Or64: |
189 | out.print("Or64" ); |
190 | return; |
191 | case Opcode::Xor32: |
192 | out.print("Xor32" ); |
193 | return; |
194 | case Opcode::Xor64: |
195 | out.print("Xor64" ); |
196 | return; |
197 | case Opcode::Not32: |
198 | out.print("Not32" ); |
199 | return; |
200 | case Opcode::Not64: |
201 | out.print("Not64" ); |
202 | return; |
203 | case Opcode::AbsDouble: |
204 | out.print("AbsDouble" ); |
205 | return; |
206 | case Opcode::AbsFloat: |
207 | out.print("AbsFloat" ); |
208 | return; |
209 | case Opcode::CeilDouble: |
210 | out.print("CeilDouble" ); |
211 | return; |
212 | case Opcode::CeilFloat: |
213 | out.print("CeilFloat" ); |
214 | return; |
215 | case Opcode::FloorDouble: |
216 | out.print("FloorDouble" ); |
217 | return; |
218 | case Opcode::FloorFloat: |
219 | out.print("FloorFloat" ); |
220 | return; |
221 | case Opcode::SqrtDouble: |
222 | out.print("SqrtDouble" ); |
223 | return; |
224 | case Opcode::SqrtFloat: |
225 | out.print("SqrtFloat" ); |
226 | return; |
227 | case Opcode::ConvertInt32ToDouble: |
228 | out.print("ConvertInt32ToDouble" ); |
229 | return; |
230 | case Opcode::ConvertInt64ToDouble: |
231 | out.print("ConvertInt64ToDouble" ); |
232 | return; |
233 | case Opcode::ConvertInt32ToFloat: |
234 | out.print("ConvertInt32ToFloat" ); |
235 | return; |
236 | case Opcode::ConvertInt64ToFloat: |
237 | out.print("ConvertInt64ToFloat" ); |
238 | return; |
239 | case Opcode::CountLeadingZeros32: |
240 | out.print("CountLeadingZeros32" ); |
241 | return; |
242 | case Opcode::CountLeadingZeros64: |
243 | out.print("CountLeadingZeros64" ); |
244 | return; |
245 | case Opcode::ConvertDoubleToFloat: |
246 | out.print("ConvertDoubleToFloat" ); |
247 | return; |
248 | case Opcode::ConvertFloatToDouble: |
249 | out.print("ConvertFloatToDouble" ); |
250 | return; |
251 | case Opcode::Move: |
252 | out.print("Move" ); |
253 | return; |
254 | case Opcode::Swap32: |
255 | out.print("Swap32" ); |
256 | return; |
257 | case Opcode::Swap64: |
258 | out.print("Swap64" ); |
259 | return; |
260 | case Opcode::Move32: |
261 | out.print("Move32" ); |
262 | return; |
263 | case Opcode::StoreZero32: |
264 | out.print("StoreZero32" ); |
265 | return; |
266 | case Opcode::StoreZero64: |
267 | out.print("StoreZero64" ); |
268 | return; |
269 | case Opcode::SignExtend32ToPtr: |
270 | out.print("SignExtend32ToPtr" ); |
271 | return; |
272 | case Opcode::ZeroExtend8To32: |
273 | out.print("ZeroExtend8To32" ); |
274 | return; |
275 | case Opcode::SignExtend8To32: |
276 | out.print("SignExtend8To32" ); |
277 | return; |
278 | case Opcode::ZeroExtend16To32: |
279 | out.print("ZeroExtend16To32" ); |
280 | return; |
281 | case Opcode::SignExtend16To32: |
282 | out.print("SignExtend16To32" ); |
283 | return; |
284 | case Opcode::MoveFloat: |
285 | out.print("MoveFloat" ); |
286 | return; |
287 | case Opcode::MoveDouble: |
288 | out.print("MoveDouble" ); |
289 | return; |
290 | case Opcode::MoveZeroToDouble: |
291 | out.print("MoveZeroToDouble" ); |
292 | return; |
293 | case Opcode::Move64ToDouble: |
294 | out.print("Move64ToDouble" ); |
295 | return; |
296 | case Opcode::Move32ToFloat: |
297 | out.print("Move32ToFloat" ); |
298 | return; |
299 | case Opcode::MoveDoubleTo64: |
300 | out.print("MoveDoubleTo64" ); |
301 | return; |
302 | case Opcode::MoveFloatTo32: |
303 | out.print("MoveFloatTo32" ); |
304 | return; |
305 | case Opcode::Load8: |
306 | out.print("Load8" ); |
307 | return; |
308 | case Opcode::LoadAcq8: |
309 | out.print("LoadAcq8" ); |
310 | return; |
311 | case Opcode::Store8: |
312 | out.print("Store8" ); |
313 | return; |
314 | case Opcode::StoreRel8: |
315 | out.print("StoreRel8" ); |
316 | return; |
317 | case Opcode::Load8SignedExtendTo32: |
318 | out.print("Load8SignedExtendTo32" ); |
319 | return; |
320 | case Opcode::LoadAcq8SignedExtendTo32: |
321 | out.print("LoadAcq8SignedExtendTo32" ); |
322 | return; |
323 | case Opcode::Load16: |
324 | out.print("Load16" ); |
325 | return; |
326 | case Opcode::LoadAcq16: |
327 | out.print("LoadAcq16" ); |
328 | return; |
329 | case Opcode::Load16SignedExtendTo32: |
330 | out.print("Load16SignedExtendTo32" ); |
331 | return; |
332 | case Opcode::LoadAcq16SignedExtendTo32: |
333 | out.print("LoadAcq16SignedExtendTo32" ); |
334 | return; |
335 | case Opcode::Store16: |
336 | out.print("Store16" ); |
337 | return; |
338 | case Opcode::StoreRel16: |
339 | out.print("StoreRel16" ); |
340 | return; |
341 | case Opcode::LoadAcq32: |
342 | out.print("LoadAcq32" ); |
343 | return; |
344 | case Opcode::StoreRel32: |
345 | out.print("StoreRel32" ); |
346 | return; |
347 | case Opcode::LoadAcq64: |
348 | out.print("LoadAcq64" ); |
349 | return; |
350 | case Opcode::StoreRel64: |
351 | out.print("StoreRel64" ); |
352 | return; |
353 | case Opcode::Xchg8: |
354 | out.print("Xchg8" ); |
355 | return; |
356 | case Opcode::Xchg16: |
357 | out.print("Xchg16" ); |
358 | return; |
359 | case Opcode::Xchg32: |
360 | out.print("Xchg32" ); |
361 | return; |
362 | case Opcode::Xchg64: |
363 | out.print("Xchg64" ); |
364 | return; |
365 | case Opcode::AtomicStrongCAS8: |
366 | out.print("AtomicStrongCAS8" ); |
367 | return; |
368 | case Opcode::AtomicStrongCAS16: |
369 | out.print("AtomicStrongCAS16" ); |
370 | return; |
371 | case Opcode::AtomicStrongCAS32: |
372 | out.print("AtomicStrongCAS32" ); |
373 | return; |
374 | case Opcode::AtomicStrongCAS64: |
375 | out.print("AtomicStrongCAS64" ); |
376 | return; |
377 | case Opcode::BranchAtomicStrongCAS8: |
378 | out.print("BranchAtomicStrongCAS8" ); |
379 | return; |
380 | case Opcode::BranchAtomicStrongCAS16: |
381 | out.print("BranchAtomicStrongCAS16" ); |
382 | return; |
383 | case Opcode::BranchAtomicStrongCAS32: |
384 | out.print("BranchAtomicStrongCAS32" ); |
385 | return; |
386 | case Opcode::BranchAtomicStrongCAS64: |
387 | out.print("BranchAtomicStrongCAS64" ); |
388 | return; |
389 | case Opcode::AtomicAdd8: |
390 | out.print("AtomicAdd8" ); |
391 | return; |
392 | case Opcode::AtomicAdd16: |
393 | out.print("AtomicAdd16" ); |
394 | return; |
395 | case Opcode::AtomicAdd32: |
396 | out.print("AtomicAdd32" ); |
397 | return; |
398 | case Opcode::AtomicAdd64: |
399 | out.print("AtomicAdd64" ); |
400 | return; |
401 | case Opcode::AtomicSub8: |
402 | out.print("AtomicSub8" ); |
403 | return; |
404 | case Opcode::AtomicSub16: |
405 | out.print("AtomicSub16" ); |
406 | return; |
407 | case Opcode::AtomicSub32: |
408 | out.print("AtomicSub32" ); |
409 | return; |
410 | case Opcode::AtomicSub64: |
411 | out.print("AtomicSub64" ); |
412 | return; |
413 | case Opcode::AtomicAnd8: |
414 | out.print("AtomicAnd8" ); |
415 | return; |
416 | case Opcode::AtomicAnd16: |
417 | out.print("AtomicAnd16" ); |
418 | return; |
419 | case Opcode::AtomicAnd32: |
420 | out.print("AtomicAnd32" ); |
421 | return; |
422 | case Opcode::AtomicAnd64: |
423 | out.print("AtomicAnd64" ); |
424 | return; |
425 | case Opcode::AtomicOr8: |
426 | out.print("AtomicOr8" ); |
427 | return; |
428 | case Opcode::AtomicOr16: |
429 | out.print("AtomicOr16" ); |
430 | return; |
431 | case Opcode::AtomicOr32: |
432 | out.print("AtomicOr32" ); |
433 | return; |
434 | case Opcode::AtomicOr64: |
435 | out.print("AtomicOr64" ); |
436 | return; |
437 | case Opcode::AtomicXor8: |
438 | out.print("AtomicXor8" ); |
439 | return; |
440 | case Opcode::AtomicXor16: |
441 | out.print("AtomicXor16" ); |
442 | return; |
443 | case Opcode::AtomicXor32: |
444 | out.print("AtomicXor32" ); |
445 | return; |
446 | case Opcode::AtomicXor64: |
447 | out.print("AtomicXor64" ); |
448 | return; |
449 | case Opcode::AtomicNeg8: |
450 | out.print("AtomicNeg8" ); |
451 | return; |
452 | case Opcode::AtomicNeg16: |
453 | out.print("AtomicNeg16" ); |
454 | return; |
455 | case Opcode::AtomicNeg32: |
456 | out.print("AtomicNeg32" ); |
457 | return; |
458 | case Opcode::AtomicNeg64: |
459 | out.print("AtomicNeg64" ); |
460 | return; |
461 | case Opcode::AtomicNot8: |
462 | out.print("AtomicNot8" ); |
463 | return; |
464 | case Opcode::AtomicNot16: |
465 | out.print("AtomicNot16" ); |
466 | return; |
467 | case Opcode::AtomicNot32: |
468 | out.print("AtomicNot32" ); |
469 | return; |
470 | case Opcode::AtomicNot64: |
471 | out.print("AtomicNot64" ); |
472 | return; |
473 | case Opcode::AtomicXchgAdd8: |
474 | out.print("AtomicXchgAdd8" ); |
475 | return; |
476 | case Opcode::AtomicXchgAdd16: |
477 | out.print("AtomicXchgAdd16" ); |
478 | return; |
479 | case Opcode::AtomicXchgAdd32: |
480 | out.print("AtomicXchgAdd32" ); |
481 | return; |
482 | case Opcode::AtomicXchgAdd64: |
483 | out.print("AtomicXchgAdd64" ); |
484 | return; |
485 | case Opcode::AtomicXchg8: |
486 | out.print("AtomicXchg8" ); |
487 | return; |
488 | case Opcode::AtomicXchg16: |
489 | out.print("AtomicXchg16" ); |
490 | return; |
491 | case Opcode::AtomicXchg32: |
492 | out.print("AtomicXchg32" ); |
493 | return; |
494 | case Opcode::AtomicXchg64: |
495 | out.print("AtomicXchg64" ); |
496 | return; |
497 | case Opcode::LoadLink8: |
498 | out.print("LoadLink8" ); |
499 | return; |
500 | case Opcode::LoadLinkAcq8: |
501 | out.print("LoadLinkAcq8" ); |
502 | return; |
503 | case Opcode::StoreCond8: |
504 | out.print("StoreCond8" ); |
505 | return; |
506 | case Opcode::StoreCondRel8: |
507 | out.print("StoreCondRel8" ); |
508 | return; |
509 | case Opcode::LoadLink16: |
510 | out.print("LoadLink16" ); |
511 | return; |
512 | case Opcode::LoadLinkAcq16: |
513 | out.print("LoadLinkAcq16" ); |
514 | return; |
515 | case Opcode::StoreCond16: |
516 | out.print("StoreCond16" ); |
517 | return; |
518 | case Opcode::StoreCondRel16: |
519 | out.print("StoreCondRel16" ); |
520 | return; |
521 | case Opcode::LoadLink32: |
522 | out.print("LoadLink32" ); |
523 | return; |
524 | case Opcode::LoadLinkAcq32: |
525 | out.print("LoadLinkAcq32" ); |
526 | return; |
527 | case Opcode::StoreCond32: |
528 | out.print("StoreCond32" ); |
529 | return; |
530 | case Opcode::StoreCondRel32: |
531 | out.print("StoreCondRel32" ); |
532 | return; |
533 | case Opcode::LoadLink64: |
534 | out.print("LoadLink64" ); |
535 | return; |
536 | case Opcode::LoadLinkAcq64: |
537 | out.print("LoadLinkAcq64" ); |
538 | return; |
539 | case Opcode::StoreCond64: |
540 | out.print("StoreCond64" ); |
541 | return; |
542 | case Opcode::StoreCondRel64: |
543 | out.print("StoreCondRel64" ); |
544 | return; |
545 | case Opcode::Depend32: |
546 | out.print("Depend32" ); |
547 | return; |
548 | case Opcode::Depend64: |
549 | out.print("Depend64" ); |
550 | return; |
551 | case Opcode::Compare32: |
552 | out.print("Compare32" ); |
553 | return; |
554 | case Opcode::Compare64: |
555 | out.print("Compare64" ); |
556 | return; |
557 | case Opcode::Test32: |
558 | out.print("Test32" ); |
559 | return; |
560 | case Opcode::Test64: |
561 | out.print("Test64" ); |
562 | return; |
563 | case Opcode::CompareDouble: |
564 | out.print("CompareDouble" ); |
565 | return; |
566 | case Opcode::CompareFloat: |
567 | out.print("CompareFloat" ); |
568 | return; |
569 | case Opcode::Branch8: |
570 | out.print("Branch8" ); |
571 | return; |
572 | case Opcode::Branch32: |
573 | out.print("Branch32" ); |
574 | return; |
575 | case Opcode::Branch64: |
576 | out.print("Branch64" ); |
577 | return; |
578 | case Opcode::BranchTest8: |
579 | out.print("BranchTest8" ); |
580 | return; |
581 | case Opcode::BranchTest32: |
582 | out.print("BranchTest32" ); |
583 | return; |
584 | case Opcode::BranchTest64: |
585 | out.print("BranchTest64" ); |
586 | return; |
587 | case Opcode::BranchTestBit64: |
588 | out.print("BranchTestBit64" ); |
589 | return; |
590 | case Opcode::BranchTestBit32: |
591 | out.print("BranchTestBit32" ); |
592 | return; |
593 | case Opcode::BranchDouble: |
594 | out.print("BranchDouble" ); |
595 | return; |
596 | case Opcode::BranchFloat: |
597 | out.print("BranchFloat" ); |
598 | return; |
599 | case Opcode::BranchAdd32: |
600 | out.print("BranchAdd32" ); |
601 | return; |
602 | case Opcode::BranchAdd64: |
603 | out.print("BranchAdd64" ); |
604 | return; |
605 | case Opcode::BranchMul32: |
606 | out.print("BranchMul32" ); |
607 | return; |
608 | case Opcode::BranchMul64: |
609 | out.print("BranchMul64" ); |
610 | return; |
611 | case Opcode::BranchSub32: |
612 | out.print("BranchSub32" ); |
613 | return; |
614 | case Opcode::BranchSub64: |
615 | out.print("BranchSub64" ); |
616 | return; |
617 | case Opcode::BranchNeg32: |
618 | out.print("BranchNeg32" ); |
619 | return; |
620 | case Opcode::BranchNeg64: |
621 | out.print("BranchNeg64" ); |
622 | return; |
623 | case Opcode::MoveConditionally32: |
624 | out.print("MoveConditionally32" ); |
625 | return; |
626 | case Opcode::MoveConditionally64: |
627 | out.print("MoveConditionally64" ); |
628 | return; |
629 | case Opcode::MoveConditionallyTest32: |
630 | out.print("MoveConditionallyTest32" ); |
631 | return; |
632 | case Opcode::MoveConditionallyTest64: |
633 | out.print("MoveConditionallyTest64" ); |
634 | return; |
635 | case Opcode::MoveConditionallyDouble: |
636 | out.print("MoveConditionallyDouble" ); |
637 | return; |
638 | case Opcode::MoveConditionallyFloat: |
639 | out.print("MoveConditionallyFloat" ); |
640 | return; |
641 | case Opcode::MoveDoubleConditionally32: |
642 | out.print("MoveDoubleConditionally32" ); |
643 | return; |
644 | case Opcode::MoveDoubleConditionally64: |
645 | out.print("MoveDoubleConditionally64" ); |
646 | return; |
647 | case Opcode::MoveDoubleConditionallyTest32: |
648 | out.print("MoveDoubleConditionallyTest32" ); |
649 | return; |
650 | case Opcode::MoveDoubleConditionallyTest64: |
651 | out.print("MoveDoubleConditionallyTest64" ); |
652 | return; |
653 | case Opcode::MoveDoubleConditionallyDouble: |
654 | out.print("MoveDoubleConditionallyDouble" ); |
655 | return; |
656 | case Opcode::MoveDoubleConditionallyFloat: |
657 | out.print("MoveDoubleConditionallyFloat" ); |
658 | return; |
659 | case Opcode::MemoryFence: |
660 | out.print("MemoryFence" ); |
661 | return; |
662 | case Opcode::StoreFence: |
663 | out.print("StoreFence" ); |
664 | return; |
665 | case Opcode::LoadFence: |
666 | out.print("LoadFence" ); |
667 | return; |
668 | case Opcode::Jump: |
669 | out.print("Jump" ); |
670 | return; |
671 | case Opcode::RetVoid: |
672 | out.print("RetVoid" ); |
673 | return; |
674 | case Opcode::Ret32: |
675 | out.print("Ret32" ); |
676 | return; |
677 | case Opcode::Ret64: |
678 | out.print("Ret64" ); |
679 | return; |
680 | case Opcode::RetFloat: |
681 | out.print("RetFloat" ); |
682 | return; |
683 | case Opcode::RetDouble: |
684 | out.print("RetDouble" ); |
685 | return; |
686 | case Opcode::Oops: |
687 | out.print("Oops" ); |
688 | return; |
689 | case Opcode::EntrySwitch: |
690 | out.print("EntrySwitch" ); |
691 | return; |
692 | case Opcode::Shuffle: |
693 | out.print("Shuffle" ); |
694 | return; |
695 | case Opcode::Patch: |
696 | out.print("Patch" ); |
697 | return; |
698 | case Opcode::CCall: |
699 | out.print("CCall" ); |
700 | return; |
701 | case Opcode::ColdCCall: |
702 | out.print("ColdCCall" ); |
703 | return; |
704 | case Opcode::WasmBoundsCheck: |
705 | out.print("WasmBoundsCheck" ); |
706 | return; |
707 | } |
708 | RELEASE_ASSERT_NOT_REACHED(); |
709 | } |
710 | } // namespace WTF |
711 | namespace JSC { namespace B3 { namespace Air { |
712 | const uint8_t g_formTable[4872] = { |
713 | // Nop |
714 | |
715 | // Invalid: Nop with numOperands = 1 |
716 | INVALID_INST_FORM, |
717 | // Invalid: Nop with numOperands = 2 |
718 | INVALID_INST_FORM, INVALID_INST_FORM, |
719 | // Invalid: Nop with numOperands = 3 |
720 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
721 | // Invalid: Nop with numOperands = 4 |
722 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
723 | // Invalid: Nop with numOperands = 5 |
724 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
725 | // Invalid: Nop with numOperands = 6 |
726 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
727 | // Invalid: Add32 with numOperands = 0 |
728 | |
729 | // Invalid: Add32 with numOperands = 1 |
730 | INVALID_INST_FORM, |
731 | // Add32 U:G:32, UZD:G:32 |
732 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
733 | // Add32 U:G:32, U:G:32, ZD:G:32 |
734 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
735 | // Invalid: Add32 with numOperands = 4 |
736 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
737 | // Invalid: Add32 with numOperands = 5 |
738 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
739 | // Invalid: Add32 with numOperands = 6 |
740 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
741 | // Invalid: Add8 with numOperands = 0 |
742 | |
743 | // Invalid: Add8 with numOperands = 1 |
744 | INVALID_INST_FORM, |
745 | // Add8 U:G:8, UD:G:8 |
746 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
747 | // Invalid: Add8 with numOperands = 3 |
748 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
749 | // Invalid: Add8 with numOperands = 4 |
750 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
751 | // Invalid: Add8 with numOperands = 5 |
752 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
753 | // Invalid: Add8 with numOperands = 6 |
754 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
755 | // Invalid: Add16 with numOperands = 0 |
756 | |
757 | // Invalid: Add16 with numOperands = 1 |
758 | INVALID_INST_FORM, |
759 | // Add16 U:G:16, UD:G:16 |
760 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
761 | // Invalid: Add16 with numOperands = 3 |
762 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
763 | // Invalid: Add16 with numOperands = 4 |
764 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
765 | // Invalid: Add16 with numOperands = 5 |
766 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
767 | // Invalid: Add16 with numOperands = 6 |
768 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
769 | // Invalid: Add64 with numOperands = 0 |
770 | |
771 | // Invalid: Add64 with numOperands = 1 |
772 | INVALID_INST_FORM, |
773 | // Add64 U:G:64, UD:G:64 |
774 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
775 | // Add64 U:G:64, U:G:64, D:G:64 |
776 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
777 | // Invalid: Add64 with numOperands = 4 |
778 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
779 | // Invalid: Add64 with numOperands = 5 |
780 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
781 | // Invalid: Add64 with numOperands = 6 |
782 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
783 | // Invalid: AddDouble with numOperands = 0 |
784 | |
785 | // Invalid: AddDouble with numOperands = 1 |
786 | INVALID_INST_FORM, |
787 | // AddDouble U:F:64, UD:F:64 |
788 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
789 | // AddDouble U:F:64, U:F:64, D:F:64 |
790 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
791 | // Invalid: AddDouble with numOperands = 4 |
792 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
793 | // Invalid: AddDouble with numOperands = 5 |
794 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
795 | // Invalid: AddDouble with numOperands = 6 |
796 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
797 | // Invalid: AddFloat with numOperands = 0 |
798 | |
799 | // Invalid: AddFloat with numOperands = 1 |
800 | INVALID_INST_FORM, |
801 | // AddFloat U:F:32, UD:F:32 |
802 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
803 | // AddFloat U:F:32, U:F:32, D:F:32 |
804 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
805 | // Invalid: AddFloat with numOperands = 4 |
806 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
807 | // Invalid: AddFloat with numOperands = 5 |
808 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
809 | // Invalid: AddFloat with numOperands = 6 |
810 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
811 | // Invalid: Sub32 with numOperands = 0 |
812 | |
813 | // Invalid: Sub32 with numOperands = 1 |
814 | INVALID_INST_FORM, |
815 | // Sub32 U:G:32, UZD:G:32 |
816 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
817 | // Sub32 U:G:32, U:G:32, D:G:32 |
818 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, GP, Width32), |
819 | // Invalid: Sub32 with numOperands = 4 |
820 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
821 | // Invalid: Sub32 with numOperands = 5 |
822 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
823 | // Invalid: Sub32 with numOperands = 6 |
824 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
825 | // Invalid: Sub64 with numOperands = 0 |
826 | |
827 | // Invalid: Sub64 with numOperands = 1 |
828 | INVALID_INST_FORM, |
829 | // Sub64 U:G:64, UD:G:64 |
830 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
831 | // Sub64 U:G:64, U:G:64, D:G:64 |
832 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
833 | // Invalid: Sub64 with numOperands = 4 |
834 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
835 | // Invalid: Sub64 with numOperands = 5 |
836 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
837 | // Invalid: Sub64 with numOperands = 6 |
838 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
839 | // Invalid: SubDouble with numOperands = 0 |
840 | |
841 | // Invalid: SubDouble with numOperands = 1 |
842 | INVALID_INST_FORM, |
843 | // SubDouble U:F:64, UD:F:64 |
844 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
845 | // SubDouble U:F:64, U:F:64, D:F:64 |
846 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
847 | // Invalid: SubDouble with numOperands = 4 |
848 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
849 | // Invalid: SubDouble with numOperands = 5 |
850 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
851 | // Invalid: SubDouble with numOperands = 6 |
852 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
853 | // Invalid: SubFloat with numOperands = 0 |
854 | |
855 | // Invalid: SubFloat with numOperands = 1 |
856 | INVALID_INST_FORM, |
857 | // SubFloat U:F:32, UD:F:32 |
858 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
859 | // SubFloat U:F:32, U:F:32, D:F:32 |
860 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
861 | // Invalid: SubFloat with numOperands = 4 |
862 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
863 | // Invalid: SubFloat with numOperands = 5 |
864 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
865 | // Invalid: SubFloat with numOperands = 6 |
866 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
867 | // Invalid: Neg32 with numOperands = 0 |
868 | |
869 | // Neg32 UZD:G:32 |
870 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
871 | // Invalid: Neg32 with numOperands = 2 |
872 | INVALID_INST_FORM, INVALID_INST_FORM, |
873 | // Invalid: Neg32 with numOperands = 3 |
874 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
875 | // Invalid: Neg32 with numOperands = 4 |
876 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
877 | // Invalid: Neg32 with numOperands = 5 |
878 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
879 | // Invalid: Neg32 with numOperands = 6 |
880 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
881 | // Invalid: Neg64 with numOperands = 0 |
882 | |
883 | // Neg64 UD:G:64 |
884 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
885 | // Invalid: Neg64 with numOperands = 2 |
886 | INVALID_INST_FORM, INVALID_INST_FORM, |
887 | // Invalid: Neg64 with numOperands = 3 |
888 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
889 | // Invalid: Neg64 with numOperands = 4 |
890 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
891 | // Invalid: Neg64 with numOperands = 5 |
892 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
893 | // Invalid: Neg64 with numOperands = 6 |
894 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
895 | // Invalid: NegateDouble with numOperands = 0 |
896 | |
897 | // Invalid: NegateDouble with numOperands = 1 |
898 | INVALID_INST_FORM, |
899 | // NegateDouble U:F:64, D:F:64 |
900 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
901 | // Invalid: NegateDouble with numOperands = 3 |
902 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
903 | // Invalid: NegateDouble with numOperands = 4 |
904 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
905 | // Invalid: NegateDouble with numOperands = 5 |
906 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
907 | // Invalid: NegateDouble with numOperands = 6 |
908 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
909 | // Invalid: NegateFloat with numOperands = 0 |
910 | |
911 | // Invalid: NegateFloat with numOperands = 1 |
912 | INVALID_INST_FORM, |
913 | // NegateFloat U:F:32, D:F:32 |
914 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
915 | // Invalid: NegateFloat with numOperands = 3 |
916 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
917 | // Invalid: NegateFloat with numOperands = 4 |
918 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
919 | // Invalid: NegateFloat with numOperands = 5 |
920 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
921 | // Invalid: NegateFloat with numOperands = 6 |
922 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
923 | // Invalid: Mul32 with numOperands = 0 |
924 | |
925 | // Invalid: Mul32 with numOperands = 1 |
926 | INVALID_INST_FORM, |
927 | // Mul32 U:G:32, UZD:G:32 |
928 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
929 | // Mul32 U:G:32, U:G:32, ZD:G:32 |
930 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
931 | // Invalid: Mul32 with numOperands = 4 |
932 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
933 | // Invalid: Mul32 with numOperands = 5 |
934 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
935 | // Invalid: Mul32 with numOperands = 6 |
936 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
937 | // Invalid: Mul64 with numOperands = 0 |
938 | |
939 | // Invalid: Mul64 with numOperands = 1 |
940 | INVALID_INST_FORM, |
941 | // Mul64 U:G:64, UD:G:64 |
942 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
943 | // Mul64 U:G:64, U:G:64, D:G:64 |
944 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
945 | // Invalid: Mul64 with numOperands = 4 |
946 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
947 | // Invalid: Mul64 with numOperands = 5 |
948 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
949 | // Invalid: Mul64 with numOperands = 6 |
950 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
951 | // Invalid: MultiplyAdd32 with numOperands = 0 |
952 | |
953 | // Invalid: MultiplyAdd32 with numOperands = 1 |
954 | INVALID_INST_FORM, |
955 | // Invalid: MultiplyAdd32 with numOperands = 2 |
956 | INVALID_INST_FORM, INVALID_INST_FORM, |
957 | // Invalid: MultiplyAdd32 with numOperands = 3 |
958 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
959 | // MultiplyAdd32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
960 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
961 | // Invalid: MultiplyAdd32 with numOperands = 5 |
962 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
963 | // Invalid: MultiplyAdd32 with numOperands = 6 |
964 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
965 | // Invalid: MultiplyAdd64 with numOperands = 0 |
966 | |
967 | // Invalid: MultiplyAdd64 with numOperands = 1 |
968 | INVALID_INST_FORM, |
969 | // Invalid: MultiplyAdd64 with numOperands = 2 |
970 | INVALID_INST_FORM, INVALID_INST_FORM, |
971 | // Invalid: MultiplyAdd64 with numOperands = 3 |
972 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
973 | // MultiplyAdd64 U:G:64, U:G:64, U:G:64, D:G:64 |
974 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
975 | // Invalid: MultiplyAdd64 with numOperands = 5 |
976 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
977 | // Invalid: MultiplyAdd64 with numOperands = 6 |
978 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
979 | // Invalid: MultiplySub32 with numOperands = 0 |
980 | |
981 | // Invalid: MultiplySub32 with numOperands = 1 |
982 | INVALID_INST_FORM, |
983 | // Invalid: MultiplySub32 with numOperands = 2 |
984 | INVALID_INST_FORM, INVALID_INST_FORM, |
985 | // Invalid: MultiplySub32 with numOperands = 3 |
986 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
987 | // MultiplySub32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
988 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
989 | // Invalid: MultiplySub32 with numOperands = 5 |
990 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
991 | // Invalid: MultiplySub32 with numOperands = 6 |
992 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
993 | // Invalid: MultiplySub64 with numOperands = 0 |
994 | |
995 | // Invalid: MultiplySub64 with numOperands = 1 |
996 | INVALID_INST_FORM, |
997 | // Invalid: MultiplySub64 with numOperands = 2 |
998 | INVALID_INST_FORM, INVALID_INST_FORM, |
999 | // Invalid: MultiplySub64 with numOperands = 3 |
1000 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1001 | // MultiplySub64 U:G:64, U:G:64, U:G:64, D:G:64 |
1002 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1003 | // Invalid: MultiplySub64 with numOperands = 5 |
1004 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1005 | // Invalid: MultiplySub64 with numOperands = 6 |
1006 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1007 | // Invalid: MultiplyNeg32 with numOperands = 0 |
1008 | |
1009 | // Invalid: MultiplyNeg32 with numOperands = 1 |
1010 | INVALID_INST_FORM, |
1011 | // Invalid: MultiplyNeg32 with numOperands = 2 |
1012 | INVALID_INST_FORM, INVALID_INST_FORM, |
1013 | // MultiplyNeg32 U:G:32, U:G:32, ZD:G:32 |
1014 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1015 | // Invalid: MultiplyNeg32 with numOperands = 4 |
1016 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1017 | // Invalid: MultiplyNeg32 with numOperands = 5 |
1018 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1019 | // Invalid: MultiplyNeg32 with numOperands = 6 |
1020 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1021 | // Invalid: MultiplyNeg64 with numOperands = 0 |
1022 | |
1023 | // Invalid: MultiplyNeg64 with numOperands = 1 |
1024 | INVALID_INST_FORM, |
1025 | // Invalid: MultiplyNeg64 with numOperands = 2 |
1026 | INVALID_INST_FORM, INVALID_INST_FORM, |
1027 | // MultiplyNeg64 U:G:64, U:G:64, ZD:G:64 |
1028 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
1029 | // Invalid: MultiplyNeg64 with numOperands = 4 |
1030 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1031 | // Invalid: MultiplyNeg64 with numOperands = 5 |
1032 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1033 | // Invalid: MultiplyNeg64 with numOperands = 6 |
1034 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1035 | // Invalid: MultiplySignExtend32 with numOperands = 0 |
1036 | |
1037 | // Invalid: MultiplySignExtend32 with numOperands = 1 |
1038 | INVALID_INST_FORM, |
1039 | // Invalid: MultiplySignExtend32 with numOperands = 2 |
1040 | INVALID_INST_FORM, INVALID_INST_FORM, |
1041 | // MultiplySignExtend32 U:G:32, U:G:32, ZD:G:64 |
1042 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
1043 | // Invalid: MultiplySignExtend32 with numOperands = 4 |
1044 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1045 | // Invalid: MultiplySignExtend32 with numOperands = 5 |
1046 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1047 | // Invalid: MultiplySignExtend32 with numOperands = 6 |
1048 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1049 | // Invalid: Div32 with numOperands = 0 |
1050 | |
1051 | // Invalid: Div32 with numOperands = 1 |
1052 | INVALID_INST_FORM, |
1053 | // Invalid: Div32 with numOperands = 2 |
1054 | INVALID_INST_FORM, INVALID_INST_FORM, |
1055 | // Div32 U:G:32, U:G:32, ZD:G:32 |
1056 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1057 | // Invalid: Div32 with numOperands = 4 |
1058 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1059 | // Invalid: Div32 with numOperands = 5 |
1060 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1061 | // Invalid: Div32 with numOperands = 6 |
1062 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1063 | // Invalid: UDiv32 with numOperands = 0 |
1064 | |
1065 | // Invalid: UDiv32 with numOperands = 1 |
1066 | INVALID_INST_FORM, |
1067 | // Invalid: UDiv32 with numOperands = 2 |
1068 | INVALID_INST_FORM, INVALID_INST_FORM, |
1069 | // UDiv32 U:G:32, U:G:32, ZD:G:32 |
1070 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1071 | // Invalid: UDiv32 with numOperands = 4 |
1072 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1073 | // Invalid: UDiv32 with numOperands = 5 |
1074 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1075 | // Invalid: UDiv32 with numOperands = 6 |
1076 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1077 | // Invalid: Div64 with numOperands = 0 |
1078 | |
1079 | // Invalid: Div64 with numOperands = 1 |
1080 | INVALID_INST_FORM, |
1081 | // Invalid: Div64 with numOperands = 2 |
1082 | INVALID_INST_FORM, INVALID_INST_FORM, |
1083 | // Div64 U:G:64, U:G:64, D:G:64 |
1084 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1085 | // Invalid: Div64 with numOperands = 4 |
1086 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1087 | // Invalid: Div64 with numOperands = 5 |
1088 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1089 | // Invalid: Div64 with numOperands = 6 |
1090 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1091 | // Invalid: UDiv64 with numOperands = 0 |
1092 | |
1093 | // Invalid: UDiv64 with numOperands = 1 |
1094 | INVALID_INST_FORM, |
1095 | // Invalid: UDiv64 with numOperands = 2 |
1096 | INVALID_INST_FORM, INVALID_INST_FORM, |
1097 | // UDiv64 U:G:64, U:G:64, D:G:64 |
1098 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1099 | // Invalid: UDiv64 with numOperands = 4 |
1100 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1101 | // Invalid: UDiv64 with numOperands = 5 |
1102 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1103 | // Invalid: UDiv64 with numOperands = 6 |
1104 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1105 | // Invalid: MulDouble with numOperands = 0 |
1106 | |
1107 | // Invalid: MulDouble with numOperands = 1 |
1108 | INVALID_INST_FORM, |
1109 | // MulDouble U:F:64, UD:F:64 |
1110 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
1111 | // MulDouble U:F:64, U:F:64, D:F:64 |
1112 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1113 | // Invalid: MulDouble with numOperands = 4 |
1114 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1115 | // Invalid: MulDouble with numOperands = 5 |
1116 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1117 | // Invalid: MulDouble with numOperands = 6 |
1118 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1119 | // Invalid: MulFloat with numOperands = 0 |
1120 | |
1121 | // Invalid: MulFloat with numOperands = 1 |
1122 | INVALID_INST_FORM, |
1123 | // MulFloat U:F:32, UD:F:32 |
1124 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
1125 | // MulFloat U:F:32, U:F:32, D:F:32 |
1126 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1127 | // Invalid: MulFloat with numOperands = 4 |
1128 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1129 | // Invalid: MulFloat with numOperands = 5 |
1130 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1131 | // Invalid: MulFloat with numOperands = 6 |
1132 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1133 | // Invalid: DivDouble with numOperands = 0 |
1134 | |
1135 | // Invalid: DivDouble with numOperands = 1 |
1136 | INVALID_INST_FORM, |
1137 | // DivDouble U:F:64, UD:F:64 |
1138 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
1139 | // DivDouble U:F:64, U:F:32, D:F:64 |
1140 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1141 | // Invalid: DivDouble with numOperands = 4 |
1142 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1143 | // Invalid: DivDouble with numOperands = 5 |
1144 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1145 | // Invalid: DivDouble with numOperands = 6 |
1146 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1147 | // Invalid: DivFloat with numOperands = 0 |
1148 | |
1149 | // Invalid: DivFloat with numOperands = 1 |
1150 | INVALID_INST_FORM, |
1151 | // DivFloat U:F:32, UD:F:32 |
1152 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
1153 | // DivFloat U:F:32, U:F:32, D:F:32 |
1154 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1155 | // Invalid: DivFloat with numOperands = 4 |
1156 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1157 | // Invalid: DivFloat with numOperands = 5 |
1158 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1159 | // Invalid: DivFloat with numOperands = 6 |
1160 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1161 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 0 |
1162 | |
1163 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 1 |
1164 | INVALID_INST_FORM, |
1165 | // X86ConvertToDoubleWord32 U:G:32, ZD:G:32 |
1166 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1167 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 3 |
1168 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1169 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 4 |
1170 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1171 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 5 |
1172 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1173 | // Invalid: X86ConvertToDoubleWord32 with numOperands = 6 |
1174 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1175 | // Invalid: X86ConvertToQuadWord64 with numOperands = 0 |
1176 | |
1177 | // Invalid: X86ConvertToQuadWord64 with numOperands = 1 |
1178 | INVALID_INST_FORM, |
1179 | // X86ConvertToQuadWord64 U:G:64, D:G:64 |
1180 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1181 | // Invalid: X86ConvertToQuadWord64 with numOperands = 3 |
1182 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1183 | // Invalid: X86ConvertToQuadWord64 with numOperands = 4 |
1184 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1185 | // Invalid: X86ConvertToQuadWord64 with numOperands = 5 |
1186 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1187 | // Invalid: X86ConvertToQuadWord64 with numOperands = 6 |
1188 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1189 | // Invalid: X86Div32 with numOperands = 0 |
1190 | |
1191 | // Invalid: X86Div32 with numOperands = 1 |
1192 | INVALID_INST_FORM, |
1193 | // Invalid: X86Div32 with numOperands = 2 |
1194 | INVALID_INST_FORM, INVALID_INST_FORM, |
1195 | // X86Div32 UZD:G:32, UZD:G:32, U:G:32 |
1196 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), |
1197 | // Invalid: X86Div32 with numOperands = 4 |
1198 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1199 | // Invalid: X86Div32 with numOperands = 5 |
1200 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1201 | // Invalid: X86Div32 with numOperands = 6 |
1202 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1203 | // Invalid: X86UDiv32 with numOperands = 0 |
1204 | |
1205 | // Invalid: X86UDiv32 with numOperands = 1 |
1206 | INVALID_INST_FORM, |
1207 | // Invalid: X86UDiv32 with numOperands = 2 |
1208 | INVALID_INST_FORM, INVALID_INST_FORM, |
1209 | // X86UDiv32 UZD:G:32, UZD:G:32, U:G:32 |
1210 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), |
1211 | // Invalid: X86UDiv32 with numOperands = 4 |
1212 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1213 | // Invalid: X86UDiv32 with numOperands = 5 |
1214 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1215 | // Invalid: X86UDiv32 with numOperands = 6 |
1216 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1217 | // Invalid: X86Div64 with numOperands = 0 |
1218 | |
1219 | // Invalid: X86Div64 with numOperands = 1 |
1220 | INVALID_INST_FORM, |
1221 | // Invalid: X86Div64 with numOperands = 2 |
1222 | INVALID_INST_FORM, INVALID_INST_FORM, |
1223 | // X86Div64 UZD:G:64, UZD:G:64, U:G:64 |
1224 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), |
1225 | // Invalid: X86Div64 with numOperands = 4 |
1226 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1227 | // Invalid: X86Div64 with numOperands = 5 |
1228 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1229 | // Invalid: X86Div64 with numOperands = 6 |
1230 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1231 | // Invalid: X86UDiv64 with numOperands = 0 |
1232 | |
1233 | // Invalid: X86UDiv64 with numOperands = 1 |
1234 | INVALID_INST_FORM, |
1235 | // Invalid: X86UDiv64 with numOperands = 2 |
1236 | INVALID_INST_FORM, INVALID_INST_FORM, |
1237 | // X86UDiv64 UZD:G:64, UZD:G:64, U:G:64 |
1238 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), |
1239 | // Invalid: X86UDiv64 with numOperands = 4 |
1240 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1241 | // Invalid: X86UDiv64 with numOperands = 5 |
1242 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1243 | // Invalid: X86UDiv64 with numOperands = 6 |
1244 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1245 | // Invalid: Lea32 with numOperands = 0 |
1246 | |
1247 | // Invalid: Lea32 with numOperands = 1 |
1248 | INVALID_INST_FORM, |
1249 | // Lea32 UA:G:32, D:G:32 |
1250 | ENCODE_INST_FORM(Arg::UseAddr, GP, Width32), ENCODE_INST_FORM(Arg::Def, GP, Width32), |
1251 | // Invalid: Lea32 with numOperands = 3 |
1252 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1253 | // Invalid: Lea32 with numOperands = 4 |
1254 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1255 | // Invalid: Lea32 with numOperands = 5 |
1256 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1257 | // Invalid: Lea32 with numOperands = 6 |
1258 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1259 | // Invalid: Lea64 with numOperands = 0 |
1260 | |
1261 | // Invalid: Lea64 with numOperands = 1 |
1262 | INVALID_INST_FORM, |
1263 | // Lea64 UA:G:64, D:G:64 |
1264 | ENCODE_INST_FORM(Arg::UseAddr, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1265 | // Invalid: Lea64 with numOperands = 3 |
1266 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1267 | // Invalid: Lea64 with numOperands = 4 |
1268 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1269 | // Invalid: Lea64 with numOperands = 5 |
1270 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1271 | // Invalid: Lea64 with numOperands = 6 |
1272 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1273 | // Invalid: And32 with numOperands = 0 |
1274 | |
1275 | // Invalid: And32 with numOperands = 1 |
1276 | INVALID_INST_FORM, |
1277 | // And32 U:G:32, UZD:G:32 |
1278 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1279 | // And32 U:G:32, U:G:32, ZD:G:32 |
1280 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1281 | // Invalid: And32 with numOperands = 4 |
1282 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1283 | // Invalid: And32 with numOperands = 5 |
1284 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1285 | // Invalid: And32 with numOperands = 6 |
1286 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1287 | // Invalid: And64 with numOperands = 0 |
1288 | |
1289 | // Invalid: And64 with numOperands = 1 |
1290 | INVALID_INST_FORM, |
1291 | // And64 U:G:64, UD:G:64 |
1292 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1293 | // And64 U:G:64, U:G:64, D:G:64 |
1294 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1295 | // Invalid: And64 with numOperands = 4 |
1296 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1297 | // Invalid: And64 with numOperands = 5 |
1298 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1299 | // Invalid: And64 with numOperands = 6 |
1300 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1301 | // Invalid: AndDouble with numOperands = 0 |
1302 | |
1303 | // Invalid: AndDouble with numOperands = 1 |
1304 | INVALID_INST_FORM, |
1305 | // AndDouble U:F:64, UD:F:64 |
1306 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
1307 | // AndDouble U:F:64, U:F:64, D:F:64 |
1308 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1309 | // Invalid: AndDouble with numOperands = 4 |
1310 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1311 | // Invalid: AndDouble with numOperands = 5 |
1312 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1313 | // Invalid: AndDouble with numOperands = 6 |
1314 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1315 | // Invalid: AndFloat with numOperands = 0 |
1316 | |
1317 | // Invalid: AndFloat with numOperands = 1 |
1318 | INVALID_INST_FORM, |
1319 | // AndFloat U:F:32, UD:F:32 |
1320 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
1321 | // AndFloat U:F:32, U:F:32, D:F:32 |
1322 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1323 | // Invalid: AndFloat with numOperands = 4 |
1324 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1325 | // Invalid: AndFloat with numOperands = 5 |
1326 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1327 | // Invalid: AndFloat with numOperands = 6 |
1328 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1329 | // Invalid: OrDouble with numOperands = 0 |
1330 | |
1331 | // Invalid: OrDouble with numOperands = 1 |
1332 | INVALID_INST_FORM, |
1333 | // OrDouble U:F:64, UD:F:64 |
1334 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
1335 | // OrDouble U:F:64, U:F:64, D:F:64 |
1336 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1337 | // Invalid: OrDouble with numOperands = 4 |
1338 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1339 | // Invalid: OrDouble with numOperands = 5 |
1340 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1341 | // Invalid: OrDouble with numOperands = 6 |
1342 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1343 | // Invalid: OrFloat with numOperands = 0 |
1344 | |
1345 | // Invalid: OrFloat with numOperands = 1 |
1346 | INVALID_INST_FORM, |
1347 | // OrFloat U:F:32, UD:F:32 |
1348 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
1349 | // OrFloat U:F:32, U:F:32, D:F:32 |
1350 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1351 | // Invalid: OrFloat with numOperands = 4 |
1352 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1353 | // Invalid: OrFloat with numOperands = 5 |
1354 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1355 | // Invalid: OrFloat with numOperands = 6 |
1356 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1357 | // Invalid: XorDouble with numOperands = 0 |
1358 | |
1359 | // Invalid: XorDouble with numOperands = 1 |
1360 | INVALID_INST_FORM, |
1361 | // XorDouble U:F:64, UD:F:64 |
1362 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::UseDef, FP, Width64), |
1363 | // XorDouble U:F:64, U:F:64, D:F:64 |
1364 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1365 | // Invalid: XorDouble with numOperands = 4 |
1366 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1367 | // Invalid: XorDouble with numOperands = 5 |
1368 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1369 | // Invalid: XorDouble with numOperands = 6 |
1370 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1371 | // Invalid: XorFloat with numOperands = 0 |
1372 | |
1373 | // Invalid: XorFloat with numOperands = 1 |
1374 | INVALID_INST_FORM, |
1375 | // XorFloat U:F:32, UD:F:32 |
1376 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::UseDef, FP, Width32), |
1377 | // XorFloat U:F:32, U:F:32, D:F:32 |
1378 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1379 | // Invalid: XorFloat with numOperands = 4 |
1380 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1381 | // Invalid: XorFloat with numOperands = 5 |
1382 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1383 | // Invalid: XorFloat with numOperands = 6 |
1384 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1385 | // Invalid: Lshift32 with numOperands = 0 |
1386 | |
1387 | // Invalid: Lshift32 with numOperands = 1 |
1388 | INVALID_INST_FORM, |
1389 | // Lshift32 U:G:32, UZD:G:32 |
1390 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1391 | // Lshift32 U:G:32, U:G:32, ZD:G:32 |
1392 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1393 | // Invalid: Lshift32 with numOperands = 4 |
1394 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1395 | // Invalid: Lshift32 with numOperands = 5 |
1396 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1397 | // Invalid: Lshift32 with numOperands = 6 |
1398 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1399 | // Invalid: Lshift64 with numOperands = 0 |
1400 | |
1401 | // Invalid: Lshift64 with numOperands = 1 |
1402 | INVALID_INST_FORM, |
1403 | // Lshift64 U:G:64, UD:G:64 |
1404 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1405 | // Lshift64 U:G:64, U:G:64, D:G:64 |
1406 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1407 | // Invalid: Lshift64 with numOperands = 4 |
1408 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1409 | // Invalid: Lshift64 with numOperands = 5 |
1410 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1411 | // Invalid: Lshift64 with numOperands = 6 |
1412 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1413 | // Invalid: Rshift32 with numOperands = 0 |
1414 | |
1415 | // Invalid: Rshift32 with numOperands = 1 |
1416 | INVALID_INST_FORM, |
1417 | // Rshift32 U:G:32, UZD:G:32 |
1418 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1419 | // Rshift32 U:G:32, U:G:32, ZD:G:32 |
1420 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1421 | // Invalid: Rshift32 with numOperands = 4 |
1422 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1423 | // Invalid: Rshift32 with numOperands = 5 |
1424 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1425 | // Invalid: Rshift32 with numOperands = 6 |
1426 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1427 | // Invalid: Rshift64 with numOperands = 0 |
1428 | |
1429 | // Invalid: Rshift64 with numOperands = 1 |
1430 | INVALID_INST_FORM, |
1431 | // Rshift64 U:G:64, UD:G:64 |
1432 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1433 | // Rshift64 U:G:64, U:G:64, D:G:64 |
1434 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1435 | // Invalid: Rshift64 with numOperands = 4 |
1436 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1437 | // Invalid: Rshift64 with numOperands = 5 |
1438 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1439 | // Invalid: Rshift64 with numOperands = 6 |
1440 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1441 | // Invalid: Urshift32 with numOperands = 0 |
1442 | |
1443 | // Invalid: Urshift32 with numOperands = 1 |
1444 | INVALID_INST_FORM, |
1445 | // Urshift32 U:G:32, UZD:G:32 |
1446 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1447 | // Urshift32 U:G:32, U:G:32, ZD:G:32 |
1448 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1449 | // Invalid: Urshift32 with numOperands = 4 |
1450 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1451 | // Invalid: Urshift32 with numOperands = 5 |
1452 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1453 | // Invalid: Urshift32 with numOperands = 6 |
1454 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1455 | // Invalid: Urshift64 with numOperands = 0 |
1456 | |
1457 | // Invalid: Urshift64 with numOperands = 1 |
1458 | INVALID_INST_FORM, |
1459 | // Urshift64 U:G:64, UD:G:64 |
1460 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1461 | // Urshift64 U:G:64, U:G:64, D:G:64 |
1462 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1463 | // Invalid: Urshift64 with numOperands = 4 |
1464 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1465 | // Invalid: Urshift64 with numOperands = 5 |
1466 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1467 | // Invalid: Urshift64 with numOperands = 6 |
1468 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1469 | // Invalid: RotateRight32 with numOperands = 0 |
1470 | |
1471 | // Invalid: RotateRight32 with numOperands = 1 |
1472 | INVALID_INST_FORM, |
1473 | // RotateRight32 U:G:32, UZD:G:32 |
1474 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1475 | // RotateRight32 U:G:32, U:G:32, ZD:G:32 |
1476 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1477 | // Invalid: RotateRight32 with numOperands = 4 |
1478 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1479 | // Invalid: RotateRight32 with numOperands = 5 |
1480 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1481 | // Invalid: RotateRight32 with numOperands = 6 |
1482 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1483 | // Invalid: RotateRight64 with numOperands = 0 |
1484 | |
1485 | // Invalid: RotateRight64 with numOperands = 1 |
1486 | INVALID_INST_FORM, |
1487 | // RotateRight64 U:G:64, UD:G:64 |
1488 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1489 | // RotateRight64 U:G:64, U:G:64, D:G:64 |
1490 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1491 | // Invalid: RotateRight64 with numOperands = 4 |
1492 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1493 | // Invalid: RotateRight64 with numOperands = 5 |
1494 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1495 | // Invalid: RotateRight64 with numOperands = 6 |
1496 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1497 | // Invalid: RotateLeft32 with numOperands = 0 |
1498 | |
1499 | // Invalid: RotateLeft32 with numOperands = 1 |
1500 | INVALID_INST_FORM, |
1501 | // RotateLeft32 U:G:32, UZD:G:32 |
1502 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1503 | // Invalid: RotateLeft32 with numOperands = 3 |
1504 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1505 | // Invalid: RotateLeft32 with numOperands = 4 |
1506 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1507 | // Invalid: RotateLeft32 with numOperands = 5 |
1508 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1509 | // Invalid: RotateLeft32 with numOperands = 6 |
1510 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1511 | // Invalid: RotateLeft64 with numOperands = 0 |
1512 | |
1513 | // Invalid: RotateLeft64 with numOperands = 1 |
1514 | INVALID_INST_FORM, |
1515 | // RotateLeft64 U:G:64, UD:G:64 |
1516 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1517 | // Invalid: RotateLeft64 with numOperands = 3 |
1518 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1519 | // Invalid: RotateLeft64 with numOperands = 4 |
1520 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1521 | // Invalid: RotateLeft64 with numOperands = 5 |
1522 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1523 | // Invalid: RotateLeft64 with numOperands = 6 |
1524 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1525 | // Invalid: Or32 with numOperands = 0 |
1526 | |
1527 | // Invalid: Or32 with numOperands = 1 |
1528 | INVALID_INST_FORM, |
1529 | // Or32 U:G:32, UZD:G:32 |
1530 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1531 | // Or32 U:G:32, U:G:32, ZD:G:32 |
1532 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1533 | // Invalid: Or32 with numOperands = 4 |
1534 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1535 | // Invalid: Or32 with numOperands = 5 |
1536 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1537 | // Invalid: Or32 with numOperands = 6 |
1538 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1539 | // Invalid: Or64 with numOperands = 0 |
1540 | |
1541 | // Invalid: Or64 with numOperands = 1 |
1542 | INVALID_INST_FORM, |
1543 | // Or64 U:G:64, UD:G:64 |
1544 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1545 | // Or64 U:G:64, U:G:64, D:G:64 |
1546 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1547 | // Invalid: Or64 with numOperands = 4 |
1548 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1549 | // Invalid: Or64 with numOperands = 5 |
1550 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1551 | // Invalid: Or64 with numOperands = 6 |
1552 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1553 | // Invalid: Xor32 with numOperands = 0 |
1554 | |
1555 | // Invalid: Xor32 with numOperands = 1 |
1556 | INVALID_INST_FORM, |
1557 | // Xor32 U:G:32, UZD:G:32 |
1558 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1559 | // Xor32 U:G:32, U:G:32, ZD:G:32 |
1560 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1561 | // Invalid: Xor32 with numOperands = 4 |
1562 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1563 | // Invalid: Xor32 with numOperands = 5 |
1564 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1565 | // Invalid: Xor32 with numOperands = 6 |
1566 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1567 | // Invalid: Xor64 with numOperands = 0 |
1568 | |
1569 | // Invalid: Xor64 with numOperands = 1 |
1570 | INVALID_INST_FORM, |
1571 | // Xor64 U:G:64, UD:G:64 |
1572 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1573 | // Xor64 U:G:64, U:G:64, D:G:64 |
1574 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1575 | // Invalid: Xor64 with numOperands = 4 |
1576 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1577 | // Invalid: Xor64 with numOperands = 5 |
1578 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1579 | // Invalid: Xor64 with numOperands = 6 |
1580 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1581 | // Invalid: Not32 with numOperands = 0 |
1582 | |
1583 | // Not32 UZD:G:32 |
1584 | ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
1585 | // Not32 U:G:32, ZD:G:32 |
1586 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1587 | // Invalid: Not32 with numOperands = 3 |
1588 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1589 | // Invalid: Not32 with numOperands = 4 |
1590 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1591 | // Invalid: Not32 with numOperands = 5 |
1592 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1593 | // Invalid: Not32 with numOperands = 6 |
1594 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1595 | // Invalid: Not64 with numOperands = 0 |
1596 | |
1597 | // Not64 UD:G:64 |
1598 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1599 | // Not64 U:G:64, D:G:64 |
1600 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1601 | // Invalid: Not64 with numOperands = 3 |
1602 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1603 | // Invalid: Not64 with numOperands = 4 |
1604 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1605 | // Invalid: Not64 with numOperands = 5 |
1606 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1607 | // Invalid: Not64 with numOperands = 6 |
1608 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1609 | // Invalid: AbsDouble with numOperands = 0 |
1610 | |
1611 | // Invalid: AbsDouble with numOperands = 1 |
1612 | INVALID_INST_FORM, |
1613 | // AbsDouble U:F:64, D:F:64 |
1614 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1615 | // Invalid: AbsDouble with numOperands = 3 |
1616 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1617 | // Invalid: AbsDouble with numOperands = 4 |
1618 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1619 | // Invalid: AbsDouble with numOperands = 5 |
1620 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1621 | // Invalid: AbsDouble with numOperands = 6 |
1622 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1623 | // Invalid: AbsFloat with numOperands = 0 |
1624 | |
1625 | // Invalid: AbsFloat with numOperands = 1 |
1626 | INVALID_INST_FORM, |
1627 | // AbsFloat U:F:32, D:F:32 |
1628 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1629 | // Invalid: AbsFloat with numOperands = 3 |
1630 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1631 | // Invalid: AbsFloat with numOperands = 4 |
1632 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1633 | // Invalid: AbsFloat with numOperands = 5 |
1634 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1635 | // Invalid: AbsFloat with numOperands = 6 |
1636 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1637 | // Invalid: CeilDouble with numOperands = 0 |
1638 | |
1639 | // Invalid: CeilDouble with numOperands = 1 |
1640 | INVALID_INST_FORM, |
1641 | // CeilDouble U:F:64, D:F:64 |
1642 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1643 | // Invalid: CeilDouble with numOperands = 3 |
1644 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1645 | // Invalid: CeilDouble with numOperands = 4 |
1646 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1647 | // Invalid: CeilDouble with numOperands = 5 |
1648 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1649 | // Invalid: CeilDouble with numOperands = 6 |
1650 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1651 | // Invalid: CeilFloat with numOperands = 0 |
1652 | |
1653 | // Invalid: CeilFloat with numOperands = 1 |
1654 | INVALID_INST_FORM, |
1655 | // CeilFloat U:F:32, D:F:32 |
1656 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1657 | // Invalid: CeilFloat with numOperands = 3 |
1658 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1659 | // Invalid: CeilFloat with numOperands = 4 |
1660 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1661 | // Invalid: CeilFloat with numOperands = 5 |
1662 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1663 | // Invalid: CeilFloat with numOperands = 6 |
1664 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1665 | // Invalid: FloorDouble with numOperands = 0 |
1666 | |
1667 | // Invalid: FloorDouble with numOperands = 1 |
1668 | INVALID_INST_FORM, |
1669 | // FloorDouble U:F:64, D:F:64 |
1670 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1671 | // Invalid: FloorDouble with numOperands = 3 |
1672 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1673 | // Invalid: FloorDouble with numOperands = 4 |
1674 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1675 | // Invalid: FloorDouble with numOperands = 5 |
1676 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1677 | // Invalid: FloorDouble with numOperands = 6 |
1678 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1679 | // Invalid: FloorFloat with numOperands = 0 |
1680 | |
1681 | // Invalid: FloorFloat with numOperands = 1 |
1682 | INVALID_INST_FORM, |
1683 | // FloorFloat U:F:32, D:F:32 |
1684 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1685 | // Invalid: FloorFloat with numOperands = 3 |
1686 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1687 | // Invalid: FloorFloat with numOperands = 4 |
1688 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1689 | // Invalid: FloorFloat with numOperands = 5 |
1690 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1691 | // Invalid: FloorFloat with numOperands = 6 |
1692 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1693 | // Invalid: SqrtDouble with numOperands = 0 |
1694 | |
1695 | // Invalid: SqrtDouble with numOperands = 1 |
1696 | INVALID_INST_FORM, |
1697 | // SqrtDouble U:F:64, D:F:64 |
1698 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1699 | // Invalid: SqrtDouble with numOperands = 3 |
1700 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1701 | // Invalid: SqrtDouble with numOperands = 4 |
1702 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1703 | // Invalid: SqrtDouble with numOperands = 5 |
1704 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1705 | // Invalid: SqrtDouble with numOperands = 6 |
1706 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1707 | // Invalid: SqrtFloat with numOperands = 0 |
1708 | |
1709 | // Invalid: SqrtFloat with numOperands = 1 |
1710 | INVALID_INST_FORM, |
1711 | // SqrtFloat U:F:32, D:F:32 |
1712 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1713 | // Invalid: SqrtFloat with numOperands = 3 |
1714 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1715 | // Invalid: SqrtFloat with numOperands = 4 |
1716 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1717 | // Invalid: SqrtFloat with numOperands = 5 |
1718 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1719 | // Invalid: SqrtFloat with numOperands = 6 |
1720 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1721 | // Invalid: ConvertInt32ToDouble with numOperands = 0 |
1722 | |
1723 | // Invalid: ConvertInt32ToDouble with numOperands = 1 |
1724 | INVALID_INST_FORM, |
1725 | // ConvertInt32ToDouble U:G:32, D:F:64 |
1726 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1727 | // Invalid: ConvertInt32ToDouble with numOperands = 3 |
1728 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1729 | // Invalid: ConvertInt32ToDouble with numOperands = 4 |
1730 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1731 | // Invalid: ConvertInt32ToDouble with numOperands = 5 |
1732 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1733 | // Invalid: ConvertInt32ToDouble with numOperands = 6 |
1734 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1735 | // Invalid: ConvertInt64ToDouble with numOperands = 0 |
1736 | |
1737 | // Invalid: ConvertInt64ToDouble with numOperands = 1 |
1738 | INVALID_INST_FORM, |
1739 | // ConvertInt64ToDouble U:G:64, D:F:64 |
1740 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1741 | // Invalid: ConvertInt64ToDouble with numOperands = 3 |
1742 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1743 | // Invalid: ConvertInt64ToDouble with numOperands = 4 |
1744 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1745 | // Invalid: ConvertInt64ToDouble with numOperands = 5 |
1746 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1747 | // Invalid: ConvertInt64ToDouble with numOperands = 6 |
1748 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1749 | // Invalid: ConvertInt32ToFloat with numOperands = 0 |
1750 | |
1751 | // Invalid: ConvertInt32ToFloat with numOperands = 1 |
1752 | INVALID_INST_FORM, |
1753 | // ConvertInt32ToFloat U:G:32, D:F:32 |
1754 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1755 | // Invalid: ConvertInt32ToFloat with numOperands = 3 |
1756 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1757 | // Invalid: ConvertInt32ToFloat with numOperands = 4 |
1758 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1759 | // Invalid: ConvertInt32ToFloat with numOperands = 5 |
1760 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1761 | // Invalid: ConvertInt32ToFloat with numOperands = 6 |
1762 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1763 | // Invalid: ConvertInt64ToFloat with numOperands = 0 |
1764 | |
1765 | // Invalid: ConvertInt64ToFloat with numOperands = 1 |
1766 | INVALID_INST_FORM, |
1767 | // ConvertInt64ToFloat U:G:64, D:F:32 |
1768 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1769 | // Invalid: ConvertInt64ToFloat with numOperands = 3 |
1770 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1771 | // Invalid: ConvertInt64ToFloat with numOperands = 4 |
1772 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1773 | // Invalid: ConvertInt64ToFloat with numOperands = 5 |
1774 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1775 | // Invalid: ConvertInt64ToFloat with numOperands = 6 |
1776 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1777 | // Invalid: CountLeadingZeros32 with numOperands = 0 |
1778 | |
1779 | // Invalid: CountLeadingZeros32 with numOperands = 1 |
1780 | INVALID_INST_FORM, |
1781 | // CountLeadingZeros32 U:G:32, ZD:G:32 |
1782 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1783 | // Invalid: CountLeadingZeros32 with numOperands = 3 |
1784 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1785 | // Invalid: CountLeadingZeros32 with numOperands = 4 |
1786 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1787 | // Invalid: CountLeadingZeros32 with numOperands = 5 |
1788 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1789 | // Invalid: CountLeadingZeros32 with numOperands = 6 |
1790 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1791 | // Invalid: CountLeadingZeros64 with numOperands = 0 |
1792 | |
1793 | // Invalid: CountLeadingZeros64 with numOperands = 1 |
1794 | INVALID_INST_FORM, |
1795 | // CountLeadingZeros64 U:G:64, D:G:64 |
1796 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1797 | // Invalid: CountLeadingZeros64 with numOperands = 3 |
1798 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1799 | // Invalid: CountLeadingZeros64 with numOperands = 4 |
1800 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1801 | // Invalid: CountLeadingZeros64 with numOperands = 5 |
1802 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1803 | // Invalid: CountLeadingZeros64 with numOperands = 6 |
1804 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1805 | // Invalid: ConvertDoubleToFloat with numOperands = 0 |
1806 | |
1807 | // Invalid: ConvertDoubleToFloat with numOperands = 1 |
1808 | INVALID_INST_FORM, |
1809 | // ConvertDoubleToFloat U:F:64, D:F:32 |
1810 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1811 | // Invalid: ConvertDoubleToFloat with numOperands = 3 |
1812 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1813 | // Invalid: ConvertDoubleToFloat with numOperands = 4 |
1814 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1815 | // Invalid: ConvertDoubleToFloat with numOperands = 5 |
1816 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1817 | // Invalid: ConvertDoubleToFloat with numOperands = 6 |
1818 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1819 | // Invalid: ConvertFloatToDouble with numOperands = 0 |
1820 | |
1821 | // Invalid: ConvertFloatToDouble with numOperands = 1 |
1822 | INVALID_INST_FORM, |
1823 | // ConvertFloatToDouble U:F:32, D:F:64 |
1824 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
1825 | // Invalid: ConvertFloatToDouble with numOperands = 3 |
1826 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1827 | // Invalid: ConvertFloatToDouble with numOperands = 4 |
1828 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1829 | // Invalid: ConvertFloatToDouble with numOperands = 5 |
1830 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1831 | // Invalid: ConvertFloatToDouble with numOperands = 6 |
1832 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1833 | // Invalid: Move with numOperands = 0 |
1834 | |
1835 | // Invalid: Move with numOperands = 1 |
1836 | INVALID_INST_FORM, |
1837 | // Move U:G:Ptr, D:G:Ptr |
1838 | ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
1839 | // Move U:G:Ptr, D:G:Ptr, S:G:Ptr |
1840 | ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Scratch, GP, POINTER_WIDTH), |
1841 | // Invalid: Move with numOperands = 4 |
1842 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1843 | // Invalid: Move with numOperands = 5 |
1844 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1845 | // Invalid: Move with numOperands = 6 |
1846 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1847 | // Invalid: Swap32 with numOperands = 0 |
1848 | |
1849 | // Invalid: Swap32 with numOperands = 1 |
1850 | INVALID_INST_FORM, |
1851 | // Swap32 UD:G:32, UD:G:32 |
1852 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
1853 | // Invalid: Swap32 with numOperands = 3 |
1854 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1855 | // Invalid: Swap32 with numOperands = 4 |
1856 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1857 | // Invalid: Swap32 with numOperands = 5 |
1858 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1859 | // Invalid: Swap32 with numOperands = 6 |
1860 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1861 | // Invalid: Swap64 with numOperands = 0 |
1862 | |
1863 | // Invalid: Swap64 with numOperands = 1 |
1864 | INVALID_INST_FORM, |
1865 | // Swap64 UD:G:64, UD:G:64 |
1866 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
1867 | // Invalid: Swap64 with numOperands = 3 |
1868 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1869 | // Invalid: Swap64 with numOperands = 4 |
1870 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1871 | // Invalid: Swap64 with numOperands = 5 |
1872 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1873 | // Invalid: Swap64 with numOperands = 6 |
1874 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1875 | // Invalid: Move32 with numOperands = 0 |
1876 | |
1877 | // Invalid: Move32 with numOperands = 1 |
1878 | INVALID_INST_FORM, |
1879 | // Move32 U:G:32, ZD:G:32 |
1880 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1881 | // Move32 U:G:32, ZD:G:32, S:G:32 |
1882 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), ENCODE_INST_FORM(Arg::Scratch, GP, Width32), |
1883 | // Invalid: Move32 with numOperands = 4 |
1884 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1885 | // Invalid: Move32 with numOperands = 5 |
1886 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1887 | // Invalid: Move32 with numOperands = 6 |
1888 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1889 | // Invalid: StoreZero32 with numOperands = 0 |
1890 | |
1891 | // StoreZero32 D:G:32 |
1892 | ENCODE_INST_FORM(Arg::Def, GP, Width32), |
1893 | // Invalid: StoreZero32 with numOperands = 2 |
1894 | INVALID_INST_FORM, INVALID_INST_FORM, |
1895 | // Invalid: StoreZero32 with numOperands = 3 |
1896 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1897 | // Invalid: StoreZero32 with numOperands = 4 |
1898 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1899 | // Invalid: StoreZero32 with numOperands = 5 |
1900 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1901 | // Invalid: StoreZero32 with numOperands = 6 |
1902 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1903 | // Invalid: StoreZero64 with numOperands = 0 |
1904 | |
1905 | // StoreZero64 D:G:64 |
1906 | ENCODE_INST_FORM(Arg::Def, GP, Width64), |
1907 | // Invalid: StoreZero64 with numOperands = 2 |
1908 | INVALID_INST_FORM, INVALID_INST_FORM, |
1909 | // Invalid: StoreZero64 with numOperands = 3 |
1910 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1911 | // Invalid: StoreZero64 with numOperands = 4 |
1912 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1913 | // Invalid: StoreZero64 with numOperands = 5 |
1914 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1915 | // Invalid: StoreZero64 with numOperands = 6 |
1916 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1917 | // Invalid: SignExtend32ToPtr with numOperands = 0 |
1918 | |
1919 | // Invalid: SignExtend32ToPtr with numOperands = 1 |
1920 | INVALID_INST_FORM, |
1921 | // SignExtend32ToPtr U:G:32, D:G:Ptr |
1922 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
1923 | // Invalid: SignExtend32ToPtr with numOperands = 3 |
1924 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1925 | // Invalid: SignExtend32ToPtr with numOperands = 4 |
1926 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1927 | // Invalid: SignExtend32ToPtr with numOperands = 5 |
1928 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1929 | // Invalid: SignExtend32ToPtr with numOperands = 6 |
1930 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1931 | // Invalid: ZeroExtend8To32 with numOperands = 0 |
1932 | |
1933 | // Invalid: ZeroExtend8To32 with numOperands = 1 |
1934 | INVALID_INST_FORM, |
1935 | // ZeroExtend8To32 U:G:8, ZD:G:32 |
1936 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1937 | // Invalid: ZeroExtend8To32 with numOperands = 3 |
1938 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1939 | // Invalid: ZeroExtend8To32 with numOperands = 4 |
1940 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1941 | // Invalid: ZeroExtend8To32 with numOperands = 5 |
1942 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1943 | // Invalid: ZeroExtend8To32 with numOperands = 6 |
1944 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1945 | // Invalid: SignExtend8To32 with numOperands = 0 |
1946 | |
1947 | // Invalid: SignExtend8To32 with numOperands = 1 |
1948 | INVALID_INST_FORM, |
1949 | // SignExtend8To32 U:G:8, ZD:G:32 |
1950 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1951 | // Invalid: SignExtend8To32 with numOperands = 3 |
1952 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1953 | // Invalid: SignExtend8To32 with numOperands = 4 |
1954 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1955 | // Invalid: SignExtend8To32 with numOperands = 5 |
1956 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1957 | // Invalid: SignExtend8To32 with numOperands = 6 |
1958 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1959 | // Invalid: ZeroExtend16To32 with numOperands = 0 |
1960 | |
1961 | // Invalid: ZeroExtend16To32 with numOperands = 1 |
1962 | INVALID_INST_FORM, |
1963 | // ZeroExtend16To32 U:G:16, ZD:G:32 |
1964 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1965 | // Invalid: ZeroExtend16To32 with numOperands = 3 |
1966 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1967 | // Invalid: ZeroExtend16To32 with numOperands = 4 |
1968 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1969 | // Invalid: ZeroExtend16To32 with numOperands = 5 |
1970 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1971 | // Invalid: ZeroExtend16To32 with numOperands = 6 |
1972 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1973 | // Invalid: SignExtend16To32 with numOperands = 0 |
1974 | |
1975 | // Invalid: SignExtend16To32 with numOperands = 1 |
1976 | INVALID_INST_FORM, |
1977 | // SignExtend16To32 U:G:16, ZD:G:32 |
1978 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
1979 | // Invalid: SignExtend16To32 with numOperands = 3 |
1980 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1981 | // Invalid: SignExtend16To32 with numOperands = 4 |
1982 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1983 | // Invalid: SignExtend16To32 with numOperands = 5 |
1984 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1985 | // Invalid: SignExtend16To32 with numOperands = 6 |
1986 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1987 | // Invalid: MoveFloat with numOperands = 0 |
1988 | |
1989 | // Invalid: MoveFloat with numOperands = 1 |
1990 | INVALID_INST_FORM, |
1991 | // MoveFloat U:F:32, D:F:32 |
1992 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
1993 | // MoveFloat U:F:32, D:F:32, S:F:32 |
1994 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), ENCODE_INST_FORM(Arg::Scratch, FP, Width32), |
1995 | // Invalid: MoveFloat with numOperands = 4 |
1996 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1997 | // Invalid: MoveFloat with numOperands = 5 |
1998 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
1999 | // Invalid: MoveFloat with numOperands = 6 |
2000 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2001 | // Invalid: MoveDouble with numOperands = 0 |
2002 | |
2003 | // Invalid: MoveDouble with numOperands = 1 |
2004 | INVALID_INST_FORM, |
2005 | // MoveDouble U:F:64, D:F:64 |
2006 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
2007 | // MoveDouble U:F:64, D:F:64, S:F:64 |
2008 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), ENCODE_INST_FORM(Arg::Scratch, FP, Width64), |
2009 | // Invalid: MoveDouble with numOperands = 4 |
2010 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2011 | // Invalid: MoveDouble with numOperands = 5 |
2012 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2013 | // Invalid: MoveDouble with numOperands = 6 |
2014 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2015 | // Invalid: MoveZeroToDouble with numOperands = 0 |
2016 | |
2017 | // MoveZeroToDouble D:F:64 |
2018 | ENCODE_INST_FORM(Arg::Def, FP, Width64), |
2019 | // Invalid: MoveZeroToDouble with numOperands = 2 |
2020 | INVALID_INST_FORM, INVALID_INST_FORM, |
2021 | // Invalid: MoveZeroToDouble with numOperands = 3 |
2022 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2023 | // Invalid: MoveZeroToDouble with numOperands = 4 |
2024 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2025 | // Invalid: MoveZeroToDouble with numOperands = 5 |
2026 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2027 | // Invalid: MoveZeroToDouble with numOperands = 6 |
2028 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2029 | // Invalid: Move64ToDouble with numOperands = 0 |
2030 | |
2031 | // Invalid: Move64ToDouble with numOperands = 1 |
2032 | INVALID_INST_FORM, |
2033 | // Move64ToDouble U:G:64, D:F:64 |
2034 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
2035 | // Invalid: Move64ToDouble with numOperands = 3 |
2036 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2037 | // Invalid: Move64ToDouble with numOperands = 4 |
2038 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2039 | // Invalid: Move64ToDouble with numOperands = 5 |
2040 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2041 | // Invalid: Move64ToDouble with numOperands = 6 |
2042 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2043 | // Invalid: Move32ToFloat with numOperands = 0 |
2044 | |
2045 | // Invalid: Move32ToFloat with numOperands = 1 |
2046 | INVALID_INST_FORM, |
2047 | // Move32ToFloat U:G:32, D:F:32 |
2048 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, FP, Width32), |
2049 | // Invalid: Move32ToFloat with numOperands = 3 |
2050 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2051 | // Invalid: Move32ToFloat with numOperands = 4 |
2052 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2053 | // Invalid: Move32ToFloat with numOperands = 5 |
2054 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2055 | // Invalid: Move32ToFloat with numOperands = 6 |
2056 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2057 | // Invalid: MoveDoubleTo64 with numOperands = 0 |
2058 | |
2059 | // Invalid: MoveDoubleTo64 with numOperands = 1 |
2060 | INVALID_INST_FORM, |
2061 | // MoveDoubleTo64 U:F:64, D:G:64 |
2062 | ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), |
2063 | // Invalid: MoveDoubleTo64 with numOperands = 3 |
2064 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2065 | // Invalid: MoveDoubleTo64 with numOperands = 4 |
2066 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2067 | // Invalid: MoveDoubleTo64 with numOperands = 5 |
2068 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2069 | // Invalid: MoveDoubleTo64 with numOperands = 6 |
2070 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2071 | // Invalid: MoveFloatTo32 with numOperands = 0 |
2072 | |
2073 | // Invalid: MoveFloatTo32 with numOperands = 1 |
2074 | INVALID_INST_FORM, |
2075 | // MoveFloatTo32 U:F:32, D:G:32 |
2076 | ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Def, GP, Width32), |
2077 | // Invalid: MoveFloatTo32 with numOperands = 3 |
2078 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2079 | // Invalid: MoveFloatTo32 with numOperands = 4 |
2080 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2081 | // Invalid: MoveFloatTo32 with numOperands = 5 |
2082 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2083 | // Invalid: MoveFloatTo32 with numOperands = 6 |
2084 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2085 | // Invalid: Load8 with numOperands = 0 |
2086 | |
2087 | // Invalid: Load8 with numOperands = 1 |
2088 | INVALID_INST_FORM, |
2089 | // Load8 U:G:8, ZD:G:32 |
2090 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2091 | // Invalid: Load8 with numOperands = 3 |
2092 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2093 | // Invalid: Load8 with numOperands = 4 |
2094 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2095 | // Invalid: Load8 with numOperands = 5 |
2096 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2097 | // Invalid: Load8 with numOperands = 6 |
2098 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2099 | // Invalid: LoadAcq8 with numOperands = 0 |
2100 | |
2101 | // Invalid: LoadAcq8 with numOperands = 1 |
2102 | INVALID_INST_FORM, |
2103 | // LoadAcq8 U:G:8, ZD:G:32 |
2104 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2105 | // Invalid: LoadAcq8 with numOperands = 3 |
2106 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2107 | // Invalid: LoadAcq8 with numOperands = 4 |
2108 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2109 | // Invalid: LoadAcq8 with numOperands = 5 |
2110 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2111 | // Invalid: LoadAcq8 with numOperands = 6 |
2112 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2113 | // Invalid: Store8 with numOperands = 0 |
2114 | |
2115 | // Invalid: Store8 with numOperands = 1 |
2116 | INVALID_INST_FORM, |
2117 | // Store8 U:G:8, D:G:8 |
2118 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Def, GP, Width8), |
2119 | // Invalid: Store8 with numOperands = 3 |
2120 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2121 | // Invalid: Store8 with numOperands = 4 |
2122 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2123 | // Invalid: Store8 with numOperands = 5 |
2124 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2125 | // Invalid: Store8 with numOperands = 6 |
2126 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2127 | // Invalid: StoreRel8 with numOperands = 0 |
2128 | |
2129 | // Invalid: StoreRel8 with numOperands = 1 |
2130 | INVALID_INST_FORM, |
2131 | // StoreRel8 U:G:8, D:G:8 |
2132 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Def, GP, Width8), |
2133 | // Invalid: StoreRel8 with numOperands = 3 |
2134 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2135 | // Invalid: StoreRel8 with numOperands = 4 |
2136 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2137 | // Invalid: StoreRel8 with numOperands = 5 |
2138 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2139 | // Invalid: StoreRel8 with numOperands = 6 |
2140 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2141 | // Invalid: Load8SignedExtendTo32 with numOperands = 0 |
2142 | |
2143 | // Invalid: Load8SignedExtendTo32 with numOperands = 1 |
2144 | INVALID_INST_FORM, |
2145 | // Load8SignedExtendTo32 U:G:8, ZD:G:32 |
2146 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2147 | // Invalid: Load8SignedExtendTo32 with numOperands = 3 |
2148 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2149 | // Invalid: Load8SignedExtendTo32 with numOperands = 4 |
2150 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2151 | // Invalid: Load8SignedExtendTo32 with numOperands = 5 |
2152 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2153 | // Invalid: Load8SignedExtendTo32 with numOperands = 6 |
2154 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2155 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 0 |
2156 | |
2157 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 1 |
2158 | INVALID_INST_FORM, |
2159 | // LoadAcq8SignedExtendTo32 U:G:8, ZD:G:32 |
2160 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2161 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 3 |
2162 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2163 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 4 |
2164 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2165 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 5 |
2166 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2167 | // Invalid: LoadAcq8SignedExtendTo32 with numOperands = 6 |
2168 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2169 | // Invalid: Load16 with numOperands = 0 |
2170 | |
2171 | // Invalid: Load16 with numOperands = 1 |
2172 | INVALID_INST_FORM, |
2173 | // Load16 U:G:16, ZD:G:32 |
2174 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2175 | // Invalid: Load16 with numOperands = 3 |
2176 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2177 | // Invalid: Load16 with numOperands = 4 |
2178 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2179 | // Invalid: Load16 with numOperands = 5 |
2180 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2181 | // Invalid: Load16 with numOperands = 6 |
2182 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2183 | // Invalid: LoadAcq16 with numOperands = 0 |
2184 | |
2185 | // Invalid: LoadAcq16 with numOperands = 1 |
2186 | INVALID_INST_FORM, |
2187 | // LoadAcq16 U:G:16, ZD:G:32 |
2188 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2189 | // Invalid: LoadAcq16 with numOperands = 3 |
2190 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2191 | // Invalid: LoadAcq16 with numOperands = 4 |
2192 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2193 | // Invalid: LoadAcq16 with numOperands = 5 |
2194 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2195 | // Invalid: LoadAcq16 with numOperands = 6 |
2196 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2197 | // Invalid: Load16SignedExtendTo32 with numOperands = 0 |
2198 | |
2199 | // Invalid: Load16SignedExtendTo32 with numOperands = 1 |
2200 | INVALID_INST_FORM, |
2201 | // Load16SignedExtendTo32 U:G:16, ZD:G:32 |
2202 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2203 | // Invalid: Load16SignedExtendTo32 with numOperands = 3 |
2204 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2205 | // Invalid: Load16SignedExtendTo32 with numOperands = 4 |
2206 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2207 | // Invalid: Load16SignedExtendTo32 with numOperands = 5 |
2208 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2209 | // Invalid: Load16SignedExtendTo32 with numOperands = 6 |
2210 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2211 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 0 |
2212 | |
2213 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 1 |
2214 | INVALID_INST_FORM, |
2215 | // LoadAcq16SignedExtendTo32 U:G:16, ZD:G:32 |
2216 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2217 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 3 |
2218 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2219 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 4 |
2220 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2221 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 5 |
2222 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2223 | // Invalid: LoadAcq16SignedExtendTo32 with numOperands = 6 |
2224 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2225 | // Invalid: Store16 with numOperands = 0 |
2226 | |
2227 | // Invalid: Store16 with numOperands = 1 |
2228 | INVALID_INST_FORM, |
2229 | // Store16 U:G:16, D:G:16 |
2230 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::Def, GP, Width16), |
2231 | // Invalid: Store16 with numOperands = 3 |
2232 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2233 | // Invalid: Store16 with numOperands = 4 |
2234 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2235 | // Invalid: Store16 with numOperands = 5 |
2236 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2237 | // Invalid: Store16 with numOperands = 6 |
2238 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2239 | // Invalid: StoreRel16 with numOperands = 0 |
2240 | |
2241 | // Invalid: StoreRel16 with numOperands = 1 |
2242 | INVALID_INST_FORM, |
2243 | // StoreRel16 U:G:16, D:G:16 |
2244 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::Def, GP, Width16), |
2245 | // Invalid: StoreRel16 with numOperands = 3 |
2246 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2247 | // Invalid: StoreRel16 with numOperands = 4 |
2248 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2249 | // Invalid: StoreRel16 with numOperands = 5 |
2250 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2251 | // Invalid: StoreRel16 with numOperands = 6 |
2252 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2253 | // Invalid: LoadAcq32 with numOperands = 0 |
2254 | |
2255 | // Invalid: LoadAcq32 with numOperands = 1 |
2256 | INVALID_INST_FORM, |
2257 | // LoadAcq32 U:G:32, ZD:G:32 |
2258 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2259 | // Invalid: LoadAcq32 with numOperands = 3 |
2260 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2261 | // Invalid: LoadAcq32 with numOperands = 4 |
2262 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2263 | // Invalid: LoadAcq32 with numOperands = 5 |
2264 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2265 | // Invalid: LoadAcq32 with numOperands = 6 |
2266 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2267 | // Invalid: StoreRel32 with numOperands = 0 |
2268 | |
2269 | // Invalid: StoreRel32 with numOperands = 1 |
2270 | INVALID_INST_FORM, |
2271 | // StoreRel32 U:G:32, ZD:G:32 |
2272 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
2273 | // Invalid: StoreRel32 with numOperands = 3 |
2274 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2275 | // Invalid: StoreRel32 with numOperands = 4 |
2276 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2277 | // Invalid: StoreRel32 with numOperands = 5 |
2278 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2279 | // Invalid: StoreRel32 with numOperands = 6 |
2280 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2281 | // Invalid: LoadAcq64 with numOperands = 0 |
2282 | |
2283 | // Invalid: LoadAcq64 with numOperands = 1 |
2284 | INVALID_INST_FORM, |
2285 | // LoadAcq64 U:G:64, ZD:G:64 |
2286 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
2287 | // Invalid: LoadAcq64 with numOperands = 3 |
2288 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2289 | // Invalid: LoadAcq64 with numOperands = 4 |
2290 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2291 | // Invalid: LoadAcq64 with numOperands = 5 |
2292 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2293 | // Invalid: LoadAcq64 with numOperands = 6 |
2294 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2295 | // Invalid: StoreRel64 with numOperands = 0 |
2296 | |
2297 | // Invalid: StoreRel64 with numOperands = 1 |
2298 | INVALID_INST_FORM, |
2299 | // StoreRel64 U:G:64, ZD:G:64 |
2300 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
2301 | // Invalid: StoreRel64 with numOperands = 3 |
2302 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2303 | // Invalid: StoreRel64 with numOperands = 4 |
2304 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2305 | // Invalid: StoreRel64 with numOperands = 5 |
2306 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2307 | // Invalid: StoreRel64 with numOperands = 6 |
2308 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2309 | // Invalid: Xchg8 with numOperands = 0 |
2310 | |
2311 | // Invalid: Xchg8 with numOperands = 1 |
2312 | INVALID_INST_FORM, |
2313 | // Xchg8 UD:G:8, UD:G:8 |
2314 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2315 | // Invalid: Xchg8 with numOperands = 3 |
2316 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2317 | // Invalid: Xchg8 with numOperands = 4 |
2318 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2319 | // Invalid: Xchg8 with numOperands = 5 |
2320 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2321 | // Invalid: Xchg8 with numOperands = 6 |
2322 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2323 | // Invalid: Xchg16 with numOperands = 0 |
2324 | |
2325 | // Invalid: Xchg16 with numOperands = 1 |
2326 | INVALID_INST_FORM, |
2327 | // Xchg16 UD:G:16, UD:G:16 |
2328 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2329 | // Invalid: Xchg16 with numOperands = 3 |
2330 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2331 | // Invalid: Xchg16 with numOperands = 4 |
2332 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2333 | // Invalid: Xchg16 with numOperands = 5 |
2334 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2335 | // Invalid: Xchg16 with numOperands = 6 |
2336 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2337 | // Invalid: Xchg32 with numOperands = 0 |
2338 | |
2339 | // Invalid: Xchg32 with numOperands = 1 |
2340 | INVALID_INST_FORM, |
2341 | // Xchg32 UD:G:32, UD:G:32 |
2342 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2343 | // Invalid: Xchg32 with numOperands = 3 |
2344 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2345 | // Invalid: Xchg32 with numOperands = 4 |
2346 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2347 | // Invalid: Xchg32 with numOperands = 5 |
2348 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2349 | // Invalid: Xchg32 with numOperands = 6 |
2350 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2351 | // Invalid: Xchg64 with numOperands = 0 |
2352 | |
2353 | // Invalid: Xchg64 with numOperands = 1 |
2354 | INVALID_INST_FORM, |
2355 | // Xchg64 UD:G:64, UD:G:64 |
2356 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2357 | // Invalid: Xchg64 with numOperands = 3 |
2358 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2359 | // Invalid: Xchg64 with numOperands = 4 |
2360 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2361 | // Invalid: Xchg64 with numOperands = 5 |
2362 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2363 | // Invalid: Xchg64 with numOperands = 6 |
2364 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2365 | // Invalid: AtomicStrongCAS8 with numOperands = 0 |
2366 | |
2367 | // Invalid: AtomicStrongCAS8 with numOperands = 1 |
2368 | INVALID_INST_FORM, |
2369 | // Invalid: AtomicStrongCAS8 with numOperands = 2 |
2370 | INVALID_INST_FORM, INVALID_INST_FORM, |
2371 | // AtomicStrongCAS8 UD:G:8, U:G:8, UD:G:8 |
2372 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2373 | // Invalid: AtomicStrongCAS8 with numOperands = 4 |
2374 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2375 | // AtomicStrongCAS8 U:G:32, UD:G:8, U:G:8, UD:G:8, ZD:G:8 |
2376 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
2377 | // Invalid: AtomicStrongCAS8 with numOperands = 6 |
2378 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2379 | // Invalid: AtomicStrongCAS16 with numOperands = 0 |
2380 | |
2381 | // Invalid: AtomicStrongCAS16 with numOperands = 1 |
2382 | INVALID_INST_FORM, |
2383 | // Invalid: AtomicStrongCAS16 with numOperands = 2 |
2384 | INVALID_INST_FORM, INVALID_INST_FORM, |
2385 | // AtomicStrongCAS16 UD:G:16, U:G:32, UD:G:16 |
2386 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2387 | // Invalid: AtomicStrongCAS16 with numOperands = 4 |
2388 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2389 | // AtomicStrongCAS16 U:G:32, UD:G:16, U:G:32, UD:G:16, ZD:G:8 |
2390 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
2391 | // Invalid: AtomicStrongCAS16 with numOperands = 6 |
2392 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2393 | // Invalid: AtomicStrongCAS32 with numOperands = 0 |
2394 | |
2395 | // Invalid: AtomicStrongCAS32 with numOperands = 1 |
2396 | INVALID_INST_FORM, |
2397 | // Invalid: AtomicStrongCAS32 with numOperands = 2 |
2398 | INVALID_INST_FORM, INVALID_INST_FORM, |
2399 | // AtomicStrongCAS32 UD:G:32, U:G:32, UD:G:32 |
2400 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2401 | // Invalid: AtomicStrongCAS32 with numOperands = 4 |
2402 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2403 | // AtomicStrongCAS32 U:G:32, UD:G:32, U:G:32, UD:G:32, ZD:G:8 |
2404 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
2405 | // Invalid: AtomicStrongCAS32 with numOperands = 6 |
2406 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2407 | // Invalid: AtomicStrongCAS64 with numOperands = 0 |
2408 | |
2409 | // Invalid: AtomicStrongCAS64 with numOperands = 1 |
2410 | INVALID_INST_FORM, |
2411 | // Invalid: AtomicStrongCAS64 with numOperands = 2 |
2412 | INVALID_INST_FORM, INVALID_INST_FORM, |
2413 | // AtomicStrongCAS64 UD:G:64, U:G:64, UD:G:64 |
2414 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2415 | // Invalid: AtomicStrongCAS64 with numOperands = 4 |
2416 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2417 | // AtomicStrongCAS64 U:G:32, UD:G:64, U:G:64, UD:G:64, ZD:G:8 |
2418 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
2419 | // Invalid: AtomicStrongCAS64 with numOperands = 6 |
2420 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2421 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 0 |
2422 | |
2423 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 1 |
2424 | INVALID_INST_FORM, |
2425 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 2 |
2426 | INVALID_INST_FORM, INVALID_INST_FORM, |
2427 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 3 |
2428 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2429 | // BranchAtomicStrongCAS8 U:G:32, UD:G:8, U:G:8, UD:G:8 |
2430 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2431 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 5 |
2432 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2433 | // Invalid: BranchAtomicStrongCAS8 with numOperands = 6 |
2434 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2435 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 0 |
2436 | |
2437 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 1 |
2438 | INVALID_INST_FORM, |
2439 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 2 |
2440 | INVALID_INST_FORM, INVALID_INST_FORM, |
2441 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 3 |
2442 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2443 | // BranchAtomicStrongCAS16 U:G:32, UD:G:16, U:G:32, UD:G:16 |
2444 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2445 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 5 |
2446 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2447 | // Invalid: BranchAtomicStrongCAS16 with numOperands = 6 |
2448 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2449 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 0 |
2450 | |
2451 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 1 |
2452 | INVALID_INST_FORM, |
2453 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 2 |
2454 | INVALID_INST_FORM, INVALID_INST_FORM, |
2455 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 3 |
2456 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2457 | // BranchAtomicStrongCAS32 U:G:32, UD:G:32, U:G:32, UD:G:32 |
2458 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2459 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 5 |
2460 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2461 | // Invalid: BranchAtomicStrongCAS32 with numOperands = 6 |
2462 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2463 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 0 |
2464 | |
2465 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 1 |
2466 | INVALID_INST_FORM, |
2467 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 2 |
2468 | INVALID_INST_FORM, INVALID_INST_FORM, |
2469 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 3 |
2470 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2471 | // BranchAtomicStrongCAS64 U:G:32, UD:G:64, U:G:64, UD:G:64 |
2472 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2473 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 5 |
2474 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2475 | // Invalid: BranchAtomicStrongCAS64 with numOperands = 6 |
2476 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2477 | // Invalid: AtomicAdd8 with numOperands = 0 |
2478 | |
2479 | // Invalid: AtomicAdd8 with numOperands = 1 |
2480 | INVALID_INST_FORM, |
2481 | // AtomicAdd8 U:G:8, UD:G:8 |
2482 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2483 | // Invalid: AtomicAdd8 with numOperands = 3 |
2484 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2485 | // Invalid: AtomicAdd8 with numOperands = 4 |
2486 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2487 | // Invalid: AtomicAdd8 with numOperands = 5 |
2488 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2489 | // Invalid: AtomicAdd8 with numOperands = 6 |
2490 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2491 | // Invalid: AtomicAdd16 with numOperands = 0 |
2492 | |
2493 | // Invalid: AtomicAdd16 with numOperands = 1 |
2494 | INVALID_INST_FORM, |
2495 | // AtomicAdd16 U:G:16, UD:G:16 |
2496 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2497 | // Invalid: AtomicAdd16 with numOperands = 3 |
2498 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2499 | // Invalid: AtomicAdd16 with numOperands = 4 |
2500 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2501 | // Invalid: AtomicAdd16 with numOperands = 5 |
2502 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2503 | // Invalid: AtomicAdd16 with numOperands = 6 |
2504 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2505 | // Invalid: AtomicAdd32 with numOperands = 0 |
2506 | |
2507 | // Invalid: AtomicAdd32 with numOperands = 1 |
2508 | INVALID_INST_FORM, |
2509 | // AtomicAdd32 U:G:32, UD:G:32 |
2510 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2511 | // Invalid: AtomicAdd32 with numOperands = 3 |
2512 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2513 | // Invalid: AtomicAdd32 with numOperands = 4 |
2514 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2515 | // Invalid: AtomicAdd32 with numOperands = 5 |
2516 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2517 | // Invalid: AtomicAdd32 with numOperands = 6 |
2518 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2519 | // Invalid: AtomicAdd64 with numOperands = 0 |
2520 | |
2521 | // Invalid: AtomicAdd64 with numOperands = 1 |
2522 | INVALID_INST_FORM, |
2523 | // AtomicAdd64 U:G:64, UD:G:64 |
2524 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2525 | // Invalid: AtomicAdd64 with numOperands = 3 |
2526 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2527 | // Invalid: AtomicAdd64 with numOperands = 4 |
2528 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2529 | // Invalid: AtomicAdd64 with numOperands = 5 |
2530 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2531 | // Invalid: AtomicAdd64 with numOperands = 6 |
2532 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2533 | // Invalid: AtomicSub8 with numOperands = 0 |
2534 | |
2535 | // Invalid: AtomicSub8 with numOperands = 1 |
2536 | INVALID_INST_FORM, |
2537 | // AtomicSub8 U:G:8, UD:G:8 |
2538 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2539 | // Invalid: AtomicSub8 with numOperands = 3 |
2540 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2541 | // Invalid: AtomicSub8 with numOperands = 4 |
2542 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2543 | // Invalid: AtomicSub8 with numOperands = 5 |
2544 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2545 | // Invalid: AtomicSub8 with numOperands = 6 |
2546 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2547 | // Invalid: AtomicSub16 with numOperands = 0 |
2548 | |
2549 | // Invalid: AtomicSub16 with numOperands = 1 |
2550 | INVALID_INST_FORM, |
2551 | // AtomicSub16 U:G:16, UD:G:16 |
2552 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2553 | // Invalid: AtomicSub16 with numOperands = 3 |
2554 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2555 | // Invalid: AtomicSub16 with numOperands = 4 |
2556 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2557 | // Invalid: AtomicSub16 with numOperands = 5 |
2558 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2559 | // Invalid: AtomicSub16 with numOperands = 6 |
2560 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2561 | // Invalid: AtomicSub32 with numOperands = 0 |
2562 | |
2563 | // Invalid: AtomicSub32 with numOperands = 1 |
2564 | INVALID_INST_FORM, |
2565 | // AtomicSub32 U:G:32, UD:G:32 |
2566 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2567 | // Invalid: AtomicSub32 with numOperands = 3 |
2568 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2569 | // Invalid: AtomicSub32 with numOperands = 4 |
2570 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2571 | // Invalid: AtomicSub32 with numOperands = 5 |
2572 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2573 | // Invalid: AtomicSub32 with numOperands = 6 |
2574 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2575 | // Invalid: AtomicSub64 with numOperands = 0 |
2576 | |
2577 | // Invalid: AtomicSub64 with numOperands = 1 |
2578 | INVALID_INST_FORM, |
2579 | // AtomicSub64 U:G:64, UD:G:64 |
2580 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2581 | // Invalid: AtomicSub64 with numOperands = 3 |
2582 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2583 | // Invalid: AtomicSub64 with numOperands = 4 |
2584 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2585 | // Invalid: AtomicSub64 with numOperands = 5 |
2586 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2587 | // Invalid: AtomicSub64 with numOperands = 6 |
2588 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2589 | // Invalid: AtomicAnd8 with numOperands = 0 |
2590 | |
2591 | // Invalid: AtomicAnd8 with numOperands = 1 |
2592 | INVALID_INST_FORM, |
2593 | // AtomicAnd8 U:G:8, UD:G:8 |
2594 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2595 | // Invalid: AtomicAnd8 with numOperands = 3 |
2596 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2597 | // Invalid: AtomicAnd8 with numOperands = 4 |
2598 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2599 | // Invalid: AtomicAnd8 with numOperands = 5 |
2600 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2601 | // Invalid: AtomicAnd8 with numOperands = 6 |
2602 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2603 | // Invalid: AtomicAnd16 with numOperands = 0 |
2604 | |
2605 | // Invalid: AtomicAnd16 with numOperands = 1 |
2606 | INVALID_INST_FORM, |
2607 | // AtomicAnd16 U:G:16, UD:G:16 |
2608 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2609 | // Invalid: AtomicAnd16 with numOperands = 3 |
2610 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2611 | // Invalid: AtomicAnd16 with numOperands = 4 |
2612 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2613 | // Invalid: AtomicAnd16 with numOperands = 5 |
2614 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2615 | // Invalid: AtomicAnd16 with numOperands = 6 |
2616 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2617 | // Invalid: AtomicAnd32 with numOperands = 0 |
2618 | |
2619 | // Invalid: AtomicAnd32 with numOperands = 1 |
2620 | INVALID_INST_FORM, |
2621 | // AtomicAnd32 U:G:32, UD:G:32 |
2622 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2623 | // Invalid: AtomicAnd32 with numOperands = 3 |
2624 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2625 | // Invalid: AtomicAnd32 with numOperands = 4 |
2626 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2627 | // Invalid: AtomicAnd32 with numOperands = 5 |
2628 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2629 | // Invalid: AtomicAnd32 with numOperands = 6 |
2630 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2631 | // Invalid: AtomicAnd64 with numOperands = 0 |
2632 | |
2633 | // Invalid: AtomicAnd64 with numOperands = 1 |
2634 | INVALID_INST_FORM, |
2635 | // AtomicAnd64 U:G:64, UD:G:64 |
2636 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2637 | // Invalid: AtomicAnd64 with numOperands = 3 |
2638 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2639 | // Invalid: AtomicAnd64 with numOperands = 4 |
2640 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2641 | // Invalid: AtomicAnd64 with numOperands = 5 |
2642 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2643 | // Invalid: AtomicAnd64 with numOperands = 6 |
2644 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2645 | // Invalid: AtomicOr8 with numOperands = 0 |
2646 | |
2647 | // Invalid: AtomicOr8 with numOperands = 1 |
2648 | INVALID_INST_FORM, |
2649 | // AtomicOr8 U:G:8, UD:G:8 |
2650 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2651 | // Invalid: AtomicOr8 with numOperands = 3 |
2652 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2653 | // Invalid: AtomicOr8 with numOperands = 4 |
2654 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2655 | // Invalid: AtomicOr8 with numOperands = 5 |
2656 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2657 | // Invalid: AtomicOr8 with numOperands = 6 |
2658 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2659 | // Invalid: AtomicOr16 with numOperands = 0 |
2660 | |
2661 | // Invalid: AtomicOr16 with numOperands = 1 |
2662 | INVALID_INST_FORM, |
2663 | // AtomicOr16 U:G:16, UD:G:16 |
2664 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2665 | // Invalid: AtomicOr16 with numOperands = 3 |
2666 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2667 | // Invalid: AtomicOr16 with numOperands = 4 |
2668 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2669 | // Invalid: AtomicOr16 with numOperands = 5 |
2670 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2671 | // Invalid: AtomicOr16 with numOperands = 6 |
2672 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2673 | // Invalid: AtomicOr32 with numOperands = 0 |
2674 | |
2675 | // Invalid: AtomicOr32 with numOperands = 1 |
2676 | INVALID_INST_FORM, |
2677 | // AtomicOr32 U:G:32, UD:G:32 |
2678 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2679 | // Invalid: AtomicOr32 with numOperands = 3 |
2680 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2681 | // Invalid: AtomicOr32 with numOperands = 4 |
2682 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2683 | // Invalid: AtomicOr32 with numOperands = 5 |
2684 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2685 | // Invalid: AtomicOr32 with numOperands = 6 |
2686 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2687 | // Invalid: AtomicOr64 with numOperands = 0 |
2688 | |
2689 | // Invalid: AtomicOr64 with numOperands = 1 |
2690 | INVALID_INST_FORM, |
2691 | // AtomicOr64 U:G:64, UD:G:64 |
2692 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2693 | // Invalid: AtomicOr64 with numOperands = 3 |
2694 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2695 | // Invalid: AtomicOr64 with numOperands = 4 |
2696 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2697 | // Invalid: AtomicOr64 with numOperands = 5 |
2698 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2699 | // Invalid: AtomicOr64 with numOperands = 6 |
2700 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2701 | // Invalid: AtomicXor8 with numOperands = 0 |
2702 | |
2703 | // Invalid: AtomicXor8 with numOperands = 1 |
2704 | INVALID_INST_FORM, |
2705 | // AtomicXor8 U:G:8, UD:G:8 |
2706 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2707 | // Invalid: AtomicXor8 with numOperands = 3 |
2708 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2709 | // Invalid: AtomicXor8 with numOperands = 4 |
2710 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2711 | // Invalid: AtomicXor8 with numOperands = 5 |
2712 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2713 | // Invalid: AtomicXor8 with numOperands = 6 |
2714 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2715 | // Invalid: AtomicXor16 with numOperands = 0 |
2716 | |
2717 | // Invalid: AtomicXor16 with numOperands = 1 |
2718 | INVALID_INST_FORM, |
2719 | // AtomicXor16 U:G:16, UD:G:16 |
2720 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2721 | // Invalid: AtomicXor16 with numOperands = 3 |
2722 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2723 | // Invalid: AtomicXor16 with numOperands = 4 |
2724 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2725 | // Invalid: AtomicXor16 with numOperands = 5 |
2726 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2727 | // Invalid: AtomicXor16 with numOperands = 6 |
2728 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2729 | // Invalid: AtomicXor32 with numOperands = 0 |
2730 | |
2731 | // Invalid: AtomicXor32 with numOperands = 1 |
2732 | INVALID_INST_FORM, |
2733 | // AtomicXor32 U:G:32, UD:G:32 |
2734 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2735 | // Invalid: AtomicXor32 with numOperands = 3 |
2736 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2737 | // Invalid: AtomicXor32 with numOperands = 4 |
2738 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2739 | // Invalid: AtomicXor32 with numOperands = 5 |
2740 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2741 | // Invalid: AtomicXor32 with numOperands = 6 |
2742 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2743 | // Invalid: AtomicXor64 with numOperands = 0 |
2744 | |
2745 | // Invalid: AtomicXor64 with numOperands = 1 |
2746 | INVALID_INST_FORM, |
2747 | // AtomicXor64 U:G:64, UD:G:64 |
2748 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2749 | // Invalid: AtomicXor64 with numOperands = 3 |
2750 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2751 | // Invalid: AtomicXor64 with numOperands = 4 |
2752 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2753 | // Invalid: AtomicXor64 with numOperands = 5 |
2754 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2755 | // Invalid: AtomicXor64 with numOperands = 6 |
2756 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2757 | // Invalid: AtomicNeg8 with numOperands = 0 |
2758 | |
2759 | // AtomicNeg8 UD:G:8 |
2760 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2761 | // Invalid: AtomicNeg8 with numOperands = 2 |
2762 | INVALID_INST_FORM, INVALID_INST_FORM, |
2763 | // Invalid: AtomicNeg8 with numOperands = 3 |
2764 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2765 | // Invalid: AtomicNeg8 with numOperands = 4 |
2766 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2767 | // Invalid: AtomicNeg8 with numOperands = 5 |
2768 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2769 | // Invalid: AtomicNeg8 with numOperands = 6 |
2770 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2771 | // Invalid: AtomicNeg16 with numOperands = 0 |
2772 | |
2773 | // AtomicNeg16 UD:G:16 |
2774 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2775 | // Invalid: AtomicNeg16 with numOperands = 2 |
2776 | INVALID_INST_FORM, INVALID_INST_FORM, |
2777 | // Invalid: AtomicNeg16 with numOperands = 3 |
2778 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2779 | // Invalid: AtomicNeg16 with numOperands = 4 |
2780 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2781 | // Invalid: AtomicNeg16 with numOperands = 5 |
2782 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2783 | // Invalid: AtomicNeg16 with numOperands = 6 |
2784 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2785 | // Invalid: AtomicNeg32 with numOperands = 0 |
2786 | |
2787 | // AtomicNeg32 UD:G:32 |
2788 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2789 | // Invalid: AtomicNeg32 with numOperands = 2 |
2790 | INVALID_INST_FORM, INVALID_INST_FORM, |
2791 | // Invalid: AtomicNeg32 with numOperands = 3 |
2792 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2793 | // Invalid: AtomicNeg32 with numOperands = 4 |
2794 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2795 | // Invalid: AtomicNeg32 with numOperands = 5 |
2796 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2797 | // Invalid: AtomicNeg32 with numOperands = 6 |
2798 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2799 | // Invalid: AtomicNeg64 with numOperands = 0 |
2800 | |
2801 | // AtomicNeg64 UD:G:64 |
2802 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2803 | // Invalid: AtomicNeg64 with numOperands = 2 |
2804 | INVALID_INST_FORM, INVALID_INST_FORM, |
2805 | // Invalid: AtomicNeg64 with numOperands = 3 |
2806 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2807 | // Invalid: AtomicNeg64 with numOperands = 4 |
2808 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2809 | // Invalid: AtomicNeg64 with numOperands = 5 |
2810 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2811 | // Invalid: AtomicNeg64 with numOperands = 6 |
2812 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2813 | // Invalid: AtomicNot8 with numOperands = 0 |
2814 | |
2815 | // AtomicNot8 UD:G:8 |
2816 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2817 | // Invalid: AtomicNot8 with numOperands = 2 |
2818 | INVALID_INST_FORM, INVALID_INST_FORM, |
2819 | // Invalid: AtomicNot8 with numOperands = 3 |
2820 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2821 | // Invalid: AtomicNot8 with numOperands = 4 |
2822 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2823 | // Invalid: AtomicNot8 with numOperands = 5 |
2824 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2825 | // Invalid: AtomicNot8 with numOperands = 6 |
2826 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2827 | // Invalid: AtomicNot16 with numOperands = 0 |
2828 | |
2829 | // AtomicNot16 UD:G:16 |
2830 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2831 | // Invalid: AtomicNot16 with numOperands = 2 |
2832 | INVALID_INST_FORM, INVALID_INST_FORM, |
2833 | // Invalid: AtomicNot16 with numOperands = 3 |
2834 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2835 | // Invalid: AtomicNot16 with numOperands = 4 |
2836 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2837 | // Invalid: AtomicNot16 with numOperands = 5 |
2838 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2839 | // Invalid: AtomicNot16 with numOperands = 6 |
2840 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2841 | // Invalid: AtomicNot32 with numOperands = 0 |
2842 | |
2843 | // AtomicNot32 UD:G:32 |
2844 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2845 | // Invalid: AtomicNot32 with numOperands = 2 |
2846 | INVALID_INST_FORM, INVALID_INST_FORM, |
2847 | // Invalid: AtomicNot32 with numOperands = 3 |
2848 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2849 | // Invalid: AtomicNot32 with numOperands = 4 |
2850 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2851 | // Invalid: AtomicNot32 with numOperands = 5 |
2852 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2853 | // Invalid: AtomicNot32 with numOperands = 6 |
2854 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2855 | // Invalid: AtomicNot64 with numOperands = 0 |
2856 | |
2857 | // AtomicNot64 UD:G:64 |
2858 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2859 | // Invalid: AtomicNot64 with numOperands = 2 |
2860 | INVALID_INST_FORM, INVALID_INST_FORM, |
2861 | // Invalid: AtomicNot64 with numOperands = 3 |
2862 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2863 | // Invalid: AtomicNot64 with numOperands = 4 |
2864 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2865 | // Invalid: AtomicNot64 with numOperands = 5 |
2866 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2867 | // Invalid: AtomicNot64 with numOperands = 6 |
2868 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2869 | // Invalid: AtomicXchgAdd8 with numOperands = 0 |
2870 | |
2871 | // Invalid: AtomicXchgAdd8 with numOperands = 1 |
2872 | INVALID_INST_FORM, |
2873 | // AtomicXchgAdd8 UD:G:8, UD:G:8 |
2874 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2875 | // Invalid: AtomicXchgAdd8 with numOperands = 3 |
2876 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2877 | // Invalid: AtomicXchgAdd8 with numOperands = 4 |
2878 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2879 | // Invalid: AtomicXchgAdd8 with numOperands = 5 |
2880 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2881 | // Invalid: AtomicXchgAdd8 with numOperands = 6 |
2882 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2883 | // Invalid: AtomicXchgAdd16 with numOperands = 0 |
2884 | |
2885 | // Invalid: AtomicXchgAdd16 with numOperands = 1 |
2886 | INVALID_INST_FORM, |
2887 | // AtomicXchgAdd16 UD:G:16, UD:G:16 |
2888 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2889 | // Invalid: AtomicXchgAdd16 with numOperands = 3 |
2890 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2891 | // Invalid: AtomicXchgAdd16 with numOperands = 4 |
2892 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2893 | // Invalid: AtomicXchgAdd16 with numOperands = 5 |
2894 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2895 | // Invalid: AtomicXchgAdd16 with numOperands = 6 |
2896 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2897 | // Invalid: AtomicXchgAdd32 with numOperands = 0 |
2898 | |
2899 | // Invalid: AtomicXchgAdd32 with numOperands = 1 |
2900 | INVALID_INST_FORM, |
2901 | // AtomicXchgAdd32 UD:G:32, UD:G:32 |
2902 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2903 | // Invalid: AtomicXchgAdd32 with numOperands = 3 |
2904 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2905 | // Invalid: AtomicXchgAdd32 with numOperands = 4 |
2906 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2907 | // Invalid: AtomicXchgAdd32 with numOperands = 5 |
2908 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2909 | // Invalid: AtomicXchgAdd32 with numOperands = 6 |
2910 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2911 | // Invalid: AtomicXchgAdd64 with numOperands = 0 |
2912 | |
2913 | // Invalid: AtomicXchgAdd64 with numOperands = 1 |
2914 | INVALID_INST_FORM, |
2915 | // AtomicXchgAdd64 UD:G:64, UD:G:64 |
2916 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2917 | // Invalid: AtomicXchgAdd64 with numOperands = 3 |
2918 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2919 | // Invalid: AtomicXchgAdd64 with numOperands = 4 |
2920 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2921 | // Invalid: AtomicXchgAdd64 with numOperands = 5 |
2922 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2923 | // Invalid: AtomicXchgAdd64 with numOperands = 6 |
2924 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2925 | // Invalid: AtomicXchg8 with numOperands = 0 |
2926 | |
2927 | // Invalid: AtomicXchg8 with numOperands = 1 |
2928 | INVALID_INST_FORM, |
2929 | // AtomicXchg8 UD:G:8, UD:G:8 |
2930 | ENCODE_INST_FORM(Arg::UseDef, GP, Width8), ENCODE_INST_FORM(Arg::UseDef, GP, Width8), |
2931 | // Invalid: AtomicXchg8 with numOperands = 3 |
2932 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2933 | // Invalid: AtomicXchg8 with numOperands = 4 |
2934 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2935 | // Invalid: AtomicXchg8 with numOperands = 5 |
2936 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2937 | // Invalid: AtomicXchg8 with numOperands = 6 |
2938 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2939 | // Invalid: AtomicXchg16 with numOperands = 0 |
2940 | |
2941 | // Invalid: AtomicXchg16 with numOperands = 1 |
2942 | INVALID_INST_FORM, |
2943 | // AtomicXchg16 UD:G:16, UD:G:16 |
2944 | ENCODE_INST_FORM(Arg::UseDef, GP, Width16), ENCODE_INST_FORM(Arg::UseDef, GP, Width16), |
2945 | // Invalid: AtomicXchg16 with numOperands = 3 |
2946 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2947 | // Invalid: AtomicXchg16 with numOperands = 4 |
2948 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2949 | // Invalid: AtomicXchg16 with numOperands = 5 |
2950 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2951 | // Invalid: AtomicXchg16 with numOperands = 6 |
2952 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2953 | // Invalid: AtomicXchg32 with numOperands = 0 |
2954 | |
2955 | // Invalid: AtomicXchg32 with numOperands = 1 |
2956 | INVALID_INST_FORM, |
2957 | // AtomicXchg32 UD:G:32, UD:G:32 |
2958 | ENCODE_INST_FORM(Arg::UseDef, GP, Width32), ENCODE_INST_FORM(Arg::UseDef, GP, Width32), |
2959 | // Invalid: AtomicXchg32 with numOperands = 3 |
2960 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2961 | // Invalid: AtomicXchg32 with numOperands = 4 |
2962 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2963 | // Invalid: AtomicXchg32 with numOperands = 5 |
2964 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2965 | // Invalid: AtomicXchg32 with numOperands = 6 |
2966 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2967 | // Invalid: AtomicXchg64 with numOperands = 0 |
2968 | |
2969 | // Invalid: AtomicXchg64 with numOperands = 1 |
2970 | INVALID_INST_FORM, |
2971 | // AtomicXchg64 UD:G:64, UD:G:64 |
2972 | ENCODE_INST_FORM(Arg::UseDef, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
2973 | // Invalid: AtomicXchg64 with numOperands = 3 |
2974 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2975 | // Invalid: AtomicXchg64 with numOperands = 4 |
2976 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2977 | // Invalid: AtomicXchg64 with numOperands = 5 |
2978 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2979 | // Invalid: AtomicXchg64 with numOperands = 6 |
2980 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2981 | // Invalid: LoadLink8 with numOperands = 0 |
2982 | |
2983 | // Invalid: LoadLink8 with numOperands = 1 |
2984 | INVALID_INST_FORM, |
2985 | // LoadLink8 U:G:8, ZD:G:8 |
2986 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
2987 | // Invalid: LoadLink8 with numOperands = 3 |
2988 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2989 | // Invalid: LoadLink8 with numOperands = 4 |
2990 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2991 | // Invalid: LoadLink8 with numOperands = 5 |
2992 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2993 | // Invalid: LoadLink8 with numOperands = 6 |
2994 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
2995 | // Invalid: LoadLinkAcq8 with numOperands = 0 |
2996 | |
2997 | // Invalid: LoadLinkAcq8 with numOperands = 1 |
2998 | INVALID_INST_FORM, |
2999 | // LoadLinkAcq8 U:G:8, ZD:G:8 |
3000 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::ZDef, GP, Width8), |
3001 | // Invalid: LoadLinkAcq8 with numOperands = 3 |
3002 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3003 | // Invalid: LoadLinkAcq8 with numOperands = 4 |
3004 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3005 | // Invalid: LoadLinkAcq8 with numOperands = 5 |
3006 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3007 | // Invalid: LoadLinkAcq8 with numOperands = 6 |
3008 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3009 | // Invalid: StoreCond8 with numOperands = 0 |
3010 | |
3011 | // Invalid: StoreCond8 with numOperands = 1 |
3012 | INVALID_INST_FORM, |
3013 | // Invalid: StoreCond8 with numOperands = 2 |
3014 | INVALID_INST_FORM, INVALID_INST_FORM, |
3015 | // StoreCond8 U:G:8, D:G:8, EZD:G:8 |
3016 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Def, GP, Width8), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3017 | // Invalid: StoreCond8 with numOperands = 4 |
3018 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3019 | // Invalid: StoreCond8 with numOperands = 5 |
3020 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3021 | // Invalid: StoreCond8 with numOperands = 6 |
3022 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3023 | // Invalid: StoreCondRel8 with numOperands = 0 |
3024 | |
3025 | // Invalid: StoreCondRel8 with numOperands = 1 |
3026 | INVALID_INST_FORM, |
3027 | // Invalid: StoreCondRel8 with numOperands = 2 |
3028 | INVALID_INST_FORM, INVALID_INST_FORM, |
3029 | // StoreCondRel8 U:G:8, D:G:8, EZD:G:8 |
3030 | ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Def, GP, Width8), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3031 | // Invalid: StoreCondRel8 with numOperands = 4 |
3032 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3033 | // Invalid: StoreCondRel8 with numOperands = 5 |
3034 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3035 | // Invalid: StoreCondRel8 with numOperands = 6 |
3036 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3037 | // Invalid: LoadLink16 with numOperands = 0 |
3038 | |
3039 | // Invalid: LoadLink16 with numOperands = 1 |
3040 | INVALID_INST_FORM, |
3041 | // LoadLink16 U:G:16, ZD:G:16 |
3042 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width16), |
3043 | // Invalid: LoadLink16 with numOperands = 3 |
3044 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3045 | // Invalid: LoadLink16 with numOperands = 4 |
3046 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3047 | // Invalid: LoadLink16 with numOperands = 5 |
3048 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3049 | // Invalid: LoadLink16 with numOperands = 6 |
3050 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3051 | // Invalid: LoadLinkAcq16 with numOperands = 0 |
3052 | |
3053 | // Invalid: LoadLinkAcq16 with numOperands = 1 |
3054 | INVALID_INST_FORM, |
3055 | // LoadLinkAcq16 U:G:16, ZD:G:16 |
3056 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::ZDef, GP, Width16), |
3057 | // Invalid: LoadLinkAcq16 with numOperands = 3 |
3058 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3059 | // Invalid: LoadLinkAcq16 with numOperands = 4 |
3060 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3061 | // Invalid: LoadLinkAcq16 with numOperands = 5 |
3062 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3063 | // Invalid: LoadLinkAcq16 with numOperands = 6 |
3064 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3065 | // Invalid: StoreCond16 with numOperands = 0 |
3066 | |
3067 | // Invalid: StoreCond16 with numOperands = 1 |
3068 | INVALID_INST_FORM, |
3069 | // Invalid: StoreCond16 with numOperands = 2 |
3070 | INVALID_INST_FORM, INVALID_INST_FORM, |
3071 | // StoreCond16 U:G:16, D:G:16, EZD:G:8 |
3072 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::Def, GP, Width16), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3073 | // Invalid: StoreCond16 with numOperands = 4 |
3074 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3075 | // Invalid: StoreCond16 with numOperands = 5 |
3076 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3077 | // Invalid: StoreCond16 with numOperands = 6 |
3078 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3079 | // Invalid: StoreCondRel16 with numOperands = 0 |
3080 | |
3081 | // Invalid: StoreCondRel16 with numOperands = 1 |
3082 | INVALID_INST_FORM, |
3083 | // Invalid: StoreCondRel16 with numOperands = 2 |
3084 | INVALID_INST_FORM, INVALID_INST_FORM, |
3085 | // StoreCondRel16 U:G:16, D:G:16, EZD:G:8 |
3086 | ENCODE_INST_FORM(Arg::Use, GP, Width16), ENCODE_INST_FORM(Arg::Def, GP, Width16), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3087 | // Invalid: StoreCondRel16 with numOperands = 4 |
3088 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3089 | // Invalid: StoreCondRel16 with numOperands = 5 |
3090 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3091 | // Invalid: StoreCondRel16 with numOperands = 6 |
3092 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3093 | // Invalid: LoadLink32 with numOperands = 0 |
3094 | |
3095 | // Invalid: LoadLink32 with numOperands = 1 |
3096 | INVALID_INST_FORM, |
3097 | // LoadLink32 U:G:32, ZD:G:32 |
3098 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3099 | // Invalid: LoadLink32 with numOperands = 3 |
3100 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3101 | // Invalid: LoadLink32 with numOperands = 4 |
3102 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3103 | // Invalid: LoadLink32 with numOperands = 5 |
3104 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3105 | // Invalid: LoadLink32 with numOperands = 6 |
3106 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3107 | // Invalid: LoadLinkAcq32 with numOperands = 0 |
3108 | |
3109 | // Invalid: LoadLinkAcq32 with numOperands = 1 |
3110 | INVALID_INST_FORM, |
3111 | // LoadLinkAcq32 U:G:32, ZD:G:32 |
3112 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3113 | // Invalid: LoadLinkAcq32 with numOperands = 3 |
3114 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3115 | // Invalid: LoadLinkAcq32 with numOperands = 4 |
3116 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3117 | // Invalid: LoadLinkAcq32 with numOperands = 5 |
3118 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3119 | // Invalid: LoadLinkAcq32 with numOperands = 6 |
3120 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3121 | // Invalid: StoreCond32 with numOperands = 0 |
3122 | |
3123 | // Invalid: StoreCond32 with numOperands = 1 |
3124 | INVALID_INST_FORM, |
3125 | // Invalid: StoreCond32 with numOperands = 2 |
3126 | INVALID_INST_FORM, INVALID_INST_FORM, |
3127 | // StoreCond32 U:G:32, D:G:32, EZD:G:8 |
3128 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, GP, Width32), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3129 | // Invalid: StoreCond32 with numOperands = 4 |
3130 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3131 | // Invalid: StoreCond32 with numOperands = 5 |
3132 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3133 | // Invalid: StoreCond32 with numOperands = 6 |
3134 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3135 | // Invalid: StoreCondRel32 with numOperands = 0 |
3136 | |
3137 | // Invalid: StoreCondRel32 with numOperands = 1 |
3138 | INVALID_INST_FORM, |
3139 | // Invalid: StoreCondRel32 with numOperands = 2 |
3140 | INVALID_INST_FORM, INVALID_INST_FORM, |
3141 | // StoreCondRel32 U:G:32, D:G:32, EZD:G:8 |
3142 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Def, GP, Width32), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3143 | // Invalid: StoreCondRel32 with numOperands = 4 |
3144 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3145 | // Invalid: StoreCondRel32 with numOperands = 5 |
3146 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3147 | // Invalid: StoreCondRel32 with numOperands = 6 |
3148 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3149 | // Invalid: LoadLink64 with numOperands = 0 |
3150 | |
3151 | // Invalid: LoadLink64 with numOperands = 1 |
3152 | INVALID_INST_FORM, |
3153 | // LoadLink64 U:G:64, ZD:G:64 |
3154 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
3155 | // Invalid: LoadLink64 with numOperands = 3 |
3156 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3157 | // Invalid: LoadLink64 with numOperands = 4 |
3158 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3159 | // Invalid: LoadLink64 with numOperands = 5 |
3160 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3161 | // Invalid: LoadLink64 with numOperands = 6 |
3162 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3163 | // Invalid: LoadLinkAcq64 with numOperands = 0 |
3164 | |
3165 | // Invalid: LoadLinkAcq64 with numOperands = 1 |
3166 | INVALID_INST_FORM, |
3167 | // LoadLinkAcq64 U:G:64, ZD:G:64 |
3168 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
3169 | // Invalid: LoadLinkAcq64 with numOperands = 3 |
3170 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3171 | // Invalid: LoadLinkAcq64 with numOperands = 4 |
3172 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3173 | // Invalid: LoadLinkAcq64 with numOperands = 5 |
3174 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3175 | // Invalid: LoadLinkAcq64 with numOperands = 6 |
3176 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3177 | // Invalid: StoreCond64 with numOperands = 0 |
3178 | |
3179 | // Invalid: StoreCond64 with numOperands = 1 |
3180 | INVALID_INST_FORM, |
3181 | // Invalid: StoreCond64 with numOperands = 2 |
3182 | INVALID_INST_FORM, INVALID_INST_FORM, |
3183 | // StoreCond64 U:G:64, D:G:64, EZD:G:8 |
3184 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3185 | // Invalid: StoreCond64 with numOperands = 4 |
3186 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3187 | // Invalid: StoreCond64 with numOperands = 5 |
3188 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3189 | // Invalid: StoreCond64 with numOperands = 6 |
3190 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3191 | // Invalid: StoreCondRel64 with numOperands = 0 |
3192 | |
3193 | // Invalid: StoreCondRel64 with numOperands = 1 |
3194 | INVALID_INST_FORM, |
3195 | // Invalid: StoreCondRel64 with numOperands = 2 |
3196 | INVALID_INST_FORM, INVALID_INST_FORM, |
3197 | // StoreCondRel64 U:G:64, D:G:64, EZD:G:8 |
3198 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Def, GP, Width64), ENCODE_INST_FORM(Arg::EarlyZDef, GP, Width8), |
3199 | // Invalid: StoreCondRel64 with numOperands = 4 |
3200 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3201 | // Invalid: StoreCondRel64 with numOperands = 5 |
3202 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3203 | // Invalid: StoreCondRel64 with numOperands = 6 |
3204 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3205 | // Invalid: Depend32 with numOperands = 0 |
3206 | |
3207 | // Invalid: Depend32 with numOperands = 1 |
3208 | INVALID_INST_FORM, |
3209 | // Depend32 U:G:32, ZD:G:32 |
3210 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3211 | // Invalid: Depend32 with numOperands = 3 |
3212 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3213 | // Invalid: Depend32 with numOperands = 4 |
3214 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3215 | // Invalid: Depend32 with numOperands = 5 |
3216 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3217 | // Invalid: Depend32 with numOperands = 6 |
3218 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3219 | // Invalid: Depend64 with numOperands = 0 |
3220 | |
3221 | // Invalid: Depend64 with numOperands = 1 |
3222 | INVALID_INST_FORM, |
3223 | // Depend64 U:G:64, ZD:G:64 |
3224 | ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
3225 | // Invalid: Depend64 with numOperands = 3 |
3226 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3227 | // Invalid: Depend64 with numOperands = 4 |
3228 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3229 | // Invalid: Depend64 with numOperands = 5 |
3230 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3231 | // Invalid: Depend64 with numOperands = 6 |
3232 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3233 | // Invalid: Compare32 with numOperands = 0 |
3234 | |
3235 | // Invalid: Compare32 with numOperands = 1 |
3236 | INVALID_INST_FORM, |
3237 | // Invalid: Compare32 with numOperands = 2 |
3238 | INVALID_INST_FORM, INVALID_INST_FORM, |
3239 | // Invalid: Compare32 with numOperands = 3 |
3240 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3241 | // Compare32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
3242 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3243 | // Invalid: Compare32 with numOperands = 5 |
3244 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3245 | // Invalid: Compare32 with numOperands = 6 |
3246 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3247 | // Invalid: Compare64 with numOperands = 0 |
3248 | |
3249 | // Invalid: Compare64 with numOperands = 1 |
3250 | INVALID_INST_FORM, |
3251 | // Invalid: Compare64 with numOperands = 2 |
3252 | INVALID_INST_FORM, INVALID_INST_FORM, |
3253 | // Invalid: Compare64 with numOperands = 3 |
3254 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3255 | // Compare64 U:G:32, U:G:64, U:G:64, ZD:G:32 |
3256 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3257 | // Invalid: Compare64 with numOperands = 5 |
3258 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3259 | // Invalid: Compare64 with numOperands = 6 |
3260 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3261 | // Invalid: Test32 with numOperands = 0 |
3262 | |
3263 | // Invalid: Test32 with numOperands = 1 |
3264 | INVALID_INST_FORM, |
3265 | // Invalid: Test32 with numOperands = 2 |
3266 | INVALID_INST_FORM, INVALID_INST_FORM, |
3267 | // Invalid: Test32 with numOperands = 3 |
3268 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3269 | // Test32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
3270 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3271 | // Invalid: Test32 with numOperands = 5 |
3272 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3273 | // Invalid: Test32 with numOperands = 6 |
3274 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3275 | // Invalid: Test64 with numOperands = 0 |
3276 | |
3277 | // Invalid: Test64 with numOperands = 1 |
3278 | INVALID_INST_FORM, |
3279 | // Invalid: Test64 with numOperands = 2 |
3280 | INVALID_INST_FORM, INVALID_INST_FORM, |
3281 | // Invalid: Test64 with numOperands = 3 |
3282 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3283 | // Test64 U:G:32, U:G:64, U:G:64, ZD:G:32 |
3284 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3285 | // Invalid: Test64 with numOperands = 5 |
3286 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3287 | // Invalid: Test64 with numOperands = 6 |
3288 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3289 | // Invalid: CompareDouble with numOperands = 0 |
3290 | |
3291 | // Invalid: CompareDouble with numOperands = 1 |
3292 | INVALID_INST_FORM, |
3293 | // Invalid: CompareDouble with numOperands = 2 |
3294 | INVALID_INST_FORM, INVALID_INST_FORM, |
3295 | // Invalid: CompareDouble with numOperands = 3 |
3296 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3297 | // CompareDouble U:G:32, U:F:64, U:F:64, ZD:G:32 |
3298 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3299 | // Invalid: CompareDouble with numOperands = 5 |
3300 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3301 | // Invalid: CompareDouble with numOperands = 6 |
3302 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3303 | // Invalid: CompareFloat with numOperands = 0 |
3304 | |
3305 | // Invalid: CompareFloat with numOperands = 1 |
3306 | INVALID_INST_FORM, |
3307 | // Invalid: CompareFloat with numOperands = 2 |
3308 | INVALID_INST_FORM, INVALID_INST_FORM, |
3309 | // Invalid: CompareFloat with numOperands = 3 |
3310 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3311 | // CompareFloat U:G:32, U:F:32, U:F:32, ZD:G:32 |
3312 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3313 | // Invalid: CompareFloat with numOperands = 5 |
3314 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3315 | // Invalid: CompareFloat with numOperands = 6 |
3316 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3317 | // Invalid: Branch8 with numOperands = 0 |
3318 | |
3319 | // Invalid: Branch8 with numOperands = 1 |
3320 | INVALID_INST_FORM, |
3321 | // Invalid: Branch8 with numOperands = 2 |
3322 | INVALID_INST_FORM, INVALID_INST_FORM, |
3323 | // Branch8 U:G:32, U:G:8, U:G:8 |
3324 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Use, GP, Width8), |
3325 | // Invalid: Branch8 with numOperands = 4 |
3326 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3327 | // Invalid: Branch8 with numOperands = 5 |
3328 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3329 | // Invalid: Branch8 with numOperands = 6 |
3330 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3331 | // Invalid: Branch32 with numOperands = 0 |
3332 | |
3333 | // Invalid: Branch32 with numOperands = 1 |
3334 | INVALID_INST_FORM, |
3335 | // Invalid: Branch32 with numOperands = 2 |
3336 | INVALID_INST_FORM, INVALID_INST_FORM, |
3337 | // Branch32 U:G:32, U:G:32, U:G:32 |
3338 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), |
3339 | // Invalid: Branch32 with numOperands = 4 |
3340 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3341 | // Invalid: Branch32 with numOperands = 5 |
3342 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3343 | // Invalid: Branch32 with numOperands = 6 |
3344 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3345 | // Invalid: Branch64 with numOperands = 0 |
3346 | |
3347 | // Invalid: Branch64 with numOperands = 1 |
3348 | INVALID_INST_FORM, |
3349 | // Invalid: Branch64 with numOperands = 2 |
3350 | INVALID_INST_FORM, INVALID_INST_FORM, |
3351 | // Branch64 U:G:32, U:G:64, U:G:64 |
3352 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), |
3353 | // Invalid: Branch64 with numOperands = 4 |
3354 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3355 | // Invalid: Branch64 with numOperands = 5 |
3356 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3357 | // Invalid: Branch64 with numOperands = 6 |
3358 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3359 | // Invalid: BranchTest8 with numOperands = 0 |
3360 | |
3361 | // Invalid: BranchTest8 with numOperands = 1 |
3362 | INVALID_INST_FORM, |
3363 | // Invalid: BranchTest8 with numOperands = 2 |
3364 | INVALID_INST_FORM, INVALID_INST_FORM, |
3365 | // BranchTest8 U:G:32, U:G:8, U:G:8 |
3366 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width8), ENCODE_INST_FORM(Arg::Use, GP, Width8), |
3367 | // Invalid: BranchTest8 with numOperands = 4 |
3368 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3369 | // Invalid: BranchTest8 with numOperands = 5 |
3370 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3371 | // Invalid: BranchTest8 with numOperands = 6 |
3372 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3373 | // Invalid: BranchTest32 with numOperands = 0 |
3374 | |
3375 | // Invalid: BranchTest32 with numOperands = 1 |
3376 | INVALID_INST_FORM, |
3377 | // Invalid: BranchTest32 with numOperands = 2 |
3378 | INVALID_INST_FORM, INVALID_INST_FORM, |
3379 | // BranchTest32 U:G:32, U:G:32, U:G:32 |
3380 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), |
3381 | // Invalid: BranchTest32 with numOperands = 4 |
3382 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3383 | // Invalid: BranchTest32 with numOperands = 5 |
3384 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3385 | // Invalid: BranchTest32 with numOperands = 6 |
3386 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3387 | // Invalid: BranchTest64 with numOperands = 0 |
3388 | |
3389 | // Invalid: BranchTest64 with numOperands = 1 |
3390 | INVALID_INST_FORM, |
3391 | // Invalid: BranchTest64 with numOperands = 2 |
3392 | INVALID_INST_FORM, INVALID_INST_FORM, |
3393 | // BranchTest64 U:G:32, U:G:64, U:G:64 |
3394 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), |
3395 | // Invalid: BranchTest64 with numOperands = 4 |
3396 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3397 | // Invalid: BranchTest64 with numOperands = 5 |
3398 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3399 | // Invalid: BranchTest64 with numOperands = 6 |
3400 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3401 | // Invalid: BranchTestBit64 with numOperands = 0 |
3402 | |
3403 | // Invalid: BranchTestBit64 with numOperands = 1 |
3404 | INVALID_INST_FORM, |
3405 | // Invalid: BranchTestBit64 with numOperands = 2 |
3406 | INVALID_INST_FORM, INVALID_INST_FORM, |
3407 | // BranchTestBit64 U:G:32, U:G:64, U:G:8 |
3408 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width8), |
3409 | // Invalid: BranchTestBit64 with numOperands = 4 |
3410 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3411 | // Invalid: BranchTestBit64 with numOperands = 5 |
3412 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3413 | // Invalid: BranchTestBit64 with numOperands = 6 |
3414 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3415 | // Invalid: BranchTestBit32 with numOperands = 0 |
3416 | |
3417 | // Invalid: BranchTestBit32 with numOperands = 1 |
3418 | INVALID_INST_FORM, |
3419 | // Invalid: BranchTestBit32 with numOperands = 2 |
3420 | INVALID_INST_FORM, INVALID_INST_FORM, |
3421 | // BranchTestBit32 U:G:32, U:G:32, U:G:8 |
3422 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width8), |
3423 | // Invalid: BranchTestBit32 with numOperands = 4 |
3424 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3425 | // Invalid: BranchTestBit32 with numOperands = 5 |
3426 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3427 | // Invalid: BranchTestBit32 with numOperands = 6 |
3428 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3429 | // Invalid: BranchDouble with numOperands = 0 |
3430 | |
3431 | // Invalid: BranchDouble with numOperands = 1 |
3432 | INVALID_INST_FORM, |
3433 | // Invalid: BranchDouble with numOperands = 2 |
3434 | INVALID_INST_FORM, INVALID_INST_FORM, |
3435 | // BranchDouble U:G:32, U:F:64, U:F:64 |
3436 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), |
3437 | // Invalid: BranchDouble with numOperands = 4 |
3438 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3439 | // Invalid: BranchDouble with numOperands = 5 |
3440 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3441 | // Invalid: BranchDouble with numOperands = 6 |
3442 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3443 | // Invalid: BranchFloat with numOperands = 0 |
3444 | |
3445 | // Invalid: BranchFloat with numOperands = 1 |
3446 | INVALID_INST_FORM, |
3447 | // Invalid: BranchFloat with numOperands = 2 |
3448 | INVALID_INST_FORM, INVALID_INST_FORM, |
3449 | // BranchFloat U:G:32, U:F:32, U:F:32 |
3450 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), |
3451 | // Invalid: BranchFloat with numOperands = 4 |
3452 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3453 | // Invalid: BranchFloat with numOperands = 5 |
3454 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3455 | // Invalid: BranchFloat with numOperands = 6 |
3456 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3457 | // Invalid: BranchAdd32 with numOperands = 0 |
3458 | |
3459 | // Invalid: BranchAdd32 with numOperands = 1 |
3460 | INVALID_INST_FORM, |
3461 | // Invalid: BranchAdd32 with numOperands = 2 |
3462 | INVALID_INST_FORM, INVALID_INST_FORM, |
3463 | // BranchAdd32 U:G:32, U:G:32, UZD:G:32 |
3464 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
3465 | // BranchAdd32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
3466 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3467 | // Invalid: BranchAdd32 with numOperands = 5 |
3468 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3469 | // Invalid: BranchAdd32 with numOperands = 6 |
3470 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3471 | // Invalid: BranchAdd64 with numOperands = 0 |
3472 | |
3473 | // Invalid: BranchAdd64 with numOperands = 1 |
3474 | INVALID_INST_FORM, |
3475 | // Invalid: BranchAdd64 with numOperands = 2 |
3476 | INVALID_INST_FORM, INVALID_INST_FORM, |
3477 | // BranchAdd64 U:G:32, U:G:64, UD:G:64 |
3478 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
3479 | // BranchAdd64 U:G:32, U:G:64, U:G:64, ZD:G:64 |
3480 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
3481 | // Invalid: BranchAdd64 with numOperands = 5 |
3482 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3483 | // Invalid: BranchAdd64 with numOperands = 6 |
3484 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3485 | // Invalid: BranchMul32 with numOperands = 0 |
3486 | |
3487 | // Invalid: BranchMul32 with numOperands = 1 |
3488 | INVALID_INST_FORM, |
3489 | // Invalid: BranchMul32 with numOperands = 2 |
3490 | INVALID_INST_FORM, INVALID_INST_FORM, |
3491 | // BranchMul32 U:G:32, U:G:32, UZD:G:32 |
3492 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
3493 | // BranchMul32 U:G:32, U:G:32, U:G:32, ZD:G:32 |
3494 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3495 | // Invalid: BranchMul32 with numOperands = 5 |
3496 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3497 | // BranchMul32 U:G:32, U:G:32, U:G:32, S:G:32, S:G:32, ZD:G:32 |
3498 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Scratch, GP, Width32), ENCODE_INST_FORM(Arg::Scratch, GP, Width32), ENCODE_INST_FORM(Arg::ZDef, GP, Width32), |
3499 | // Invalid: BranchMul64 with numOperands = 0 |
3500 | |
3501 | // Invalid: BranchMul64 with numOperands = 1 |
3502 | INVALID_INST_FORM, |
3503 | // Invalid: BranchMul64 with numOperands = 2 |
3504 | INVALID_INST_FORM, INVALID_INST_FORM, |
3505 | // BranchMul64 U:G:32, U:G:64, UZD:G:64 |
3506 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), |
3507 | // Invalid: BranchMul64 with numOperands = 4 |
3508 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3509 | // Invalid: BranchMul64 with numOperands = 5 |
3510 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3511 | // BranchMul64 U:G:32, U:G:64, U:G:64, S:G:64, S:G:64, ZD:G:64 |
3512 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Scratch, GP, Width64), ENCODE_INST_FORM(Arg::Scratch, GP, Width64), ENCODE_INST_FORM(Arg::ZDef, GP, Width64), |
3513 | // Invalid: BranchSub32 with numOperands = 0 |
3514 | |
3515 | // Invalid: BranchSub32 with numOperands = 1 |
3516 | INVALID_INST_FORM, |
3517 | // Invalid: BranchSub32 with numOperands = 2 |
3518 | INVALID_INST_FORM, INVALID_INST_FORM, |
3519 | // BranchSub32 U:G:32, U:G:32, UZD:G:32 |
3520 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
3521 | // Invalid: BranchSub32 with numOperands = 4 |
3522 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3523 | // Invalid: BranchSub32 with numOperands = 5 |
3524 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3525 | // Invalid: BranchSub32 with numOperands = 6 |
3526 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3527 | // Invalid: BranchSub64 with numOperands = 0 |
3528 | |
3529 | // Invalid: BranchSub64 with numOperands = 1 |
3530 | INVALID_INST_FORM, |
3531 | // Invalid: BranchSub64 with numOperands = 2 |
3532 | INVALID_INST_FORM, INVALID_INST_FORM, |
3533 | // BranchSub64 U:G:32, U:G:64, UD:G:64 |
3534 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::UseDef, GP, Width64), |
3535 | // Invalid: BranchSub64 with numOperands = 4 |
3536 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3537 | // Invalid: BranchSub64 with numOperands = 5 |
3538 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3539 | // Invalid: BranchSub64 with numOperands = 6 |
3540 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3541 | // Invalid: BranchNeg32 with numOperands = 0 |
3542 | |
3543 | // Invalid: BranchNeg32 with numOperands = 1 |
3544 | INVALID_INST_FORM, |
3545 | // BranchNeg32 U:G:32, UZD:G:32 |
3546 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width32), |
3547 | // Invalid: BranchNeg32 with numOperands = 3 |
3548 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3549 | // Invalid: BranchNeg32 with numOperands = 4 |
3550 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3551 | // Invalid: BranchNeg32 with numOperands = 5 |
3552 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3553 | // Invalid: BranchNeg32 with numOperands = 6 |
3554 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3555 | // Invalid: BranchNeg64 with numOperands = 0 |
3556 | |
3557 | // Invalid: BranchNeg64 with numOperands = 1 |
3558 | INVALID_INST_FORM, |
3559 | // BranchNeg64 U:G:32, UZD:G:64 |
3560 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::UseZDef, GP, Width64), |
3561 | // Invalid: BranchNeg64 with numOperands = 3 |
3562 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3563 | // Invalid: BranchNeg64 with numOperands = 4 |
3564 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3565 | // Invalid: BranchNeg64 with numOperands = 5 |
3566 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3567 | // Invalid: BranchNeg64 with numOperands = 6 |
3568 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3569 | // Invalid: MoveConditionally32 with numOperands = 0 |
3570 | |
3571 | // Invalid: MoveConditionally32 with numOperands = 1 |
3572 | INVALID_INST_FORM, |
3573 | // Invalid: MoveConditionally32 with numOperands = 2 |
3574 | INVALID_INST_FORM, INVALID_INST_FORM, |
3575 | // Invalid: MoveConditionally32 with numOperands = 3 |
3576 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3577 | // Invalid: MoveConditionally32 with numOperands = 4 |
3578 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3579 | // MoveConditionally32 U:G:32, U:G:32, U:G:32, U:G:Ptr, UD:G:Ptr |
3580 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3581 | // MoveConditionally32 U:G:32, U:G:32, U:G:32, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3582 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3583 | // Invalid: MoveConditionally64 with numOperands = 0 |
3584 | |
3585 | // Invalid: MoveConditionally64 with numOperands = 1 |
3586 | INVALID_INST_FORM, |
3587 | // Invalid: MoveConditionally64 with numOperands = 2 |
3588 | INVALID_INST_FORM, INVALID_INST_FORM, |
3589 | // Invalid: MoveConditionally64 with numOperands = 3 |
3590 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3591 | // Invalid: MoveConditionally64 with numOperands = 4 |
3592 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3593 | // MoveConditionally64 U:G:32, U:G:64, U:G:64, U:G:Ptr, UD:G:Ptr |
3594 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3595 | // MoveConditionally64 U:G:32, U:G:64, U:G:64, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3596 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3597 | // Invalid: MoveConditionallyTest32 with numOperands = 0 |
3598 | |
3599 | // Invalid: MoveConditionallyTest32 with numOperands = 1 |
3600 | INVALID_INST_FORM, |
3601 | // Invalid: MoveConditionallyTest32 with numOperands = 2 |
3602 | INVALID_INST_FORM, INVALID_INST_FORM, |
3603 | // Invalid: MoveConditionallyTest32 with numOperands = 3 |
3604 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3605 | // Invalid: MoveConditionallyTest32 with numOperands = 4 |
3606 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3607 | // MoveConditionallyTest32 U:G:32, U:G:32, U:G:32, U:G:Ptr, UD:G:Ptr |
3608 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3609 | // MoveConditionallyTest32 U:G:32, U:G:32, U:G:32, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3610 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3611 | // Invalid: MoveConditionallyTest64 with numOperands = 0 |
3612 | |
3613 | // Invalid: MoveConditionallyTest64 with numOperands = 1 |
3614 | INVALID_INST_FORM, |
3615 | // Invalid: MoveConditionallyTest64 with numOperands = 2 |
3616 | INVALID_INST_FORM, INVALID_INST_FORM, |
3617 | // Invalid: MoveConditionallyTest64 with numOperands = 3 |
3618 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3619 | // Invalid: MoveConditionallyTest64 with numOperands = 4 |
3620 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3621 | // MoveConditionallyTest64 U:G:32, U:G:64, U:G:64, U:G:Ptr, UD:G:Ptr |
3622 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3623 | // MoveConditionallyTest64 U:G:32, U:G:32, U:G:32, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3624 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3625 | // Invalid: MoveConditionallyDouble with numOperands = 0 |
3626 | |
3627 | // Invalid: MoveConditionallyDouble with numOperands = 1 |
3628 | INVALID_INST_FORM, |
3629 | // Invalid: MoveConditionallyDouble with numOperands = 2 |
3630 | INVALID_INST_FORM, INVALID_INST_FORM, |
3631 | // Invalid: MoveConditionallyDouble with numOperands = 3 |
3632 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3633 | // Invalid: MoveConditionallyDouble with numOperands = 4 |
3634 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3635 | // MoveConditionallyDouble U:G:32, U:F:64, U:F:64, U:G:Ptr, UD:G:Ptr |
3636 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3637 | // MoveConditionallyDouble U:G:32, U:F:64, U:F:64, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3638 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3639 | // Invalid: MoveConditionallyFloat with numOperands = 0 |
3640 | |
3641 | // Invalid: MoveConditionallyFloat with numOperands = 1 |
3642 | INVALID_INST_FORM, |
3643 | // Invalid: MoveConditionallyFloat with numOperands = 2 |
3644 | INVALID_INST_FORM, INVALID_INST_FORM, |
3645 | // Invalid: MoveConditionallyFloat with numOperands = 3 |
3646 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3647 | // Invalid: MoveConditionallyFloat with numOperands = 4 |
3648 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3649 | // MoveConditionallyFloat U:G:32, U:F:32, U:F:32, U:G:Ptr, UD:G:Ptr |
3650 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::UseDef, GP, POINTER_WIDTH), |
3651 | // MoveConditionallyFloat U:G:32, U:F:32, U:F:32, U:G:Ptr, U:G:Ptr, D:G:Ptr |
3652 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Use, GP, POINTER_WIDTH), ENCODE_INST_FORM(Arg::Def, GP, POINTER_WIDTH), |
3653 | // Invalid: MoveDoubleConditionally32 with numOperands = 0 |
3654 | |
3655 | // Invalid: MoveDoubleConditionally32 with numOperands = 1 |
3656 | INVALID_INST_FORM, |
3657 | // Invalid: MoveDoubleConditionally32 with numOperands = 2 |
3658 | INVALID_INST_FORM, INVALID_INST_FORM, |
3659 | // Invalid: MoveDoubleConditionally32 with numOperands = 3 |
3660 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3661 | // Invalid: MoveDoubleConditionally32 with numOperands = 4 |
3662 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3663 | // Invalid: MoveDoubleConditionally32 with numOperands = 5 |
3664 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3665 | // MoveDoubleConditionally32 U:G:32, U:G:32, U:G:32, U:F:64, U:F:64, D:F:64 |
3666 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3667 | // Invalid: MoveDoubleConditionally64 with numOperands = 0 |
3668 | |
3669 | // Invalid: MoveDoubleConditionally64 with numOperands = 1 |
3670 | INVALID_INST_FORM, |
3671 | // Invalid: MoveDoubleConditionally64 with numOperands = 2 |
3672 | INVALID_INST_FORM, INVALID_INST_FORM, |
3673 | // Invalid: MoveDoubleConditionally64 with numOperands = 3 |
3674 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3675 | // Invalid: MoveDoubleConditionally64 with numOperands = 4 |
3676 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3677 | // Invalid: MoveDoubleConditionally64 with numOperands = 5 |
3678 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3679 | // MoveDoubleConditionally64 U:G:32, U:G:64, U:G:64, U:F:64, U:F:64, D:F:64 |
3680 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3681 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 0 |
3682 | |
3683 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 1 |
3684 | INVALID_INST_FORM, |
3685 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 2 |
3686 | INVALID_INST_FORM, INVALID_INST_FORM, |
3687 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 3 |
3688 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3689 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 4 |
3690 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3691 | // Invalid: MoveDoubleConditionallyTest32 with numOperands = 5 |
3692 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3693 | // MoveDoubleConditionallyTest32 U:G:32, U:G:32, U:G:32, U:F:64, U:F:64, D:F:64 |
3694 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3695 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 0 |
3696 | |
3697 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 1 |
3698 | INVALID_INST_FORM, |
3699 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 2 |
3700 | INVALID_INST_FORM, INVALID_INST_FORM, |
3701 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 3 |
3702 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3703 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 4 |
3704 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3705 | // Invalid: MoveDoubleConditionallyTest64 with numOperands = 5 |
3706 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3707 | // MoveDoubleConditionallyTest64 U:G:32, U:G:64, U:G:64, U:F:64, U:F:64, D:F:64 |
3708 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, GP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3709 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 0 |
3710 | |
3711 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 1 |
3712 | INVALID_INST_FORM, |
3713 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 2 |
3714 | INVALID_INST_FORM, INVALID_INST_FORM, |
3715 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 3 |
3716 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3717 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 4 |
3718 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3719 | // Invalid: MoveDoubleConditionallyDouble with numOperands = 5 |
3720 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3721 | // MoveDoubleConditionallyDouble U:G:32, U:F:64, U:F:64, U:F:64, U:F:64, D:F:64 |
3722 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3723 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 0 |
3724 | |
3725 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 1 |
3726 | INVALID_INST_FORM, |
3727 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 2 |
3728 | INVALID_INST_FORM, INVALID_INST_FORM, |
3729 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 3 |
3730 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3731 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 4 |
3732 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3733 | // Invalid: MoveDoubleConditionallyFloat with numOperands = 5 |
3734 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3735 | // MoveDoubleConditionallyFloat U:G:32, U:F:32, U:F:32, U:F:64, U:F:64, D:F:64 |
3736 | ENCODE_INST_FORM(Arg::Use, GP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width32), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Use, FP, Width64), ENCODE_INST_FORM(Arg::Def, FP, Width64), |
3737 | // MemoryFence |
3738 | |
3739 | // Invalid: MemoryFence with numOperands = 1 |
3740 | INVALID_INST_FORM, |
3741 | // Invalid: MemoryFence with numOperands = 2 |
3742 | INVALID_INST_FORM, INVALID_INST_FORM, |
3743 | // Invalid: MemoryFence with numOperands = 3 |
3744 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3745 | // Invalid: MemoryFence with numOperands = 4 |
3746 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3747 | // Invalid: MemoryFence with numOperands = 5 |
3748 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3749 | // Invalid: MemoryFence with numOperands = 6 |
3750 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3751 | // StoreFence |
3752 | |
3753 | // Invalid: StoreFence with numOperands = 1 |
3754 | INVALID_INST_FORM, |
3755 | // Invalid: StoreFence with numOperands = 2 |
3756 | INVALID_INST_FORM, INVALID_INST_FORM, |
3757 | // Invalid: StoreFence with numOperands = 3 |
3758 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3759 | // Invalid: StoreFence with numOperands = 4 |
3760 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3761 | // Invalid: StoreFence with numOperands = 5 |
3762 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3763 | // Invalid: StoreFence with numOperands = 6 |
3764 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3765 | // LoadFence |
3766 | |
3767 | // Invalid: LoadFence with numOperands = 1 |
3768 | INVALID_INST_FORM, |
3769 | // Invalid: LoadFence with numOperands = 2 |
3770 | INVALID_INST_FORM, INVALID_INST_FORM, |
3771 | // Invalid: LoadFence with numOperands = 3 |
3772 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3773 | // Invalid: LoadFence with numOperands = 4 |
3774 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3775 | // Invalid: LoadFence with numOperands = 5 |
3776 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3777 | // Invalid: LoadFence with numOperands = 6 |
3778 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3779 | // Jump |
3780 | |
3781 | // Invalid: Jump with numOperands = 1 |
3782 | INVALID_INST_FORM, |
3783 | // Invalid: Jump with numOperands = 2 |
3784 | INVALID_INST_FORM, INVALID_INST_FORM, |
3785 | // Invalid: Jump with numOperands = 3 |
3786 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3787 | // Invalid: Jump with numOperands = 4 |
3788 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3789 | // Invalid: Jump with numOperands = 5 |
3790 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3791 | // Invalid: Jump with numOperands = 6 |
3792 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3793 | // RetVoid |
3794 | |
3795 | // Invalid: RetVoid with numOperands = 1 |
3796 | INVALID_INST_FORM, |
3797 | // Invalid: RetVoid with numOperands = 2 |
3798 | INVALID_INST_FORM, INVALID_INST_FORM, |
3799 | // Invalid: RetVoid with numOperands = 3 |
3800 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3801 | // Invalid: RetVoid with numOperands = 4 |
3802 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3803 | // Invalid: RetVoid with numOperands = 5 |
3804 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3805 | // Invalid: RetVoid with numOperands = 6 |
3806 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3807 | // Invalid: Ret32 with numOperands = 0 |
3808 | |
3809 | // Ret32 U:G:32 |
3810 | ENCODE_INST_FORM(Arg::Use, GP, Width32), |
3811 | // Invalid: Ret32 with numOperands = 2 |
3812 | INVALID_INST_FORM, INVALID_INST_FORM, |
3813 | // Invalid: Ret32 with numOperands = 3 |
3814 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3815 | // Invalid: Ret32 with numOperands = 4 |
3816 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3817 | // Invalid: Ret32 with numOperands = 5 |
3818 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3819 | // Invalid: Ret32 with numOperands = 6 |
3820 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3821 | // Invalid: Ret64 with numOperands = 0 |
3822 | |
3823 | // Ret64 U:G:64 |
3824 | ENCODE_INST_FORM(Arg::Use, GP, Width64), |
3825 | // Invalid: Ret64 with numOperands = 2 |
3826 | INVALID_INST_FORM, INVALID_INST_FORM, |
3827 | // Invalid: Ret64 with numOperands = 3 |
3828 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3829 | // Invalid: Ret64 with numOperands = 4 |
3830 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3831 | // Invalid: Ret64 with numOperands = 5 |
3832 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3833 | // Invalid: Ret64 with numOperands = 6 |
3834 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3835 | // Invalid: RetFloat with numOperands = 0 |
3836 | |
3837 | // RetFloat U:F:32 |
3838 | ENCODE_INST_FORM(Arg::Use, FP, Width32), |
3839 | // Invalid: RetFloat with numOperands = 2 |
3840 | INVALID_INST_FORM, INVALID_INST_FORM, |
3841 | // Invalid: RetFloat with numOperands = 3 |
3842 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3843 | // Invalid: RetFloat with numOperands = 4 |
3844 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3845 | // Invalid: RetFloat with numOperands = 5 |
3846 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3847 | // Invalid: RetFloat with numOperands = 6 |
3848 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3849 | // Invalid: RetDouble with numOperands = 0 |
3850 | |
3851 | // RetDouble U:F:64 |
3852 | ENCODE_INST_FORM(Arg::Use, FP, Width64), |
3853 | // Invalid: RetDouble with numOperands = 2 |
3854 | INVALID_INST_FORM, INVALID_INST_FORM, |
3855 | // Invalid: RetDouble with numOperands = 3 |
3856 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3857 | // Invalid: RetDouble with numOperands = 4 |
3858 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3859 | // Invalid: RetDouble with numOperands = 5 |
3860 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3861 | // Invalid: RetDouble with numOperands = 6 |
3862 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3863 | // Oops |
3864 | |
3865 | // Invalid: Oops with numOperands = 1 |
3866 | INVALID_INST_FORM, |
3867 | // Invalid: Oops with numOperands = 2 |
3868 | INVALID_INST_FORM, INVALID_INST_FORM, |
3869 | // Invalid: Oops with numOperands = 3 |
3870 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3871 | // Invalid: Oops with numOperands = 4 |
3872 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3873 | // Invalid: Oops with numOperands = 5 |
3874 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3875 | // Invalid: Oops with numOperands = 6 |
3876 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3877 | // Invalid: EntrySwitch with numOperands = 0 |
3878 | |
3879 | // Invalid: EntrySwitch with numOperands = 1 |
3880 | INVALID_INST_FORM, |
3881 | // Invalid: EntrySwitch with numOperands = 2 |
3882 | INVALID_INST_FORM, INVALID_INST_FORM, |
3883 | // Invalid: EntrySwitch with numOperands = 3 |
3884 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3885 | // Invalid: EntrySwitch with numOperands = 4 |
3886 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3887 | // Invalid: EntrySwitch with numOperands = 5 |
3888 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3889 | // Invalid: EntrySwitch with numOperands = 6 |
3890 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3891 | // Invalid: Shuffle with numOperands = 0 |
3892 | |
3893 | // Invalid: Shuffle with numOperands = 1 |
3894 | INVALID_INST_FORM, |
3895 | // Invalid: Shuffle with numOperands = 2 |
3896 | INVALID_INST_FORM, INVALID_INST_FORM, |
3897 | // Invalid: Shuffle with numOperands = 3 |
3898 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3899 | // Invalid: Shuffle with numOperands = 4 |
3900 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3901 | // Invalid: Shuffle with numOperands = 5 |
3902 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3903 | // Invalid: Shuffle with numOperands = 6 |
3904 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3905 | // Invalid: Patch with numOperands = 0 |
3906 | |
3907 | // Invalid: Patch with numOperands = 1 |
3908 | INVALID_INST_FORM, |
3909 | // Invalid: Patch with numOperands = 2 |
3910 | INVALID_INST_FORM, INVALID_INST_FORM, |
3911 | // Invalid: Patch with numOperands = 3 |
3912 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3913 | // Invalid: Patch with numOperands = 4 |
3914 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3915 | // Invalid: Patch with numOperands = 5 |
3916 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3917 | // Invalid: Patch with numOperands = 6 |
3918 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3919 | // Invalid: CCall with numOperands = 0 |
3920 | |
3921 | // Invalid: CCall with numOperands = 1 |
3922 | INVALID_INST_FORM, |
3923 | // Invalid: CCall with numOperands = 2 |
3924 | INVALID_INST_FORM, INVALID_INST_FORM, |
3925 | // Invalid: CCall with numOperands = 3 |
3926 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3927 | // Invalid: CCall with numOperands = 4 |
3928 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3929 | // Invalid: CCall with numOperands = 5 |
3930 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3931 | // Invalid: CCall with numOperands = 6 |
3932 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3933 | // Invalid: ColdCCall with numOperands = 0 |
3934 | |
3935 | // Invalid: ColdCCall with numOperands = 1 |
3936 | INVALID_INST_FORM, |
3937 | // Invalid: ColdCCall with numOperands = 2 |
3938 | INVALID_INST_FORM, INVALID_INST_FORM, |
3939 | // Invalid: ColdCCall with numOperands = 3 |
3940 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3941 | // Invalid: ColdCCall with numOperands = 4 |
3942 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3943 | // Invalid: ColdCCall with numOperands = 5 |
3944 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3945 | // Invalid: ColdCCall with numOperands = 6 |
3946 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3947 | // Invalid: WasmBoundsCheck with numOperands = 0 |
3948 | |
3949 | // Invalid: WasmBoundsCheck with numOperands = 1 |
3950 | INVALID_INST_FORM, |
3951 | // Invalid: WasmBoundsCheck with numOperands = 2 |
3952 | INVALID_INST_FORM, INVALID_INST_FORM, |
3953 | // Invalid: WasmBoundsCheck with numOperands = 3 |
3954 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3955 | // Invalid: WasmBoundsCheck with numOperands = 4 |
3956 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3957 | // Invalid: WasmBoundsCheck with numOperands = 5 |
3958 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3959 | // Invalid: WasmBoundsCheck with numOperands = 6 |
3960 | INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, INVALID_INST_FORM, |
3961 | }; |
3962 | void Inst::forEachArgCustom(ScopedLambda<EachArgCallback> lambda) |
3963 | { |
3964 | switch (kind.opcode) { |
3965 | case Opcode::EntrySwitch: |
3966 | EntrySwitchCustom::forEachArg(*this, lambda); |
3967 | break; |
3968 | case Opcode::Shuffle: |
3969 | ShuffleCustom::forEachArg(*this, lambda); |
3970 | break; |
3971 | case Opcode::Patch: |
3972 | PatchCustom::forEachArg(*this, lambda); |
3973 | break; |
3974 | case Opcode::CCall: |
3975 | CCallCustom::forEachArg(*this, lambda); |
3976 | break; |
3977 | case Opcode::ColdCCall: |
3978 | ColdCCallCustom::forEachArg(*this, lambda); |
3979 | break; |
3980 | case Opcode::WasmBoundsCheck: |
3981 | WasmBoundsCheckCustom::forEachArg(*this, lambda); |
3982 | break; |
3983 | default: |
3984 | dataLog("Bad call to forEachArgCustom, not custom opcode: " , kind, "\n" ); |
3985 | RELEASE_ASSERT_NOT_REACHED(); |
3986 | } |
3987 | } |
3988 | bool Inst::isValidForm() |
3989 | { |
3990 | switch (this->kind.opcode) { |
3991 | case Opcode::Nop: |
3992 | switch (this->args.size()) { |
3993 | case 0: |
3994 | OPGEN_RETURN(true); |
3995 | break; |
3996 | break; |
3997 | default: |
3998 | break; |
3999 | } |
4000 | break; |
4001 | case Opcode::Add32: |
4002 | switch (this->args.size()) { |
4003 | case 3: |
4004 | switch (this->args[0].kind()) { |
4005 | case Arg::Imm: |
4006 | switch (this->args[1].kind()) { |
4007 | case Arg::Tmp: |
4008 | switch (this->args[2].kind()) { |
4009 | case Arg::Tmp: |
4010 | if (!Arg::isValidImmForm(args[0].value())) |
4011 | OPGEN_RETURN(false); |
4012 | if (!args[1].tmp().isGP()) |
4013 | OPGEN_RETURN(false); |
4014 | if (!args[2].tmp().isGP()) |
4015 | OPGEN_RETURN(false); |
4016 | OPGEN_RETURN(true); |
4017 | break; |
4018 | break; |
4019 | default: |
4020 | break; |
4021 | } |
4022 | break; |
4023 | default: |
4024 | break; |
4025 | } |
4026 | break; |
4027 | case Arg::Tmp: |
4028 | switch (this->args[1].kind()) { |
4029 | case Arg::Tmp: |
4030 | switch (this->args[2].kind()) { |
4031 | case Arg::Tmp: |
4032 | if (!args[0].tmp().isGP()) |
4033 | OPGEN_RETURN(false); |
4034 | if (!args[1].tmp().isGP()) |
4035 | OPGEN_RETURN(false); |
4036 | if (!args[2].tmp().isGP()) |
4037 | OPGEN_RETURN(false); |
4038 | OPGEN_RETURN(true); |
4039 | break; |
4040 | break; |
4041 | default: |
4042 | break; |
4043 | } |
4044 | break; |
4045 | default: |
4046 | break; |
4047 | } |
4048 | break; |
4049 | default: |
4050 | break; |
4051 | } |
4052 | break; |
4053 | case 2: |
4054 | switch (this->args[0].kind()) { |
4055 | case Arg::Tmp: |
4056 | switch (this->args[1].kind()) { |
4057 | case Arg::Tmp: |
4058 | if (!args[0].tmp().isGP()) |
4059 | OPGEN_RETURN(false); |
4060 | if (!args[1].tmp().isGP()) |
4061 | OPGEN_RETURN(false); |
4062 | OPGEN_RETURN(true); |
4063 | break; |
4064 | break; |
4065 | case Arg::Addr: |
4066 | case Arg::Stack: |
4067 | case Arg::CallArg: |
4068 | #if CPU(X86) || CPU(X86_64) |
4069 | if (!args[0].tmp().isGP()) |
4070 | OPGEN_RETURN(false); |
4071 | if (!Arg::isValidAddrForm(args[1].offset())) |
4072 | OPGEN_RETURN(false); |
4073 | OPGEN_RETURN(true); |
4074 | #endif |
4075 | break; |
4076 | break; |
4077 | case Arg::Index: |
4078 | #if CPU(X86) || CPU(X86_64) |
4079 | if (!args[0].tmp().isGP()) |
4080 | OPGEN_RETURN(false); |
4081 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
4082 | OPGEN_RETURN(false); |
4083 | OPGEN_RETURN(true); |
4084 | #endif |
4085 | break; |
4086 | break; |
4087 | default: |
4088 | break; |
4089 | } |
4090 | break; |
4091 | case Arg::Imm: |
4092 | switch (this->args[1].kind()) { |
4093 | case Arg::Addr: |
4094 | case Arg::Stack: |
4095 | case Arg::CallArg: |
4096 | #if CPU(X86) || CPU(X86_64) |
4097 | if (!Arg::isValidImmForm(args[0].value())) |
4098 | OPGEN_RETURN(false); |
4099 | if (!Arg::isValidAddrForm(args[1].offset())) |
4100 | OPGEN_RETURN(false); |
4101 | OPGEN_RETURN(true); |
4102 | #endif |
4103 | break; |
4104 | break; |
4105 | case Arg::Index: |
4106 | #if CPU(X86) || CPU(X86_64) |
4107 | if (!Arg::isValidImmForm(args[0].value())) |
4108 | OPGEN_RETURN(false); |
4109 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
4110 | OPGEN_RETURN(false); |
4111 | OPGEN_RETURN(true); |
4112 | #endif |
4113 | break; |
4114 | break; |
4115 | case Arg::Tmp: |
4116 | if (!Arg::isValidImmForm(args[0].value())) |
4117 | OPGEN_RETURN(false); |
4118 | if (!args[1].tmp().isGP()) |
4119 | OPGEN_RETURN(false); |
4120 | OPGEN_RETURN(true); |
4121 | break; |
4122 | break; |
4123 | default: |
4124 | break; |
4125 | } |
4126 | break; |
4127 | case Arg::Addr: |
4128 | case Arg::Stack: |
4129 | case Arg::CallArg: |
4130 | switch (this->args[1].kind()) { |
4131 | case Arg::Tmp: |
4132 | #if CPU(X86) || CPU(X86_64) |
4133 | if (!Arg::isValidAddrForm(args[0].offset())) |
4134 | OPGEN_RETURN(false); |
4135 | if (!args[1].tmp().isGP()) |
4136 | OPGEN_RETURN(false); |
4137 | OPGEN_RETURN(true); |
4138 | #endif |
4139 | break; |
4140 | break; |
4141 | default: |
4142 | break; |
4143 | } |
4144 | break; |
4145 | case Arg::Index: |
4146 | switch (this->args[1].kind()) { |
4147 | case Arg::Tmp: |
4148 | #if CPU(X86) || CPU(X86_64) |
4149 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
4150 | OPGEN_RETURN(false); |
4151 | if (!args[1].tmp().isGP()) |
4152 | OPGEN_RETURN(false); |
4153 | OPGEN_RETURN(true); |
4154 | #endif |
4155 | break; |
4156 | break; |
4157 | default: |
4158 | break; |
4159 | } |
4160 | break; |
4161 | default: |
4162 | break; |
4163 | } |
4164 | break; |
4165 | default: |
4166 | break; |
4167 | } |
4168 | break; |
4169 | case Opcode::Add8: |
4170 | switch (this->args.size()) { |
4171 | case 2: |
4172 | switch (this->args[0].kind()) { |
4173 | case Arg::Imm: |
4174 | switch (this->args[1].kind()) { |
4175 | case Arg::Addr: |
4176 | case Arg::Stack: |
4177 | case Arg::CallArg: |
4178 | #if CPU(X86) || CPU(X86_64) |
4179 | if (!Arg::isValidImmForm(args[0].value())) |
4180 | OPGEN_RETURN(false); |
4181 | if (!Arg::isValidAddrForm(args[1].offset())) |
4182 | OPGEN_RETURN(false); |
4183 | OPGEN_RETURN(true); |
4184 | #endif |
4185 | break; |
4186 | break; |
4187 | case Arg::Index: |
4188 | #if CPU(X86) || CPU(X86_64) |
4189 | if (!Arg::isValidImmForm(args[0].value())) |
4190 | OPGEN_RETURN(false); |
4191 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
4192 | OPGEN_RETURN(false); |
4193 | OPGEN_RETURN(true); |
4194 | #endif |
4195 | break; |
4196 | break; |
4197 | default: |
4198 | break; |
4199 | } |
4200 | break; |
4201 | case Arg::Tmp: |
4202 | switch (this->args[1].kind()) { |
4203 | case Arg::Addr: |
4204 | case Arg::Stack: |
4205 | case Arg::CallArg: |
4206 | #if CPU(X86) || CPU(X86_64) |
4207 | if (!args[0].tmp().isGP()) |
4208 | OPGEN_RETURN(false); |
4209 | if (!Arg::isValidAddrForm(args[1].offset())) |
4210 | OPGEN_RETURN(false); |
4211 | OPGEN_RETURN(true); |
4212 | #endif |
4213 | break; |
4214 | break; |
4215 | case Arg::Index: |
4216 | #if CPU(X86) || CPU(X86_64) |
4217 | if (!args[0].tmp().isGP()) |
4218 | OPGEN_RETURN(false); |
4219 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
4220 | OPGEN_RETURN(false); |
4221 | OPGEN_RETURN(true); |
4222 | #endif |
4223 | break; |
4224 | break; |
4225 | default: |
4226 | break; |
4227 | } |
4228 | break; |
4229 | default: |
4230 | break; |
4231 | } |
4232 | break; |
4233 | default: |
4234 | break; |
4235 | } |
4236 | break; |
4237 | case Opcode::Add16: |
4238 | switch (this->args.size()) { |
4239 | case 2: |
4240 | switch (this->args[0].kind()) { |
4241 | case Arg::Imm: |
4242 | switch (this->args[1].kind()) { |
4243 | case Arg::Addr: |
4244 | case Arg::Stack: |
4245 | case Arg::CallArg: |
4246 | #if CPU(X86) || CPU(X86_64) |
4247 | if (!Arg::isValidImmForm(args[0].value())) |
4248 | OPGEN_RETURN(false); |
4249 | if (!Arg::isValidAddrForm(args[1].offset())) |
4250 | OPGEN_RETURN(false); |
4251 | OPGEN_RETURN(true); |
4252 | #endif |
4253 | break; |
4254 | break; |
4255 | case Arg::Index: |
4256 | #if CPU(X86) || CPU(X86_64) |
4257 | if (!Arg::isValidImmForm(args[0].value())) |
4258 | OPGEN_RETURN(false); |
4259 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
4260 | OPGEN_RETURN(false); |
4261 | OPGEN_RETURN(true); |
4262 | #endif |
4263 | break; |
4264 | break; |
4265 | default: |
4266 | break; |
4267 | } |
4268 | break; |
4269 | case Arg::Tmp: |
4270 | switch (this->args[1].kind()) { |
4271 | case Arg::Addr: |
4272 | case Arg::Stack: |
4273 | case Arg::CallArg: |
4274 | #if CPU(X86) || CPU(X86_64) |
4275 | if (!args[0].tmp().isGP()) |
4276 | OPGEN_RETURN(false); |
4277 | if (!Arg::isValidAddrForm(args[1].offset())) |
4278 | OPGEN_RETURN(false); |
4279 | OPGEN_RETURN(true); |
4280 | #endif |
4281 | break; |
4282 | break; |
4283 | case Arg::Index: |
4284 | #if CPU(X86) || CPU(X86_64) |
4285 | if (!args[0].tmp().isGP()) |
4286 | OPGEN_RETURN(false); |
4287 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
4288 | OPGEN_RETURN(false); |
4289 | OPGEN_RETURN(true); |
4290 | #endif |
4291 | break; |
4292 | break; |
4293 | default: |
4294 | break; |
4295 | } |
4296 | break; |
4297 | default: |
4298 | break; |
4299 | } |
4300 | break; |
4301 | default: |
4302 | break; |
4303 | } |
4304 | break; |
4305 | case Opcode::Add64: |
4306 | switch (this->args.size()) { |
4307 | case 2: |
4308 | switch (this->args[0].kind()) { |
4309 | case Arg::Tmp: |
4310 | switch (this->args[1].kind()) { |
4311 | case Arg::Tmp: |
4312 | #if CPU(X86_64) || CPU(ARM64) |
4313 | if (!args[0].tmp().isGP()) |
4314 | OPGEN_RETURN(false); |
4315 | if (!args[1].tmp().isGP()) |
4316 | OPGEN_RETURN(false); |
4317 | OPGEN_RETURN(true); |
4318 | #endif |
4319 | break; |
4320 | break; |
4321 | case Arg::Addr: |
4322 | case Arg::Stack: |
4323 | case Arg::CallArg: |
4324 | #if CPU(X86_64) |
4325 | if (!args[0].tmp().isGP()) |
4326 | OPGEN_RETURN(false); |
4327 | if (!Arg::isValidAddrForm(args[1].offset())) |
4328 | OPGEN_RETURN(false); |
4329 | OPGEN_RETURN(true); |
4330 | #endif |
4331 | break; |
4332 | break; |
4333 | case Arg::Index: |
4334 | #if CPU(X86_64) |
4335 | if (!args[0].tmp().isGP()) |
4336 | OPGEN_RETURN(false); |
4337 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
4338 | OPGEN_RETURN(false); |
4339 | OPGEN_RETURN(true); |
4340 | #endif |
4341 | break; |
4342 | break; |
4343 | default: |
4344 | break; |
4345 | } |
4346 | break; |
4347 | case Arg::Imm: |
4348 | switch (this->args[1].kind()) { |
4349 | case Arg::Addr: |
4350 | case Arg::Stack: |
4351 | case Arg::CallArg: |
4352 | #if CPU(X86_64) |
4353 | if (!Arg::isValidImmForm(args[0].value())) |
4354 | OPGEN_RETURN(false); |
4355 | if (!Arg::isValidAddrForm(args[1].offset())) |
4356 | OPGEN_RETURN(false); |
4357 | OPGEN_RETURN(true); |
4358 | #endif |
4359 | break; |
4360 | break; |
4361 | case Arg::Index: |
4362 | #if CPU(X86_64) |
4363 | if (!Arg::isValidImmForm(args[0].value())) |
4364 | OPGEN_RETURN(false); |
4365 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
4366 | OPGEN_RETURN(false); |
4367 | OPGEN_RETURN(true); |
4368 | #endif |
4369 | break; |
4370 | break; |
4371 | case Arg::Tmp: |
4372 | #if CPU(X86_64) || CPU(ARM64) |
4373 | if (!Arg::isValidImmForm(args[0].value())) |
4374 | OPGEN_RETURN(false); |
4375 | if (!args[1].tmp().isGP()) |
4376 | OPGEN_RETURN(false); |
4377 | OPGEN_RETURN(true); |
4378 | #endif |
4379 | break; |
4380 | break; |
4381 | default: |
4382 | break; |
4383 | } |
4384 | break; |
4385 | case Arg::Addr: |
4386 | case Arg::Stack: |
4387 | case Arg::CallArg: |
4388 | switch (this->args[1].kind()) { |
4389 | case Arg::Tmp: |
4390 | #if CPU(X86_64) |
4391 | if (!Arg::isValidAddrForm(args[0].offset())) |
4392 | OPGEN_RETURN(false); |
4393 | if (!args[1].tmp().isGP()) |
4394 | OPGEN_RETURN(false); |
4395 | OPGEN_RETURN(true); |
4396 | #endif |
4397 | break; |
4398 | break; |
4399 | default: |
4400 | break; |
4401 | } |
4402 | break; |
4403 | case Arg::Index: |
4404 | switch (this->args[1].kind()) { |
4405 | case Arg::Tmp: |
4406 | #if CPU(X86_64) |
4407 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
4408 | OPGEN_RETURN(false); |
4409 | if (!args[1].tmp().isGP()) |
4410 | OPGEN_RETURN(false); |
4411 | OPGEN_RETURN(true); |
4412 | #endif |
4413 | break; |
4414 | break; |
4415 | default: |
4416 | break; |
4417 | } |
4418 | break; |
4419 | default: |
4420 | break; |
4421 | } |
4422 | break; |
4423 | case 3: |
4424 | switch (this->args[0].kind()) { |
4425 | case Arg::Imm: |
4426 | switch (this->args[1].kind()) { |
4427 | case Arg::Tmp: |
4428 | switch (this->args[2].kind()) { |
4429 | case Arg::Tmp: |
4430 | #if CPU(X86_64) || CPU(ARM64) |
4431 | if (!Arg::isValidImmForm(args[0].value())) |
4432 | OPGEN_RETURN(false); |
4433 | if (!args[1].tmp().isGP()) |
4434 | OPGEN_RETURN(false); |
4435 | if (!args[2].tmp().isGP()) |
4436 | OPGEN_RETURN(false); |
4437 | OPGEN_RETURN(true); |
4438 | #endif |
4439 | break; |
4440 | break; |
4441 | default: |
4442 | break; |
4443 | } |
4444 | break; |
4445 | default: |
4446 | break; |
4447 | } |
4448 | break; |
4449 | case Arg::Tmp: |
4450 | switch (this->args[1].kind()) { |
4451 | case Arg::Tmp: |
4452 | switch (this->args[2].kind()) { |
4453 | case Arg::Tmp: |
4454 | #if CPU(X86_64) || CPU(ARM64) |
4455 | if (!args[0].tmp().isGP()) |
4456 | OPGEN_RETURN(false); |
4457 | if (!args[1].tmp().isGP()) |
4458 | OPGEN_RETURN(false); |
4459 | if (!args[2].tmp().isGP()) |
4460 | OPGEN_RETURN(false); |
4461 | OPGEN_RETURN(true); |
4462 | #endif |
4463 | break; |
4464 | break; |
4465 | default: |
4466 | break; |
4467 | } |
4468 | break; |
4469 | default: |
4470 | break; |
4471 | } |
4472 | break; |
4473 | default: |
4474 | break; |
4475 | } |
4476 | break; |
4477 | default: |
4478 | break; |
4479 | } |
4480 | break; |
4481 | case Opcode::AddDouble: |
4482 | switch (this->args.size()) { |
4483 | case 3: |
4484 | switch (this->args[0].kind()) { |
4485 | case Arg::Tmp: |
4486 | switch (this->args[1].kind()) { |
4487 | case Arg::Tmp: |
4488 | switch (this->args[2].kind()) { |
4489 | case Arg::Tmp: |
4490 | if (!args[0].tmp().isFP()) |
4491 | OPGEN_RETURN(false); |
4492 | if (!args[1].tmp().isFP()) |
4493 | OPGEN_RETURN(false); |
4494 | if (!args[2].tmp().isFP()) |
4495 | OPGEN_RETURN(false); |
4496 | OPGEN_RETURN(true); |
4497 | break; |
4498 | break; |
4499 | default: |
4500 | break; |
4501 | } |
4502 | break; |
4503 | case Arg::Addr: |
4504 | case Arg::Stack: |
4505 | case Arg::CallArg: |
4506 | switch (this->args[2].kind()) { |
4507 | case Arg::Tmp: |
4508 | #if CPU(X86) || CPU(X86_64) |
4509 | if (!args[0].tmp().isFP()) |
4510 | OPGEN_RETURN(false); |
4511 | if (!Arg::isValidAddrForm(args[1].offset())) |
4512 | OPGEN_RETURN(false); |
4513 | if (!args[2].tmp().isFP()) |
4514 | OPGEN_RETURN(false); |
4515 | OPGEN_RETURN(true); |
4516 | #endif |
4517 | break; |
4518 | break; |
4519 | default: |
4520 | break; |
4521 | } |
4522 | break; |
4523 | default: |
4524 | break; |
4525 | } |
4526 | break; |
4527 | case Arg::Addr: |
4528 | case Arg::Stack: |
4529 | case Arg::CallArg: |
4530 | switch (this->args[1].kind()) { |
4531 | case Arg::Tmp: |
4532 | switch (this->args[2].kind()) { |
4533 | case Arg::Tmp: |
4534 | #if CPU(X86) || CPU(X86_64) |
4535 | if (!Arg::isValidAddrForm(args[0].offset())) |
4536 | OPGEN_RETURN(false); |
4537 | if (!args[1].tmp().isFP()) |
4538 | OPGEN_RETURN(false); |
4539 | if (!args[2].tmp().isFP()) |
4540 | OPGEN_RETURN(false); |
4541 | OPGEN_RETURN(true); |
4542 | #endif |
4543 | break; |
4544 | break; |
4545 | default: |
4546 | break; |
4547 | } |
4548 | break; |
4549 | default: |
4550 | break; |
4551 | } |
4552 | break; |
4553 | case Arg::Index: |
4554 | switch (this->args[1].kind()) { |
4555 | case Arg::Tmp: |
4556 | switch (this->args[2].kind()) { |
4557 | case Arg::Tmp: |
4558 | #if CPU(X86) || CPU(X86_64) |
4559 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
4560 | OPGEN_RETURN(false); |
4561 | if (!args[1].tmp().isFP()) |
4562 | OPGEN_RETURN(false); |
4563 | if (!args[2].tmp().isFP()) |
4564 | OPGEN_RETURN(false); |
4565 | OPGEN_RETURN(true); |
4566 | #endif |
4567 | break; |
4568 | break; |
4569 | default: |
4570 | break; |
4571 | } |
4572 | break; |
4573 | default: |
4574 | break; |
4575 | } |
4576 | break; |
4577 | default: |
4578 | break; |
4579 | } |
4580 | break; |
4581 | case 2: |
4582 | switch (this->args[0].kind()) { |
4583 | case Arg::Tmp: |
4584 | switch (this->args[1].kind()) { |
4585 | case Arg::Tmp: |
4586 | #if CPU(X86) || CPU(X86_64) |
4587 | if (!args[0].tmp().isFP()) |
4588 | OPGEN_RETURN(false); |
4589 | if (!args[1].tmp().isFP()) |
4590 | OPGEN_RETURN(false); |
4591 | OPGEN_RETURN(true); |
4592 | #endif |
4593 | break; |
4594 | break; |
4595 | default: |
4596 | break; |
4597 | } |
4598 | break; |
4599 | case Arg::Addr: |
4600 | case Arg::Stack: |
4601 | case Arg::CallArg: |
4602 | switch (this->args[1].kind()) { |
4603 | case Arg::Tmp: |
4604 | #if CPU(X86) || CPU(X86_64) |
4605 | if (!Arg::isValidAddrForm(args[0].offset())) |
4606 | OPGEN_RETURN(false); |
4607 | if (!args[1].tmp().isFP()) |
4608 | OPGEN_RETURN(false); |
4609 | OPGEN_RETURN(true); |
4610 | #endif |
4611 | break; |
4612 | break; |
4613 | default: |
4614 | break; |
4615 | } |
4616 | break; |
4617 | default: |
4618 | break; |
4619 | } |
4620 | break; |
4621 | default: |
4622 | break; |
4623 | } |
4624 | break; |
4625 | case Opcode::AddFloat: |
4626 | switch (this->args.size()) { |
4627 | case 3: |
4628 | switch (this->args[0].kind()) { |
4629 | case Arg::Tmp: |
4630 | switch (this->args[1].kind()) { |
4631 | case Arg::Tmp: |
4632 | switch (this->args[2].kind()) { |
4633 | case Arg::Tmp: |
4634 | if (!args[0].tmp().isFP()) |
4635 | OPGEN_RETURN(false); |
4636 | if (!args[1].tmp().isFP()) |
4637 | OPGEN_RETURN(false); |
4638 | if (!args[2].tmp().isFP()) |
4639 | OPGEN_RETURN(false); |
4640 | OPGEN_RETURN(true); |
4641 | break; |
4642 | break; |
4643 | default: |
4644 | break; |
4645 | } |
4646 | break; |
4647 | case Arg::Addr: |
4648 | case Arg::Stack: |
4649 | case Arg::CallArg: |
4650 | switch (this->args[2].kind()) { |
4651 | case Arg::Tmp: |
4652 | #if CPU(X86) || CPU(X86_64) |
4653 | if (!args[0].tmp().isFP()) |
4654 | OPGEN_RETURN(false); |
4655 | if (!Arg::isValidAddrForm(args[1].offset())) |
4656 | OPGEN_RETURN(false); |
4657 | if (!args[2].tmp().isFP()) |
4658 | OPGEN_RETURN(false); |
4659 | OPGEN_RETURN(true); |
4660 | #endif |
4661 | break; |
4662 | break; |
4663 | default: |
4664 | break; |
4665 | } |
4666 | break; |
4667 | default: |
4668 | break; |
4669 | } |
4670 | break; |
4671 | case Arg::Addr: |
4672 | case Arg::Stack: |
4673 | case Arg::CallArg: |
4674 | switch (this->args[1].kind()) { |
4675 | case Arg::Tmp: |
4676 | switch (this->args[2].kind()) { |
4677 | case Arg::Tmp: |
4678 | #if CPU(X86) || CPU(X86_64) |
4679 | if (!Arg::isValidAddrForm(args[0].offset())) |
4680 | OPGEN_RETURN(false); |
4681 | if (!args[1].tmp().isFP()) |
4682 | OPGEN_RETURN(false); |
4683 | if (!args[2].tmp().isFP()) |
4684 | OPGEN_RETURN(false); |
4685 | OPGEN_RETURN(true); |
4686 | #endif |
4687 | break; |
4688 | break; |
4689 | default: |
4690 | break; |
4691 | } |
4692 | break; |
4693 | default: |
4694 | break; |
4695 | } |
4696 | break; |
4697 | case Arg::Index: |
4698 | switch (this->args[1].kind()) { |
4699 | case Arg::Tmp: |
4700 | switch (this->args[2].kind()) { |
4701 | case Arg::Tmp: |
4702 | #if CPU(X86) || CPU(X86_64) |
4703 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
4704 | OPGEN_RETURN(false); |
4705 | if (!args[1].tmp().isFP()) |
4706 | OPGEN_RETURN(false); |
4707 | if (!args[2].tmp().isFP()) |
4708 | OPGEN_RETURN(false); |
4709 | OPGEN_RETURN(true); |
4710 | #endif |
4711 | break; |
4712 | break; |
4713 | default: |
4714 | break; |
4715 | } |
4716 | break; |
4717 | default: |
4718 | break; |
4719 | } |
4720 | break; |
4721 | default: |
4722 | break; |
4723 | } |
4724 | break; |
4725 | case 2: |
4726 | switch (this->args[0].kind()) { |
4727 | case Arg::Tmp: |
4728 | switch (this->args[1].kind()) { |
4729 | case Arg::Tmp: |
4730 | #if CPU(X86) || CPU(X86_64) |
4731 | if (!args[0].tmp().isFP()) |
4732 | OPGEN_RETURN(false); |
4733 | if (!args[1].tmp().isFP()) |
4734 | OPGEN_RETURN(false); |
4735 | OPGEN_RETURN(true); |
4736 | #endif |
4737 | break; |
4738 | break; |
4739 | default: |
4740 | break; |
4741 | } |
4742 | break; |
4743 | case Arg::Addr: |
4744 | case Arg::Stack: |
4745 | case Arg::CallArg: |
4746 | switch (this->args[1].kind()) { |
4747 | case Arg::Tmp: |
4748 | #if CPU(X86) || CPU(X86_64) |
4749 | if (!Arg::isValidAddrForm(args[0].offset())) |
4750 | OPGEN_RETURN(false); |
4751 | if (!args[1].tmp().isFP()) |
4752 | OPGEN_RETURN(false); |
4753 | OPGEN_RETURN(true); |
4754 | #endif |
4755 | break; |
4756 | break; |
4757 | default: |
4758 | break; |
4759 | } |
4760 | break; |
4761 | default: |
4762 | break; |
4763 | } |
4764 | break; |
4765 | default: |
4766 | break; |
4767 | } |
4768 | break; |
4769 | case Opcode::Sub32: |
4770 | switch (this->args.size()) { |
4771 | case 2: |
4772 | switch (this->args[0].kind()) { |
4773 | case Arg::Tmp: |
4774 | switch (this->args[1].kind()) { |
4775 | case Arg::Tmp: |
4776 | if (!args[0].tmp().isGP()) |
4777 | OPGEN_RETURN(false); |
4778 | if (!args[1].tmp().isGP()) |
4779 | OPGEN_RETURN(false); |
4780 | OPGEN_RETURN(true); |
4781 | break; |
4782 | break; |
4783 | case Arg::Addr: |
4784 | case Arg::Stack: |
4785 | case Arg::CallArg: |
4786 | #if CPU(X86) || CPU(X86_64) |
4787 | if (!args[0].tmp().isGP()) |
4788 | OPGEN_RETURN(false); |
4789 | if (!Arg::isValidAddrForm(args[1].offset())) |
4790 | OPGEN_RETURN(false); |
4791 | OPGEN_RETURN(true); |
4792 | #endif |
4793 | break; |
4794 | break; |
4795 | case Arg::Index: |
4796 | #if CPU(X86) || CPU(X86_64) |
4797 | if (!args[0].tmp().isGP()) |
4798 | OPGEN_RETURN(false); |
4799 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
4800 | OPGEN_RETURN(false); |
4801 | OPGEN_RETURN(true); |
4802 | #endif |
4803 | break; |
4804 | break; |
4805 | default: |
4806 | break; |
4807 | } |
4808 | break; |
4809 | case Arg::Imm: |
4810 | switch (this->args[1].kind()) { |
4811 | case Arg::Addr: |
4812 | case Arg::Stack: |
4813 | case Arg::CallArg: |
4814 | #if CPU(X86) || CPU(X86_64) |
4815 | if (!Arg::isValidImmForm(args[0].value())) |
4816 | OPGEN_RETURN(false); |
4817 | if (!Arg::isValidAddrForm(args[1].offset())) |
4818 | OPGEN_RETURN(false); |
4819 | OPGEN_RETURN(true); |
4820 | #endif |
4821 | break; |
4822 | break; |
4823 | case Arg::Index: |
4824 | #if CPU(X86) || CPU(X86_64) |
4825 | if (!Arg::isValidImmForm(args[0].value())) |
4826 | OPGEN_RETURN(false); |
4827 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
4828 | OPGEN_RETURN(false); |
4829 | OPGEN_RETURN(true); |
4830 | #endif |
4831 | break; |
4832 | break; |
4833 | case Arg::Tmp: |
4834 | if (!Arg::isValidImmForm(args[0].value())) |
4835 | OPGEN_RETURN(false); |
4836 | if (!args[1].tmp().isGP()) |
4837 | OPGEN_RETURN(false); |
4838 | OPGEN_RETURN(true); |
4839 | break; |
4840 | break; |
4841 | default: |
4842 | break; |
4843 | } |
4844 | break; |
4845 | case Arg::Addr: |
4846 | case Arg::Stack: |
4847 | case Arg::CallArg: |
4848 | switch (this->args[1].kind()) { |
4849 | case Arg::Tmp: |
4850 | #if CPU(X86) || CPU(X86_64) |
4851 | if (!Arg::isValidAddrForm(args[0].offset())) |
4852 | OPGEN_RETURN(false); |
4853 | if (!args[1].tmp().isGP()) |
4854 | OPGEN_RETURN(false); |
4855 | OPGEN_RETURN(true); |
4856 | #endif |
4857 | break; |
4858 | break; |
4859 | default: |
4860 | break; |
4861 | } |
4862 | break; |
4863 | case Arg::Index: |
4864 | switch (this->args[1].kind()) { |
4865 | case Arg::Tmp: |
4866 | #if CPU(X86) || CPU(X86_64) |
4867 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
4868 | OPGEN_RETURN(false); |
4869 | if (!args[1].tmp().isGP()) |
4870 | OPGEN_RETURN(false); |
4871 | OPGEN_RETURN(true); |
4872 | #endif |
4873 | break; |
4874 | break; |
4875 | default: |
4876 | break; |
4877 | } |
4878 | break; |
4879 | default: |
4880 | break; |
4881 | } |
4882 | break; |
4883 | case 3: |
4884 | switch (this->args[0].kind()) { |
4885 | case Arg::Tmp: |
4886 | switch (this->args[1].kind()) { |
4887 | case Arg::Tmp: |
4888 | switch (this->args[2].kind()) { |
4889 | case Arg::Tmp: |
4890 | #if CPU(ARM64) |
4891 | if (!args[0].tmp().isGP()) |
4892 | OPGEN_RETURN(false); |
4893 | if (!args[1].tmp().isGP()) |
4894 | OPGEN_RETURN(false); |
4895 | if (!args[2].tmp().isGP()) |
4896 | OPGEN_RETURN(false); |
4897 | OPGEN_RETURN(true); |
4898 | #endif |
4899 | break; |
4900 | break; |
4901 | default: |
4902 | break; |
4903 | } |
4904 | break; |
4905 | default: |
4906 | break; |
4907 | } |
4908 | break; |
4909 | default: |
4910 | break; |
4911 | } |
4912 | break; |
4913 | default: |
4914 | break; |
4915 | } |
4916 | break; |
4917 | case Opcode::Sub64: |
4918 | switch (this->args.size()) { |
4919 | case 2: |
4920 | switch (this->args[0].kind()) { |
4921 | case Arg::Tmp: |
4922 | switch (this->args[1].kind()) { |
4923 | case Arg::Tmp: |
4924 | #if CPU(X86_64) || CPU(ARM64) |
4925 | if (!args[0].tmp().isGP()) |
4926 | OPGEN_RETURN(false); |
4927 | if (!args[1].tmp().isGP()) |
4928 | OPGEN_RETURN(false); |
4929 | OPGEN_RETURN(true); |
4930 | #endif |
4931 | break; |
4932 | break; |
4933 | case Arg::Addr: |
4934 | case Arg::Stack: |
4935 | case Arg::CallArg: |
4936 | #if CPU(X86_64) |
4937 | if (!args[0].tmp().isGP()) |
4938 | OPGEN_RETURN(false); |
4939 | if (!Arg::isValidAddrForm(args[1].offset())) |
4940 | OPGEN_RETURN(false); |
4941 | OPGEN_RETURN(true); |
4942 | #endif |
4943 | break; |
4944 | break; |
4945 | case Arg::Index: |
4946 | #if CPU(X86_64) |
4947 | if (!args[0].tmp().isGP()) |
4948 | OPGEN_RETURN(false); |
4949 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
4950 | OPGEN_RETURN(false); |
4951 | OPGEN_RETURN(true); |
4952 | #endif |
4953 | break; |
4954 | break; |
4955 | default: |
4956 | break; |
4957 | } |
4958 | break; |
4959 | case Arg::Imm: |
4960 | switch (this->args[1].kind()) { |
4961 | case Arg::Addr: |
4962 | case Arg::Stack: |
4963 | case Arg::CallArg: |
4964 | #if CPU(X86_64) |
4965 | if (!Arg::isValidImmForm(args[0].value())) |
4966 | OPGEN_RETURN(false); |
4967 | if (!Arg::isValidAddrForm(args[1].offset())) |
4968 | OPGEN_RETURN(false); |
4969 | OPGEN_RETURN(true); |
4970 | #endif |
4971 | break; |
4972 | break; |
4973 | case Arg::Index: |
4974 | #if CPU(X86_64) |
4975 | if (!Arg::isValidImmForm(args[0].value())) |
4976 | OPGEN_RETURN(false); |
4977 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
4978 | OPGEN_RETURN(false); |
4979 | OPGEN_RETURN(true); |
4980 | #endif |
4981 | break; |
4982 | break; |
4983 | case Arg::Tmp: |
4984 | #if CPU(X86_64) || CPU(ARM64) |
4985 | if (!Arg::isValidImmForm(args[0].value())) |
4986 | OPGEN_RETURN(false); |
4987 | if (!args[1].tmp().isGP()) |
4988 | OPGEN_RETURN(false); |
4989 | OPGEN_RETURN(true); |
4990 | #endif |
4991 | break; |
4992 | break; |
4993 | default: |
4994 | break; |
4995 | } |
4996 | break; |
4997 | case Arg::Addr: |
4998 | case Arg::Stack: |
4999 | case Arg::CallArg: |
5000 | switch (this->args[1].kind()) { |
5001 | case Arg::Tmp: |
5002 | #if CPU(X86_64) |
5003 | if (!Arg::isValidAddrForm(args[0].offset())) |
5004 | OPGEN_RETURN(false); |
5005 | if (!args[1].tmp().isGP()) |
5006 | OPGEN_RETURN(false); |
5007 | OPGEN_RETURN(true); |
5008 | #endif |
5009 | break; |
5010 | break; |
5011 | default: |
5012 | break; |
5013 | } |
5014 | break; |
5015 | case Arg::Index: |
5016 | switch (this->args[1].kind()) { |
5017 | case Arg::Tmp: |
5018 | #if CPU(X86_64) |
5019 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
5020 | OPGEN_RETURN(false); |
5021 | if (!args[1].tmp().isGP()) |
5022 | OPGEN_RETURN(false); |
5023 | OPGEN_RETURN(true); |
5024 | #endif |
5025 | break; |
5026 | break; |
5027 | default: |
5028 | break; |
5029 | } |
5030 | break; |
5031 | default: |
5032 | break; |
5033 | } |
5034 | break; |
5035 | case 3: |
5036 | switch (this->args[0].kind()) { |
5037 | case Arg::Tmp: |
5038 | switch (this->args[1].kind()) { |
5039 | case Arg::Tmp: |
5040 | switch (this->args[2].kind()) { |
5041 | case Arg::Tmp: |
5042 | #if CPU(ARM64) |
5043 | if (!args[0].tmp().isGP()) |
5044 | OPGEN_RETURN(false); |
5045 | if (!args[1].tmp().isGP()) |
5046 | OPGEN_RETURN(false); |
5047 | if (!args[2].tmp().isGP()) |
5048 | OPGEN_RETURN(false); |
5049 | OPGEN_RETURN(true); |
5050 | #endif |
5051 | break; |
5052 | break; |
5053 | default: |
5054 | break; |
5055 | } |
5056 | break; |
5057 | default: |
5058 | break; |
5059 | } |
5060 | break; |
5061 | default: |
5062 | break; |
5063 | } |
5064 | break; |
5065 | default: |
5066 | break; |
5067 | } |
5068 | break; |
5069 | case Opcode::SubDouble: |
5070 | switch (this->args.size()) { |
5071 | case 3: |
5072 | switch (this->args[0].kind()) { |
5073 | case Arg::Tmp: |
5074 | switch (this->args[1].kind()) { |
5075 | case Arg::Tmp: |
5076 | switch (this->args[2].kind()) { |
5077 | case Arg::Tmp: |
5078 | #if CPU(ARM64) |
5079 | if (!args[0].tmp().isFP()) |
5080 | OPGEN_RETURN(false); |
5081 | if (!args[1].tmp().isFP()) |
5082 | OPGEN_RETURN(false); |
5083 | if (!args[2].tmp().isFP()) |
5084 | OPGEN_RETURN(false); |
5085 | OPGEN_RETURN(true); |
5086 | #endif |
5087 | break; |
5088 | break; |
5089 | default: |
5090 | break; |
5091 | } |
5092 | break; |
5093 | case Arg::Addr: |
5094 | case Arg::Stack: |
5095 | case Arg::CallArg: |
5096 | switch (this->args[2].kind()) { |
5097 | case Arg::Tmp: |
5098 | #if CPU(X86) || CPU(X86_64) |
5099 | if (!args[0].tmp().isFP()) |
5100 | OPGEN_RETURN(false); |
5101 | if (!Arg::isValidAddrForm(args[1].offset())) |
5102 | OPGEN_RETURN(false); |
5103 | if (!args[2].tmp().isFP()) |
5104 | OPGEN_RETURN(false); |
5105 | OPGEN_RETURN(true); |
5106 | #endif |
5107 | break; |
5108 | break; |
5109 | default: |
5110 | break; |
5111 | } |
5112 | break; |
5113 | case Arg::Index: |
5114 | switch (this->args[2].kind()) { |
5115 | case Arg::Tmp: |
5116 | #if CPU(X86) || CPU(X86_64) |
5117 | if (!args[0].tmp().isFP()) |
5118 | OPGEN_RETURN(false); |
5119 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
5120 | OPGEN_RETURN(false); |
5121 | if (!args[2].tmp().isFP()) |
5122 | OPGEN_RETURN(false); |
5123 | OPGEN_RETURN(true); |
5124 | #endif |
5125 | break; |
5126 | break; |
5127 | default: |
5128 | break; |
5129 | } |
5130 | break; |
5131 | default: |
5132 | break; |
5133 | } |
5134 | break; |
5135 | default: |
5136 | break; |
5137 | } |
5138 | break; |
5139 | case 2: |
5140 | switch (this->args[0].kind()) { |
5141 | case Arg::Tmp: |
5142 | switch (this->args[1].kind()) { |
5143 | case Arg::Tmp: |
5144 | #if CPU(X86) || CPU(X86_64) |
5145 | if (!args[0].tmp().isFP()) |
5146 | OPGEN_RETURN(false); |
5147 | if (!args[1].tmp().isFP()) |
5148 | OPGEN_RETURN(false); |
5149 | OPGEN_RETURN(true); |
5150 | #endif |
5151 | break; |
5152 | break; |
5153 | default: |
5154 | break; |
5155 | } |
5156 | break; |
5157 | case Arg::Addr: |
5158 | case Arg::Stack: |
5159 | case Arg::CallArg: |
5160 | switch (this->args[1].kind()) { |
5161 | case Arg::Tmp: |
5162 | #if CPU(X86) || CPU(X86_64) |
5163 | if (!Arg::isValidAddrForm(args[0].offset())) |
5164 | OPGEN_RETURN(false); |
5165 | if (!args[1].tmp().isFP()) |
5166 | OPGEN_RETURN(false); |
5167 | OPGEN_RETURN(true); |
5168 | #endif |
5169 | break; |
5170 | break; |
5171 | default: |
5172 | break; |
5173 | } |
5174 | break; |
5175 | default: |
5176 | break; |
5177 | } |
5178 | break; |
5179 | default: |
5180 | break; |
5181 | } |
5182 | break; |
5183 | case Opcode::SubFloat: |
5184 | switch (this->args.size()) { |
5185 | case 3: |
5186 | switch (this->args[0].kind()) { |
5187 | case Arg::Tmp: |
5188 | switch (this->args[1].kind()) { |
5189 | case Arg::Tmp: |
5190 | switch (this->args[2].kind()) { |
5191 | case Arg::Tmp: |
5192 | #if CPU(ARM64) |
5193 | if (!args[0].tmp().isFP()) |
5194 | OPGEN_RETURN(false); |
5195 | if (!args[1].tmp().isFP()) |
5196 | OPGEN_RETURN(false); |
5197 | if (!args[2].tmp().isFP()) |
5198 | OPGEN_RETURN(false); |
5199 | OPGEN_RETURN(true); |
5200 | #endif |
5201 | break; |
5202 | break; |
5203 | default: |
5204 | break; |
5205 | } |
5206 | break; |
5207 | case Arg::Addr: |
5208 | case Arg::Stack: |
5209 | case Arg::CallArg: |
5210 | switch (this->args[2].kind()) { |
5211 | case Arg::Tmp: |
5212 | #if CPU(X86) || CPU(X86_64) |
5213 | if (!args[0].tmp().isFP()) |
5214 | OPGEN_RETURN(false); |
5215 | if (!Arg::isValidAddrForm(args[1].offset())) |
5216 | OPGEN_RETURN(false); |
5217 | if (!args[2].tmp().isFP()) |
5218 | OPGEN_RETURN(false); |
5219 | OPGEN_RETURN(true); |
5220 | #endif |
5221 | break; |
5222 | break; |
5223 | default: |
5224 | break; |
5225 | } |
5226 | break; |
5227 | case Arg::Index: |
5228 | switch (this->args[2].kind()) { |
5229 | case Arg::Tmp: |
5230 | #if CPU(X86) || CPU(X86_64) |
5231 | if (!args[0].tmp().isFP()) |
5232 | OPGEN_RETURN(false); |
5233 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
5234 | OPGEN_RETURN(false); |
5235 | if (!args[2].tmp().isFP()) |
5236 | OPGEN_RETURN(false); |
5237 | OPGEN_RETURN(true); |
5238 | #endif |
5239 | break; |
5240 | break; |
5241 | default: |
5242 | break; |
5243 | } |
5244 | break; |
5245 | default: |
5246 | break; |
5247 | } |
5248 | break; |
5249 | default: |
5250 | break; |
5251 | } |
5252 | break; |
5253 | case 2: |
5254 | switch (this->args[0].kind()) { |
5255 | case Arg::Tmp: |
5256 | switch (this->args[1].kind()) { |
5257 | case Arg::Tmp: |
5258 | #if CPU(X86) || CPU(X86_64) |
5259 | if (!args[0].tmp().isFP()) |
5260 | OPGEN_RETURN(false); |
5261 | if (!args[1].tmp().isFP()) |
5262 | OPGEN_RETURN(false); |
5263 | OPGEN_RETURN(true); |
5264 | #endif |
5265 | break; |
5266 | break; |
5267 | default: |
5268 | break; |
5269 | } |
5270 | break; |
5271 | case Arg::Addr: |
5272 | case Arg::Stack: |
5273 | case Arg::CallArg: |
5274 | switch (this->args[1].kind()) { |
5275 | case Arg::Tmp: |
5276 | #if CPU(X86) || CPU(X86_64) |
5277 | if (!Arg::isValidAddrForm(args[0].offset())) |
5278 | OPGEN_RETURN(false); |
5279 | if (!args[1].tmp().isFP()) |
5280 | OPGEN_RETURN(false); |
5281 | OPGEN_RETURN(true); |
5282 | #endif |
5283 | break; |
5284 | break; |
5285 | default: |
5286 | break; |
5287 | } |
5288 | break; |
5289 | default: |
5290 | break; |
5291 | } |
5292 | break; |
5293 | default: |
5294 | break; |
5295 | } |
5296 | break; |
5297 | case Opcode::Neg32: |
5298 | switch (this->args.size()) { |
5299 | case 1: |
5300 | switch (this->args[0].kind()) { |
5301 | case Arg::Tmp: |
5302 | if (!args[0].tmp().isGP()) |
5303 | OPGEN_RETURN(false); |
5304 | OPGEN_RETURN(true); |
5305 | break; |
5306 | break; |
5307 | case Arg::Addr: |
5308 | case Arg::Stack: |
5309 | case Arg::CallArg: |
5310 | #if CPU(X86) || CPU(X86_64) |
5311 | if (!Arg::isValidAddrForm(args[0].offset())) |
5312 | OPGEN_RETURN(false); |
5313 | OPGEN_RETURN(true); |
5314 | #endif |
5315 | break; |
5316 | break; |
5317 | case Arg::Index: |
5318 | #if CPU(X86) || CPU(X86_64) |
5319 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
5320 | OPGEN_RETURN(false); |
5321 | OPGEN_RETURN(true); |
5322 | #endif |
5323 | break; |
5324 | break; |
5325 | default: |
5326 | break; |
5327 | } |
5328 | break; |
5329 | default: |
5330 | break; |
5331 | } |
5332 | break; |
5333 | case Opcode::Neg64: |
5334 | switch (this->args.size()) { |
5335 | case 1: |
5336 | switch (this->args[0].kind()) { |
5337 | case Arg::Tmp: |
5338 | #if CPU(X86_64) || CPU(ARM64) |
5339 | if (!args[0].tmp().isGP()) |
5340 | OPGEN_RETURN(false); |
5341 | OPGEN_RETURN(true); |
5342 | #endif |
5343 | break; |
5344 | break; |
5345 | case Arg::Addr: |
5346 | case Arg::Stack: |
5347 | case Arg::CallArg: |
5348 | #if CPU(X86_64) |
5349 | if (!Arg::isValidAddrForm(args[0].offset())) |
5350 | OPGEN_RETURN(false); |
5351 | OPGEN_RETURN(true); |
5352 | #endif |
5353 | break; |
5354 | break; |
5355 | case Arg::Index: |
5356 | #if CPU(X86_64) |
5357 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
5358 | OPGEN_RETURN(false); |
5359 | OPGEN_RETURN(true); |
5360 | #endif |
5361 | break; |
5362 | break; |
5363 | default: |
5364 | break; |
5365 | } |
5366 | break; |
5367 | default: |
5368 | break; |
5369 | } |
5370 | break; |
5371 | case Opcode::NegateDouble: |
5372 | switch (this->args.size()) { |
5373 | case 2: |
5374 | switch (this->args[0].kind()) { |
5375 | case Arg::Tmp: |
5376 | switch (this->args[1].kind()) { |
5377 | case Arg::Tmp: |
5378 | #if CPU(ARM64) |
5379 | if (!args[0].tmp().isFP()) |
5380 | OPGEN_RETURN(false); |
5381 | if (!args[1].tmp().isFP()) |
5382 | OPGEN_RETURN(false); |
5383 | OPGEN_RETURN(true); |
5384 | #endif |
5385 | break; |
5386 | break; |
5387 | default: |
5388 | break; |
5389 | } |
5390 | break; |
5391 | default: |
5392 | break; |
5393 | } |
5394 | break; |
5395 | default: |
5396 | break; |
5397 | } |
5398 | break; |
5399 | case Opcode::NegateFloat: |
5400 | switch (this->args.size()) { |
5401 | case 2: |
5402 | switch (this->args[0].kind()) { |
5403 | case Arg::Tmp: |
5404 | switch (this->args[1].kind()) { |
5405 | case Arg::Tmp: |
5406 | #if CPU(ARM64) |
5407 | if (!args[0].tmp().isFP()) |
5408 | OPGEN_RETURN(false); |
5409 | if (!args[1].tmp().isFP()) |
5410 | OPGEN_RETURN(false); |
5411 | OPGEN_RETURN(true); |
5412 | #endif |
5413 | break; |
5414 | break; |
5415 | default: |
5416 | break; |
5417 | } |
5418 | break; |
5419 | default: |
5420 | break; |
5421 | } |
5422 | break; |
5423 | default: |
5424 | break; |
5425 | } |
5426 | break; |
5427 | case Opcode::Mul32: |
5428 | switch (this->args.size()) { |
5429 | case 2: |
5430 | switch (this->args[0].kind()) { |
5431 | case Arg::Tmp: |
5432 | switch (this->args[1].kind()) { |
5433 | case Arg::Tmp: |
5434 | if (!args[0].tmp().isGP()) |
5435 | OPGEN_RETURN(false); |
5436 | if (!args[1].tmp().isGP()) |
5437 | OPGEN_RETURN(false); |
5438 | OPGEN_RETURN(true); |
5439 | break; |
5440 | break; |
5441 | default: |
5442 | break; |
5443 | } |
5444 | break; |
5445 | case Arg::Addr: |
5446 | case Arg::Stack: |
5447 | case Arg::CallArg: |
5448 | switch (this->args[1].kind()) { |
5449 | case Arg::Tmp: |
5450 | #if CPU(X86) || CPU(X86_64) |
5451 | if (!Arg::isValidAddrForm(args[0].offset())) |
5452 | OPGEN_RETURN(false); |
5453 | if (!args[1].tmp().isGP()) |
5454 | OPGEN_RETURN(false); |
5455 | OPGEN_RETURN(true); |
5456 | #endif |
5457 | break; |
5458 | break; |
5459 | default: |
5460 | break; |
5461 | } |
5462 | break; |
5463 | default: |
5464 | break; |
5465 | } |
5466 | break; |
5467 | case 3: |
5468 | switch (this->args[0].kind()) { |
5469 | case Arg::Tmp: |
5470 | switch (this->args[1].kind()) { |
5471 | case Arg::Tmp: |
5472 | switch (this->args[2].kind()) { |
5473 | case Arg::Tmp: |
5474 | if (!args[0].tmp().isGP()) |
5475 | OPGEN_RETURN(false); |
5476 | if (!args[1].tmp().isGP()) |
5477 | OPGEN_RETURN(false); |
5478 | if (!args[2].tmp().isGP()) |
5479 | OPGEN_RETURN(false); |
5480 | OPGEN_RETURN(true); |
5481 | break; |
5482 | break; |
5483 | default: |
5484 | break; |
5485 | } |
5486 | break; |
5487 | case Arg::Addr: |
5488 | case Arg::Stack: |
5489 | case Arg::CallArg: |
5490 | switch (this->args[2].kind()) { |
5491 | case Arg::Tmp: |
5492 | #if CPU(X86) || CPU(X86_64) |
5493 | if (!args[0].tmp().isGP()) |
5494 | OPGEN_RETURN(false); |
5495 | if (!Arg::isValidAddrForm(args[1].offset())) |
5496 | OPGEN_RETURN(false); |
5497 | if (!args[2].tmp().isGP()) |
5498 | OPGEN_RETURN(false); |
5499 | OPGEN_RETURN(true); |
5500 | #endif |
5501 | break; |
5502 | break; |
5503 | default: |
5504 | break; |
5505 | } |
5506 | break; |
5507 | default: |
5508 | break; |
5509 | } |
5510 | break; |
5511 | case Arg::Addr: |
5512 | case Arg::Stack: |
5513 | case Arg::CallArg: |
5514 | switch (this->args[1].kind()) { |
5515 | case Arg::Tmp: |
5516 | switch (this->args[2].kind()) { |
5517 | case Arg::Tmp: |
5518 | #if CPU(X86) || CPU(X86_64) |
5519 | if (!Arg::isValidAddrForm(args[0].offset())) |
5520 | OPGEN_RETURN(false); |
5521 | if (!args[1].tmp().isGP()) |
5522 | OPGEN_RETURN(false); |
5523 | if (!args[2].tmp().isGP()) |
5524 | OPGEN_RETURN(false); |
5525 | OPGEN_RETURN(true); |
5526 | #endif |
5527 | break; |
5528 | break; |
5529 | default: |
5530 | break; |
5531 | } |
5532 | break; |
5533 | default: |
5534 | break; |
5535 | } |
5536 | break; |
5537 | case Arg::Imm: |
5538 | switch (this->args[1].kind()) { |
5539 | case Arg::Tmp: |
5540 | switch (this->args[2].kind()) { |
5541 | case Arg::Tmp: |
5542 | #if CPU(X86) || CPU(X86_64) |
5543 | if (!Arg::isValidImmForm(args[0].value())) |
5544 | OPGEN_RETURN(false); |
5545 | if (!args[1].tmp().isGP()) |
5546 | OPGEN_RETURN(false); |
5547 | if (!args[2].tmp().isGP()) |
5548 | OPGEN_RETURN(false); |
5549 | OPGEN_RETURN(true); |
5550 | #endif |
5551 | break; |
5552 | break; |
5553 | default: |
5554 | break; |
5555 | } |
5556 | break; |
5557 | default: |
5558 | break; |
5559 | } |
5560 | break; |
5561 | default: |
5562 | break; |
5563 | } |
5564 | break; |
5565 | default: |
5566 | break; |
5567 | } |
5568 | break; |
5569 | case Opcode::Mul64: |
5570 | switch (this->args.size()) { |
5571 | case 2: |
5572 | switch (this->args[0].kind()) { |
5573 | case Arg::Tmp: |
5574 | switch (this->args[1].kind()) { |
5575 | case Arg::Tmp: |
5576 | #if CPU(X86_64) || CPU(ARM64) |
5577 | if (!args[0].tmp().isGP()) |
5578 | OPGEN_RETURN(false); |
5579 | if (!args[1].tmp().isGP()) |
5580 | OPGEN_RETURN(false); |
5581 | OPGEN_RETURN(true); |
5582 | #endif |
5583 | break; |
5584 | break; |
5585 | default: |
5586 | break; |
5587 | } |
5588 | break; |
5589 | default: |
5590 | break; |
5591 | } |
5592 | break; |
5593 | case 3: |
5594 | switch (this->args[0].kind()) { |
5595 | case Arg::Tmp: |
5596 | switch (this->args[1].kind()) { |
5597 | case Arg::Tmp: |
5598 | switch (this->args[2].kind()) { |
5599 | case Arg::Tmp: |
5600 | if (!args[0].tmp().isGP()) |
5601 | OPGEN_RETURN(false); |
5602 | if (!args[1].tmp().isGP()) |
5603 | OPGEN_RETURN(false); |
5604 | if (!args[2].tmp().isGP()) |
5605 | OPGEN_RETURN(false); |
5606 | OPGEN_RETURN(true); |
5607 | break; |
5608 | break; |
5609 | default: |
5610 | break; |
5611 | } |
5612 | break; |
5613 | default: |
5614 | break; |
5615 | } |
5616 | break; |
5617 | default: |
5618 | break; |
5619 | } |
5620 | break; |
5621 | default: |
5622 | break; |
5623 | } |
5624 | break; |
5625 | case Opcode::MultiplyAdd32: |
5626 | switch (this->args.size()) { |
5627 | case 4: |
5628 | switch (this->args[0].kind()) { |
5629 | case Arg::Tmp: |
5630 | switch (this->args[1].kind()) { |
5631 | case Arg::Tmp: |
5632 | switch (this->args[2].kind()) { |
5633 | case Arg::Tmp: |
5634 | switch (this->args[3].kind()) { |
5635 | case Arg::Tmp: |
5636 | #if CPU(ARM64) |
5637 | if (!args[0].tmp().isGP()) |
5638 | OPGEN_RETURN(false); |
5639 | if (!args[1].tmp().isGP()) |
5640 | OPGEN_RETURN(false); |
5641 | if (!args[2].tmp().isGP()) |
5642 | OPGEN_RETURN(false); |
5643 | if (!args[3].tmp().isGP()) |
5644 | OPGEN_RETURN(false); |
5645 | OPGEN_RETURN(true); |
5646 | #endif |
5647 | break; |
5648 | break; |
5649 | default: |
5650 | break; |
5651 | } |
5652 | break; |
5653 | default: |
5654 | break; |
5655 | } |
5656 | break; |
5657 | default: |
5658 | break; |
5659 | } |
5660 | break; |
5661 | default: |
5662 | break; |
5663 | } |
5664 | break; |
5665 | default: |
5666 | break; |
5667 | } |
5668 | break; |
5669 | case Opcode::MultiplyAdd64: |
5670 | switch (this->args.size()) { |
5671 | case 4: |
5672 | switch (this->args[0].kind()) { |
5673 | case Arg::Tmp: |
5674 | switch (this->args[1].kind()) { |
5675 | case Arg::Tmp: |
5676 | switch (this->args[2].kind()) { |
5677 | case Arg::Tmp: |
5678 | switch (this->args[3].kind()) { |
5679 | case Arg::Tmp: |
5680 | #if CPU(ARM64) |
5681 | if (!args[0].tmp().isGP()) |
5682 | OPGEN_RETURN(false); |
5683 | if (!args[1].tmp().isGP()) |
5684 | OPGEN_RETURN(false); |
5685 | if (!args[2].tmp().isGP()) |
5686 | OPGEN_RETURN(false); |
5687 | if (!args[3].tmp().isGP()) |
5688 | OPGEN_RETURN(false); |
5689 | OPGEN_RETURN(true); |
5690 | #endif |
5691 | break; |
5692 | break; |
5693 | default: |
5694 | break; |
5695 | } |
5696 | break; |
5697 | default: |
5698 | break; |
5699 | } |
5700 | break; |
5701 | default: |
5702 | break; |
5703 | } |
5704 | break; |
5705 | default: |
5706 | break; |
5707 | } |
5708 | break; |
5709 | default: |
5710 | break; |
5711 | } |
5712 | break; |
5713 | case Opcode::MultiplySub32: |
5714 | switch (this->args.size()) { |
5715 | case 4: |
5716 | switch (this->args[0].kind()) { |
5717 | case Arg::Tmp: |
5718 | switch (this->args[1].kind()) { |
5719 | case Arg::Tmp: |
5720 | switch (this->args[2].kind()) { |
5721 | case Arg::Tmp: |
5722 | switch (this->args[3].kind()) { |
5723 | case Arg::Tmp: |
5724 | #if CPU(ARM64) |
5725 | if (!args[0].tmp().isGP()) |
5726 | OPGEN_RETURN(false); |
5727 | if (!args[1].tmp().isGP()) |
5728 | OPGEN_RETURN(false); |
5729 | if (!args[2].tmp().isGP()) |
5730 | OPGEN_RETURN(false); |
5731 | if (!args[3].tmp().isGP()) |
5732 | OPGEN_RETURN(false); |
5733 | OPGEN_RETURN(true); |
5734 | #endif |
5735 | break; |
5736 | break; |
5737 | default: |
5738 | break; |
5739 | } |
5740 | break; |
5741 | default: |
5742 | break; |
5743 | } |
5744 | break; |
5745 | default: |
5746 | break; |
5747 | } |
5748 | break; |
5749 | default: |
5750 | break; |
5751 | } |
5752 | break; |
5753 | default: |
5754 | break; |
5755 | } |
5756 | break; |
5757 | case Opcode::MultiplySub64: |
5758 | switch (this->args.size()) { |
5759 | case 4: |
5760 | switch (this->args[0].kind()) { |
5761 | case Arg::Tmp: |
5762 | switch (this->args[1].kind()) { |
5763 | case Arg::Tmp: |
5764 | switch (this->args[2].kind()) { |
5765 | case Arg::Tmp: |
5766 | switch (this->args[3].kind()) { |
5767 | case Arg::Tmp: |
5768 | #if CPU(ARM64) |
5769 | if (!args[0].tmp().isGP()) |
5770 | OPGEN_RETURN(false); |
5771 | if (!args[1].tmp().isGP()) |
5772 | OPGEN_RETURN(false); |
5773 | if (!args[2].tmp().isGP()) |
5774 | OPGEN_RETURN(false); |
5775 | if (!args[3].tmp().isGP()) |
5776 | OPGEN_RETURN(false); |
5777 | OPGEN_RETURN(true); |
5778 | #endif |
5779 | break; |
5780 | break; |
5781 | default: |
5782 | break; |
5783 | } |
5784 | break; |
5785 | default: |
5786 | break; |
5787 | } |
5788 | break; |
5789 | default: |
5790 | break; |
5791 | } |
5792 | break; |
5793 | default: |
5794 | break; |
5795 | } |
5796 | break; |
5797 | default: |
5798 | break; |
5799 | } |
5800 | break; |
5801 | case Opcode::MultiplyNeg32: |
5802 | switch (this->args.size()) { |
5803 | case 3: |
5804 | switch (this->args[0].kind()) { |
5805 | case Arg::Tmp: |
5806 | switch (this->args[1].kind()) { |
5807 | case Arg::Tmp: |
5808 | switch (this->args[2].kind()) { |
5809 | case Arg::Tmp: |
5810 | #if CPU(ARM64) |
5811 | if (!args[0].tmp().isGP()) |
5812 | OPGEN_RETURN(false); |
5813 | if (!args[1].tmp().isGP()) |
5814 | OPGEN_RETURN(false); |
5815 | if (!args[2].tmp().isGP()) |
5816 | OPGEN_RETURN(false); |
5817 | OPGEN_RETURN(true); |
5818 | #endif |
5819 | break; |
5820 | break; |
5821 | default: |
5822 | break; |
5823 | } |
5824 | break; |
5825 | default: |
5826 | break; |
5827 | } |
5828 | break; |
5829 | default: |
5830 | break; |
5831 | } |
5832 | break; |
5833 | default: |
5834 | break; |
5835 | } |
5836 | break; |
5837 | case Opcode::MultiplyNeg64: |
5838 | switch (this->args.size()) { |
5839 | case 3: |
5840 | switch (this->args[0].kind()) { |
5841 | case Arg::Tmp: |
5842 | switch (this->args[1].kind()) { |
5843 | case Arg::Tmp: |
5844 | switch (this->args[2].kind()) { |
5845 | case Arg::Tmp: |
5846 | #if CPU(ARM64) |
5847 | if (!args[0].tmp().isGP()) |
5848 | OPGEN_RETURN(false); |
5849 | if (!args[1].tmp().isGP()) |
5850 | OPGEN_RETURN(false); |
5851 | if (!args[2].tmp().isGP()) |
5852 | OPGEN_RETURN(false); |
5853 | OPGEN_RETURN(true); |
5854 | #endif |
5855 | break; |
5856 | break; |
5857 | default: |
5858 | break; |
5859 | } |
5860 | break; |
5861 | default: |
5862 | break; |
5863 | } |
5864 | break; |
5865 | default: |
5866 | break; |
5867 | } |
5868 | break; |
5869 | default: |
5870 | break; |
5871 | } |
5872 | break; |
5873 | case Opcode::MultiplySignExtend32: |
5874 | switch (this->args.size()) { |
5875 | case 3: |
5876 | switch (this->args[0].kind()) { |
5877 | case Arg::Tmp: |
5878 | switch (this->args[1].kind()) { |
5879 | case Arg::Tmp: |
5880 | switch (this->args[2].kind()) { |
5881 | case Arg::Tmp: |
5882 | #if CPU(ARM64) |
5883 | if (!args[0].tmp().isGP()) |
5884 | OPGEN_RETURN(false); |
5885 | if (!args[1].tmp().isGP()) |
5886 | OPGEN_RETURN(false); |
5887 | if (!args[2].tmp().isGP()) |
5888 | OPGEN_RETURN(false); |
5889 | OPGEN_RETURN(true); |
5890 | #endif |
5891 | break; |
5892 | break; |
5893 | default: |
5894 | break; |
5895 | } |
5896 | break; |
5897 | default: |
5898 | break; |
5899 | } |
5900 | break; |
5901 | default: |
5902 | break; |
5903 | } |
5904 | break; |
5905 | default: |
5906 | break; |
5907 | } |
5908 | break; |
5909 | case Opcode::Div32: |
5910 | switch (this->args.size()) { |
5911 | case 3: |
5912 | switch (this->args[0].kind()) { |
5913 | case Arg::Tmp: |
5914 | switch (this->args[1].kind()) { |
5915 | case Arg::Tmp: |
5916 | switch (this->args[2].kind()) { |
5917 | case Arg::Tmp: |
5918 | #if CPU(ARM64) |
5919 | if (!args[0].tmp().isGP()) |
5920 | OPGEN_RETURN(false); |
5921 | if (!args[1].tmp().isGP()) |
5922 | OPGEN_RETURN(false); |
5923 | if (!args[2].tmp().isGP()) |
5924 | OPGEN_RETURN(false); |
5925 | OPGEN_RETURN(true); |
5926 | #endif |
5927 | break; |
5928 | break; |
5929 | default: |
5930 | break; |
5931 | } |
5932 | break; |
5933 | default: |
5934 | break; |
5935 | } |
5936 | break; |
5937 | default: |
5938 | break; |
5939 | } |
5940 | break; |
5941 | default: |
5942 | break; |
5943 | } |
5944 | break; |
5945 | case Opcode::UDiv32: |
5946 | switch (this->args.size()) { |
5947 | case 3: |
5948 | switch (this->args[0].kind()) { |
5949 | case Arg::Tmp: |
5950 | switch (this->args[1].kind()) { |
5951 | case Arg::Tmp: |
5952 | switch (this->args[2].kind()) { |
5953 | case Arg::Tmp: |
5954 | #if CPU(ARM64) |
5955 | if (!args[0].tmp().isGP()) |
5956 | OPGEN_RETURN(false); |
5957 | if (!args[1].tmp().isGP()) |
5958 | OPGEN_RETURN(false); |
5959 | if (!args[2].tmp().isGP()) |
5960 | OPGEN_RETURN(false); |
5961 | OPGEN_RETURN(true); |
5962 | #endif |
5963 | break; |
5964 | break; |
5965 | default: |
5966 | break; |
5967 | } |
5968 | break; |
5969 | default: |
5970 | break; |
5971 | } |
5972 | break; |
5973 | default: |
5974 | break; |
5975 | } |
5976 | break; |
5977 | default: |
5978 | break; |
5979 | } |
5980 | break; |
5981 | case Opcode::Div64: |
5982 | switch (this->args.size()) { |
5983 | case 3: |
5984 | switch (this->args[0].kind()) { |
5985 | case Arg::Tmp: |
5986 | switch (this->args[1].kind()) { |
5987 | case Arg::Tmp: |
5988 | switch (this->args[2].kind()) { |
5989 | case Arg::Tmp: |
5990 | #if CPU(ARM64) |
5991 | if (!args[0].tmp().isGP()) |
5992 | OPGEN_RETURN(false); |
5993 | if (!args[1].tmp().isGP()) |
5994 | OPGEN_RETURN(false); |
5995 | if (!args[2].tmp().isGP()) |
5996 | OPGEN_RETURN(false); |
5997 | OPGEN_RETURN(true); |
5998 | #endif |
5999 | break; |
6000 | break; |
6001 | default: |
6002 | break; |
6003 | } |
6004 | break; |
6005 | default: |
6006 | break; |
6007 | } |
6008 | break; |
6009 | default: |
6010 | break; |
6011 | } |
6012 | break; |
6013 | default: |
6014 | break; |
6015 | } |
6016 | break; |
6017 | case Opcode::UDiv64: |
6018 | switch (this->args.size()) { |
6019 | case 3: |
6020 | switch (this->args[0].kind()) { |
6021 | case Arg::Tmp: |
6022 | switch (this->args[1].kind()) { |
6023 | case Arg::Tmp: |
6024 | switch (this->args[2].kind()) { |
6025 | case Arg::Tmp: |
6026 | #if CPU(ARM64) |
6027 | if (!args[0].tmp().isGP()) |
6028 | OPGEN_RETURN(false); |
6029 | if (!args[1].tmp().isGP()) |
6030 | OPGEN_RETURN(false); |
6031 | if (!args[2].tmp().isGP()) |
6032 | OPGEN_RETURN(false); |
6033 | OPGEN_RETURN(true); |
6034 | #endif |
6035 | break; |
6036 | break; |
6037 | default: |
6038 | break; |
6039 | } |
6040 | break; |
6041 | default: |
6042 | break; |
6043 | } |
6044 | break; |
6045 | default: |
6046 | break; |
6047 | } |
6048 | break; |
6049 | default: |
6050 | break; |
6051 | } |
6052 | break; |
6053 | case Opcode::MulDouble: |
6054 | switch (this->args.size()) { |
6055 | case 3: |
6056 | switch (this->args[0].kind()) { |
6057 | case Arg::Tmp: |
6058 | switch (this->args[1].kind()) { |
6059 | case Arg::Tmp: |
6060 | switch (this->args[2].kind()) { |
6061 | case Arg::Tmp: |
6062 | if (!args[0].tmp().isFP()) |
6063 | OPGEN_RETURN(false); |
6064 | if (!args[1].tmp().isFP()) |
6065 | OPGEN_RETURN(false); |
6066 | if (!args[2].tmp().isFP()) |
6067 | OPGEN_RETURN(false); |
6068 | OPGEN_RETURN(true); |
6069 | break; |
6070 | break; |
6071 | default: |
6072 | break; |
6073 | } |
6074 | break; |
6075 | case Arg::Addr: |
6076 | case Arg::Stack: |
6077 | case Arg::CallArg: |
6078 | switch (this->args[2].kind()) { |
6079 | case Arg::Tmp: |
6080 | #if CPU(X86) || CPU(X86_64) |
6081 | if (!args[0].tmp().isFP()) |
6082 | OPGEN_RETURN(false); |
6083 | if (!Arg::isValidAddrForm(args[1].offset())) |
6084 | OPGEN_RETURN(false); |
6085 | if (!args[2].tmp().isFP()) |
6086 | OPGEN_RETURN(false); |
6087 | OPGEN_RETURN(true); |
6088 | #endif |
6089 | break; |
6090 | break; |
6091 | default: |
6092 | break; |
6093 | } |
6094 | break; |
6095 | default: |
6096 | break; |
6097 | } |
6098 | break; |
6099 | case Arg::Addr: |
6100 | case Arg::Stack: |
6101 | case Arg::CallArg: |
6102 | switch (this->args[1].kind()) { |
6103 | case Arg::Tmp: |
6104 | switch (this->args[2].kind()) { |
6105 | case Arg::Tmp: |
6106 | #if CPU(X86) || CPU(X86_64) |
6107 | if (!Arg::isValidAddrForm(args[0].offset())) |
6108 | OPGEN_RETURN(false); |
6109 | if (!args[1].tmp().isFP()) |
6110 | OPGEN_RETURN(false); |
6111 | if (!args[2].tmp().isFP()) |
6112 | OPGEN_RETURN(false); |
6113 | OPGEN_RETURN(true); |
6114 | #endif |
6115 | break; |
6116 | break; |
6117 | default: |
6118 | break; |
6119 | } |
6120 | break; |
6121 | default: |
6122 | break; |
6123 | } |
6124 | break; |
6125 | case Arg::Index: |
6126 | switch (this->args[1].kind()) { |
6127 | case Arg::Tmp: |
6128 | switch (this->args[2].kind()) { |
6129 | case Arg::Tmp: |
6130 | #if CPU(X86) || CPU(X86_64) |
6131 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
6132 | OPGEN_RETURN(false); |
6133 | if (!args[1].tmp().isFP()) |
6134 | OPGEN_RETURN(false); |
6135 | if (!args[2].tmp().isFP()) |
6136 | OPGEN_RETURN(false); |
6137 | OPGEN_RETURN(true); |
6138 | #endif |
6139 | break; |
6140 | break; |
6141 | default: |
6142 | break; |
6143 | } |
6144 | break; |
6145 | default: |
6146 | break; |
6147 | } |
6148 | break; |
6149 | default: |
6150 | break; |
6151 | } |
6152 | break; |
6153 | case 2: |
6154 | switch (this->args[0].kind()) { |
6155 | case Arg::Tmp: |
6156 | switch (this->args[1].kind()) { |
6157 | case Arg::Tmp: |
6158 | #if CPU(X86) || CPU(X86_64) |
6159 | if (!args[0].tmp().isFP()) |
6160 | OPGEN_RETURN(false); |
6161 | if (!args[1].tmp().isFP()) |
6162 | OPGEN_RETURN(false); |
6163 | OPGEN_RETURN(true); |
6164 | #endif |
6165 | break; |
6166 | break; |
6167 | default: |
6168 | break; |
6169 | } |
6170 | break; |
6171 | case Arg::Addr: |
6172 | case Arg::Stack: |
6173 | case Arg::CallArg: |
6174 | switch (this->args[1].kind()) { |
6175 | case Arg::Tmp: |
6176 | #if CPU(X86) || CPU(X86_64) |
6177 | if (!Arg::isValidAddrForm(args[0].offset())) |
6178 | OPGEN_RETURN(false); |
6179 | if (!args[1].tmp().isFP()) |
6180 | OPGEN_RETURN(false); |
6181 | OPGEN_RETURN(true); |
6182 | #endif |
6183 | break; |
6184 | break; |
6185 | default: |
6186 | break; |
6187 | } |
6188 | break; |
6189 | default: |
6190 | break; |
6191 | } |
6192 | break; |
6193 | default: |
6194 | break; |
6195 | } |
6196 | break; |
6197 | case Opcode::MulFloat: |
6198 | switch (this->args.size()) { |
6199 | case 3: |
6200 | switch (this->args[0].kind()) { |
6201 | case Arg::Tmp: |
6202 | switch (this->args[1].kind()) { |
6203 | case Arg::Tmp: |
6204 | switch (this->args[2].kind()) { |
6205 | case Arg::Tmp: |
6206 | if (!args[0].tmp().isFP()) |
6207 | OPGEN_RETURN(false); |
6208 | if (!args[1].tmp().isFP()) |
6209 | OPGEN_RETURN(false); |
6210 | if (!args[2].tmp().isFP()) |
6211 | OPGEN_RETURN(false); |
6212 | OPGEN_RETURN(true); |
6213 | break; |
6214 | break; |
6215 | default: |
6216 | break; |
6217 | } |
6218 | break; |
6219 | case Arg::Addr: |
6220 | case Arg::Stack: |
6221 | case Arg::CallArg: |
6222 | switch (this->args[2].kind()) { |
6223 | case Arg::Tmp: |
6224 | #if CPU(X86) || CPU(X86_64) |
6225 | if (!args[0].tmp().isFP()) |
6226 | OPGEN_RETURN(false); |
6227 | if (!Arg::isValidAddrForm(args[1].offset())) |
6228 | OPGEN_RETURN(false); |
6229 | if (!args[2].tmp().isFP()) |
6230 | OPGEN_RETURN(false); |
6231 | OPGEN_RETURN(true); |
6232 | #endif |
6233 | break; |
6234 | break; |
6235 | default: |
6236 | break; |
6237 | } |
6238 | break; |
6239 | default: |
6240 | break; |
6241 | } |
6242 | break; |
6243 | case Arg::Addr: |
6244 | case Arg::Stack: |
6245 | case Arg::CallArg: |
6246 | switch (this->args[1].kind()) { |
6247 | case Arg::Tmp: |
6248 | switch (this->args[2].kind()) { |
6249 | case Arg::Tmp: |
6250 | #if CPU(X86) || CPU(X86_64) |
6251 | if (!Arg::isValidAddrForm(args[0].offset())) |
6252 | OPGEN_RETURN(false); |
6253 | if (!args[1].tmp().isFP()) |
6254 | OPGEN_RETURN(false); |
6255 | if (!args[2].tmp().isFP()) |
6256 | OPGEN_RETURN(false); |
6257 | OPGEN_RETURN(true); |
6258 | #endif |
6259 | break; |
6260 | break; |
6261 | default: |
6262 | break; |
6263 | } |
6264 | break; |
6265 | default: |
6266 | break; |
6267 | } |
6268 | break; |
6269 | case Arg::Index: |
6270 | switch (this->args[1].kind()) { |
6271 | case Arg::Tmp: |
6272 | switch (this->args[2].kind()) { |
6273 | case Arg::Tmp: |
6274 | #if CPU(X86) || CPU(X86_64) |
6275 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
6276 | OPGEN_RETURN(false); |
6277 | if (!args[1].tmp().isFP()) |
6278 | OPGEN_RETURN(false); |
6279 | if (!args[2].tmp().isFP()) |
6280 | OPGEN_RETURN(false); |
6281 | OPGEN_RETURN(true); |
6282 | #endif |
6283 | break; |
6284 | break; |
6285 | default: |
6286 | break; |
6287 | } |
6288 | break; |
6289 | default: |
6290 | break; |
6291 | } |
6292 | break; |
6293 | default: |
6294 | break; |
6295 | } |
6296 | break; |
6297 | case 2: |
6298 | switch (this->args[0].kind()) { |
6299 | case Arg::Tmp: |
6300 | switch (this->args[1].kind()) { |
6301 | case Arg::Tmp: |
6302 | #if CPU(X86) || CPU(X86_64) |
6303 | if (!args[0].tmp().isFP()) |
6304 | OPGEN_RETURN(false); |
6305 | if (!args[1].tmp().isFP()) |
6306 | OPGEN_RETURN(false); |
6307 | OPGEN_RETURN(true); |
6308 | #endif |
6309 | break; |
6310 | break; |
6311 | default: |
6312 | break; |
6313 | } |
6314 | break; |
6315 | case Arg::Addr: |
6316 | case Arg::Stack: |
6317 | case Arg::CallArg: |
6318 | switch (this->args[1].kind()) { |
6319 | case Arg::Tmp: |
6320 | #if CPU(X86) || CPU(X86_64) |
6321 | if (!Arg::isValidAddrForm(args[0].offset())) |
6322 | OPGEN_RETURN(false); |
6323 | if (!args[1].tmp().isFP()) |
6324 | OPGEN_RETURN(false); |
6325 | OPGEN_RETURN(true); |
6326 | #endif |
6327 | break; |
6328 | break; |
6329 | default: |
6330 | break; |
6331 | } |
6332 | break; |
6333 | default: |
6334 | break; |
6335 | } |
6336 | break; |
6337 | default: |
6338 | break; |
6339 | } |
6340 | break; |
6341 | case Opcode::DivDouble: |
6342 | switch (this->args.size()) { |
6343 | case 3: |
6344 | switch (this->args[0].kind()) { |
6345 | case Arg::Tmp: |
6346 | switch (this->args[1].kind()) { |
6347 | case Arg::Tmp: |
6348 | switch (this->args[2].kind()) { |
6349 | case Arg::Tmp: |
6350 | #if CPU(ARM64) |
6351 | if (!args[0].tmp().isFP()) |
6352 | OPGEN_RETURN(false); |
6353 | if (!args[1].tmp().isFP()) |
6354 | OPGEN_RETURN(false); |
6355 | if (!args[2].tmp().isFP()) |
6356 | OPGEN_RETURN(false); |
6357 | OPGEN_RETURN(true); |
6358 | #endif |
6359 | break; |
6360 | break; |
6361 | default: |
6362 | break; |
6363 | } |
6364 | break; |
6365 | default: |
6366 | break; |
6367 | } |
6368 | break; |
6369 | default: |
6370 | break; |
6371 | } |
6372 | break; |
6373 | case 2: |
6374 | switch (this->args[0].kind()) { |
6375 | case Arg::Tmp: |
6376 | switch (this->args[1].kind()) { |
6377 | case Arg::Tmp: |
6378 | #if CPU(X86) || CPU(X86_64) |
6379 | if (!args[0].tmp().isFP()) |
6380 | OPGEN_RETURN(false); |
6381 | if (!args[1].tmp().isFP()) |
6382 | OPGEN_RETURN(false); |
6383 | OPGEN_RETURN(true); |
6384 | #endif |
6385 | break; |
6386 | break; |
6387 | default: |
6388 | break; |
6389 | } |
6390 | break; |
6391 | case Arg::Addr: |
6392 | case Arg::Stack: |
6393 | case Arg::CallArg: |
6394 | switch (this->args[1].kind()) { |
6395 | case Arg::Tmp: |
6396 | #if CPU(X86) || CPU(X86_64) |
6397 | if (!Arg::isValidAddrForm(args[0].offset())) |
6398 | OPGEN_RETURN(false); |
6399 | if (!args[1].tmp().isFP()) |
6400 | OPGEN_RETURN(false); |
6401 | OPGEN_RETURN(true); |
6402 | #endif |
6403 | break; |
6404 | break; |
6405 | default: |
6406 | break; |
6407 | } |
6408 | break; |
6409 | default: |
6410 | break; |
6411 | } |
6412 | break; |
6413 | default: |
6414 | break; |
6415 | } |
6416 | break; |
6417 | case Opcode::DivFloat: |
6418 | switch (this->args.size()) { |
6419 | case 3: |
6420 | switch (this->args[0].kind()) { |
6421 | case Arg::Tmp: |
6422 | switch (this->args[1].kind()) { |
6423 | case Arg::Tmp: |
6424 | switch (this->args[2].kind()) { |
6425 | case Arg::Tmp: |
6426 | #if CPU(ARM64) |
6427 | if (!args[0].tmp().isFP()) |
6428 | OPGEN_RETURN(false); |
6429 | if (!args[1].tmp().isFP()) |
6430 | OPGEN_RETURN(false); |
6431 | if (!args[2].tmp().isFP()) |
6432 | OPGEN_RETURN(false); |
6433 | OPGEN_RETURN(true); |
6434 | #endif |
6435 | break; |
6436 | break; |
6437 | default: |
6438 | break; |
6439 | } |
6440 | break; |
6441 | default: |
6442 | break; |
6443 | } |
6444 | break; |
6445 | default: |
6446 | break; |
6447 | } |
6448 | break; |
6449 | case 2: |
6450 | switch (this->args[0].kind()) { |
6451 | case Arg::Tmp: |
6452 | switch (this->args[1].kind()) { |
6453 | case Arg::Tmp: |
6454 | #if CPU(X86) || CPU(X86_64) |
6455 | if (!args[0].tmp().isFP()) |
6456 | OPGEN_RETURN(false); |
6457 | if (!args[1].tmp().isFP()) |
6458 | OPGEN_RETURN(false); |
6459 | OPGEN_RETURN(true); |
6460 | #endif |
6461 | break; |
6462 | break; |
6463 | default: |
6464 | break; |
6465 | } |
6466 | break; |
6467 | case Arg::Addr: |
6468 | case Arg::Stack: |
6469 | case Arg::CallArg: |
6470 | switch (this->args[1].kind()) { |
6471 | case Arg::Tmp: |
6472 | #if CPU(X86) || CPU(X86_64) |
6473 | if (!Arg::isValidAddrForm(args[0].offset())) |
6474 | OPGEN_RETURN(false); |
6475 | if (!args[1].tmp().isFP()) |
6476 | OPGEN_RETURN(false); |
6477 | OPGEN_RETURN(true); |
6478 | #endif |
6479 | break; |
6480 | break; |
6481 | default: |
6482 | break; |
6483 | } |
6484 | break; |
6485 | default: |
6486 | break; |
6487 | } |
6488 | break; |
6489 | default: |
6490 | break; |
6491 | } |
6492 | break; |
6493 | case Opcode::X86ConvertToDoubleWord32: |
6494 | switch (this->args.size()) { |
6495 | case 2: |
6496 | switch (this->args[0].kind()) { |
6497 | case Arg::Tmp: |
6498 | switch (this->args[1].kind()) { |
6499 | case Arg::Tmp: |
6500 | #if CPU(X86) || CPU(X86_64) |
6501 | if (!args[0].tmp().isGP()) |
6502 | OPGEN_RETURN(false); |
6503 | if (!args[1].tmp().isGP()) |
6504 | OPGEN_RETURN(false); |
6505 | if (!isX86ConvertToDoubleWord32Valid(*this)) |
6506 | OPGEN_RETURN(false); |
6507 | OPGEN_RETURN(true); |
6508 | #endif |
6509 | break; |
6510 | break; |
6511 | default: |
6512 | break; |
6513 | } |
6514 | break; |
6515 | default: |
6516 | break; |
6517 | } |
6518 | break; |
6519 | default: |
6520 | break; |
6521 | } |
6522 | break; |
6523 | case Opcode::X86ConvertToQuadWord64: |
6524 | switch (this->args.size()) { |
6525 | case 2: |
6526 | switch (this->args[0].kind()) { |
6527 | case Arg::Tmp: |
6528 | switch (this->args[1].kind()) { |
6529 | case Arg::Tmp: |
6530 | #if CPU(X86_64) |
6531 | if (!args[0].tmp().isGP()) |
6532 | OPGEN_RETURN(false); |
6533 | if (!args[1].tmp().isGP()) |
6534 | OPGEN_RETURN(false); |
6535 | if (!isX86ConvertToQuadWord64Valid(*this)) |
6536 | OPGEN_RETURN(false); |
6537 | OPGEN_RETURN(true); |
6538 | #endif |
6539 | break; |
6540 | break; |
6541 | default: |
6542 | break; |
6543 | } |
6544 | break; |
6545 | default: |
6546 | break; |
6547 | } |
6548 | break; |
6549 | default: |
6550 | break; |
6551 | } |
6552 | break; |
6553 | case Opcode::X86Div32: |
6554 | switch (this->args.size()) { |
6555 | case 3: |
6556 | switch (this->args[0].kind()) { |
6557 | case Arg::Tmp: |
6558 | switch (this->args[1].kind()) { |
6559 | case Arg::Tmp: |
6560 | switch (this->args[2].kind()) { |
6561 | case Arg::Tmp: |
6562 | #if CPU(X86) || CPU(X86_64) |
6563 | if (!args[0].tmp().isGP()) |
6564 | OPGEN_RETURN(false); |
6565 | if (!args[1].tmp().isGP()) |
6566 | OPGEN_RETURN(false); |
6567 | if (!args[2].tmp().isGP()) |
6568 | OPGEN_RETURN(false); |
6569 | if (!isX86Div32Valid(*this)) |
6570 | OPGEN_RETURN(false); |
6571 | OPGEN_RETURN(true); |
6572 | #endif |
6573 | break; |
6574 | break; |
6575 | default: |
6576 | break; |
6577 | } |
6578 | break; |
6579 | default: |
6580 | break; |
6581 | } |
6582 | break; |
6583 | default: |
6584 | break; |
6585 | } |
6586 | break; |
6587 | default: |
6588 | break; |
6589 | } |
6590 | break; |
6591 | case Opcode::X86UDiv32: |
6592 | switch (this->args.size()) { |
6593 | case 3: |
6594 | switch (this->args[0].kind()) { |
6595 | case Arg::Tmp: |
6596 | switch (this->args[1].kind()) { |
6597 | case Arg::Tmp: |
6598 | switch (this->args[2].kind()) { |
6599 | case Arg::Tmp: |
6600 | #if CPU(X86) || CPU(X86_64) |
6601 | if (!args[0].tmp().isGP()) |
6602 | OPGEN_RETURN(false); |
6603 | if (!args[1].tmp().isGP()) |
6604 | OPGEN_RETURN(false); |
6605 | if (!args[2].tmp().isGP()) |
6606 | OPGEN_RETURN(false); |
6607 | if (!isX86UDiv32Valid(*this)) |
6608 | OPGEN_RETURN(false); |
6609 | OPGEN_RETURN(true); |
6610 | #endif |
6611 | break; |
6612 | break; |
6613 | default: |
6614 | break; |
6615 | } |
6616 | break; |
6617 | default: |
6618 | break; |
6619 | } |
6620 | break; |
6621 | default: |
6622 | break; |
6623 | } |
6624 | break; |
6625 | default: |
6626 | break; |
6627 | } |
6628 | break; |
6629 | case Opcode::X86Div64: |
6630 | switch (this->args.size()) { |
6631 | case 3: |
6632 | switch (this->args[0].kind()) { |
6633 | case Arg::Tmp: |
6634 | switch (this->args[1].kind()) { |
6635 | case Arg::Tmp: |
6636 | switch (this->args[2].kind()) { |
6637 | case Arg::Tmp: |
6638 | #if CPU(X86_64) |
6639 | if (!args[0].tmp().isGP()) |
6640 | OPGEN_RETURN(false); |
6641 | if (!args[1].tmp().isGP()) |
6642 | OPGEN_RETURN(false); |
6643 | if (!args[2].tmp().isGP()) |
6644 | OPGEN_RETURN(false); |
6645 | if (!isX86Div64Valid(*this)) |
6646 | OPGEN_RETURN(false); |
6647 | OPGEN_RETURN(true); |
6648 | #endif |
6649 | break; |
6650 | break; |
6651 | default: |
6652 | break; |
6653 | } |
6654 | break; |
6655 | default: |
6656 | break; |
6657 | } |
6658 | break; |
6659 | default: |
6660 | break; |
6661 | } |
6662 | break; |
6663 | default: |
6664 | break; |
6665 | } |
6666 | break; |
6667 | case Opcode::X86UDiv64: |
6668 | switch (this->args.size()) { |
6669 | case 3: |
6670 | switch (this->args[0].kind()) { |
6671 | case Arg::Tmp: |
6672 | switch (this->args[1].kind()) { |
6673 | case Arg::Tmp: |
6674 | switch (this->args[2].kind()) { |
6675 | case Arg::Tmp: |
6676 | #if CPU(X86_64) |
6677 | if (!args[0].tmp().isGP()) |
6678 | OPGEN_RETURN(false); |
6679 | if (!args[1].tmp().isGP()) |
6680 | OPGEN_RETURN(false); |
6681 | if (!args[2].tmp().isGP()) |
6682 | OPGEN_RETURN(false); |
6683 | if (!isX86UDiv64Valid(*this)) |
6684 | OPGEN_RETURN(false); |
6685 | OPGEN_RETURN(true); |
6686 | #endif |
6687 | break; |
6688 | break; |
6689 | default: |
6690 | break; |
6691 | } |
6692 | break; |
6693 | default: |
6694 | break; |
6695 | } |
6696 | break; |
6697 | default: |
6698 | break; |
6699 | } |
6700 | break; |
6701 | default: |
6702 | break; |
6703 | } |
6704 | break; |
6705 | case Opcode::Lea32: |
6706 | switch (this->args.size()) { |
6707 | case 2: |
6708 | switch (this->args[0].kind()) { |
6709 | case Arg::Addr: |
6710 | case Arg::Stack: |
6711 | case Arg::CallArg: |
6712 | switch (this->args[1].kind()) { |
6713 | case Arg::Tmp: |
6714 | if (args[0].isStack() && args[0].stackSlot()->isSpill()) |
6715 | OPGEN_RETURN(false); |
6716 | if (!Arg::isValidAddrForm(args[0].offset())) |
6717 | OPGEN_RETURN(false); |
6718 | if (!args[1].tmp().isGP()) |
6719 | OPGEN_RETURN(false); |
6720 | OPGEN_RETURN(true); |
6721 | break; |
6722 | break; |
6723 | default: |
6724 | break; |
6725 | } |
6726 | break; |
6727 | case Arg::Index: |
6728 | switch (this->args[1].kind()) { |
6729 | case Arg::Tmp: |
6730 | #if CPU(X86) || CPU(X86_64) |
6731 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
6732 | OPGEN_RETURN(false); |
6733 | if (!args[1].tmp().isGP()) |
6734 | OPGEN_RETURN(false); |
6735 | OPGEN_RETURN(true); |
6736 | #endif |
6737 | break; |
6738 | break; |
6739 | default: |
6740 | break; |
6741 | } |
6742 | break; |
6743 | default: |
6744 | break; |
6745 | } |
6746 | break; |
6747 | default: |
6748 | break; |
6749 | } |
6750 | break; |
6751 | case Opcode::Lea64: |
6752 | switch (this->args.size()) { |
6753 | case 2: |
6754 | switch (this->args[0].kind()) { |
6755 | case Arg::Addr: |
6756 | case Arg::Stack: |
6757 | case Arg::CallArg: |
6758 | switch (this->args[1].kind()) { |
6759 | case Arg::Tmp: |
6760 | if (args[0].isStack() && args[0].stackSlot()->isSpill()) |
6761 | OPGEN_RETURN(false); |
6762 | if (!Arg::isValidAddrForm(args[0].offset())) |
6763 | OPGEN_RETURN(false); |
6764 | if (!args[1].tmp().isGP()) |
6765 | OPGEN_RETURN(false); |
6766 | OPGEN_RETURN(true); |
6767 | break; |
6768 | break; |
6769 | default: |
6770 | break; |
6771 | } |
6772 | break; |
6773 | case Arg::Index: |
6774 | switch (this->args[1].kind()) { |
6775 | case Arg::Tmp: |
6776 | #if CPU(X86) || CPU(X86_64) |
6777 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
6778 | OPGEN_RETURN(false); |
6779 | if (!args[1].tmp().isGP()) |
6780 | OPGEN_RETURN(false); |
6781 | OPGEN_RETURN(true); |
6782 | #endif |
6783 | break; |
6784 | break; |
6785 | default: |
6786 | break; |
6787 | } |
6788 | break; |
6789 | default: |
6790 | break; |
6791 | } |
6792 | break; |
6793 | default: |
6794 | break; |
6795 | } |
6796 | break; |
6797 | case Opcode::And32: |
6798 | switch (this->args.size()) { |
6799 | case 3: |
6800 | switch (this->args[0].kind()) { |
6801 | case Arg::Tmp: |
6802 | switch (this->args[1].kind()) { |
6803 | case Arg::Tmp: |
6804 | switch (this->args[2].kind()) { |
6805 | case Arg::Tmp: |
6806 | if (!args[0].tmp().isGP()) |
6807 | OPGEN_RETURN(false); |
6808 | if (!args[1].tmp().isGP()) |
6809 | OPGEN_RETURN(false); |
6810 | if (!args[2].tmp().isGP()) |
6811 | OPGEN_RETURN(false); |
6812 | OPGEN_RETURN(true); |
6813 | break; |
6814 | break; |
6815 | default: |
6816 | break; |
6817 | } |
6818 | break; |
6819 | case Arg::Addr: |
6820 | case Arg::Stack: |
6821 | case Arg::CallArg: |
6822 | switch (this->args[2].kind()) { |
6823 | case Arg::Tmp: |
6824 | #if CPU(X86) || CPU(X86_64) |
6825 | if (!args[0].tmp().isGP()) |
6826 | OPGEN_RETURN(false); |
6827 | if (!Arg::isValidAddrForm(args[1].offset())) |
6828 | OPGEN_RETURN(false); |
6829 | if (!args[2].tmp().isGP()) |
6830 | OPGEN_RETURN(false); |
6831 | OPGEN_RETURN(true); |
6832 | #endif |
6833 | break; |
6834 | break; |
6835 | default: |
6836 | break; |
6837 | } |
6838 | break; |
6839 | default: |
6840 | break; |
6841 | } |
6842 | break; |
6843 | case Arg::BitImm: |
6844 | switch (this->args[1].kind()) { |
6845 | case Arg::Tmp: |
6846 | switch (this->args[2].kind()) { |
6847 | case Arg::Tmp: |
6848 | #if CPU(ARM64) |
6849 | if (!Arg::isValidBitImmForm(args[0].value())) |
6850 | OPGEN_RETURN(false); |
6851 | if (!args[1].tmp().isGP()) |
6852 | OPGEN_RETURN(false); |
6853 | if (!args[2].tmp().isGP()) |
6854 | OPGEN_RETURN(false); |
6855 | OPGEN_RETURN(true); |
6856 | #endif |
6857 | break; |
6858 | break; |
6859 | default: |
6860 | break; |
6861 | } |
6862 | break; |
6863 | default: |
6864 | break; |
6865 | } |
6866 | break; |
6867 | case Arg::Addr: |
6868 | case Arg::Stack: |
6869 | case Arg::CallArg: |
6870 | switch (this->args[1].kind()) { |
6871 | case Arg::Tmp: |
6872 | switch (this->args[2].kind()) { |
6873 | case Arg::Tmp: |
6874 | #if CPU(X86) || CPU(X86_64) |
6875 | if (!Arg::isValidAddrForm(args[0].offset())) |
6876 | OPGEN_RETURN(false); |
6877 | if (!args[1].tmp().isGP()) |
6878 | OPGEN_RETURN(false); |
6879 | if (!args[2].tmp().isGP()) |
6880 | OPGEN_RETURN(false); |
6881 | OPGEN_RETURN(true); |
6882 | #endif |
6883 | break; |
6884 | break; |
6885 | default: |
6886 | break; |
6887 | } |
6888 | break; |
6889 | default: |
6890 | break; |
6891 | } |
6892 | break; |
6893 | default: |
6894 | break; |
6895 | } |
6896 | break; |
6897 | case 2: |
6898 | switch (this->args[0].kind()) { |
6899 | case Arg::Tmp: |
6900 | switch (this->args[1].kind()) { |
6901 | case Arg::Tmp: |
6902 | if (!args[0].tmp().isGP()) |
6903 | OPGEN_RETURN(false); |
6904 | if (!args[1].tmp().isGP()) |
6905 | OPGEN_RETURN(false); |
6906 | OPGEN_RETURN(true); |
6907 | break; |
6908 | break; |
6909 | case Arg::Addr: |
6910 | case Arg::Stack: |
6911 | case Arg::CallArg: |
6912 | #if CPU(X86) || CPU(X86_64) |
6913 | if (!args[0].tmp().isGP()) |
6914 | OPGEN_RETURN(false); |
6915 | if (!Arg::isValidAddrForm(args[1].offset())) |
6916 | OPGEN_RETURN(false); |
6917 | OPGEN_RETURN(true); |
6918 | #endif |
6919 | break; |
6920 | break; |
6921 | case Arg::Index: |
6922 | #if CPU(X86) || CPU(X86_64) |
6923 | if (!args[0].tmp().isGP()) |
6924 | OPGEN_RETURN(false); |
6925 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
6926 | OPGEN_RETURN(false); |
6927 | OPGEN_RETURN(true); |
6928 | #endif |
6929 | break; |
6930 | break; |
6931 | default: |
6932 | break; |
6933 | } |
6934 | break; |
6935 | case Arg::Imm: |
6936 | switch (this->args[1].kind()) { |
6937 | case Arg::Tmp: |
6938 | #if CPU(X86) || CPU(X86_64) |
6939 | if (!Arg::isValidImmForm(args[0].value())) |
6940 | OPGEN_RETURN(false); |
6941 | if (!args[1].tmp().isGP()) |
6942 | OPGEN_RETURN(false); |
6943 | OPGEN_RETURN(true); |
6944 | #endif |
6945 | break; |
6946 | break; |
6947 | case Arg::Addr: |
6948 | case Arg::Stack: |
6949 | case Arg::CallArg: |
6950 | #if CPU(X86) || CPU(X86_64) |
6951 | if (!Arg::isValidImmForm(args[0].value())) |
6952 | OPGEN_RETURN(false); |
6953 | if (!Arg::isValidAddrForm(args[1].offset())) |
6954 | OPGEN_RETURN(false); |
6955 | OPGEN_RETURN(true); |
6956 | #endif |
6957 | break; |
6958 | break; |
6959 | case Arg::Index: |
6960 | #if CPU(X86) || CPU(X86_64) |
6961 | if (!Arg::isValidImmForm(args[0].value())) |
6962 | OPGEN_RETURN(false); |
6963 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
6964 | OPGEN_RETURN(false); |
6965 | OPGEN_RETURN(true); |
6966 | #endif |
6967 | break; |
6968 | break; |
6969 | default: |
6970 | break; |
6971 | } |
6972 | break; |
6973 | case Arg::Addr: |
6974 | case Arg::Stack: |
6975 | case Arg::CallArg: |
6976 | switch (this->args[1].kind()) { |
6977 | case Arg::Tmp: |
6978 | #if CPU(X86) || CPU(X86_64) |
6979 | if (!Arg::isValidAddrForm(args[0].offset())) |
6980 | OPGEN_RETURN(false); |
6981 | if (!args[1].tmp().isGP()) |
6982 | OPGEN_RETURN(false); |
6983 | OPGEN_RETURN(true); |
6984 | #endif |
6985 | break; |
6986 | break; |
6987 | default: |
6988 | break; |
6989 | } |
6990 | break; |
6991 | case Arg::Index: |
6992 | switch (this->args[1].kind()) { |
6993 | case Arg::Tmp: |
6994 | #if CPU(X86) || CPU(X86_64) |
6995 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
6996 | OPGEN_RETURN(false); |
6997 | if (!args[1].tmp().isGP()) |
6998 | OPGEN_RETURN(false); |
6999 | OPGEN_RETURN(true); |
7000 | #endif |
7001 | break; |
7002 | break; |
7003 | default: |
7004 | break; |
7005 | } |
7006 | break; |
7007 | default: |
7008 | break; |
7009 | } |
7010 | break; |
7011 | default: |
7012 | break; |
7013 | } |
7014 | break; |
7015 | case Opcode::And64: |
7016 | switch (this->args.size()) { |
7017 | case 3: |
7018 | switch (this->args[0].kind()) { |
7019 | case Arg::Tmp: |
7020 | switch (this->args[1].kind()) { |
7021 | case Arg::Tmp: |
7022 | switch (this->args[2].kind()) { |
7023 | case Arg::Tmp: |
7024 | #if CPU(X86_64) || CPU(ARM64) |
7025 | if (!args[0].tmp().isGP()) |
7026 | OPGEN_RETURN(false); |
7027 | if (!args[1].tmp().isGP()) |
7028 | OPGEN_RETURN(false); |
7029 | if (!args[2].tmp().isGP()) |
7030 | OPGEN_RETURN(false); |
7031 | OPGEN_RETURN(true); |
7032 | #endif |
7033 | break; |
7034 | break; |
7035 | default: |
7036 | break; |
7037 | } |
7038 | break; |
7039 | default: |
7040 | break; |
7041 | } |
7042 | break; |
7043 | #if USE(JSVALUE64) |
7044 | case Arg::BitImm64: |
7045 | switch (this->args[1].kind()) { |
7046 | case Arg::Tmp: |
7047 | switch (this->args[2].kind()) { |
7048 | case Arg::Tmp: |
7049 | #if CPU(ARM64) |
7050 | if (!Arg::isValidBitImm64Form(args[0].value())) |
7051 | OPGEN_RETURN(false); |
7052 | if (!args[1].tmp().isGP()) |
7053 | OPGEN_RETURN(false); |
7054 | if (!args[2].tmp().isGP()) |
7055 | OPGEN_RETURN(false); |
7056 | OPGEN_RETURN(true); |
7057 | #endif |
7058 | break; |
7059 | break; |
7060 | default: |
7061 | break; |
7062 | } |
7063 | break; |
7064 | default: |
7065 | break; |
7066 | } |
7067 | break; |
7068 | #endif // USE(JSVALUE64) |
7069 | default: |
7070 | break; |
7071 | } |
7072 | break; |
7073 | case 2: |
7074 | switch (this->args[0].kind()) { |
7075 | case Arg::Tmp: |
7076 | switch (this->args[1].kind()) { |
7077 | case Arg::Tmp: |
7078 | #if CPU(X86_64) |
7079 | if (!args[0].tmp().isGP()) |
7080 | OPGEN_RETURN(false); |
7081 | if (!args[1].tmp().isGP()) |
7082 | OPGEN_RETURN(false); |
7083 | OPGEN_RETURN(true); |
7084 | #endif |
7085 | break; |
7086 | break; |
7087 | case Arg::Addr: |
7088 | case Arg::Stack: |
7089 | case Arg::CallArg: |
7090 | #if CPU(X86_64) |
7091 | if (!args[0].tmp().isGP()) |
7092 | OPGEN_RETURN(false); |
7093 | if (!Arg::isValidAddrForm(args[1].offset())) |
7094 | OPGEN_RETURN(false); |
7095 | OPGEN_RETURN(true); |
7096 | #endif |
7097 | break; |
7098 | break; |
7099 | case Arg::Index: |
7100 | #if CPU(X86_64) |
7101 | if (!args[0].tmp().isGP()) |
7102 | OPGEN_RETURN(false); |
7103 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
7104 | OPGEN_RETURN(false); |
7105 | OPGEN_RETURN(true); |
7106 | #endif |
7107 | break; |
7108 | break; |
7109 | default: |
7110 | break; |
7111 | } |
7112 | break; |
7113 | case Arg::Imm: |
7114 | switch (this->args[1].kind()) { |
7115 | case Arg::Tmp: |
7116 | #if CPU(X86_64) |
7117 | if (!Arg::isValidImmForm(args[0].value())) |
7118 | OPGEN_RETURN(false); |
7119 | if (!args[1].tmp().isGP()) |
7120 | OPGEN_RETURN(false); |
7121 | OPGEN_RETURN(true); |
7122 | #endif |
7123 | break; |
7124 | break; |
7125 | case Arg::Addr: |
7126 | case Arg::Stack: |
7127 | case Arg::CallArg: |
7128 | #if CPU(X86_64) |
7129 | if (!Arg::isValidImmForm(args[0].value())) |
7130 | OPGEN_RETURN(false); |
7131 | if (!Arg::isValidAddrForm(args[1].offset())) |
7132 | OPGEN_RETURN(false); |
7133 | OPGEN_RETURN(true); |
7134 | #endif |
7135 | break; |
7136 | break; |
7137 | case Arg::Index: |
7138 | #if CPU(X86_64) |
7139 | if (!Arg::isValidImmForm(args[0].value())) |
7140 | OPGEN_RETURN(false); |
7141 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
7142 | OPGEN_RETURN(false); |
7143 | OPGEN_RETURN(true); |
7144 | #endif |
7145 | break; |
7146 | break; |
7147 | default: |
7148 | break; |
7149 | } |
7150 | break; |
7151 | case Arg::Addr: |
7152 | case Arg::Stack: |
7153 | case Arg::CallArg: |
7154 | switch (this->args[1].kind()) { |
7155 | case Arg::Tmp: |
7156 | #if CPU(X86_64) |
7157 | if (!Arg::isValidAddrForm(args[0].offset())) |
7158 | OPGEN_RETURN(false); |
7159 | if (!args[1].tmp().isGP()) |
7160 | OPGEN_RETURN(false); |
7161 | OPGEN_RETURN(true); |
7162 | #endif |
7163 | break; |
7164 | break; |
7165 | default: |
7166 | break; |
7167 | } |
7168 | break; |
7169 | case Arg::Index: |
7170 | switch (this->args[1].kind()) { |
7171 | case Arg::Tmp: |
7172 | #if CPU(X86_64) |
7173 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
7174 | OPGEN_RETURN(false); |
7175 | if (!args[1].tmp().isGP()) |
7176 | OPGEN_RETURN(false); |
7177 | OPGEN_RETURN(true); |
7178 | #endif |
7179 | break; |
7180 | break; |
7181 | default: |
7182 | break; |
7183 | } |
7184 | break; |
7185 | default: |
7186 | break; |
7187 | } |
7188 | break; |
7189 | default: |
7190 | break; |
7191 | } |
7192 | break; |
7193 | case Opcode::AndDouble: |
7194 | switch (this->args.size()) { |
7195 | case 3: |
7196 | switch (this->args[0].kind()) { |
7197 | case Arg::Tmp: |
7198 | switch (this->args[1].kind()) { |
7199 | case Arg::Tmp: |
7200 | switch (this->args[2].kind()) { |
7201 | case Arg::Tmp: |
7202 | if (!args[0].tmp().isFP()) |
7203 | OPGEN_RETURN(false); |
7204 | if (!args[1].tmp().isFP()) |
7205 | OPGEN_RETURN(false); |
7206 | if (!args[2].tmp().isFP()) |
7207 | OPGEN_RETURN(false); |
7208 | OPGEN_RETURN(true); |
7209 | break; |
7210 | break; |
7211 | default: |
7212 | break; |
7213 | } |
7214 | break; |
7215 | default: |
7216 | break; |
7217 | } |
7218 | break; |
7219 | default: |
7220 | break; |
7221 | } |
7222 | break; |
7223 | case 2: |
7224 | switch (this->args[0].kind()) { |
7225 | case Arg::Tmp: |
7226 | switch (this->args[1].kind()) { |
7227 | case Arg::Tmp: |
7228 | #if CPU(X86) || CPU(X86_64) |
7229 | if (!args[0].tmp().isFP()) |
7230 | OPGEN_RETURN(false); |
7231 | if (!args[1].tmp().isFP()) |
7232 | OPGEN_RETURN(false); |
7233 | OPGEN_RETURN(true); |
7234 | #endif |
7235 | break; |
7236 | break; |
7237 | default: |
7238 | break; |
7239 | } |
7240 | break; |
7241 | default: |
7242 | break; |
7243 | } |
7244 | break; |
7245 | default: |
7246 | break; |
7247 | } |
7248 | break; |
7249 | case Opcode::AndFloat: |
7250 | switch (this->args.size()) { |
7251 | case 3: |
7252 | switch (this->args[0].kind()) { |
7253 | case Arg::Tmp: |
7254 | switch (this->args[1].kind()) { |
7255 | case Arg::Tmp: |
7256 | switch (this->args[2].kind()) { |
7257 | case Arg::Tmp: |
7258 | if (!args[0].tmp().isFP()) |
7259 | OPGEN_RETURN(false); |
7260 | if (!args[1].tmp().isFP()) |
7261 | OPGEN_RETURN(false); |
7262 | if (!args[2].tmp().isFP()) |
7263 | OPGEN_RETURN(false); |
7264 | OPGEN_RETURN(true); |
7265 | break; |
7266 | break; |
7267 | default: |
7268 | break; |
7269 | } |
7270 | break; |
7271 | default: |
7272 | break; |
7273 | } |
7274 | break; |
7275 | default: |
7276 | break; |
7277 | } |
7278 | break; |
7279 | case 2: |
7280 | switch (this->args[0].kind()) { |
7281 | case Arg::Tmp: |
7282 | switch (this->args[1].kind()) { |
7283 | case Arg::Tmp: |
7284 | #if CPU(X86) || CPU(X86_64) |
7285 | if (!args[0].tmp().isFP()) |
7286 | OPGEN_RETURN(false); |
7287 | if (!args[1].tmp().isFP()) |
7288 | OPGEN_RETURN(false); |
7289 | OPGEN_RETURN(true); |
7290 | #endif |
7291 | break; |
7292 | break; |
7293 | default: |
7294 | break; |
7295 | } |
7296 | break; |
7297 | default: |
7298 | break; |
7299 | } |
7300 | break; |
7301 | default: |
7302 | break; |
7303 | } |
7304 | break; |
7305 | case Opcode::OrDouble: |
7306 | switch (this->args.size()) { |
7307 | case 3: |
7308 | switch (this->args[0].kind()) { |
7309 | case Arg::Tmp: |
7310 | switch (this->args[1].kind()) { |
7311 | case Arg::Tmp: |
7312 | switch (this->args[2].kind()) { |
7313 | case Arg::Tmp: |
7314 | if (!args[0].tmp().isFP()) |
7315 | OPGEN_RETURN(false); |
7316 | if (!args[1].tmp().isFP()) |
7317 | OPGEN_RETURN(false); |
7318 | if (!args[2].tmp().isFP()) |
7319 | OPGEN_RETURN(false); |
7320 | OPGEN_RETURN(true); |
7321 | break; |
7322 | break; |
7323 | default: |
7324 | break; |
7325 | } |
7326 | break; |
7327 | default: |
7328 | break; |
7329 | } |
7330 | break; |
7331 | default: |
7332 | break; |
7333 | } |
7334 | break; |
7335 | case 2: |
7336 | switch (this->args[0].kind()) { |
7337 | case Arg::Tmp: |
7338 | switch (this->args[1].kind()) { |
7339 | case Arg::Tmp: |
7340 | #if CPU(X86) || CPU(X86_64) |
7341 | if (!args[0].tmp().isFP()) |
7342 | OPGEN_RETURN(false); |
7343 | if (!args[1].tmp().isFP()) |
7344 | OPGEN_RETURN(false); |
7345 | OPGEN_RETURN(true); |
7346 | #endif |
7347 | break; |
7348 | break; |
7349 | default: |
7350 | break; |
7351 | } |
7352 | break; |
7353 | default: |
7354 | break; |
7355 | } |
7356 | break; |
7357 | default: |
7358 | break; |
7359 | } |
7360 | break; |
7361 | case Opcode::OrFloat: |
7362 | switch (this->args.size()) { |
7363 | case 3: |
7364 | switch (this->args[0].kind()) { |
7365 | case Arg::Tmp: |
7366 | switch (this->args[1].kind()) { |
7367 | case Arg::Tmp: |
7368 | switch (this->args[2].kind()) { |
7369 | case Arg::Tmp: |
7370 | if (!args[0].tmp().isFP()) |
7371 | OPGEN_RETURN(false); |
7372 | if (!args[1].tmp().isFP()) |
7373 | OPGEN_RETURN(false); |
7374 | if (!args[2].tmp().isFP()) |
7375 | OPGEN_RETURN(false); |
7376 | OPGEN_RETURN(true); |
7377 | break; |
7378 | break; |
7379 | default: |
7380 | break; |
7381 | } |
7382 | break; |
7383 | default: |
7384 | break; |
7385 | } |
7386 | break; |
7387 | default: |
7388 | break; |
7389 | } |
7390 | break; |
7391 | case 2: |
7392 | switch (this->args[0].kind()) { |
7393 | case Arg::Tmp: |
7394 | switch (this->args[1].kind()) { |
7395 | case Arg::Tmp: |
7396 | #if CPU(X86) || CPU(X86_64) |
7397 | if (!args[0].tmp().isFP()) |
7398 | OPGEN_RETURN(false); |
7399 | if (!args[1].tmp().isFP()) |
7400 | OPGEN_RETURN(false); |
7401 | OPGEN_RETURN(true); |
7402 | #endif |
7403 | break; |
7404 | break; |
7405 | default: |
7406 | break; |
7407 | } |
7408 | break; |
7409 | default: |
7410 | break; |
7411 | } |
7412 | break; |
7413 | default: |
7414 | break; |
7415 | } |
7416 | break; |
7417 | case Opcode::XorDouble: |
7418 | switch (this->args.size()) { |
7419 | case 3: |
7420 | switch (this->args[0].kind()) { |
7421 | case Arg::Tmp: |
7422 | switch (this->args[1].kind()) { |
7423 | case Arg::Tmp: |
7424 | switch (this->args[2].kind()) { |
7425 | case Arg::Tmp: |
7426 | #if CPU(X86) || CPU(X86_64) |
7427 | if (!args[0].tmp().isFP()) |
7428 | OPGEN_RETURN(false); |
7429 | if (!args[1].tmp().isFP()) |
7430 | OPGEN_RETURN(false); |
7431 | if (!args[2].tmp().isFP()) |
7432 | OPGEN_RETURN(false); |
7433 | OPGEN_RETURN(true); |
7434 | #endif |
7435 | break; |
7436 | break; |
7437 | default: |
7438 | break; |
7439 | } |
7440 | break; |
7441 | default: |
7442 | break; |
7443 | } |
7444 | break; |
7445 | default: |
7446 | break; |
7447 | } |
7448 | break; |
7449 | case 2: |
7450 | switch (this->args[0].kind()) { |
7451 | case Arg::Tmp: |
7452 | switch (this->args[1].kind()) { |
7453 | case Arg::Tmp: |
7454 | #if CPU(X86) || CPU(X86_64) |
7455 | if (!args[0].tmp().isFP()) |
7456 | OPGEN_RETURN(false); |
7457 | if (!args[1].tmp().isFP()) |
7458 | OPGEN_RETURN(false); |
7459 | OPGEN_RETURN(true); |
7460 | #endif |
7461 | break; |
7462 | break; |
7463 | default: |
7464 | break; |
7465 | } |
7466 | break; |
7467 | default: |
7468 | break; |
7469 | } |
7470 | break; |
7471 | default: |
7472 | break; |
7473 | } |
7474 | break; |
7475 | case Opcode::XorFloat: |
7476 | switch (this->args.size()) { |
7477 | case 3: |
7478 | switch (this->args[0].kind()) { |
7479 | case Arg::Tmp: |
7480 | switch (this->args[1].kind()) { |
7481 | case Arg::Tmp: |
7482 | switch (this->args[2].kind()) { |
7483 | case Arg::Tmp: |
7484 | #if CPU(X86) || CPU(X86_64) |
7485 | if (!args[0].tmp().isFP()) |
7486 | OPGEN_RETURN(false); |
7487 | if (!args[1].tmp().isFP()) |
7488 | OPGEN_RETURN(false); |
7489 | if (!args[2].tmp().isFP()) |
7490 | OPGEN_RETURN(false); |
7491 | OPGEN_RETURN(true); |
7492 | #endif |
7493 | break; |
7494 | break; |
7495 | default: |
7496 | break; |
7497 | } |
7498 | break; |
7499 | default: |
7500 | break; |
7501 | } |
7502 | break; |
7503 | default: |
7504 | break; |
7505 | } |
7506 | break; |
7507 | case 2: |
7508 | switch (this->args[0].kind()) { |
7509 | case Arg::Tmp: |
7510 | switch (this->args[1].kind()) { |
7511 | case Arg::Tmp: |
7512 | #if CPU(X86) || CPU(X86_64) |
7513 | if (!args[0].tmp().isFP()) |
7514 | OPGEN_RETURN(false); |
7515 | if (!args[1].tmp().isFP()) |
7516 | OPGEN_RETURN(false); |
7517 | OPGEN_RETURN(true); |
7518 | #endif |
7519 | break; |
7520 | break; |
7521 | default: |
7522 | break; |
7523 | } |
7524 | break; |
7525 | default: |
7526 | break; |
7527 | } |
7528 | break; |
7529 | default: |
7530 | break; |
7531 | } |
7532 | break; |
7533 | case Opcode::Lshift32: |
7534 | switch (this->args.size()) { |
7535 | case 3: |
7536 | switch (this->args[0].kind()) { |
7537 | case Arg::Tmp: |
7538 | switch (this->args[1].kind()) { |
7539 | case Arg::Tmp: |
7540 | switch (this->args[2].kind()) { |
7541 | case Arg::Tmp: |
7542 | #if CPU(ARM64) |
7543 | if (!args[0].tmp().isGP()) |
7544 | OPGEN_RETURN(false); |
7545 | if (!args[1].tmp().isGP()) |
7546 | OPGEN_RETURN(false); |
7547 | if (!args[2].tmp().isGP()) |
7548 | OPGEN_RETURN(false); |
7549 | OPGEN_RETURN(true); |
7550 | #endif |
7551 | break; |
7552 | break; |
7553 | default: |
7554 | break; |
7555 | } |
7556 | break; |
7557 | case Arg::Imm: |
7558 | switch (this->args[2].kind()) { |
7559 | case Arg::Tmp: |
7560 | #if CPU(ARM64) |
7561 | if (!args[0].tmp().isGP()) |
7562 | OPGEN_RETURN(false); |
7563 | if (!Arg::isValidImmForm(args[1].value())) |
7564 | OPGEN_RETURN(false); |
7565 | if (!args[2].tmp().isGP()) |
7566 | OPGEN_RETURN(false); |
7567 | OPGEN_RETURN(true); |
7568 | #endif |
7569 | break; |
7570 | break; |
7571 | default: |
7572 | break; |
7573 | } |
7574 | break; |
7575 | default: |
7576 | break; |
7577 | } |
7578 | break; |
7579 | default: |
7580 | break; |
7581 | } |
7582 | break; |
7583 | case 2: |
7584 | switch (this->args[0].kind()) { |
7585 | case Arg::Tmp: |
7586 | switch (this->args[1].kind()) { |
7587 | case Arg::Tmp: |
7588 | #if CPU(X86) || CPU(X86_64) |
7589 | if (!args[0].tmp().isGP()) |
7590 | OPGEN_RETURN(false); |
7591 | if (!args[1].tmp().isGP()) |
7592 | OPGEN_RETURN(false); |
7593 | if (!isLshift32Valid(*this)) |
7594 | OPGEN_RETURN(false); |
7595 | OPGEN_RETURN(true); |
7596 | #endif |
7597 | break; |
7598 | break; |
7599 | default: |
7600 | break; |
7601 | } |
7602 | break; |
7603 | case Arg::Imm: |
7604 | switch (this->args[1].kind()) { |
7605 | case Arg::Tmp: |
7606 | #if CPU(X86) || CPU(X86_64) |
7607 | if (!Arg::isValidImmForm(args[0].value())) |
7608 | OPGEN_RETURN(false); |
7609 | if (!args[1].tmp().isGP()) |
7610 | OPGEN_RETURN(false); |
7611 | OPGEN_RETURN(true); |
7612 | #endif |
7613 | break; |
7614 | break; |
7615 | default: |
7616 | break; |
7617 | } |
7618 | break; |
7619 | default: |
7620 | break; |
7621 | } |
7622 | break; |
7623 | default: |
7624 | break; |
7625 | } |
7626 | break; |
7627 | case Opcode::Lshift64: |
7628 | switch (this->args.size()) { |
7629 | case 3: |
7630 | switch (this->args[0].kind()) { |
7631 | case Arg::Tmp: |
7632 | switch (this->args[1].kind()) { |
7633 | case Arg::Tmp: |
7634 | switch (this->args[2].kind()) { |
7635 | case Arg::Tmp: |
7636 | #if CPU(ARM64) |
7637 | if (!args[0].tmp().isGP()) |
7638 | OPGEN_RETURN(false); |
7639 | if (!args[1].tmp().isGP()) |
7640 | OPGEN_RETURN(false); |
7641 | if (!args[2].tmp().isGP()) |
7642 | OPGEN_RETURN(false); |
7643 | OPGEN_RETURN(true); |
7644 | #endif |
7645 | break; |
7646 | break; |
7647 | default: |
7648 | break; |
7649 | } |
7650 | break; |
7651 | case Arg::Imm: |
7652 | switch (this->args[2].kind()) { |
7653 | case Arg::Tmp: |
7654 | #if CPU(ARM64) |
7655 | if (!args[0].tmp().isGP()) |
7656 | OPGEN_RETURN(false); |
7657 | if (!Arg::isValidImmForm(args[1].value())) |
7658 | OPGEN_RETURN(false); |
7659 | if (!args[2].tmp().isGP()) |
7660 | OPGEN_RETURN(false); |
7661 | OPGEN_RETURN(true); |
7662 | #endif |
7663 | break; |
7664 | break; |
7665 | default: |
7666 | break; |
7667 | } |
7668 | break; |
7669 | default: |
7670 | break; |
7671 | } |
7672 | break; |
7673 | default: |
7674 | break; |
7675 | } |
7676 | break; |
7677 | case 2: |
7678 | switch (this->args[0].kind()) { |
7679 | case Arg::Tmp: |
7680 | switch (this->args[1].kind()) { |
7681 | case Arg::Tmp: |
7682 | #if CPU(X86_64) |
7683 | if (!args[0].tmp().isGP()) |
7684 | OPGEN_RETURN(false); |
7685 | if (!args[1].tmp().isGP()) |
7686 | OPGEN_RETURN(false); |
7687 | if (!isLshift64Valid(*this)) |
7688 | OPGEN_RETURN(false); |
7689 | OPGEN_RETURN(true); |
7690 | #endif |
7691 | break; |
7692 | break; |
7693 | default: |
7694 | break; |
7695 | } |
7696 | break; |
7697 | case Arg::Imm: |
7698 | switch (this->args[1].kind()) { |
7699 | case Arg::Tmp: |
7700 | #if CPU(X86_64) |
7701 | if (!Arg::isValidImmForm(args[0].value())) |
7702 | OPGEN_RETURN(false); |
7703 | if (!args[1].tmp().isGP()) |
7704 | OPGEN_RETURN(false); |
7705 | OPGEN_RETURN(true); |
7706 | #endif |
7707 | break; |
7708 | break; |
7709 | default: |
7710 | break; |
7711 | } |
7712 | break; |
7713 | default: |
7714 | break; |
7715 | } |
7716 | break; |
7717 | default: |
7718 | break; |
7719 | } |
7720 | break; |
7721 | case Opcode::Rshift32: |
7722 | switch (this->args.size()) { |
7723 | case 3: |
7724 | switch (this->args[0].kind()) { |
7725 | case Arg::Tmp: |
7726 | switch (this->args[1].kind()) { |
7727 | case Arg::Tmp: |
7728 | switch (this->args[2].kind()) { |
7729 | case Arg::Tmp: |
7730 | #if CPU(ARM64) |
7731 | if (!args[0].tmp().isGP()) |
7732 | OPGEN_RETURN(false); |
7733 | if (!args[1].tmp().isGP()) |
7734 | OPGEN_RETURN(false); |
7735 | if (!args[2].tmp().isGP()) |
7736 | OPGEN_RETURN(false); |
7737 | OPGEN_RETURN(true); |
7738 | #endif |
7739 | break; |
7740 | break; |
7741 | default: |
7742 | break; |
7743 | } |
7744 | break; |
7745 | case Arg::Imm: |
7746 | switch (this->args[2].kind()) { |
7747 | case Arg::Tmp: |
7748 | #if CPU(ARM64) |
7749 | if (!args[0].tmp().isGP()) |
7750 | OPGEN_RETURN(false); |
7751 | if (!Arg::isValidImmForm(args[1].value())) |
7752 | OPGEN_RETURN(false); |
7753 | if (!args[2].tmp().isGP()) |
7754 | OPGEN_RETURN(false); |
7755 | OPGEN_RETURN(true); |
7756 | #endif |
7757 | break; |
7758 | break; |
7759 | default: |
7760 | break; |
7761 | } |
7762 | break; |
7763 | default: |
7764 | break; |
7765 | } |
7766 | break; |
7767 | default: |
7768 | break; |
7769 | } |
7770 | break; |
7771 | case 2: |
7772 | switch (this->args[0].kind()) { |
7773 | case Arg::Tmp: |
7774 | switch (this->args[1].kind()) { |
7775 | case Arg::Tmp: |
7776 | #if CPU(X86) || CPU(X86_64) |
7777 | if (!args[0].tmp().isGP()) |
7778 | OPGEN_RETURN(false); |
7779 | if (!args[1].tmp().isGP()) |
7780 | OPGEN_RETURN(false); |
7781 | if (!isRshift32Valid(*this)) |
7782 | OPGEN_RETURN(false); |
7783 | OPGEN_RETURN(true); |
7784 | #endif |
7785 | break; |
7786 | break; |
7787 | default: |
7788 | break; |
7789 | } |
7790 | break; |
7791 | case Arg::Imm: |
7792 | switch (this->args[1].kind()) { |
7793 | case Arg::Tmp: |
7794 | #if CPU(X86) || CPU(X86_64) |
7795 | if (!Arg::isValidImmForm(args[0].value())) |
7796 | OPGEN_RETURN(false); |
7797 | if (!args[1].tmp().isGP()) |
7798 | OPGEN_RETURN(false); |
7799 | OPGEN_RETURN(true); |
7800 | #endif |
7801 | break; |
7802 | break; |
7803 | default: |
7804 | break; |
7805 | } |
7806 | break; |
7807 | default: |
7808 | break; |
7809 | } |
7810 | break; |
7811 | default: |
7812 | break; |
7813 | } |
7814 | break; |
7815 | case Opcode::Rshift64: |
7816 | switch (this->args.size()) { |
7817 | case 3: |
7818 | switch (this->args[0].kind()) { |
7819 | case Arg::Tmp: |
7820 | switch (this->args[1].kind()) { |
7821 | case Arg::Tmp: |
7822 | switch (this->args[2].kind()) { |
7823 | case Arg::Tmp: |
7824 | #if CPU(ARM64) |
7825 | if (!args[0].tmp().isGP()) |
7826 | OPGEN_RETURN(false); |
7827 | if (!args[1].tmp().isGP()) |
7828 | OPGEN_RETURN(false); |
7829 | if (!args[2].tmp().isGP()) |
7830 | OPGEN_RETURN(false); |
7831 | OPGEN_RETURN(true); |
7832 | #endif |
7833 | break; |
7834 | break; |
7835 | default: |
7836 | break; |
7837 | } |
7838 | break; |
7839 | case Arg::Imm: |
7840 | switch (this->args[2].kind()) { |
7841 | case Arg::Tmp: |
7842 | #if CPU(ARM64) |
7843 | if (!args[0].tmp().isGP()) |
7844 | OPGEN_RETURN(false); |
7845 | if (!Arg::isValidImmForm(args[1].value())) |
7846 | OPGEN_RETURN(false); |
7847 | if (!args[2].tmp().isGP()) |
7848 | OPGEN_RETURN(false); |
7849 | OPGEN_RETURN(true); |
7850 | #endif |
7851 | break; |
7852 | break; |
7853 | default: |
7854 | break; |
7855 | } |
7856 | break; |
7857 | default: |
7858 | break; |
7859 | } |
7860 | break; |
7861 | default: |
7862 | break; |
7863 | } |
7864 | break; |
7865 | case 2: |
7866 | switch (this->args[0].kind()) { |
7867 | case Arg::Tmp: |
7868 | switch (this->args[1].kind()) { |
7869 | case Arg::Tmp: |
7870 | #if CPU(X86_64) |
7871 | if (!args[0].tmp().isGP()) |
7872 | OPGEN_RETURN(false); |
7873 | if (!args[1].tmp().isGP()) |
7874 | OPGEN_RETURN(false); |
7875 | if (!isRshift64Valid(*this)) |
7876 | OPGEN_RETURN(false); |
7877 | OPGEN_RETURN(true); |
7878 | #endif |
7879 | break; |
7880 | break; |
7881 | default: |
7882 | break; |
7883 | } |
7884 | break; |
7885 | case Arg::Imm: |
7886 | switch (this->args[1].kind()) { |
7887 | case Arg::Tmp: |
7888 | #if CPU(X86_64) |
7889 | if (!Arg::isValidImmForm(args[0].value())) |
7890 | OPGEN_RETURN(false); |
7891 | if (!args[1].tmp().isGP()) |
7892 | OPGEN_RETURN(false); |
7893 | OPGEN_RETURN(true); |
7894 | #endif |
7895 | break; |
7896 | break; |
7897 | default: |
7898 | break; |
7899 | } |
7900 | break; |
7901 | default: |
7902 | break; |
7903 | } |
7904 | break; |
7905 | default: |
7906 | break; |
7907 | } |
7908 | break; |
7909 | case Opcode::Urshift32: |
7910 | switch (this->args.size()) { |
7911 | case 3: |
7912 | switch (this->args[0].kind()) { |
7913 | case Arg::Tmp: |
7914 | switch (this->args[1].kind()) { |
7915 | case Arg::Tmp: |
7916 | switch (this->args[2].kind()) { |
7917 | case Arg::Tmp: |
7918 | #if CPU(ARM64) |
7919 | if (!args[0].tmp().isGP()) |
7920 | OPGEN_RETURN(false); |
7921 | if (!args[1].tmp().isGP()) |
7922 | OPGEN_RETURN(false); |
7923 | if (!args[2].tmp().isGP()) |
7924 | OPGEN_RETURN(false); |
7925 | OPGEN_RETURN(true); |
7926 | #endif |
7927 | break; |
7928 | break; |
7929 | default: |
7930 | break; |
7931 | } |
7932 | break; |
7933 | case Arg::Imm: |
7934 | switch (this->args[2].kind()) { |
7935 | case Arg::Tmp: |
7936 | #if CPU(ARM64) |
7937 | if (!args[0].tmp().isGP()) |
7938 | OPGEN_RETURN(false); |
7939 | if (!Arg::isValidImmForm(args[1].value())) |
7940 | OPGEN_RETURN(false); |
7941 | if (!args[2].tmp().isGP()) |
7942 | OPGEN_RETURN(false); |
7943 | OPGEN_RETURN(true); |
7944 | #endif |
7945 | break; |
7946 | break; |
7947 | default: |
7948 | break; |
7949 | } |
7950 | break; |
7951 | default: |
7952 | break; |
7953 | } |
7954 | break; |
7955 | default: |
7956 | break; |
7957 | } |
7958 | break; |
7959 | case 2: |
7960 | switch (this->args[0].kind()) { |
7961 | case Arg::Tmp: |
7962 | switch (this->args[1].kind()) { |
7963 | case Arg::Tmp: |
7964 | #if CPU(X86) || CPU(X86_64) |
7965 | if (!args[0].tmp().isGP()) |
7966 | OPGEN_RETURN(false); |
7967 | if (!args[1].tmp().isGP()) |
7968 | OPGEN_RETURN(false); |
7969 | if (!isUrshift32Valid(*this)) |
7970 | OPGEN_RETURN(false); |
7971 | OPGEN_RETURN(true); |
7972 | #endif |
7973 | break; |
7974 | break; |
7975 | default: |
7976 | break; |
7977 | } |
7978 | break; |
7979 | case Arg::Imm: |
7980 | switch (this->args[1].kind()) { |
7981 | case Arg::Tmp: |
7982 | #if CPU(X86) || CPU(X86_64) |
7983 | if (!Arg::isValidImmForm(args[0].value())) |
7984 | OPGEN_RETURN(false); |
7985 | if (!args[1].tmp().isGP()) |
7986 | OPGEN_RETURN(false); |
7987 | OPGEN_RETURN(true); |
7988 | #endif |
7989 | break; |
7990 | break; |
7991 | default: |
7992 | break; |
7993 | } |
7994 | break; |
7995 | default: |
7996 | break; |
7997 | } |
7998 | break; |
7999 | default: |
8000 | break; |
8001 | } |
8002 | break; |
8003 | case Opcode::Urshift64: |
8004 | switch (this->args.size()) { |
8005 | case 3: |
8006 | switch (this->args[0].kind()) { |
8007 | case Arg::Tmp: |
8008 | switch (this->args[1].kind()) { |
8009 | case Arg::Tmp: |
8010 | switch (this->args[2].kind()) { |
8011 | case Arg::Tmp: |
8012 | #if CPU(ARM64) |
8013 | if (!args[0].tmp().isGP()) |
8014 | OPGEN_RETURN(false); |
8015 | if (!args[1].tmp().isGP()) |
8016 | OPGEN_RETURN(false); |
8017 | if (!args[2].tmp().isGP()) |
8018 | OPGEN_RETURN(false); |
8019 | OPGEN_RETURN(true); |
8020 | #endif |
8021 | break; |
8022 | break; |
8023 | default: |
8024 | break; |
8025 | } |
8026 | break; |
8027 | case Arg::Imm: |
8028 | switch (this->args[2].kind()) { |
8029 | case Arg::Tmp: |
8030 | #if CPU(ARM64) |
8031 | if (!args[0].tmp().isGP()) |
8032 | OPGEN_RETURN(false); |
8033 | if (!Arg::isValidImmForm(args[1].value())) |
8034 | OPGEN_RETURN(false); |
8035 | if (!args[2].tmp().isGP()) |
8036 | OPGEN_RETURN(false); |
8037 | OPGEN_RETURN(true); |
8038 | #endif |
8039 | break; |
8040 | break; |
8041 | default: |
8042 | break; |
8043 | } |
8044 | break; |
8045 | default: |
8046 | break; |
8047 | } |
8048 | break; |
8049 | default: |
8050 | break; |
8051 | } |
8052 | break; |
8053 | case 2: |
8054 | switch (this->args[0].kind()) { |
8055 | case Arg::Tmp: |
8056 | switch (this->args[1].kind()) { |
8057 | case Arg::Tmp: |
8058 | #if CPU(X86_64) |
8059 | if (!args[0].tmp().isGP()) |
8060 | OPGEN_RETURN(false); |
8061 | if (!args[1].tmp().isGP()) |
8062 | OPGEN_RETURN(false); |
8063 | if (!isUrshift64Valid(*this)) |
8064 | OPGEN_RETURN(false); |
8065 | OPGEN_RETURN(true); |
8066 | #endif |
8067 | break; |
8068 | break; |
8069 | default: |
8070 | break; |
8071 | } |
8072 | break; |
8073 | case Arg::Imm: |
8074 | switch (this->args[1].kind()) { |
8075 | case Arg::Tmp: |
8076 | #if CPU(X86_64) |
8077 | if (!Arg::isValidImmForm(args[0].value())) |
8078 | OPGEN_RETURN(false); |
8079 | if (!args[1].tmp().isGP()) |
8080 | OPGEN_RETURN(false); |
8081 | OPGEN_RETURN(true); |
8082 | #endif |
8083 | break; |
8084 | break; |
8085 | default: |
8086 | break; |
8087 | } |
8088 | break; |
8089 | default: |
8090 | break; |
8091 | } |
8092 | break; |
8093 | default: |
8094 | break; |
8095 | } |
8096 | break; |
8097 | case Opcode::RotateRight32: |
8098 | switch (this->args.size()) { |
8099 | case 2: |
8100 | switch (this->args[0].kind()) { |
8101 | case Arg::Tmp: |
8102 | switch (this->args[1].kind()) { |
8103 | case Arg::Tmp: |
8104 | #if CPU(X86_64) |
8105 | if (!args[0].tmp().isGP()) |
8106 | OPGEN_RETURN(false); |
8107 | if (!args[1].tmp().isGP()) |
8108 | OPGEN_RETURN(false); |
8109 | if (!isRotateRight32Valid(*this)) |
8110 | OPGEN_RETURN(false); |
8111 | OPGEN_RETURN(true); |
8112 | #endif |
8113 | break; |
8114 | break; |
8115 | default: |
8116 | break; |
8117 | } |
8118 | break; |
8119 | case Arg::Imm: |
8120 | switch (this->args[1].kind()) { |
8121 | case Arg::Tmp: |
8122 | #if CPU(X86_64) |
8123 | if (!Arg::isValidImmForm(args[0].value())) |
8124 | OPGEN_RETURN(false); |
8125 | if (!args[1].tmp().isGP()) |
8126 | OPGEN_RETURN(false); |
8127 | OPGEN_RETURN(true); |
8128 | #endif |
8129 | break; |
8130 | break; |
8131 | default: |
8132 | break; |
8133 | } |
8134 | break; |
8135 | default: |
8136 | break; |
8137 | } |
8138 | break; |
8139 | case 3: |
8140 | switch (this->args[0].kind()) { |
8141 | case Arg::Tmp: |
8142 | switch (this->args[1].kind()) { |
8143 | case Arg::Tmp: |
8144 | switch (this->args[2].kind()) { |
8145 | case Arg::Tmp: |
8146 | #if CPU(ARM64) |
8147 | if (!args[0].tmp().isGP()) |
8148 | OPGEN_RETURN(false); |
8149 | if (!args[1].tmp().isGP()) |
8150 | OPGEN_RETURN(false); |
8151 | if (!args[2].tmp().isGP()) |
8152 | OPGEN_RETURN(false); |
8153 | OPGEN_RETURN(true); |
8154 | #endif |
8155 | break; |
8156 | break; |
8157 | default: |
8158 | break; |
8159 | } |
8160 | break; |
8161 | case Arg::Imm: |
8162 | switch (this->args[2].kind()) { |
8163 | case Arg::Tmp: |
8164 | #if CPU(ARM64) |
8165 | if (!args[0].tmp().isGP()) |
8166 | OPGEN_RETURN(false); |
8167 | if (!Arg::isValidImmForm(args[1].value())) |
8168 | OPGEN_RETURN(false); |
8169 | if (!args[2].tmp().isGP()) |
8170 | OPGEN_RETURN(false); |
8171 | OPGEN_RETURN(true); |
8172 | #endif |
8173 | break; |
8174 | break; |
8175 | default: |
8176 | break; |
8177 | } |
8178 | break; |
8179 | default: |
8180 | break; |
8181 | } |
8182 | break; |
8183 | default: |
8184 | break; |
8185 | } |
8186 | break; |
8187 | default: |
8188 | break; |
8189 | } |
8190 | break; |
8191 | case Opcode::RotateRight64: |
8192 | switch (this->args.size()) { |
8193 | case 2: |
8194 | switch (this->args[0].kind()) { |
8195 | case Arg::Tmp: |
8196 | switch (this->args[1].kind()) { |
8197 | case Arg::Tmp: |
8198 | #if CPU(X86_64) |
8199 | if (!args[0].tmp().isGP()) |
8200 | OPGEN_RETURN(false); |
8201 | if (!args[1].tmp().isGP()) |
8202 | OPGEN_RETURN(false); |
8203 | if (!isRotateRight64Valid(*this)) |
8204 | OPGEN_RETURN(false); |
8205 | OPGEN_RETURN(true); |
8206 | #endif |
8207 | break; |
8208 | break; |
8209 | default: |
8210 | break; |
8211 | } |
8212 | break; |
8213 | case Arg::Imm: |
8214 | switch (this->args[1].kind()) { |
8215 | case Arg::Tmp: |
8216 | #if CPU(X86_64) |
8217 | if (!Arg::isValidImmForm(args[0].value())) |
8218 | OPGEN_RETURN(false); |
8219 | if (!args[1].tmp().isGP()) |
8220 | OPGEN_RETURN(false); |
8221 | OPGEN_RETURN(true); |
8222 | #endif |
8223 | break; |
8224 | break; |
8225 | default: |
8226 | break; |
8227 | } |
8228 | break; |
8229 | default: |
8230 | break; |
8231 | } |
8232 | break; |
8233 | case 3: |
8234 | switch (this->args[0].kind()) { |
8235 | case Arg::Tmp: |
8236 | switch (this->args[1].kind()) { |
8237 | case Arg::Tmp: |
8238 | switch (this->args[2].kind()) { |
8239 | case Arg::Tmp: |
8240 | #if CPU(ARM64) |
8241 | if (!args[0].tmp().isGP()) |
8242 | OPGEN_RETURN(false); |
8243 | if (!args[1].tmp().isGP()) |
8244 | OPGEN_RETURN(false); |
8245 | if (!args[2].tmp().isGP()) |
8246 | OPGEN_RETURN(false); |
8247 | OPGEN_RETURN(true); |
8248 | #endif |
8249 | break; |
8250 | break; |
8251 | default: |
8252 | break; |
8253 | } |
8254 | break; |
8255 | case Arg::Imm: |
8256 | switch (this->args[2].kind()) { |
8257 | case Arg::Tmp: |
8258 | #if CPU(ARM64) |
8259 | if (!args[0].tmp().isGP()) |
8260 | OPGEN_RETURN(false); |
8261 | if (!Arg::isValidImmForm(args[1].value())) |
8262 | OPGEN_RETURN(false); |
8263 | if (!args[2].tmp().isGP()) |
8264 | OPGEN_RETURN(false); |
8265 | OPGEN_RETURN(true); |
8266 | #endif |
8267 | break; |
8268 | break; |
8269 | default: |
8270 | break; |
8271 | } |
8272 | break; |
8273 | default: |
8274 | break; |
8275 | } |
8276 | break; |
8277 | default: |
8278 | break; |
8279 | } |
8280 | break; |
8281 | default: |
8282 | break; |
8283 | } |
8284 | break; |
8285 | case Opcode::RotateLeft32: |
8286 | switch (this->args.size()) { |
8287 | case 2: |
8288 | switch (this->args[0].kind()) { |
8289 | case Arg::Tmp: |
8290 | switch (this->args[1].kind()) { |
8291 | case Arg::Tmp: |
8292 | #if CPU(X86_64) |
8293 | if (!args[0].tmp().isGP()) |
8294 | OPGEN_RETURN(false); |
8295 | if (!args[1].tmp().isGP()) |
8296 | OPGEN_RETURN(false); |
8297 | if (!isRotateLeft32Valid(*this)) |
8298 | OPGEN_RETURN(false); |
8299 | OPGEN_RETURN(true); |
8300 | #endif |
8301 | break; |
8302 | break; |
8303 | default: |
8304 | break; |
8305 | } |
8306 | break; |
8307 | case Arg::Imm: |
8308 | switch (this->args[1].kind()) { |
8309 | case Arg::Tmp: |
8310 | #if CPU(X86_64) |
8311 | if (!Arg::isValidImmForm(args[0].value())) |
8312 | OPGEN_RETURN(false); |
8313 | if (!args[1].tmp().isGP()) |
8314 | OPGEN_RETURN(false); |
8315 | OPGEN_RETURN(true); |
8316 | #endif |
8317 | break; |
8318 | break; |
8319 | default: |
8320 | break; |
8321 | } |
8322 | break; |
8323 | default: |
8324 | break; |
8325 | } |
8326 | break; |
8327 | default: |
8328 | break; |
8329 | } |
8330 | break; |
8331 | case Opcode::RotateLeft64: |
8332 | switch (this->args.size()) { |
8333 | case 2: |
8334 | switch (this->args[0].kind()) { |
8335 | case Arg::Tmp: |
8336 | switch (this->args[1].kind()) { |
8337 | case Arg::Tmp: |
8338 | #if CPU(X86_64) |
8339 | if (!args[0].tmp().isGP()) |
8340 | OPGEN_RETURN(false); |
8341 | if (!args[1].tmp().isGP()) |
8342 | OPGEN_RETURN(false); |
8343 | if (!isRotateLeft64Valid(*this)) |
8344 | OPGEN_RETURN(false); |
8345 | OPGEN_RETURN(true); |
8346 | #endif |
8347 | break; |
8348 | break; |
8349 | default: |
8350 | break; |
8351 | } |
8352 | break; |
8353 | case Arg::Imm: |
8354 | switch (this->args[1].kind()) { |
8355 | case Arg::Tmp: |
8356 | #if CPU(X86_64) |
8357 | if (!Arg::isValidImmForm(args[0].value())) |
8358 | OPGEN_RETURN(false); |
8359 | if (!args[1].tmp().isGP()) |
8360 | OPGEN_RETURN(false); |
8361 | OPGEN_RETURN(true); |
8362 | #endif |
8363 | break; |
8364 | break; |
8365 | default: |
8366 | break; |
8367 | } |
8368 | break; |
8369 | default: |
8370 | break; |
8371 | } |
8372 | break; |
8373 | default: |
8374 | break; |
8375 | } |
8376 | break; |
8377 | case Opcode::Or32: |
8378 | switch (this->args.size()) { |
8379 | case 3: |
8380 | switch (this->args[0].kind()) { |
8381 | case Arg::Tmp: |
8382 | switch (this->args[1].kind()) { |
8383 | case Arg::Tmp: |
8384 | switch (this->args[2].kind()) { |
8385 | case Arg::Tmp: |
8386 | if (!args[0].tmp().isGP()) |
8387 | OPGEN_RETURN(false); |
8388 | if (!args[1].tmp().isGP()) |
8389 | OPGEN_RETURN(false); |
8390 | if (!args[2].tmp().isGP()) |
8391 | OPGEN_RETURN(false); |
8392 | OPGEN_RETURN(true); |
8393 | break; |
8394 | break; |
8395 | default: |
8396 | break; |
8397 | } |
8398 | break; |
8399 | case Arg::Addr: |
8400 | case Arg::Stack: |
8401 | case Arg::CallArg: |
8402 | switch (this->args[2].kind()) { |
8403 | case Arg::Tmp: |
8404 | #if CPU(X86) || CPU(X86_64) |
8405 | if (!args[0].tmp().isGP()) |
8406 | OPGEN_RETURN(false); |
8407 | if (!Arg::isValidAddrForm(args[1].offset())) |
8408 | OPGEN_RETURN(false); |
8409 | if (!args[2].tmp().isGP()) |
8410 | OPGEN_RETURN(false); |
8411 | OPGEN_RETURN(true); |
8412 | #endif |
8413 | break; |
8414 | break; |
8415 | default: |
8416 | break; |
8417 | } |
8418 | break; |
8419 | default: |
8420 | break; |
8421 | } |
8422 | break; |
8423 | case Arg::BitImm: |
8424 | switch (this->args[1].kind()) { |
8425 | case Arg::Tmp: |
8426 | switch (this->args[2].kind()) { |
8427 | case Arg::Tmp: |
8428 | #if CPU(ARM64) |
8429 | if (!Arg::isValidBitImmForm(args[0].value())) |
8430 | OPGEN_RETURN(false); |
8431 | if (!args[1].tmp().isGP()) |
8432 | OPGEN_RETURN(false); |
8433 | if (!args[2].tmp().isGP()) |
8434 | OPGEN_RETURN(false); |
8435 | OPGEN_RETURN(true); |
8436 | #endif |
8437 | break; |
8438 | break; |
8439 | default: |
8440 | break; |
8441 | } |
8442 | break; |
8443 | default: |
8444 | break; |
8445 | } |
8446 | break; |
8447 | case Arg::Addr: |
8448 | case Arg::Stack: |
8449 | case Arg::CallArg: |
8450 | switch (this->args[1].kind()) { |
8451 | case Arg::Tmp: |
8452 | switch (this->args[2].kind()) { |
8453 | case Arg::Tmp: |
8454 | #if CPU(X86) || CPU(X86_64) |
8455 | if (!Arg::isValidAddrForm(args[0].offset())) |
8456 | OPGEN_RETURN(false); |
8457 | if (!args[1].tmp().isGP()) |
8458 | OPGEN_RETURN(false); |
8459 | if (!args[2].tmp().isGP()) |
8460 | OPGEN_RETURN(false); |
8461 | OPGEN_RETURN(true); |
8462 | #endif |
8463 | break; |
8464 | break; |
8465 | default: |
8466 | break; |
8467 | } |
8468 | break; |
8469 | default: |
8470 | break; |
8471 | } |
8472 | break; |
8473 | default: |
8474 | break; |
8475 | } |
8476 | break; |
8477 | case 2: |
8478 | switch (this->args[0].kind()) { |
8479 | case Arg::Tmp: |
8480 | switch (this->args[1].kind()) { |
8481 | case Arg::Tmp: |
8482 | if (!args[0].tmp().isGP()) |
8483 | OPGEN_RETURN(false); |
8484 | if (!args[1].tmp().isGP()) |
8485 | OPGEN_RETURN(false); |
8486 | OPGEN_RETURN(true); |
8487 | break; |
8488 | break; |
8489 | case Arg::Addr: |
8490 | case Arg::Stack: |
8491 | case Arg::CallArg: |
8492 | #if CPU(X86) || CPU(X86_64) |
8493 | if (!args[0].tmp().isGP()) |
8494 | OPGEN_RETURN(false); |
8495 | if (!Arg::isValidAddrForm(args[1].offset())) |
8496 | OPGEN_RETURN(false); |
8497 | OPGEN_RETURN(true); |
8498 | #endif |
8499 | break; |
8500 | break; |
8501 | case Arg::Index: |
8502 | #if CPU(X86) || CPU(X86_64) |
8503 | if (!args[0].tmp().isGP()) |
8504 | OPGEN_RETURN(false); |
8505 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
8506 | OPGEN_RETURN(false); |
8507 | OPGEN_RETURN(true); |
8508 | #endif |
8509 | break; |
8510 | break; |
8511 | default: |
8512 | break; |
8513 | } |
8514 | break; |
8515 | case Arg::Imm: |
8516 | switch (this->args[1].kind()) { |
8517 | case Arg::Tmp: |
8518 | #if CPU(X86) || CPU(X86_64) |
8519 | if (!Arg::isValidImmForm(args[0].value())) |
8520 | OPGEN_RETURN(false); |
8521 | if (!args[1].tmp().isGP()) |
8522 | OPGEN_RETURN(false); |
8523 | OPGEN_RETURN(true); |
8524 | #endif |
8525 | break; |
8526 | break; |
8527 | case Arg::Addr: |
8528 | case Arg::Stack: |
8529 | case Arg::CallArg: |
8530 | #if CPU(X86) || CPU(X86_64) |
8531 | if (!Arg::isValidImmForm(args[0].value())) |
8532 | OPGEN_RETURN(false); |
8533 | if (!Arg::isValidAddrForm(args[1].offset())) |
8534 | OPGEN_RETURN(false); |
8535 | OPGEN_RETURN(true); |
8536 | #endif |
8537 | break; |
8538 | break; |
8539 | case Arg::Index: |
8540 | #if CPU(X86) || CPU(X86_64) |
8541 | if (!Arg::isValidImmForm(args[0].value())) |
8542 | OPGEN_RETURN(false); |
8543 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
8544 | OPGEN_RETURN(false); |
8545 | OPGEN_RETURN(true); |
8546 | #endif |
8547 | break; |
8548 | break; |
8549 | default: |
8550 | break; |
8551 | } |
8552 | break; |
8553 | case Arg::Addr: |
8554 | case Arg::Stack: |
8555 | case Arg::CallArg: |
8556 | switch (this->args[1].kind()) { |
8557 | case Arg::Tmp: |
8558 | #if CPU(X86) || CPU(X86_64) |
8559 | if (!Arg::isValidAddrForm(args[0].offset())) |
8560 | OPGEN_RETURN(false); |
8561 | if (!args[1].tmp().isGP()) |
8562 | OPGEN_RETURN(false); |
8563 | OPGEN_RETURN(true); |
8564 | #endif |
8565 | break; |
8566 | break; |
8567 | default: |
8568 | break; |
8569 | } |
8570 | break; |
8571 | case Arg::Index: |
8572 | switch (this->args[1].kind()) { |
8573 | case Arg::Tmp: |
8574 | #if CPU(X86) || CPU(X86_64) |
8575 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
8576 | OPGEN_RETURN(false); |
8577 | if (!args[1].tmp().isGP()) |
8578 | OPGEN_RETURN(false); |
8579 | OPGEN_RETURN(true); |
8580 | #endif |
8581 | break; |
8582 | break; |
8583 | default: |
8584 | break; |
8585 | } |
8586 | break; |
8587 | default: |
8588 | break; |
8589 | } |
8590 | break; |
8591 | default: |
8592 | break; |
8593 | } |
8594 | break; |
8595 | case Opcode::Or64: |
8596 | switch (this->args.size()) { |
8597 | case 3: |
8598 | switch (this->args[0].kind()) { |
8599 | case Arg::Tmp: |
8600 | switch (this->args[1].kind()) { |
8601 | case Arg::Tmp: |
8602 | switch (this->args[2].kind()) { |
8603 | case Arg::Tmp: |
8604 | #if CPU(X86_64) || CPU(ARM64) |
8605 | if (!args[0].tmp().isGP()) |
8606 | OPGEN_RETURN(false); |
8607 | if (!args[1].tmp().isGP()) |
8608 | OPGEN_RETURN(false); |
8609 | if (!args[2].tmp().isGP()) |
8610 | OPGEN_RETURN(false); |
8611 | OPGEN_RETURN(true); |
8612 | #endif |
8613 | break; |
8614 | break; |
8615 | default: |
8616 | break; |
8617 | } |
8618 | break; |
8619 | default: |
8620 | break; |
8621 | } |
8622 | break; |
8623 | #if USE(JSVALUE64) |
8624 | case Arg::BitImm64: |
8625 | switch (this->args[1].kind()) { |
8626 | case Arg::Tmp: |
8627 | switch (this->args[2].kind()) { |
8628 | case Arg::Tmp: |
8629 | #if CPU(ARM64) |
8630 | if (!Arg::isValidBitImm64Form(args[0].value())) |
8631 | OPGEN_RETURN(false); |
8632 | if (!args[1].tmp().isGP()) |
8633 | OPGEN_RETURN(false); |
8634 | if (!args[2].tmp().isGP()) |
8635 | OPGEN_RETURN(false); |
8636 | OPGEN_RETURN(true); |
8637 | #endif |
8638 | break; |
8639 | break; |
8640 | default: |
8641 | break; |
8642 | } |
8643 | break; |
8644 | default: |
8645 | break; |
8646 | } |
8647 | break; |
8648 | #endif // USE(JSVALUE64) |
8649 | default: |
8650 | break; |
8651 | } |
8652 | break; |
8653 | case 2: |
8654 | switch (this->args[0].kind()) { |
8655 | case Arg::Tmp: |
8656 | switch (this->args[1].kind()) { |
8657 | case Arg::Tmp: |
8658 | #if CPU(X86_64) || CPU(ARM64) |
8659 | if (!args[0].tmp().isGP()) |
8660 | OPGEN_RETURN(false); |
8661 | if (!args[1].tmp().isGP()) |
8662 | OPGEN_RETURN(false); |
8663 | OPGEN_RETURN(true); |
8664 | #endif |
8665 | break; |
8666 | break; |
8667 | case Arg::Addr: |
8668 | case Arg::Stack: |
8669 | case Arg::CallArg: |
8670 | #if CPU(X86_64) |
8671 | if (!args[0].tmp().isGP()) |
8672 | OPGEN_RETURN(false); |
8673 | if (!Arg::isValidAddrForm(args[1].offset())) |
8674 | OPGEN_RETURN(false); |
8675 | OPGEN_RETURN(true); |
8676 | #endif |
8677 | break; |
8678 | break; |
8679 | case Arg::Index: |
8680 | #if CPU(X86_64) |
8681 | if (!args[0].tmp().isGP()) |
8682 | OPGEN_RETURN(false); |
8683 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
8684 | OPGEN_RETURN(false); |
8685 | OPGEN_RETURN(true); |
8686 | #endif |
8687 | break; |
8688 | break; |
8689 | default: |
8690 | break; |
8691 | } |
8692 | break; |
8693 | case Arg::Imm: |
8694 | switch (this->args[1].kind()) { |
8695 | case Arg::Tmp: |
8696 | #if CPU(X86_64) |
8697 | if (!Arg::isValidImmForm(args[0].value())) |
8698 | OPGEN_RETURN(false); |
8699 | if (!args[1].tmp().isGP()) |
8700 | OPGEN_RETURN(false); |
8701 | OPGEN_RETURN(true); |
8702 | #endif |
8703 | break; |
8704 | break; |
8705 | case Arg::Addr: |
8706 | case Arg::Stack: |
8707 | case Arg::CallArg: |
8708 | #if CPU(X86_64) |
8709 | if (!Arg::isValidImmForm(args[0].value())) |
8710 | OPGEN_RETURN(false); |
8711 | if (!Arg::isValidAddrForm(args[1].offset())) |
8712 | OPGEN_RETURN(false); |
8713 | OPGEN_RETURN(true); |
8714 | #endif |
8715 | break; |
8716 | break; |
8717 | case Arg::Index: |
8718 | #if CPU(X86_64) |
8719 | if (!Arg::isValidImmForm(args[0].value())) |
8720 | OPGEN_RETURN(false); |
8721 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
8722 | OPGEN_RETURN(false); |
8723 | OPGEN_RETURN(true); |
8724 | #endif |
8725 | break; |
8726 | break; |
8727 | default: |
8728 | break; |
8729 | } |
8730 | break; |
8731 | case Arg::Addr: |
8732 | case Arg::Stack: |
8733 | case Arg::CallArg: |
8734 | switch (this->args[1].kind()) { |
8735 | case Arg::Tmp: |
8736 | #if CPU(X86_64) |
8737 | if (!Arg::isValidAddrForm(args[0].offset())) |
8738 | OPGEN_RETURN(false); |
8739 | if (!args[1].tmp().isGP()) |
8740 | OPGEN_RETURN(false); |
8741 | OPGEN_RETURN(true); |
8742 | #endif |
8743 | break; |
8744 | break; |
8745 | default: |
8746 | break; |
8747 | } |
8748 | break; |
8749 | case Arg::Index: |
8750 | switch (this->args[1].kind()) { |
8751 | case Arg::Tmp: |
8752 | #if CPU(X86_64) |
8753 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
8754 | OPGEN_RETURN(false); |
8755 | if (!args[1].tmp().isGP()) |
8756 | OPGEN_RETURN(false); |
8757 | OPGEN_RETURN(true); |
8758 | #endif |
8759 | break; |
8760 | break; |
8761 | default: |
8762 | break; |
8763 | } |
8764 | break; |
8765 | default: |
8766 | break; |
8767 | } |
8768 | break; |
8769 | default: |
8770 | break; |
8771 | } |
8772 | break; |
8773 | case Opcode::Xor32: |
8774 | switch (this->args.size()) { |
8775 | case 3: |
8776 | switch (this->args[0].kind()) { |
8777 | case Arg::Tmp: |
8778 | switch (this->args[1].kind()) { |
8779 | case Arg::Tmp: |
8780 | switch (this->args[2].kind()) { |
8781 | case Arg::Tmp: |
8782 | if (!args[0].tmp().isGP()) |
8783 | OPGEN_RETURN(false); |
8784 | if (!args[1].tmp().isGP()) |
8785 | OPGEN_RETURN(false); |
8786 | if (!args[2].tmp().isGP()) |
8787 | OPGEN_RETURN(false); |
8788 | OPGEN_RETURN(true); |
8789 | break; |
8790 | break; |
8791 | default: |
8792 | break; |
8793 | } |
8794 | break; |
8795 | case Arg::Addr: |
8796 | case Arg::Stack: |
8797 | case Arg::CallArg: |
8798 | switch (this->args[2].kind()) { |
8799 | case Arg::Tmp: |
8800 | #if CPU(X86) || CPU(X86_64) |
8801 | if (!args[0].tmp().isGP()) |
8802 | OPGEN_RETURN(false); |
8803 | if (!Arg::isValidAddrForm(args[1].offset())) |
8804 | OPGEN_RETURN(false); |
8805 | if (!args[2].tmp().isGP()) |
8806 | OPGEN_RETURN(false); |
8807 | OPGEN_RETURN(true); |
8808 | #endif |
8809 | break; |
8810 | break; |
8811 | default: |
8812 | break; |
8813 | } |
8814 | break; |
8815 | default: |
8816 | break; |
8817 | } |
8818 | break; |
8819 | case Arg::BitImm: |
8820 | switch (this->args[1].kind()) { |
8821 | case Arg::Tmp: |
8822 | switch (this->args[2].kind()) { |
8823 | case Arg::Tmp: |
8824 | #if CPU(ARM64) |
8825 | if (!Arg::isValidBitImmForm(args[0].value())) |
8826 | OPGEN_RETURN(false); |
8827 | if (!args[1].tmp().isGP()) |
8828 | OPGEN_RETURN(false); |
8829 | if (!args[2].tmp().isGP()) |
8830 | OPGEN_RETURN(false); |
8831 | OPGEN_RETURN(true); |
8832 | #endif |
8833 | break; |
8834 | break; |
8835 | default: |
8836 | break; |
8837 | } |
8838 | break; |
8839 | default: |
8840 | break; |
8841 | } |
8842 | break; |
8843 | case Arg::Addr: |
8844 | case Arg::Stack: |
8845 | case Arg::CallArg: |
8846 | switch (this->args[1].kind()) { |
8847 | case Arg::Tmp: |
8848 | switch (this->args[2].kind()) { |
8849 | case Arg::Tmp: |
8850 | #if CPU(X86) || CPU(X86_64) |
8851 | if (!Arg::isValidAddrForm(args[0].offset())) |
8852 | OPGEN_RETURN(false); |
8853 | if (!args[1].tmp().isGP()) |
8854 | OPGEN_RETURN(false); |
8855 | if (!args[2].tmp().isGP()) |
8856 | OPGEN_RETURN(false); |
8857 | OPGEN_RETURN(true); |
8858 | #endif |
8859 | break; |
8860 | break; |
8861 | default: |
8862 | break; |
8863 | } |
8864 | break; |
8865 | default: |
8866 | break; |
8867 | } |
8868 | break; |
8869 | default: |
8870 | break; |
8871 | } |
8872 | break; |
8873 | case 2: |
8874 | switch (this->args[0].kind()) { |
8875 | case Arg::Tmp: |
8876 | switch (this->args[1].kind()) { |
8877 | case Arg::Tmp: |
8878 | if (!args[0].tmp().isGP()) |
8879 | OPGEN_RETURN(false); |
8880 | if (!args[1].tmp().isGP()) |
8881 | OPGEN_RETURN(false); |
8882 | OPGEN_RETURN(true); |
8883 | break; |
8884 | break; |
8885 | case Arg::Addr: |
8886 | case Arg::Stack: |
8887 | case Arg::CallArg: |
8888 | #if CPU(X86) || CPU(X86_64) |
8889 | if (!args[0].tmp().isGP()) |
8890 | OPGEN_RETURN(false); |
8891 | if (!Arg::isValidAddrForm(args[1].offset())) |
8892 | OPGEN_RETURN(false); |
8893 | OPGEN_RETURN(true); |
8894 | #endif |
8895 | break; |
8896 | break; |
8897 | case Arg::Index: |
8898 | #if CPU(X86) || CPU(X86_64) |
8899 | if (!args[0].tmp().isGP()) |
8900 | OPGEN_RETURN(false); |
8901 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
8902 | OPGEN_RETURN(false); |
8903 | OPGEN_RETURN(true); |
8904 | #endif |
8905 | break; |
8906 | break; |
8907 | default: |
8908 | break; |
8909 | } |
8910 | break; |
8911 | case Arg::Imm: |
8912 | switch (this->args[1].kind()) { |
8913 | case Arg::Tmp: |
8914 | #if CPU(X86) || CPU(X86_64) |
8915 | if (!Arg::isValidImmForm(args[0].value())) |
8916 | OPGEN_RETURN(false); |
8917 | if (!args[1].tmp().isGP()) |
8918 | OPGEN_RETURN(false); |
8919 | OPGEN_RETURN(true); |
8920 | #endif |
8921 | break; |
8922 | break; |
8923 | case Arg::Addr: |
8924 | case Arg::Stack: |
8925 | case Arg::CallArg: |
8926 | #if CPU(X86) || CPU(X86_64) |
8927 | if (!Arg::isValidImmForm(args[0].value())) |
8928 | OPGEN_RETURN(false); |
8929 | if (!Arg::isValidAddrForm(args[1].offset())) |
8930 | OPGEN_RETURN(false); |
8931 | OPGEN_RETURN(true); |
8932 | #endif |
8933 | break; |
8934 | break; |
8935 | case Arg::Index: |
8936 | #if CPU(X86) || CPU(X86_64) |
8937 | if (!Arg::isValidImmForm(args[0].value())) |
8938 | OPGEN_RETURN(false); |
8939 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
8940 | OPGEN_RETURN(false); |
8941 | OPGEN_RETURN(true); |
8942 | #endif |
8943 | break; |
8944 | break; |
8945 | default: |
8946 | break; |
8947 | } |
8948 | break; |
8949 | case Arg::Addr: |
8950 | case Arg::Stack: |
8951 | case Arg::CallArg: |
8952 | switch (this->args[1].kind()) { |
8953 | case Arg::Tmp: |
8954 | #if CPU(X86) || CPU(X86_64) |
8955 | if (!Arg::isValidAddrForm(args[0].offset())) |
8956 | OPGEN_RETURN(false); |
8957 | if (!args[1].tmp().isGP()) |
8958 | OPGEN_RETURN(false); |
8959 | OPGEN_RETURN(true); |
8960 | #endif |
8961 | break; |
8962 | break; |
8963 | default: |
8964 | break; |
8965 | } |
8966 | break; |
8967 | case Arg::Index: |
8968 | switch (this->args[1].kind()) { |
8969 | case Arg::Tmp: |
8970 | #if CPU(X86) || CPU(X86_64) |
8971 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
8972 | OPGEN_RETURN(false); |
8973 | if (!args[1].tmp().isGP()) |
8974 | OPGEN_RETURN(false); |
8975 | OPGEN_RETURN(true); |
8976 | #endif |
8977 | break; |
8978 | break; |
8979 | default: |
8980 | break; |
8981 | } |
8982 | break; |
8983 | default: |
8984 | break; |
8985 | } |
8986 | break; |
8987 | default: |
8988 | break; |
8989 | } |
8990 | break; |
8991 | case Opcode::Xor64: |
8992 | switch (this->args.size()) { |
8993 | case 3: |
8994 | switch (this->args[0].kind()) { |
8995 | case Arg::Tmp: |
8996 | switch (this->args[1].kind()) { |
8997 | case Arg::Tmp: |
8998 | switch (this->args[2].kind()) { |
8999 | case Arg::Tmp: |
9000 | #if CPU(X86_64) || CPU(ARM64) |
9001 | if (!args[0].tmp().isGP()) |
9002 | OPGEN_RETURN(false); |
9003 | if (!args[1].tmp().isGP()) |
9004 | OPGEN_RETURN(false); |
9005 | if (!args[2].tmp().isGP()) |
9006 | OPGEN_RETURN(false); |
9007 | OPGEN_RETURN(true); |
9008 | #endif |
9009 | break; |
9010 | break; |
9011 | default: |
9012 | break; |
9013 | } |
9014 | break; |
9015 | default: |
9016 | break; |
9017 | } |
9018 | break; |
9019 | #if USE(JSVALUE64) |
9020 | case Arg::BitImm64: |
9021 | switch (this->args[1].kind()) { |
9022 | case Arg::Tmp: |
9023 | switch (this->args[2].kind()) { |
9024 | case Arg::Tmp: |
9025 | #if CPU(ARM64) |
9026 | if (!Arg::isValidBitImm64Form(args[0].value())) |
9027 | OPGEN_RETURN(false); |
9028 | if (!args[1].tmp().isGP()) |
9029 | OPGEN_RETURN(false); |
9030 | if (!args[2].tmp().isGP()) |
9031 | OPGEN_RETURN(false); |
9032 | OPGEN_RETURN(true); |
9033 | #endif |
9034 | break; |
9035 | break; |
9036 | default: |
9037 | break; |
9038 | } |
9039 | break; |
9040 | default: |
9041 | break; |
9042 | } |
9043 | break; |
9044 | #endif // USE(JSVALUE64) |
9045 | default: |
9046 | break; |
9047 | } |
9048 | break; |
9049 | case 2: |
9050 | switch (this->args[0].kind()) { |
9051 | case Arg::Tmp: |
9052 | switch (this->args[1].kind()) { |
9053 | case Arg::Tmp: |
9054 | #if CPU(X86_64) || CPU(ARM64) |
9055 | if (!args[0].tmp().isGP()) |
9056 | OPGEN_RETURN(false); |
9057 | if (!args[1].tmp().isGP()) |
9058 | OPGEN_RETURN(false); |
9059 | OPGEN_RETURN(true); |
9060 | #endif |
9061 | break; |
9062 | break; |
9063 | case Arg::Addr: |
9064 | case Arg::Stack: |
9065 | case Arg::CallArg: |
9066 | #if CPU(X86_64) |
9067 | if (!args[0].tmp().isGP()) |
9068 | OPGEN_RETURN(false); |
9069 | if (!Arg::isValidAddrForm(args[1].offset())) |
9070 | OPGEN_RETURN(false); |
9071 | OPGEN_RETURN(true); |
9072 | #endif |
9073 | break; |
9074 | break; |
9075 | case Arg::Index: |
9076 | #if CPU(X86_64) |
9077 | if (!args[0].tmp().isGP()) |
9078 | OPGEN_RETURN(false); |
9079 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
9080 | OPGEN_RETURN(false); |
9081 | OPGEN_RETURN(true); |
9082 | #endif |
9083 | break; |
9084 | break; |
9085 | default: |
9086 | break; |
9087 | } |
9088 | break; |
9089 | case Arg::Addr: |
9090 | case Arg::Stack: |
9091 | case Arg::CallArg: |
9092 | switch (this->args[1].kind()) { |
9093 | case Arg::Tmp: |
9094 | #if CPU(X86_64) |
9095 | if (!Arg::isValidAddrForm(args[0].offset())) |
9096 | OPGEN_RETURN(false); |
9097 | if (!args[1].tmp().isGP()) |
9098 | OPGEN_RETURN(false); |
9099 | OPGEN_RETURN(true); |
9100 | #endif |
9101 | break; |
9102 | break; |
9103 | default: |
9104 | break; |
9105 | } |
9106 | break; |
9107 | case Arg::Index: |
9108 | switch (this->args[1].kind()) { |
9109 | case Arg::Tmp: |
9110 | #if CPU(X86_64) |
9111 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
9112 | OPGEN_RETURN(false); |
9113 | if (!args[1].tmp().isGP()) |
9114 | OPGEN_RETURN(false); |
9115 | OPGEN_RETURN(true); |
9116 | #endif |
9117 | break; |
9118 | break; |
9119 | default: |
9120 | break; |
9121 | } |
9122 | break; |
9123 | case Arg::Imm: |
9124 | switch (this->args[1].kind()) { |
9125 | case Arg::Addr: |
9126 | case Arg::Stack: |
9127 | case Arg::CallArg: |
9128 | #if CPU(X86_64) |
9129 | if (!Arg::isValidImmForm(args[0].value())) |
9130 | OPGEN_RETURN(false); |
9131 | if (!Arg::isValidAddrForm(args[1].offset())) |
9132 | OPGEN_RETURN(false); |
9133 | OPGEN_RETURN(true); |
9134 | #endif |
9135 | break; |
9136 | break; |
9137 | case Arg::Index: |
9138 | #if CPU(X86_64) |
9139 | if (!Arg::isValidImmForm(args[0].value())) |
9140 | OPGEN_RETURN(false); |
9141 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
9142 | OPGEN_RETURN(false); |
9143 | OPGEN_RETURN(true); |
9144 | #endif |
9145 | break; |
9146 | break; |
9147 | case Arg::Tmp: |
9148 | #if CPU(X86_64) |
9149 | if (!Arg::isValidImmForm(args[0].value())) |
9150 | OPGEN_RETURN(false); |
9151 | if (!args[1].tmp().isGP()) |
9152 | OPGEN_RETURN(false); |
9153 | OPGEN_RETURN(true); |
9154 | #endif |
9155 | break; |
9156 | break; |
9157 | default: |
9158 | break; |
9159 | } |
9160 | break; |
9161 | default: |
9162 | break; |
9163 | } |
9164 | break; |
9165 | default: |
9166 | break; |
9167 | } |
9168 | break; |
9169 | case Opcode::Not32: |
9170 | switch (this->args.size()) { |
9171 | case 2: |
9172 | switch (this->args[0].kind()) { |
9173 | case Arg::Tmp: |
9174 | switch (this->args[1].kind()) { |
9175 | case Arg::Tmp: |
9176 | #if CPU(ARM64) |
9177 | if (!args[0].tmp().isGP()) |
9178 | OPGEN_RETURN(false); |
9179 | if (!args[1].tmp().isGP()) |
9180 | OPGEN_RETURN(false); |
9181 | OPGEN_RETURN(true); |
9182 | #endif |
9183 | break; |
9184 | break; |
9185 | default: |
9186 | break; |
9187 | } |
9188 | break; |
9189 | default: |
9190 | break; |
9191 | } |
9192 | break; |
9193 | case 1: |
9194 | switch (this->args[0].kind()) { |
9195 | case Arg::Tmp: |
9196 | #if CPU(X86) || CPU(X86_64) |
9197 | if (!args[0].tmp().isGP()) |
9198 | OPGEN_RETURN(false); |
9199 | OPGEN_RETURN(true); |
9200 | #endif |
9201 | break; |
9202 | break; |
9203 | case Arg::Addr: |
9204 | case Arg::Stack: |
9205 | case Arg::CallArg: |
9206 | #if CPU(X86) || CPU(X86_64) |
9207 | if (!Arg::isValidAddrForm(args[0].offset())) |
9208 | OPGEN_RETURN(false); |
9209 | OPGEN_RETURN(true); |
9210 | #endif |
9211 | break; |
9212 | break; |
9213 | case Arg::Index: |
9214 | #if CPU(X86) || CPU(X86_64) |
9215 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
9216 | OPGEN_RETURN(false); |
9217 | OPGEN_RETURN(true); |
9218 | #endif |
9219 | break; |
9220 | break; |
9221 | default: |
9222 | break; |
9223 | } |
9224 | break; |
9225 | default: |
9226 | break; |
9227 | } |
9228 | break; |
9229 | case Opcode::Not64: |
9230 | switch (this->args.size()) { |
9231 | case 2: |
9232 | switch (this->args[0].kind()) { |
9233 | case Arg::Tmp: |
9234 | switch (this->args[1].kind()) { |
9235 | case Arg::Tmp: |
9236 | #if CPU(ARM64) |
9237 | if (!args[0].tmp().isGP()) |
9238 | OPGEN_RETURN(false); |
9239 | if (!args[1].tmp().isGP()) |
9240 | OPGEN_RETURN(false); |
9241 | OPGEN_RETURN(true); |
9242 | #endif |
9243 | break; |
9244 | break; |
9245 | default: |
9246 | break; |
9247 | } |
9248 | break; |
9249 | default: |
9250 | break; |
9251 | } |
9252 | break; |
9253 | case 1: |
9254 | switch (this->args[0].kind()) { |
9255 | case Arg::Tmp: |
9256 | #if CPU(X86_64) |
9257 | if (!args[0].tmp().isGP()) |
9258 | OPGEN_RETURN(false); |
9259 | OPGEN_RETURN(true); |
9260 | #endif |
9261 | break; |
9262 | break; |
9263 | case Arg::Addr: |
9264 | case Arg::Stack: |
9265 | case Arg::CallArg: |
9266 | #if CPU(X86_64) |
9267 | if (!Arg::isValidAddrForm(args[0].offset())) |
9268 | OPGEN_RETURN(false); |
9269 | OPGEN_RETURN(true); |
9270 | #endif |
9271 | break; |
9272 | break; |
9273 | case Arg::Index: |
9274 | #if CPU(X86_64) |
9275 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
9276 | OPGEN_RETURN(false); |
9277 | OPGEN_RETURN(true); |
9278 | #endif |
9279 | break; |
9280 | break; |
9281 | default: |
9282 | break; |
9283 | } |
9284 | break; |
9285 | default: |
9286 | break; |
9287 | } |
9288 | break; |
9289 | case Opcode::AbsDouble: |
9290 | switch (this->args.size()) { |
9291 | case 2: |
9292 | switch (this->args[0].kind()) { |
9293 | case Arg::Tmp: |
9294 | switch (this->args[1].kind()) { |
9295 | case Arg::Tmp: |
9296 | #if CPU(ARM64) |
9297 | if (!args[0].tmp().isFP()) |
9298 | OPGEN_RETURN(false); |
9299 | if (!args[1].tmp().isFP()) |
9300 | OPGEN_RETURN(false); |
9301 | OPGEN_RETURN(true); |
9302 | #endif |
9303 | break; |
9304 | break; |
9305 | default: |
9306 | break; |
9307 | } |
9308 | break; |
9309 | default: |
9310 | break; |
9311 | } |
9312 | break; |
9313 | default: |
9314 | break; |
9315 | } |
9316 | break; |
9317 | case Opcode::AbsFloat: |
9318 | switch (this->args.size()) { |
9319 | case 2: |
9320 | switch (this->args[0].kind()) { |
9321 | case Arg::Tmp: |
9322 | switch (this->args[1].kind()) { |
9323 | case Arg::Tmp: |
9324 | #if CPU(ARM64) |
9325 | if (!args[0].tmp().isFP()) |
9326 | OPGEN_RETURN(false); |
9327 | if (!args[1].tmp().isFP()) |
9328 | OPGEN_RETURN(false); |
9329 | OPGEN_RETURN(true); |
9330 | #endif |
9331 | break; |
9332 | break; |
9333 | default: |
9334 | break; |
9335 | } |
9336 | break; |
9337 | default: |
9338 | break; |
9339 | } |
9340 | break; |
9341 | default: |
9342 | break; |
9343 | } |
9344 | break; |
9345 | case Opcode::CeilDouble: |
9346 | switch (this->args.size()) { |
9347 | case 2: |
9348 | switch (this->args[0].kind()) { |
9349 | case Arg::Tmp: |
9350 | switch (this->args[1].kind()) { |
9351 | case Arg::Tmp: |
9352 | if (!args[0].tmp().isFP()) |
9353 | OPGEN_RETURN(false); |
9354 | if (!args[1].tmp().isFP()) |
9355 | OPGEN_RETURN(false); |
9356 | OPGEN_RETURN(true); |
9357 | break; |
9358 | break; |
9359 | default: |
9360 | break; |
9361 | } |
9362 | break; |
9363 | case Arg::Addr: |
9364 | case Arg::Stack: |
9365 | case Arg::CallArg: |
9366 | switch (this->args[1].kind()) { |
9367 | case Arg::Tmp: |
9368 | #if CPU(X86) || CPU(X86_64) |
9369 | if (!Arg::isValidAddrForm(args[0].offset())) |
9370 | OPGEN_RETURN(false); |
9371 | if (!args[1].tmp().isFP()) |
9372 | OPGEN_RETURN(false); |
9373 | OPGEN_RETURN(true); |
9374 | #endif |
9375 | break; |
9376 | break; |
9377 | default: |
9378 | break; |
9379 | } |
9380 | break; |
9381 | default: |
9382 | break; |
9383 | } |
9384 | break; |
9385 | default: |
9386 | break; |
9387 | } |
9388 | break; |
9389 | case Opcode::CeilFloat: |
9390 | switch (this->args.size()) { |
9391 | case 2: |
9392 | switch (this->args[0].kind()) { |
9393 | case Arg::Tmp: |
9394 | switch (this->args[1].kind()) { |
9395 | case Arg::Tmp: |
9396 | if (!args[0].tmp().isFP()) |
9397 | OPGEN_RETURN(false); |
9398 | if (!args[1].tmp().isFP()) |
9399 | OPGEN_RETURN(false); |
9400 | OPGEN_RETURN(true); |
9401 | break; |
9402 | break; |
9403 | default: |
9404 | break; |
9405 | } |
9406 | break; |
9407 | case Arg::Addr: |
9408 | case Arg::Stack: |
9409 | case Arg::CallArg: |
9410 | switch (this->args[1].kind()) { |
9411 | case Arg::Tmp: |
9412 | #if CPU(X86) || CPU(X86_64) |
9413 | if (!Arg::isValidAddrForm(args[0].offset())) |
9414 | OPGEN_RETURN(false); |
9415 | if (!args[1].tmp().isFP()) |
9416 | OPGEN_RETURN(false); |
9417 | OPGEN_RETURN(true); |
9418 | #endif |
9419 | break; |
9420 | break; |
9421 | default: |
9422 | break; |
9423 | } |
9424 | break; |
9425 | default: |
9426 | break; |
9427 | } |
9428 | break; |
9429 | default: |
9430 | break; |
9431 | } |
9432 | break; |
9433 | case Opcode::FloorDouble: |
9434 | switch (this->args.size()) { |
9435 | case 2: |
9436 | switch (this->args[0].kind()) { |
9437 | case Arg::Tmp: |
9438 | switch (this->args[1].kind()) { |
9439 | case Arg::Tmp: |
9440 | if (!args[0].tmp().isFP()) |
9441 | OPGEN_RETURN(false); |
9442 | if (!args[1].tmp().isFP()) |
9443 | OPGEN_RETURN(false); |
9444 | OPGEN_RETURN(true); |
9445 | break; |
9446 | break; |
9447 | default: |
9448 | break; |
9449 | } |
9450 | break; |
9451 | case Arg::Addr: |
9452 | case Arg::Stack: |
9453 | case Arg::CallArg: |
9454 | switch (this->args[1].kind()) { |
9455 | case Arg::Tmp: |
9456 | #if CPU(X86) || CPU(X86_64) |
9457 | if (!Arg::isValidAddrForm(args[0].offset())) |
9458 | OPGEN_RETURN(false); |
9459 | if (!args[1].tmp().isFP()) |
9460 | OPGEN_RETURN(false); |
9461 | OPGEN_RETURN(true); |
9462 | #endif |
9463 | break; |
9464 | break; |
9465 | default: |
9466 | break; |
9467 | } |
9468 | break; |
9469 | default: |
9470 | break; |
9471 | } |
9472 | break; |
9473 | default: |
9474 | break; |
9475 | } |
9476 | break; |
9477 | case Opcode::FloorFloat: |
9478 | switch (this->args.size()) { |
9479 | case 2: |
9480 | switch (this->args[0].kind()) { |
9481 | case Arg::Tmp: |
9482 | switch (this->args[1].kind()) { |
9483 | case Arg::Tmp: |
9484 | if (!args[0].tmp().isFP()) |
9485 | OPGEN_RETURN(false); |
9486 | if (!args[1].tmp().isFP()) |
9487 | OPGEN_RETURN(false); |
9488 | OPGEN_RETURN(true); |
9489 | break; |
9490 | break; |
9491 | default: |
9492 | break; |
9493 | } |
9494 | break; |
9495 | case Arg::Addr: |
9496 | case Arg::Stack: |
9497 | case Arg::CallArg: |
9498 | switch (this->args[1].kind()) { |
9499 | case Arg::Tmp: |
9500 | #if CPU(X86) || CPU(X86_64) |
9501 | if (!Arg::isValidAddrForm(args[0].offset())) |
9502 | OPGEN_RETURN(false); |
9503 | if (!args[1].tmp().isFP()) |
9504 | OPGEN_RETURN(false); |
9505 | OPGEN_RETURN(true); |
9506 | #endif |
9507 | break; |
9508 | break; |
9509 | default: |
9510 | break; |
9511 | } |
9512 | break; |
9513 | default: |
9514 | break; |
9515 | } |
9516 | break; |
9517 | default: |
9518 | break; |
9519 | } |
9520 | break; |
9521 | case Opcode::SqrtDouble: |
9522 | switch (this->args.size()) { |
9523 | case 2: |
9524 | switch (this->args[0].kind()) { |
9525 | case Arg::Tmp: |
9526 | switch (this->args[1].kind()) { |
9527 | case Arg::Tmp: |
9528 | if (!args[0].tmp().isFP()) |
9529 | OPGEN_RETURN(false); |
9530 | if (!args[1].tmp().isFP()) |
9531 | OPGEN_RETURN(false); |
9532 | OPGEN_RETURN(true); |
9533 | break; |
9534 | break; |
9535 | default: |
9536 | break; |
9537 | } |
9538 | break; |
9539 | case Arg::Addr: |
9540 | case Arg::Stack: |
9541 | case Arg::CallArg: |
9542 | switch (this->args[1].kind()) { |
9543 | case Arg::Tmp: |
9544 | #if CPU(X86) || CPU(X86_64) |
9545 | if (!Arg::isValidAddrForm(args[0].offset())) |
9546 | OPGEN_RETURN(false); |
9547 | if (!args[1].tmp().isFP()) |
9548 | OPGEN_RETURN(false); |
9549 | OPGEN_RETURN(true); |
9550 | #endif |
9551 | break; |
9552 | break; |
9553 | default: |
9554 | break; |
9555 | } |
9556 | break; |
9557 | default: |
9558 | break; |
9559 | } |
9560 | break; |
9561 | default: |
9562 | break; |
9563 | } |
9564 | break; |
9565 | case Opcode::SqrtFloat: |
9566 | switch (this->args.size()) { |
9567 | case 2: |
9568 | switch (this->args[0].kind()) { |
9569 | case Arg::Tmp: |
9570 | switch (this->args[1].kind()) { |
9571 | case Arg::Tmp: |
9572 | if (!args[0].tmp().isFP()) |
9573 | OPGEN_RETURN(false); |
9574 | if (!args[1].tmp().isFP()) |
9575 | OPGEN_RETURN(false); |
9576 | OPGEN_RETURN(true); |
9577 | break; |
9578 | break; |
9579 | default: |
9580 | break; |
9581 | } |
9582 | break; |
9583 | case Arg::Addr: |
9584 | case Arg::Stack: |
9585 | case Arg::CallArg: |
9586 | switch (this->args[1].kind()) { |
9587 | case Arg::Tmp: |
9588 | #if CPU(X86) || CPU(X86_64) |
9589 | if (!Arg::isValidAddrForm(args[0].offset())) |
9590 | OPGEN_RETURN(false); |
9591 | if (!args[1].tmp().isFP()) |
9592 | OPGEN_RETURN(false); |
9593 | OPGEN_RETURN(true); |
9594 | #endif |
9595 | break; |
9596 | break; |
9597 | default: |
9598 | break; |
9599 | } |
9600 | break; |
9601 | default: |
9602 | break; |
9603 | } |
9604 | break; |
9605 | default: |
9606 | break; |
9607 | } |
9608 | break; |
9609 | case Opcode::ConvertInt32ToDouble: |
9610 | switch (this->args.size()) { |
9611 | case 2: |
9612 | switch (this->args[0].kind()) { |
9613 | case Arg::Tmp: |
9614 | switch (this->args[1].kind()) { |
9615 | case Arg::Tmp: |
9616 | if (!args[0].tmp().isGP()) |
9617 | OPGEN_RETURN(false); |
9618 | if (!args[1].tmp().isFP()) |
9619 | OPGEN_RETURN(false); |
9620 | OPGEN_RETURN(true); |
9621 | break; |
9622 | break; |
9623 | default: |
9624 | break; |
9625 | } |
9626 | break; |
9627 | case Arg::Addr: |
9628 | case Arg::Stack: |
9629 | case Arg::CallArg: |
9630 | switch (this->args[1].kind()) { |
9631 | case Arg::Tmp: |
9632 | #if CPU(X86) || CPU(X86_64) |
9633 | if (!Arg::isValidAddrForm(args[0].offset())) |
9634 | OPGEN_RETURN(false); |
9635 | if (!args[1].tmp().isFP()) |
9636 | OPGEN_RETURN(false); |
9637 | OPGEN_RETURN(true); |
9638 | #endif |
9639 | break; |
9640 | break; |
9641 | default: |
9642 | break; |
9643 | } |
9644 | break; |
9645 | default: |
9646 | break; |
9647 | } |
9648 | break; |
9649 | default: |
9650 | break; |
9651 | } |
9652 | break; |
9653 | case Opcode::ConvertInt64ToDouble: |
9654 | switch (this->args.size()) { |
9655 | case 2: |
9656 | switch (this->args[0].kind()) { |
9657 | case Arg::Tmp: |
9658 | switch (this->args[1].kind()) { |
9659 | case Arg::Tmp: |
9660 | #if CPU(X86_64) || CPU(ARM64) |
9661 | if (!args[0].tmp().isGP()) |
9662 | OPGEN_RETURN(false); |
9663 | if (!args[1].tmp().isFP()) |
9664 | OPGEN_RETURN(false); |
9665 | OPGEN_RETURN(true); |
9666 | #endif |
9667 | break; |
9668 | break; |
9669 | default: |
9670 | break; |
9671 | } |
9672 | break; |
9673 | case Arg::Addr: |
9674 | case Arg::Stack: |
9675 | case Arg::CallArg: |
9676 | switch (this->args[1].kind()) { |
9677 | case Arg::Tmp: |
9678 | #if CPU(X86_64) |
9679 | if (!Arg::isValidAddrForm(args[0].offset())) |
9680 | OPGEN_RETURN(false); |
9681 | if (!args[1].tmp().isFP()) |
9682 | OPGEN_RETURN(false); |
9683 | OPGEN_RETURN(true); |
9684 | #endif |
9685 | break; |
9686 | break; |
9687 | default: |
9688 | break; |
9689 | } |
9690 | break; |
9691 | default: |
9692 | break; |
9693 | } |
9694 | break; |
9695 | default: |
9696 | break; |
9697 | } |
9698 | break; |
9699 | case Opcode::ConvertInt32ToFloat: |
9700 | switch (this->args.size()) { |
9701 | case 2: |
9702 | switch (this->args[0].kind()) { |
9703 | case Arg::Tmp: |
9704 | switch (this->args[1].kind()) { |
9705 | case Arg::Tmp: |
9706 | if (!args[0].tmp().isGP()) |
9707 | OPGEN_RETURN(false); |
9708 | if (!args[1].tmp().isFP()) |
9709 | OPGEN_RETURN(false); |
9710 | OPGEN_RETURN(true); |
9711 | break; |
9712 | break; |
9713 | default: |
9714 | break; |
9715 | } |
9716 | break; |
9717 | case Arg::Addr: |
9718 | case Arg::Stack: |
9719 | case Arg::CallArg: |
9720 | switch (this->args[1].kind()) { |
9721 | case Arg::Tmp: |
9722 | #if CPU(X86) || CPU(X86_64) |
9723 | if (!Arg::isValidAddrForm(args[0].offset())) |
9724 | OPGEN_RETURN(false); |
9725 | if (!args[1].tmp().isFP()) |
9726 | OPGEN_RETURN(false); |
9727 | OPGEN_RETURN(true); |
9728 | #endif |
9729 | break; |
9730 | break; |
9731 | default: |
9732 | break; |
9733 | } |
9734 | break; |
9735 | default: |
9736 | break; |
9737 | } |
9738 | break; |
9739 | default: |
9740 | break; |
9741 | } |
9742 | break; |
9743 | case Opcode::ConvertInt64ToFloat: |
9744 | switch (this->args.size()) { |
9745 | case 2: |
9746 | switch (this->args[0].kind()) { |
9747 | case Arg::Tmp: |
9748 | switch (this->args[1].kind()) { |
9749 | case Arg::Tmp: |
9750 | #if CPU(X86_64) || CPU(ARM64) |
9751 | if (!args[0].tmp().isGP()) |
9752 | OPGEN_RETURN(false); |
9753 | if (!args[1].tmp().isFP()) |
9754 | OPGEN_RETURN(false); |
9755 | OPGEN_RETURN(true); |
9756 | #endif |
9757 | break; |
9758 | break; |
9759 | default: |
9760 | break; |
9761 | } |
9762 | break; |
9763 | case Arg::Addr: |
9764 | case Arg::Stack: |
9765 | case Arg::CallArg: |
9766 | switch (this->args[1].kind()) { |
9767 | case Arg::Tmp: |
9768 | #if CPU(X86_64) |
9769 | if (!Arg::isValidAddrForm(args[0].offset())) |
9770 | OPGEN_RETURN(false); |
9771 | if (!args[1].tmp().isFP()) |
9772 | OPGEN_RETURN(false); |
9773 | OPGEN_RETURN(true); |
9774 | #endif |
9775 | break; |
9776 | break; |
9777 | default: |
9778 | break; |
9779 | } |
9780 | break; |
9781 | default: |
9782 | break; |
9783 | } |
9784 | break; |
9785 | default: |
9786 | break; |
9787 | } |
9788 | break; |
9789 | case Opcode::CountLeadingZeros32: |
9790 | switch (this->args.size()) { |
9791 | case 2: |
9792 | switch (this->args[0].kind()) { |
9793 | case Arg::Tmp: |
9794 | switch (this->args[1].kind()) { |
9795 | case Arg::Tmp: |
9796 | if (!args[0].tmp().isGP()) |
9797 | OPGEN_RETURN(false); |
9798 | if (!args[1].tmp().isGP()) |
9799 | OPGEN_RETURN(false); |
9800 | OPGEN_RETURN(true); |
9801 | break; |
9802 | break; |
9803 | default: |
9804 | break; |
9805 | } |
9806 | break; |
9807 | case Arg::Addr: |
9808 | case Arg::Stack: |
9809 | case Arg::CallArg: |
9810 | switch (this->args[1].kind()) { |
9811 | case Arg::Tmp: |
9812 | #if CPU(X86) || CPU(X86_64) |
9813 | if (!Arg::isValidAddrForm(args[0].offset())) |
9814 | OPGEN_RETURN(false); |
9815 | if (!args[1].tmp().isGP()) |
9816 | OPGEN_RETURN(false); |
9817 | OPGEN_RETURN(true); |
9818 | #endif |
9819 | break; |
9820 | break; |
9821 | default: |
9822 | break; |
9823 | } |
9824 | break; |
9825 | default: |
9826 | break; |
9827 | } |
9828 | break; |
9829 | default: |
9830 | break; |
9831 | } |
9832 | break; |
9833 | case Opcode::CountLeadingZeros64: |
9834 | switch (this->args.size()) { |
9835 | case 2: |
9836 | switch (this->args[0].kind()) { |
9837 | case Arg::Tmp: |
9838 | switch (this->args[1].kind()) { |
9839 | case Arg::Tmp: |
9840 | #if CPU(X86_64) || CPU(ARM64) |
9841 | if (!args[0].tmp().isGP()) |
9842 | OPGEN_RETURN(false); |
9843 | if (!args[1].tmp().isGP()) |
9844 | OPGEN_RETURN(false); |
9845 | OPGEN_RETURN(true); |
9846 | #endif |
9847 | break; |
9848 | break; |
9849 | default: |
9850 | break; |
9851 | } |
9852 | break; |
9853 | case Arg::Addr: |
9854 | case Arg::Stack: |
9855 | case Arg::CallArg: |
9856 | switch (this->args[1].kind()) { |
9857 | case Arg::Tmp: |
9858 | #if CPU(X86_64) |
9859 | if (!Arg::isValidAddrForm(args[0].offset())) |
9860 | OPGEN_RETURN(false); |
9861 | if (!args[1].tmp().isGP()) |
9862 | OPGEN_RETURN(false); |
9863 | OPGEN_RETURN(true); |
9864 | #endif |
9865 | break; |
9866 | break; |
9867 | default: |
9868 | break; |
9869 | } |
9870 | break; |
9871 | default: |
9872 | break; |
9873 | } |
9874 | break; |
9875 | default: |
9876 | break; |
9877 | } |
9878 | break; |
9879 | case Opcode::ConvertDoubleToFloat: |
9880 | switch (this->args.size()) { |
9881 | case 2: |
9882 | switch (this->args[0].kind()) { |
9883 | case Arg::Tmp: |
9884 | switch (this->args[1].kind()) { |
9885 | case Arg::Tmp: |
9886 | if (!args[0].tmp().isFP()) |
9887 | OPGEN_RETURN(false); |
9888 | if (!args[1].tmp().isFP()) |
9889 | OPGEN_RETURN(false); |
9890 | OPGEN_RETURN(true); |
9891 | break; |
9892 | break; |
9893 | default: |
9894 | break; |
9895 | } |
9896 | break; |
9897 | case Arg::Addr: |
9898 | case Arg::Stack: |
9899 | case Arg::CallArg: |
9900 | switch (this->args[1].kind()) { |
9901 | case Arg::Tmp: |
9902 | #if CPU(X86) || CPU(X86_64) |
9903 | if (!Arg::isValidAddrForm(args[0].offset())) |
9904 | OPGEN_RETURN(false); |
9905 | if (!args[1].tmp().isFP()) |
9906 | OPGEN_RETURN(false); |
9907 | OPGEN_RETURN(true); |
9908 | #endif |
9909 | break; |
9910 | break; |
9911 | default: |
9912 | break; |
9913 | } |
9914 | break; |
9915 | default: |
9916 | break; |
9917 | } |
9918 | break; |
9919 | default: |
9920 | break; |
9921 | } |
9922 | break; |
9923 | case Opcode::ConvertFloatToDouble: |
9924 | switch (this->args.size()) { |
9925 | case 2: |
9926 | switch (this->args[0].kind()) { |
9927 | case Arg::Tmp: |
9928 | switch (this->args[1].kind()) { |
9929 | case Arg::Tmp: |
9930 | if (!args[0].tmp().isFP()) |
9931 | OPGEN_RETURN(false); |
9932 | if (!args[1].tmp().isFP()) |
9933 | OPGEN_RETURN(false); |
9934 | OPGEN_RETURN(true); |
9935 | break; |
9936 | break; |
9937 | default: |
9938 | break; |
9939 | } |
9940 | break; |
9941 | case Arg::Addr: |
9942 | case Arg::Stack: |
9943 | case Arg::CallArg: |
9944 | switch (this->args[1].kind()) { |
9945 | case Arg::Tmp: |
9946 | #if CPU(X86) || CPU(X86_64) |
9947 | if (!Arg::isValidAddrForm(args[0].offset())) |
9948 | OPGEN_RETURN(false); |
9949 | if (!args[1].tmp().isFP()) |
9950 | OPGEN_RETURN(false); |
9951 | OPGEN_RETURN(true); |
9952 | #endif |
9953 | break; |
9954 | break; |
9955 | default: |
9956 | break; |
9957 | } |
9958 | break; |
9959 | default: |
9960 | break; |
9961 | } |
9962 | break; |
9963 | default: |
9964 | break; |
9965 | } |
9966 | break; |
9967 | case Opcode::Move: |
9968 | switch (this->args.size()) { |
9969 | case 2: |
9970 | switch (this->args[0].kind()) { |
9971 | case Arg::Tmp: |
9972 | switch (this->args[1].kind()) { |
9973 | case Arg::Tmp: |
9974 | if (!args[0].tmp().isGP()) |
9975 | OPGEN_RETURN(false); |
9976 | if (!args[1].tmp().isGP()) |
9977 | OPGEN_RETURN(false); |
9978 | OPGEN_RETURN(true); |
9979 | break; |
9980 | break; |
9981 | case Arg::Addr: |
9982 | case Arg::Stack: |
9983 | case Arg::CallArg: |
9984 | if (!args[0].tmp().isGP()) |
9985 | OPGEN_RETURN(false); |
9986 | if (!Arg::isValidAddrForm(args[1].offset())) |
9987 | OPGEN_RETURN(false); |
9988 | OPGEN_RETURN(true); |
9989 | break; |
9990 | break; |
9991 | case Arg::Index: |
9992 | if (!args[0].tmp().isGP()) |
9993 | OPGEN_RETURN(false); |
9994 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), POINTER_WIDTH)) |
9995 | OPGEN_RETURN(false); |
9996 | OPGEN_RETURN(true); |
9997 | break; |
9998 | break; |
9999 | default: |
10000 | break; |
10001 | } |
10002 | break; |
10003 | case Arg::Imm: |
10004 | switch (this->args[1].kind()) { |
10005 | case Arg::Tmp: |
10006 | if (!Arg::isValidImmForm(args[0].value())) |
10007 | OPGEN_RETURN(false); |
10008 | if (!args[1].tmp().isGP()) |
10009 | OPGEN_RETURN(false); |
10010 | OPGEN_RETURN(true); |
10011 | break; |
10012 | break; |
10013 | case Arg::Addr: |
10014 | case Arg::Stack: |
10015 | case Arg::CallArg: |
10016 | #if CPU(X86) || CPU(X86_64) |
10017 | if (!Arg::isValidImmForm(args[0].value())) |
10018 | OPGEN_RETURN(false); |
10019 | if (!Arg::isValidAddrForm(args[1].offset())) |
10020 | OPGEN_RETURN(false); |
10021 | OPGEN_RETURN(true); |
10022 | #endif |
10023 | break; |
10024 | break; |
10025 | default: |
10026 | break; |
10027 | } |
10028 | break; |
10029 | #if USE(JSVALUE64) |
10030 | case Arg::BigImm: |
10031 | switch (this->args[1].kind()) { |
10032 | case Arg::Tmp: |
10033 | if (!args[1].tmp().isGP()) |
10034 | OPGEN_RETURN(false); |
10035 | OPGEN_RETURN(true); |
10036 | break; |
10037 | break; |
10038 | default: |
10039 | break; |
10040 | } |
10041 | break; |
10042 | #endif // USE(JSVALUE64) |
10043 | case Arg::Addr: |
10044 | case Arg::Stack: |
10045 | case Arg::CallArg: |
10046 | switch (this->args[1].kind()) { |
10047 | case Arg::Tmp: |
10048 | if (!Arg::isValidAddrForm(args[0].offset())) |
10049 | OPGEN_RETURN(false); |
10050 | if (!args[1].tmp().isGP()) |
10051 | OPGEN_RETURN(false); |
10052 | OPGEN_RETURN(true); |
10053 | break; |
10054 | break; |
10055 | default: |
10056 | break; |
10057 | } |
10058 | break; |
10059 | case Arg::Index: |
10060 | switch (this->args[1].kind()) { |
10061 | case Arg::Tmp: |
10062 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), POINTER_WIDTH)) |
10063 | OPGEN_RETURN(false); |
10064 | if (!args[1].tmp().isGP()) |
10065 | OPGEN_RETURN(false); |
10066 | OPGEN_RETURN(true); |
10067 | break; |
10068 | break; |
10069 | default: |
10070 | break; |
10071 | } |
10072 | break; |
10073 | default: |
10074 | break; |
10075 | } |
10076 | break; |
10077 | case 3: |
10078 | switch (this->args[0].kind()) { |
10079 | case Arg::Addr: |
10080 | case Arg::Stack: |
10081 | case Arg::CallArg: |
10082 | switch (this->args[1].kind()) { |
10083 | case Arg::Addr: |
10084 | case Arg::Stack: |
10085 | case Arg::CallArg: |
10086 | switch (this->args[2].kind()) { |
10087 | case Arg::Tmp: |
10088 | if (!Arg::isValidAddrForm(args[0].offset())) |
10089 | OPGEN_RETURN(false); |
10090 | if (!Arg::isValidAddrForm(args[1].offset())) |
10091 | OPGEN_RETURN(false); |
10092 | if (!args[2].tmp().isGP()) |
10093 | OPGEN_RETURN(false); |
10094 | OPGEN_RETURN(true); |
10095 | break; |
10096 | break; |
10097 | default: |
10098 | break; |
10099 | } |
10100 | break; |
10101 | default: |
10102 | break; |
10103 | } |
10104 | break; |
10105 | default: |
10106 | break; |
10107 | } |
10108 | break; |
10109 | default: |
10110 | break; |
10111 | } |
10112 | break; |
10113 | case Opcode::Swap32: |
10114 | switch (this->args.size()) { |
10115 | case 2: |
10116 | switch (this->args[0].kind()) { |
10117 | case Arg::Tmp: |
10118 | switch (this->args[1].kind()) { |
10119 | case Arg::Tmp: |
10120 | #if CPU(X86) || CPU(X86_64) |
10121 | if (!args[0].tmp().isGP()) |
10122 | OPGEN_RETURN(false); |
10123 | if (!args[1].tmp().isGP()) |
10124 | OPGEN_RETURN(false); |
10125 | OPGEN_RETURN(true); |
10126 | #endif |
10127 | break; |
10128 | break; |
10129 | case Arg::Addr: |
10130 | case Arg::Stack: |
10131 | case Arg::CallArg: |
10132 | #if CPU(X86) || CPU(X86_64) |
10133 | if (!args[0].tmp().isGP()) |
10134 | OPGEN_RETURN(false); |
10135 | if (!Arg::isValidAddrForm(args[1].offset())) |
10136 | OPGEN_RETURN(false); |
10137 | OPGEN_RETURN(true); |
10138 | #endif |
10139 | break; |
10140 | break; |
10141 | default: |
10142 | break; |
10143 | } |
10144 | break; |
10145 | default: |
10146 | break; |
10147 | } |
10148 | break; |
10149 | default: |
10150 | break; |
10151 | } |
10152 | break; |
10153 | case Opcode::Swap64: |
10154 | switch (this->args.size()) { |
10155 | case 2: |
10156 | switch (this->args[0].kind()) { |
10157 | case Arg::Tmp: |
10158 | switch (this->args[1].kind()) { |
10159 | case Arg::Tmp: |
10160 | #if CPU(X86_64) |
10161 | if (!args[0].tmp().isGP()) |
10162 | OPGEN_RETURN(false); |
10163 | if (!args[1].tmp().isGP()) |
10164 | OPGEN_RETURN(false); |
10165 | OPGEN_RETURN(true); |
10166 | #endif |
10167 | break; |
10168 | break; |
10169 | case Arg::Addr: |
10170 | case Arg::Stack: |
10171 | case Arg::CallArg: |
10172 | #if CPU(X86_64) |
10173 | if (!args[0].tmp().isGP()) |
10174 | OPGEN_RETURN(false); |
10175 | if (!Arg::isValidAddrForm(args[1].offset())) |
10176 | OPGEN_RETURN(false); |
10177 | OPGEN_RETURN(true); |
10178 | #endif |
10179 | break; |
10180 | break; |
10181 | default: |
10182 | break; |
10183 | } |
10184 | break; |
10185 | default: |
10186 | break; |
10187 | } |
10188 | break; |
10189 | default: |
10190 | break; |
10191 | } |
10192 | break; |
10193 | case Opcode::Move32: |
10194 | switch (this->args.size()) { |
10195 | case 2: |
10196 | switch (this->args[0].kind()) { |
10197 | case Arg::Tmp: |
10198 | switch (this->args[1].kind()) { |
10199 | case Arg::Tmp: |
10200 | if (!args[0].tmp().isGP()) |
10201 | OPGEN_RETURN(false); |
10202 | if (!args[1].tmp().isGP()) |
10203 | OPGEN_RETURN(false); |
10204 | OPGEN_RETURN(true); |
10205 | break; |
10206 | break; |
10207 | case Arg::Addr: |
10208 | case Arg::Stack: |
10209 | case Arg::CallArg: |
10210 | if (!args[0].tmp().isGP()) |
10211 | OPGEN_RETURN(false); |
10212 | if (!Arg::isValidAddrForm(args[1].offset())) |
10213 | OPGEN_RETURN(false); |
10214 | OPGEN_RETURN(true); |
10215 | break; |
10216 | break; |
10217 | case Arg::Index: |
10218 | if (!args[0].tmp().isGP()) |
10219 | OPGEN_RETURN(false); |
10220 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
10221 | OPGEN_RETURN(false); |
10222 | OPGEN_RETURN(true); |
10223 | break; |
10224 | break; |
10225 | default: |
10226 | break; |
10227 | } |
10228 | break; |
10229 | case Arg::Addr: |
10230 | case Arg::Stack: |
10231 | case Arg::CallArg: |
10232 | switch (this->args[1].kind()) { |
10233 | case Arg::Tmp: |
10234 | if (!Arg::isValidAddrForm(args[0].offset())) |
10235 | OPGEN_RETURN(false); |
10236 | if (!args[1].tmp().isGP()) |
10237 | OPGEN_RETURN(false); |
10238 | OPGEN_RETURN(true); |
10239 | break; |
10240 | break; |
10241 | default: |
10242 | break; |
10243 | } |
10244 | break; |
10245 | case Arg::Index: |
10246 | switch (this->args[1].kind()) { |
10247 | case Arg::Tmp: |
10248 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
10249 | OPGEN_RETURN(false); |
10250 | if (!args[1].tmp().isGP()) |
10251 | OPGEN_RETURN(false); |
10252 | OPGEN_RETURN(true); |
10253 | break; |
10254 | break; |
10255 | default: |
10256 | break; |
10257 | } |
10258 | break; |
10259 | case Arg::Imm: |
10260 | switch (this->args[1].kind()) { |
10261 | case Arg::Tmp: |
10262 | #if CPU(X86) || CPU(X86_64) |
10263 | if (!Arg::isValidImmForm(args[0].value())) |
10264 | OPGEN_RETURN(false); |
10265 | if (!args[1].tmp().isGP()) |
10266 | OPGEN_RETURN(false); |
10267 | OPGEN_RETURN(true); |
10268 | #endif |
10269 | break; |
10270 | break; |
10271 | case Arg::Addr: |
10272 | case Arg::Stack: |
10273 | case Arg::CallArg: |
10274 | #if CPU(X86) || CPU(X86_64) |
10275 | if (!Arg::isValidImmForm(args[0].value())) |
10276 | OPGEN_RETURN(false); |
10277 | if (!Arg::isValidAddrForm(args[1].offset())) |
10278 | OPGEN_RETURN(false); |
10279 | OPGEN_RETURN(true); |
10280 | #endif |
10281 | break; |
10282 | break; |
10283 | case Arg::Index: |
10284 | #if CPU(X86) || CPU(X86_64) |
10285 | if (!Arg::isValidImmForm(args[0].value())) |
10286 | OPGEN_RETURN(false); |
10287 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
10288 | OPGEN_RETURN(false); |
10289 | OPGEN_RETURN(true); |
10290 | #endif |
10291 | break; |
10292 | break; |
10293 | default: |
10294 | break; |
10295 | } |
10296 | break; |
10297 | default: |
10298 | break; |
10299 | } |
10300 | break; |
10301 | case 3: |
10302 | switch (this->args[0].kind()) { |
10303 | case Arg::Addr: |
10304 | case Arg::Stack: |
10305 | case Arg::CallArg: |
10306 | switch (this->args[1].kind()) { |
10307 | case Arg::Addr: |
10308 | case Arg::Stack: |
10309 | case Arg::CallArg: |
10310 | switch (this->args[2].kind()) { |
10311 | case Arg::Tmp: |
10312 | if (!Arg::isValidAddrForm(args[0].offset())) |
10313 | OPGEN_RETURN(false); |
10314 | if (!Arg::isValidAddrForm(args[1].offset())) |
10315 | OPGEN_RETURN(false); |
10316 | if (!args[2].tmp().isGP()) |
10317 | OPGEN_RETURN(false); |
10318 | OPGEN_RETURN(true); |
10319 | break; |
10320 | break; |
10321 | default: |
10322 | break; |
10323 | } |
10324 | break; |
10325 | default: |
10326 | break; |
10327 | } |
10328 | break; |
10329 | default: |
10330 | break; |
10331 | } |
10332 | break; |
10333 | default: |
10334 | break; |
10335 | } |
10336 | break; |
10337 | case Opcode::StoreZero32: |
10338 | switch (this->args.size()) { |
10339 | case 1: |
10340 | switch (this->args[0].kind()) { |
10341 | case Arg::Addr: |
10342 | case Arg::Stack: |
10343 | case Arg::CallArg: |
10344 | if (!Arg::isValidAddrForm(args[0].offset())) |
10345 | OPGEN_RETURN(false); |
10346 | OPGEN_RETURN(true); |
10347 | break; |
10348 | break; |
10349 | case Arg::Index: |
10350 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
10351 | OPGEN_RETURN(false); |
10352 | OPGEN_RETURN(true); |
10353 | break; |
10354 | break; |
10355 | default: |
10356 | break; |
10357 | } |
10358 | break; |
10359 | default: |
10360 | break; |
10361 | } |
10362 | break; |
10363 | case Opcode::StoreZero64: |
10364 | switch (this->args.size()) { |
10365 | case 1: |
10366 | switch (this->args[0].kind()) { |
10367 | case Arg::Addr: |
10368 | case Arg::Stack: |
10369 | case Arg::CallArg: |
10370 | #if CPU(X86_64) || CPU(ARM64) |
10371 | if (!Arg::isValidAddrForm(args[0].offset())) |
10372 | OPGEN_RETURN(false); |
10373 | OPGEN_RETURN(true); |
10374 | #endif |
10375 | break; |
10376 | break; |
10377 | case Arg::Index: |
10378 | #if CPU(X86_64) || CPU(ARM64) |
10379 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
10380 | OPGEN_RETURN(false); |
10381 | OPGEN_RETURN(true); |
10382 | #endif |
10383 | break; |
10384 | break; |
10385 | default: |
10386 | break; |
10387 | } |
10388 | break; |
10389 | default: |
10390 | break; |
10391 | } |
10392 | break; |
10393 | case Opcode::SignExtend32ToPtr: |
10394 | switch (this->args.size()) { |
10395 | case 2: |
10396 | switch (this->args[0].kind()) { |
10397 | case Arg::Tmp: |
10398 | switch (this->args[1].kind()) { |
10399 | case Arg::Tmp: |
10400 | if (!args[0].tmp().isGP()) |
10401 | OPGEN_RETURN(false); |
10402 | if (!args[1].tmp().isGP()) |
10403 | OPGEN_RETURN(false); |
10404 | OPGEN_RETURN(true); |
10405 | break; |
10406 | break; |
10407 | default: |
10408 | break; |
10409 | } |
10410 | break; |
10411 | default: |
10412 | break; |
10413 | } |
10414 | break; |
10415 | default: |
10416 | break; |
10417 | } |
10418 | break; |
10419 | case Opcode::ZeroExtend8To32: |
10420 | switch (this->args.size()) { |
10421 | case 2: |
10422 | switch (this->args[0].kind()) { |
10423 | case Arg::Tmp: |
10424 | switch (this->args[1].kind()) { |
10425 | case Arg::Tmp: |
10426 | if (!args[0].tmp().isGP()) |
10427 | OPGEN_RETURN(false); |
10428 | if (!args[1].tmp().isGP()) |
10429 | OPGEN_RETURN(false); |
10430 | OPGEN_RETURN(true); |
10431 | break; |
10432 | break; |
10433 | default: |
10434 | break; |
10435 | } |
10436 | break; |
10437 | case Arg::Addr: |
10438 | case Arg::Stack: |
10439 | case Arg::CallArg: |
10440 | switch (this->args[1].kind()) { |
10441 | case Arg::Tmp: |
10442 | #if CPU(X86) || CPU(X86_64) |
10443 | if (!Arg::isValidAddrForm(args[0].offset())) |
10444 | OPGEN_RETURN(false); |
10445 | if (!args[1].tmp().isGP()) |
10446 | OPGEN_RETURN(false); |
10447 | OPGEN_RETURN(true); |
10448 | #endif |
10449 | break; |
10450 | break; |
10451 | default: |
10452 | break; |
10453 | } |
10454 | break; |
10455 | case Arg::Index: |
10456 | switch (this->args[1].kind()) { |
10457 | case Arg::Tmp: |
10458 | #if CPU(X86) || CPU(X86_64) |
10459 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
10460 | OPGEN_RETURN(false); |
10461 | if (!args[1].tmp().isGP()) |
10462 | OPGEN_RETURN(false); |
10463 | OPGEN_RETURN(true); |
10464 | #endif |
10465 | break; |
10466 | break; |
10467 | default: |
10468 | break; |
10469 | } |
10470 | break; |
10471 | default: |
10472 | break; |
10473 | } |
10474 | break; |
10475 | default: |
10476 | break; |
10477 | } |
10478 | break; |
10479 | case Opcode::SignExtend8To32: |
10480 | switch (this->args.size()) { |
10481 | case 2: |
10482 | switch (this->args[0].kind()) { |
10483 | case Arg::Tmp: |
10484 | switch (this->args[1].kind()) { |
10485 | case Arg::Tmp: |
10486 | if (!args[0].tmp().isGP()) |
10487 | OPGEN_RETURN(false); |
10488 | if (!args[1].tmp().isGP()) |
10489 | OPGEN_RETURN(false); |
10490 | OPGEN_RETURN(true); |
10491 | break; |
10492 | break; |
10493 | default: |
10494 | break; |
10495 | } |
10496 | break; |
10497 | case Arg::Addr: |
10498 | case Arg::Stack: |
10499 | case Arg::CallArg: |
10500 | switch (this->args[1].kind()) { |
10501 | case Arg::Tmp: |
10502 | #if CPU(X86) || CPU(X86_64) |
10503 | if (!Arg::isValidAddrForm(args[0].offset())) |
10504 | OPGEN_RETURN(false); |
10505 | if (!args[1].tmp().isGP()) |
10506 | OPGEN_RETURN(false); |
10507 | OPGEN_RETURN(true); |
10508 | #endif |
10509 | break; |
10510 | break; |
10511 | default: |
10512 | break; |
10513 | } |
10514 | break; |
10515 | case Arg::Index: |
10516 | switch (this->args[1].kind()) { |
10517 | case Arg::Tmp: |
10518 | #if CPU(X86) || CPU(X86_64) |
10519 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
10520 | OPGEN_RETURN(false); |
10521 | if (!args[1].tmp().isGP()) |
10522 | OPGEN_RETURN(false); |
10523 | OPGEN_RETURN(true); |
10524 | #endif |
10525 | break; |
10526 | break; |
10527 | default: |
10528 | break; |
10529 | } |
10530 | break; |
10531 | default: |
10532 | break; |
10533 | } |
10534 | break; |
10535 | default: |
10536 | break; |
10537 | } |
10538 | break; |
10539 | case Opcode::ZeroExtend16To32: |
10540 | switch (this->args.size()) { |
10541 | case 2: |
10542 | switch (this->args[0].kind()) { |
10543 | case Arg::Tmp: |
10544 | switch (this->args[1].kind()) { |
10545 | case Arg::Tmp: |
10546 | if (!args[0].tmp().isGP()) |
10547 | OPGEN_RETURN(false); |
10548 | if (!args[1].tmp().isGP()) |
10549 | OPGEN_RETURN(false); |
10550 | OPGEN_RETURN(true); |
10551 | break; |
10552 | break; |
10553 | default: |
10554 | break; |
10555 | } |
10556 | break; |
10557 | case Arg::Addr: |
10558 | case Arg::Stack: |
10559 | case Arg::CallArg: |
10560 | switch (this->args[1].kind()) { |
10561 | case Arg::Tmp: |
10562 | #if CPU(X86) || CPU(X86_64) |
10563 | if (!Arg::isValidAddrForm(args[0].offset())) |
10564 | OPGEN_RETURN(false); |
10565 | if (!args[1].tmp().isGP()) |
10566 | OPGEN_RETURN(false); |
10567 | OPGEN_RETURN(true); |
10568 | #endif |
10569 | break; |
10570 | break; |
10571 | default: |
10572 | break; |
10573 | } |
10574 | break; |
10575 | case Arg::Index: |
10576 | switch (this->args[1].kind()) { |
10577 | case Arg::Tmp: |
10578 | #if CPU(X86) || CPU(X86_64) |
10579 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
10580 | OPGEN_RETURN(false); |
10581 | if (!args[1].tmp().isGP()) |
10582 | OPGEN_RETURN(false); |
10583 | OPGEN_RETURN(true); |
10584 | #endif |
10585 | break; |
10586 | break; |
10587 | default: |
10588 | break; |
10589 | } |
10590 | break; |
10591 | default: |
10592 | break; |
10593 | } |
10594 | break; |
10595 | default: |
10596 | break; |
10597 | } |
10598 | break; |
10599 | case Opcode::SignExtend16To32: |
10600 | switch (this->args.size()) { |
10601 | case 2: |
10602 | switch (this->args[0].kind()) { |
10603 | case Arg::Tmp: |
10604 | switch (this->args[1].kind()) { |
10605 | case Arg::Tmp: |
10606 | if (!args[0].tmp().isGP()) |
10607 | OPGEN_RETURN(false); |
10608 | if (!args[1].tmp().isGP()) |
10609 | OPGEN_RETURN(false); |
10610 | OPGEN_RETURN(true); |
10611 | break; |
10612 | break; |
10613 | default: |
10614 | break; |
10615 | } |
10616 | break; |
10617 | case Arg::Addr: |
10618 | case Arg::Stack: |
10619 | case Arg::CallArg: |
10620 | switch (this->args[1].kind()) { |
10621 | case Arg::Tmp: |
10622 | #if CPU(X86) || CPU(X86_64) |
10623 | if (!Arg::isValidAddrForm(args[0].offset())) |
10624 | OPGEN_RETURN(false); |
10625 | if (!args[1].tmp().isGP()) |
10626 | OPGEN_RETURN(false); |
10627 | OPGEN_RETURN(true); |
10628 | #endif |
10629 | break; |
10630 | break; |
10631 | default: |
10632 | break; |
10633 | } |
10634 | break; |
10635 | case Arg::Index: |
10636 | switch (this->args[1].kind()) { |
10637 | case Arg::Tmp: |
10638 | #if CPU(X86) || CPU(X86_64) |
10639 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
10640 | OPGEN_RETURN(false); |
10641 | if (!args[1].tmp().isGP()) |
10642 | OPGEN_RETURN(false); |
10643 | OPGEN_RETURN(true); |
10644 | #endif |
10645 | break; |
10646 | break; |
10647 | default: |
10648 | break; |
10649 | } |
10650 | break; |
10651 | default: |
10652 | break; |
10653 | } |
10654 | break; |
10655 | default: |
10656 | break; |
10657 | } |
10658 | break; |
10659 | case Opcode::MoveFloat: |
10660 | switch (this->args.size()) { |
10661 | case 2: |
10662 | switch (this->args[0].kind()) { |
10663 | case Arg::Tmp: |
10664 | switch (this->args[1].kind()) { |
10665 | case Arg::Tmp: |
10666 | if (!args[0].tmp().isFP()) |
10667 | OPGEN_RETURN(false); |
10668 | if (!args[1].tmp().isFP()) |
10669 | OPGEN_RETURN(false); |
10670 | OPGEN_RETURN(true); |
10671 | break; |
10672 | break; |
10673 | case Arg::Addr: |
10674 | case Arg::Stack: |
10675 | case Arg::CallArg: |
10676 | if (!args[0].tmp().isFP()) |
10677 | OPGEN_RETURN(false); |
10678 | if (!Arg::isValidAddrForm(args[1].offset())) |
10679 | OPGEN_RETURN(false); |
10680 | OPGEN_RETURN(true); |
10681 | break; |
10682 | break; |
10683 | case Arg::Index: |
10684 | if (!args[0].tmp().isFP()) |
10685 | OPGEN_RETURN(false); |
10686 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
10687 | OPGEN_RETURN(false); |
10688 | OPGEN_RETURN(true); |
10689 | break; |
10690 | break; |
10691 | default: |
10692 | break; |
10693 | } |
10694 | break; |
10695 | case Arg::Addr: |
10696 | case Arg::Stack: |
10697 | case Arg::CallArg: |
10698 | switch (this->args[1].kind()) { |
10699 | case Arg::Tmp: |
10700 | if (!Arg::isValidAddrForm(args[0].offset())) |
10701 | OPGEN_RETURN(false); |
10702 | if (!args[1].tmp().isFP()) |
10703 | OPGEN_RETURN(false); |
10704 | OPGEN_RETURN(true); |
10705 | break; |
10706 | break; |
10707 | default: |
10708 | break; |
10709 | } |
10710 | break; |
10711 | case Arg::Index: |
10712 | switch (this->args[1].kind()) { |
10713 | case Arg::Tmp: |
10714 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
10715 | OPGEN_RETURN(false); |
10716 | if (!args[1].tmp().isFP()) |
10717 | OPGEN_RETURN(false); |
10718 | OPGEN_RETURN(true); |
10719 | break; |
10720 | break; |
10721 | default: |
10722 | break; |
10723 | } |
10724 | break; |
10725 | default: |
10726 | break; |
10727 | } |
10728 | break; |
10729 | case 3: |
10730 | switch (this->args[0].kind()) { |
10731 | case Arg::Addr: |
10732 | case Arg::Stack: |
10733 | case Arg::CallArg: |
10734 | switch (this->args[1].kind()) { |
10735 | case Arg::Addr: |
10736 | case Arg::Stack: |
10737 | case Arg::CallArg: |
10738 | switch (this->args[2].kind()) { |
10739 | case Arg::Tmp: |
10740 | if (!Arg::isValidAddrForm(args[0].offset())) |
10741 | OPGEN_RETURN(false); |
10742 | if (!Arg::isValidAddrForm(args[1].offset())) |
10743 | OPGEN_RETURN(false); |
10744 | if (!args[2].tmp().isFP()) |
10745 | OPGEN_RETURN(false); |
10746 | OPGEN_RETURN(true); |
10747 | break; |
10748 | break; |
10749 | default: |
10750 | break; |
10751 | } |
10752 | break; |
10753 | default: |
10754 | break; |
10755 | } |
10756 | break; |
10757 | default: |
10758 | break; |
10759 | } |
10760 | break; |
10761 | default: |
10762 | break; |
10763 | } |
10764 | break; |
10765 | case Opcode::MoveDouble: |
10766 | switch (this->args.size()) { |
10767 | case 2: |
10768 | switch (this->args[0].kind()) { |
10769 | case Arg::Tmp: |
10770 | switch (this->args[1].kind()) { |
10771 | case Arg::Tmp: |
10772 | if (!args[0].tmp().isFP()) |
10773 | OPGEN_RETURN(false); |
10774 | if (!args[1].tmp().isFP()) |
10775 | OPGEN_RETURN(false); |
10776 | OPGEN_RETURN(true); |
10777 | break; |
10778 | break; |
10779 | case Arg::Addr: |
10780 | case Arg::Stack: |
10781 | case Arg::CallArg: |
10782 | if (!args[0].tmp().isFP()) |
10783 | OPGEN_RETURN(false); |
10784 | if (!Arg::isValidAddrForm(args[1].offset())) |
10785 | OPGEN_RETURN(false); |
10786 | OPGEN_RETURN(true); |
10787 | break; |
10788 | break; |
10789 | case Arg::Index: |
10790 | if (!args[0].tmp().isFP()) |
10791 | OPGEN_RETURN(false); |
10792 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
10793 | OPGEN_RETURN(false); |
10794 | OPGEN_RETURN(true); |
10795 | break; |
10796 | break; |
10797 | default: |
10798 | break; |
10799 | } |
10800 | break; |
10801 | case Arg::Addr: |
10802 | case Arg::Stack: |
10803 | case Arg::CallArg: |
10804 | switch (this->args[1].kind()) { |
10805 | case Arg::Tmp: |
10806 | if (!Arg::isValidAddrForm(args[0].offset())) |
10807 | OPGEN_RETURN(false); |
10808 | if (!args[1].tmp().isFP()) |
10809 | OPGEN_RETURN(false); |
10810 | OPGEN_RETURN(true); |
10811 | break; |
10812 | break; |
10813 | default: |
10814 | break; |
10815 | } |
10816 | break; |
10817 | case Arg::Index: |
10818 | switch (this->args[1].kind()) { |
10819 | case Arg::Tmp: |
10820 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
10821 | OPGEN_RETURN(false); |
10822 | if (!args[1].tmp().isFP()) |
10823 | OPGEN_RETURN(false); |
10824 | OPGEN_RETURN(true); |
10825 | break; |
10826 | break; |
10827 | default: |
10828 | break; |
10829 | } |
10830 | break; |
10831 | default: |
10832 | break; |
10833 | } |
10834 | break; |
10835 | case 3: |
10836 | switch (this->args[0].kind()) { |
10837 | case Arg::Addr: |
10838 | case Arg::Stack: |
10839 | case Arg::CallArg: |
10840 | switch (this->args[1].kind()) { |
10841 | case Arg::Addr: |
10842 | case Arg::Stack: |
10843 | case Arg::CallArg: |
10844 | switch (this->args[2].kind()) { |
10845 | case Arg::Tmp: |
10846 | if (!Arg::isValidAddrForm(args[0].offset())) |
10847 | OPGEN_RETURN(false); |
10848 | if (!Arg::isValidAddrForm(args[1].offset())) |
10849 | OPGEN_RETURN(false); |
10850 | if (!args[2].tmp().isFP()) |
10851 | OPGEN_RETURN(false); |
10852 | OPGEN_RETURN(true); |
10853 | break; |
10854 | break; |
10855 | default: |
10856 | break; |
10857 | } |
10858 | break; |
10859 | default: |
10860 | break; |
10861 | } |
10862 | break; |
10863 | default: |
10864 | break; |
10865 | } |
10866 | break; |
10867 | default: |
10868 | break; |
10869 | } |
10870 | break; |
10871 | case Opcode::MoveZeroToDouble: |
10872 | switch (this->args.size()) { |
10873 | case 1: |
10874 | switch (this->args[0].kind()) { |
10875 | case Arg::Tmp: |
10876 | if (!args[0].tmp().isFP()) |
10877 | OPGEN_RETURN(false); |
10878 | OPGEN_RETURN(true); |
10879 | break; |
10880 | break; |
10881 | default: |
10882 | break; |
10883 | } |
10884 | break; |
10885 | default: |
10886 | break; |
10887 | } |
10888 | break; |
10889 | case Opcode::Move64ToDouble: |
10890 | switch (this->args.size()) { |
10891 | case 2: |
10892 | switch (this->args[0].kind()) { |
10893 | case Arg::Tmp: |
10894 | switch (this->args[1].kind()) { |
10895 | case Arg::Tmp: |
10896 | #if CPU(X86_64) || CPU(ARM64) |
10897 | if (!args[0].tmp().isGP()) |
10898 | OPGEN_RETURN(false); |
10899 | if (!args[1].tmp().isFP()) |
10900 | OPGEN_RETURN(false); |
10901 | OPGEN_RETURN(true); |
10902 | #endif |
10903 | break; |
10904 | break; |
10905 | default: |
10906 | break; |
10907 | } |
10908 | break; |
10909 | case Arg::Addr: |
10910 | case Arg::Stack: |
10911 | case Arg::CallArg: |
10912 | switch (this->args[1].kind()) { |
10913 | case Arg::Tmp: |
10914 | #if CPU(X86_64) |
10915 | if (!Arg::isValidAddrForm(args[0].offset())) |
10916 | OPGEN_RETURN(false); |
10917 | if (!args[1].tmp().isFP()) |
10918 | OPGEN_RETURN(false); |
10919 | OPGEN_RETURN(true); |
10920 | #endif |
10921 | break; |
10922 | break; |
10923 | default: |
10924 | break; |
10925 | } |
10926 | break; |
10927 | case Arg::Index: |
10928 | switch (this->args[1].kind()) { |
10929 | case Arg::Tmp: |
10930 | #if CPU(X86_64) || CPU(ARM64) |
10931 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
10932 | OPGEN_RETURN(false); |
10933 | if (!args[1].tmp().isFP()) |
10934 | OPGEN_RETURN(false); |
10935 | OPGEN_RETURN(true); |
10936 | #endif |
10937 | break; |
10938 | break; |
10939 | default: |
10940 | break; |
10941 | } |
10942 | break; |
10943 | default: |
10944 | break; |
10945 | } |
10946 | break; |
10947 | default: |
10948 | break; |
10949 | } |
10950 | break; |
10951 | case Opcode::Move32ToFloat: |
10952 | switch (this->args.size()) { |
10953 | case 2: |
10954 | switch (this->args[0].kind()) { |
10955 | case Arg::Tmp: |
10956 | switch (this->args[1].kind()) { |
10957 | case Arg::Tmp: |
10958 | if (!args[0].tmp().isGP()) |
10959 | OPGEN_RETURN(false); |
10960 | if (!args[1].tmp().isFP()) |
10961 | OPGEN_RETURN(false); |
10962 | OPGEN_RETURN(true); |
10963 | break; |
10964 | break; |
10965 | default: |
10966 | break; |
10967 | } |
10968 | break; |
10969 | case Arg::Addr: |
10970 | case Arg::Stack: |
10971 | case Arg::CallArg: |
10972 | switch (this->args[1].kind()) { |
10973 | case Arg::Tmp: |
10974 | #if CPU(X86) || CPU(X86_64) |
10975 | if (!Arg::isValidAddrForm(args[0].offset())) |
10976 | OPGEN_RETURN(false); |
10977 | if (!args[1].tmp().isFP()) |
10978 | OPGEN_RETURN(false); |
10979 | OPGEN_RETURN(true); |
10980 | #endif |
10981 | break; |
10982 | break; |
10983 | default: |
10984 | break; |
10985 | } |
10986 | break; |
10987 | case Arg::Index: |
10988 | switch (this->args[1].kind()) { |
10989 | case Arg::Tmp: |
10990 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
10991 | OPGEN_RETURN(false); |
10992 | if (!args[1].tmp().isFP()) |
10993 | OPGEN_RETURN(false); |
10994 | OPGEN_RETURN(true); |
10995 | break; |
10996 | break; |
10997 | default: |
10998 | break; |
10999 | } |
11000 | break; |
11001 | default: |
11002 | break; |
11003 | } |
11004 | break; |
11005 | default: |
11006 | break; |
11007 | } |
11008 | break; |
11009 | case Opcode::MoveDoubleTo64: |
11010 | switch (this->args.size()) { |
11011 | case 2: |
11012 | switch (this->args[0].kind()) { |
11013 | case Arg::Tmp: |
11014 | switch (this->args[1].kind()) { |
11015 | case Arg::Tmp: |
11016 | #if CPU(X86_64) || CPU(ARM64) |
11017 | if (!args[0].tmp().isFP()) |
11018 | OPGEN_RETURN(false); |
11019 | if (!args[1].tmp().isGP()) |
11020 | OPGEN_RETURN(false); |
11021 | OPGEN_RETURN(true); |
11022 | #endif |
11023 | break; |
11024 | break; |
11025 | default: |
11026 | break; |
11027 | } |
11028 | break; |
11029 | case Arg::Addr: |
11030 | case Arg::Stack: |
11031 | case Arg::CallArg: |
11032 | switch (this->args[1].kind()) { |
11033 | case Arg::Tmp: |
11034 | #if CPU(X86_64) || CPU(ARM64) |
11035 | if (!Arg::isValidAddrForm(args[0].offset())) |
11036 | OPGEN_RETURN(false); |
11037 | if (!args[1].tmp().isGP()) |
11038 | OPGEN_RETURN(false); |
11039 | OPGEN_RETURN(true); |
11040 | #endif |
11041 | break; |
11042 | break; |
11043 | default: |
11044 | break; |
11045 | } |
11046 | break; |
11047 | case Arg::Index: |
11048 | switch (this->args[1].kind()) { |
11049 | case Arg::Tmp: |
11050 | #if CPU(X86_64) || CPU(ARM64) |
11051 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
11052 | OPGEN_RETURN(false); |
11053 | if (!args[1].tmp().isGP()) |
11054 | OPGEN_RETURN(false); |
11055 | OPGEN_RETURN(true); |
11056 | #endif |
11057 | break; |
11058 | break; |
11059 | default: |
11060 | break; |
11061 | } |
11062 | break; |
11063 | default: |
11064 | break; |
11065 | } |
11066 | break; |
11067 | default: |
11068 | break; |
11069 | } |
11070 | break; |
11071 | case Opcode::MoveFloatTo32: |
11072 | switch (this->args.size()) { |
11073 | case 2: |
11074 | switch (this->args[0].kind()) { |
11075 | case Arg::Tmp: |
11076 | switch (this->args[1].kind()) { |
11077 | case Arg::Tmp: |
11078 | if (!args[0].tmp().isFP()) |
11079 | OPGEN_RETURN(false); |
11080 | if (!args[1].tmp().isGP()) |
11081 | OPGEN_RETURN(false); |
11082 | OPGEN_RETURN(true); |
11083 | break; |
11084 | break; |
11085 | default: |
11086 | break; |
11087 | } |
11088 | break; |
11089 | case Arg::Addr: |
11090 | case Arg::Stack: |
11091 | case Arg::CallArg: |
11092 | switch (this->args[1].kind()) { |
11093 | case Arg::Tmp: |
11094 | if (!Arg::isValidAddrForm(args[0].offset())) |
11095 | OPGEN_RETURN(false); |
11096 | if (!args[1].tmp().isGP()) |
11097 | OPGEN_RETURN(false); |
11098 | OPGEN_RETURN(true); |
11099 | break; |
11100 | break; |
11101 | default: |
11102 | break; |
11103 | } |
11104 | break; |
11105 | case Arg::Index: |
11106 | switch (this->args[1].kind()) { |
11107 | case Arg::Tmp: |
11108 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
11109 | OPGEN_RETURN(false); |
11110 | if (!args[1].tmp().isGP()) |
11111 | OPGEN_RETURN(false); |
11112 | OPGEN_RETURN(true); |
11113 | break; |
11114 | break; |
11115 | default: |
11116 | break; |
11117 | } |
11118 | break; |
11119 | default: |
11120 | break; |
11121 | } |
11122 | break; |
11123 | default: |
11124 | break; |
11125 | } |
11126 | break; |
11127 | case Opcode::Load8: |
11128 | switch (this->args.size()) { |
11129 | case 2: |
11130 | switch (this->args[0].kind()) { |
11131 | case Arg::Addr: |
11132 | case Arg::Stack: |
11133 | case Arg::CallArg: |
11134 | switch (this->args[1].kind()) { |
11135 | case Arg::Tmp: |
11136 | if (!Arg::isValidAddrForm(args[0].offset())) |
11137 | OPGEN_RETURN(false); |
11138 | if (!args[1].tmp().isGP()) |
11139 | OPGEN_RETURN(false); |
11140 | OPGEN_RETURN(true); |
11141 | break; |
11142 | break; |
11143 | default: |
11144 | break; |
11145 | } |
11146 | break; |
11147 | case Arg::Index: |
11148 | switch (this->args[1].kind()) { |
11149 | case Arg::Tmp: |
11150 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
11151 | OPGEN_RETURN(false); |
11152 | if (!args[1].tmp().isGP()) |
11153 | OPGEN_RETURN(false); |
11154 | OPGEN_RETURN(true); |
11155 | break; |
11156 | break; |
11157 | default: |
11158 | break; |
11159 | } |
11160 | break; |
11161 | default: |
11162 | break; |
11163 | } |
11164 | break; |
11165 | default: |
11166 | break; |
11167 | } |
11168 | break; |
11169 | case Opcode::LoadAcq8: |
11170 | switch (this->args.size()) { |
11171 | case 2: |
11172 | switch (this->args[0].kind()) { |
11173 | case Arg::SimpleAddr: |
11174 | switch (this->args[1].kind()) { |
11175 | case Arg::Tmp: |
11176 | #if CPU(ARMv7) || CPU(ARM64) |
11177 | if (!args[0].ptr().isGP()) |
11178 | OPGEN_RETURN(false); |
11179 | if (!args[1].tmp().isGP()) |
11180 | OPGEN_RETURN(false); |
11181 | OPGEN_RETURN(true); |
11182 | #endif |
11183 | break; |
11184 | break; |
11185 | default: |
11186 | break; |
11187 | } |
11188 | break; |
11189 | default: |
11190 | break; |
11191 | } |
11192 | break; |
11193 | default: |
11194 | break; |
11195 | } |
11196 | break; |
11197 | case Opcode::Store8: |
11198 | switch (this->args.size()) { |
11199 | case 2: |
11200 | switch (this->args[0].kind()) { |
11201 | case Arg::Tmp: |
11202 | switch (this->args[1].kind()) { |
11203 | case Arg::Index: |
11204 | if (!args[0].tmp().isGP()) |
11205 | OPGEN_RETURN(false); |
11206 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
11207 | OPGEN_RETURN(false); |
11208 | OPGEN_RETURN(true); |
11209 | break; |
11210 | break; |
11211 | case Arg::Addr: |
11212 | case Arg::Stack: |
11213 | case Arg::CallArg: |
11214 | if (!args[0].tmp().isGP()) |
11215 | OPGEN_RETURN(false); |
11216 | if (!Arg::isValidAddrForm(args[1].offset())) |
11217 | OPGEN_RETURN(false); |
11218 | OPGEN_RETURN(true); |
11219 | break; |
11220 | break; |
11221 | default: |
11222 | break; |
11223 | } |
11224 | break; |
11225 | case Arg::Imm: |
11226 | switch (this->args[1].kind()) { |
11227 | case Arg::Index: |
11228 | #if CPU(X86) || CPU(X86_64) |
11229 | if (!Arg::isValidImmForm(args[0].value())) |
11230 | OPGEN_RETURN(false); |
11231 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
11232 | OPGEN_RETURN(false); |
11233 | OPGEN_RETURN(true); |
11234 | #endif |
11235 | break; |
11236 | break; |
11237 | case Arg::Addr: |
11238 | case Arg::Stack: |
11239 | case Arg::CallArg: |
11240 | #if CPU(X86) || CPU(X86_64) |
11241 | if (!Arg::isValidImmForm(args[0].value())) |
11242 | OPGEN_RETURN(false); |
11243 | if (!Arg::isValidAddrForm(args[1].offset())) |
11244 | OPGEN_RETURN(false); |
11245 | OPGEN_RETURN(true); |
11246 | #endif |
11247 | break; |
11248 | break; |
11249 | default: |
11250 | break; |
11251 | } |
11252 | break; |
11253 | default: |
11254 | break; |
11255 | } |
11256 | break; |
11257 | default: |
11258 | break; |
11259 | } |
11260 | break; |
11261 | case Opcode::StoreRel8: |
11262 | switch (this->args.size()) { |
11263 | case 2: |
11264 | switch (this->args[0].kind()) { |
11265 | case Arg::Tmp: |
11266 | switch (this->args[1].kind()) { |
11267 | case Arg::SimpleAddr: |
11268 | #if CPU(ARMv7) || CPU(ARM64) |
11269 | if (!args[0].tmp().isGP()) |
11270 | OPGEN_RETURN(false); |
11271 | if (!args[1].ptr().isGP()) |
11272 | OPGEN_RETURN(false); |
11273 | OPGEN_RETURN(true); |
11274 | #endif |
11275 | break; |
11276 | break; |
11277 | default: |
11278 | break; |
11279 | } |
11280 | break; |
11281 | default: |
11282 | break; |
11283 | } |
11284 | break; |
11285 | default: |
11286 | break; |
11287 | } |
11288 | break; |
11289 | case Opcode::Load8SignedExtendTo32: |
11290 | switch (this->args.size()) { |
11291 | case 2: |
11292 | switch (this->args[0].kind()) { |
11293 | case Arg::Addr: |
11294 | case Arg::Stack: |
11295 | case Arg::CallArg: |
11296 | switch (this->args[1].kind()) { |
11297 | case Arg::Tmp: |
11298 | if (!Arg::isValidAddrForm(args[0].offset())) |
11299 | OPGEN_RETURN(false); |
11300 | if (!args[1].tmp().isGP()) |
11301 | OPGEN_RETURN(false); |
11302 | OPGEN_RETURN(true); |
11303 | break; |
11304 | break; |
11305 | default: |
11306 | break; |
11307 | } |
11308 | break; |
11309 | case Arg::Index: |
11310 | switch (this->args[1].kind()) { |
11311 | case Arg::Tmp: |
11312 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
11313 | OPGEN_RETURN(false); |
11314 | if (!args[1].tmp().isGP()) |
11315 | OPGEN_RETURN(false); |
11316 | OPGEN_RETURN(true); |
11317 | break; |
11318 | break; |
11319 | default: |
11320 | break; |
11321 | } |
11322 | break; |
11323 | default: |
11324 | break; |
11325 | } |
11326 | break; |
11327 | default: |
11328 | break; |
11329 | } |
11330 | break; |
11331 | case Opcode::LoadAcq8SignedExtendTo32: |
11332 | switch (this->args.size()) { |
11333 | case 2: |
11334 | switch (this->args[0].kind()) { |
11335 | case Arg::SimpleAddr: |
11336 | switch (this->args[1].kind()) { |
11337 | case Arg::Tmp: |
11338 | #if CPU(ARMv7) || CPU(ARM64) |
11339 | if (!args[0].ptr().isGP()) |
11340 | OPGEN_RETURN(false); |
11341 | if (!args[1].tmp().isGP()) |
11342 | OPGEN_RETURN(false); |
11343 | OPGEN_RETURN(true); |
11344 | #endif |
11345 | break; |
11346 | break; |
11347 | default: |
11348 | break; |
11349 | } |
11350 | break; |
11351 | default: |
11352 | break; |
11353 | } |
11354 | break; |
11355 | default: |
11356 | break; |
11357 | } |
11358 | break; |
11359 | case Opcode::Load16: |
11360 | switch (this->args.size()) { |
11361 | case 2: |
11362 | switch (this->args[0].kind()) { |
11363 | case Arg::Addr: |
11364 | case Arg::Stack: |
11365 | case Arg::CallArg: |
11366 | switch (this->args[1].kind()) { |
11367 | case Arg::Tmp: |
11368 | if (!Arg::isValidAddrForm(args[0].offset())) |
11369 | OPGEN_RETURN(false); |
11370 | if (!args[1].tmp().isGP()) |
11371 | OPGEN_RETURN(false); |
11372 | OPGEN_RETURN(true); |
11373 | break; |
11374 | break; |
11375 | default: |
11376 | break; |
11377 | } |
11378 | break; |
11379 | case Arg::Index: |
11380 | switch (this->args[1].kind()) { |
11381 | case Arg::Tmp: |
11382 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
11383 | OPGEN_RETURN(false); |
11384 | if (!args[1].tmp().isGP()) |
11385 | OPGEN_RETURN(false); |
11386 | OPGEN_RETURN(true); |
11387 | break; |
11388 | break; |
11389 | default: |
11390 | break; |
11391 | } |
11392 | break; |
11393 | default: |
11394 | break; |
11395 | } |
11396 | break; |
11397 | default: |
11398 | break; |
11399 | } |
11400 | break; |
11401 | case Opcode::LoadAcq16: |
11402 | switch (this->args.size()) { |
11403 | case 2: |
11404 | switch (this->args[0].kind()) { |
11405 | case Arg::SimpleAddr: |
11406 | switch (this->args[1].kind()) { |
11407 | case Arg::Tmp: |
11408 | #if CPU(ARMv7) || CPU(ARM64) |
11409 | if (!args[0].ptr().isGP()) |
11410 | OPGEN_RETURN(false); |
11411 | if (!args[1].tmp().isGP()) |
11412 | OPGEN_RETURN(false); |
11413 | OPGEN_RETURN(true); |
11414 | #endif |
11415 | break; |
11416 | break; |
11417 | default: |
11418 | break; |
11419 | } |
11420 | break; |
11421 | default: |
11422 | break; |
11423 | } |
11424 | break; |
11425 | default: |
11426 | break; |
11427 | } |
11428 | break; |
11429 | case Opcode::Load16SignedExtendTo32: |
11430 | switch (this->args.size()) { |
11431 | case 2: |
11432 | switch (this->args[0].kind()) { |
11433 | case Arg::Addr: |
11434 | case Arg::Stack: |
11435 | case Arg::CallArg: |
11436 | switch (this->args[1].kind()) { |
11437 | case Arg::Tmp: |
11438 | if (!Arg::isValidAddrForm(args[0].offset())) |
11439 | OPGEN_RETURN(false); |
11440 | if (!args[1].tmp().isGP()) |
11441 | OPGEN_RETURN(false); |
11442 | OPGEN_RETURN(true); |
11443 | break; |
11444 | break; |
11445 | default: |
11446 | break; |
11447 | } |
11448 | break; |
11449 | case Arg::Index: |
11450 | switch (this->args[1].kind()) { |
11451 | case Arg::Tmp: |
11452 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
11453 | OPGEN_RETURN(false); |
11454 | if (!args[1].tmp().isGP()) |
11455 | OPGEN_RETURN(false); |
11456 | OPGEN_RETURN(true); |
11457 | break; |
11458 | break; |
11459 | default: |
11460 | break; |
11461 | } |
11462 | break; |
11463 | default: |
11464 | break; |
11465 | } |
11466 | break; |
11467 | default: |
11468 | break; |
11469 | } |
11470 | break; |
11471 | case Opcode::LoadAcq16SignedExtendTo32: |
11472 | switch (this->args.size()) { |
11473 | case 2: |
11474 | switch (this->args[0].kind()) { |
11475 | case Arg::SimpleAddr: |
11476 | switch (this->args[1].kind()) { |
11477 | case Arg::Tmp: |
11478 | #if CPU(ARMv7) || CPU(ARM64) |
11479 | if (!args[0].ptr().isGP()) |
11480 | OPGEN_RETURN(false); |
11481 | if (!args[1].tmp().isGP()) |
11482 | OPGEN_RETURN(false); |
11483 | OPGEN_RETURN(true); |
11484 | #endif |
11485 | break; |
11486 | break; |
11487 | default: |
11488 | break; |
11489 | } |
11490 | break; |
11491 | default: |
11492 | break; |
11493 | } |
11494 | break; |
11495 | default: |
11496 | break; |
11497 | } |
11498 | break; |
11499 | case Opcode::Store16: |
11500 | switch (this->args.size()) { |
11501 | case 2: |
11502 | switch (this->args[0].kind()) { |
11503 | case Arg::Tmp: |
11504 | switch (this->args[1].kind()) { |
11505 | case Arg::Index: |
11506 | if (!args[0].tmp().isGP()) |
11507 | OPGEN_RETURN(false); |
11508 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
11509 | OPGEN_RETURN(false); |
11510 | OPGEN_RETURN(true); |
11511 | break; |
11512 | break; |
11513 | case Arg::Addr: |
11514 | case Arg::Stack: |
11515 | case Arg::CallArg: |
11516 | if (!args[0].tmp().isGP()) |
11517 | OPGEN_RETURN(false); |
11518 | if (!Arg::isValidAddrForm(args[1].offset())) |
11519 | OPGEN_RETURN(false); |
11520 | OPGEN_RETURN(true); |
11521 | break; |
11522 | break; |
11523 | default: |
11524 | break; |
11525 | } |
11526 | break; |
11527 | case Arg::Imm: |
11528 | switch (this->args[1].kind()) { |
11529 | case Arg::Index: |
11530 | #if CPU(X86) || CPU(X86_64) |
11531 | if (!Arg::isValidImmForm(args[0].value())) |
11532 | OPGEN_RETURN(false); |
11533 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
11534 | OPGEN_RETURN(false); |
11535 | OPGEN_RETURN(true); |
11536 | #endif |
11537 | break; |
11538 | break; |
11539 | case Arg::Addr: |
11540 | case Arg::Stack: |
11541 | case Arg::CallArg: |
11542 | #if CPU(X86) || CPU(X86_64) |
11543 | if (!Arg::isValidImmForm(args[0].value())) |
11544 | OPGEN_RETURN(false); |
11545 | if (!Arg::isValidAddrForm(args[1].offset())) |
11546 | OPGEN_RETURN(false); |
11547 | OPGEN_RETURN(true); |
11548 | #endif |
11549 | break; |
11550 | break; |
11551 | default: |
11552 | break; |
11553 | } |
11554 | break; |
11555 | default: |
11556 | break; |
11557 | } |
11558 | break; |
11559 | default: |
11560 | break; |
11561 | } |
11562 | break; |
11563 | case Opcode::StoreRel16: |
11564 | switch (this->args.size()) { |
11565 | case 2: |
11566 | switch (this->args[0].kind()) { |
11567 | case Arg::Tmp: |
11568 | switch (this->args[1].kind()) { |
11569 | case Arg::SimpleAddr: |
11570 | #if CPU(ARMv7) || CPU(ARM64) |
11571 | if (!args[0].tmp().isGP()) |
11572 | OPGEN_RETURN(false); |
11573 | if (!args[1].ptr().isGP()) |
11574 | OPGEN_RETURN(false); |
11575 | OPGEN_RETURN(true); |
11576 | #endif |
11577 | break; |
11578 | break; |
11579 | default: |
11580 | break; |
11581 | } |
11582 | break; |
11583 | default: |
11584 | break; |
11585 | } |
11586 | break; |
11587 | default: |
11588 | break; |
11589 | } |
11590 | break; |
11591 | case Opcode::LoadAcq32: |
11592 | switch (this->args.size()) { |
11593 | case 2: |
11594 | switch (this->args[0].kind()) { |
11595 | case Arg::SimpleAddr: |
11596 | switch (this->args[1].kind()) { |
11597 | case Arg::Tmp: |
11598 | #if CPU(ARMv7) || CPU(ARM64) |
11599 | if (!args[0].ptr().isGP()) |
11600 | OPGEN_RETURN(false); |
11601 | if (!args[1].tmp().isGP()) |
11602 | OPGEN_RETURN(false); |
11603 | OPGEN_RETURN(true); |
11604 | #endif |
11605 | break; |
11606 | break; |
11607 | default: |
11608 | break; |
11609 | } |
11610 | break; |
11611 | default: |
11612 | break; |
11613 | } |
11614 | break; |
11615 | default: |
11616 | break; |
11617 | } |
11618 | break; |
11619 | case Opcode::StoreRel32: |
11620 | switch (this->args.size()) { |
11621 | case 2: |
11622 | switch (this->args[0].kind()) { |
11623 | case Arg::Tmp: |
11624 | switch (this->args[1].kind()) { |
11625 | case Arg::SimpleAddr: |
11626 | #if CPU(ARMv7) || CPU(ARM64) |
11627 | if (!args[0].tmp().isGP()) |
11628 | OPGEN_RETURN(false); |
11629 | if (!args[1].ptr().isGP()) |
11630 | OPGEN_RETURN(false); |
11631 | OPGEN_RETURN(true); |
11632 | #endif |
11633 | break; |
11634 | break; |
11635 | default: |
11636 | break; |
11637 | } |
11638 | break; |
11639 | default: |
11640 | break; |
11641 | } |
11642 | break; |
11643 | default: |
11644 | break; |
11645 | } |
11646 | break; |
11647 | case Opcode::LoadAcq64: |
11648 | switch (this->args.size()) { |
11649 | case 2: |
11650 | switch (this->args[0].kind()) { |
11651 | case Arg::SimpleAddr: |
11652 | switch (this->args[1].kind()) { |
11653 | case Arg::Tmp: |
11654 | #if CPU(ARM64) |
11655 | if (!args[0].ptr().isGP()) |
11656 | OPGEN_RETURN(false); |
11657 | if (!args[1].tmp().isGP()) |
11658 | OPGEN_RETURN(false); |
11659 | OPGEN_RETURN(true); |
11660 | #endif |
11661 | break; |
11662 | break; |
11663 | default: |
11664 | break; |
11665 | } |
11666 | break; |
11667 | default: |
11668 | break; |
11669 | } |
11670 | break; |
11671 | default: |
11672 | break; |
11673 | } |
11674 | break; |
11675 | case Opcode::StoreRel64: |
11676 | switch (this->args.size()) { |
11677 | case 2: |
11678 | switch (this->args[0].kind()) { |
11679 | case Arg::Tmp: |
11680 | switch (this->args[1].kind()) { |
11681 | case Arg::SimpleAddr: |
11682 | #if CPU(ARM64) |
11683 | if (!args[0].tmp().isGP()) |
11684 | OPGEN_RETURN(false); |
11685 | if (!args[1].ptr().isGP()) |
11686 | OPGEN_RETURN(false); |
11687 | OPGEN_RETURN(true); |
11688 | #endif |
11689 | break; |
11690 | break; |
11691 | default: |
11692 | break; |
11693 | } |
11694 | break; |
11695 | default: |
11696 | break; |
11697 | } |
11698 | break; |
11699 | default: |
11700 | break; |
11701 | } |
11702 | break; |
11703 | case Opcode::Xchg8: |
11704 | switch (this->args.size()) { |
11705 | case 2: |
11706 | switch (this->args[0].kind()) { |
11707 | case Arg::Tmp: |
11708 | switch (this->args[1].kind()) { |
11709 | case Arg::Addr: |
11710 | case Arg::Stack: |
11711 | case Arg::CallArg: |
11712 | #if CPU(X86) || CPU(X86_64) |
11713 | if (!args[0].tmp().isGP()) |
11714 | OPGEN_RETURN(false); |
11715 | if (!Arg::isValidAddrForm(args[1].offset())) |
11716 | OPGEN_RETURN(false); |
11717 | OPGEN_RETURN(true); |
11718 | #endif |
11719 | break; |
11720 | break; |
11721 | case Arg::Index: |
11722 | #if CPU(X86) || CPU(X86_64) |
11723 | if (!args[0].tmp().isGP()) |
11724 | OPGEN_RETURN(false); |
11725 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
11726 | OPGEN_RETURN(false); |
11727 | OPGEN_RETURN(true); |
11728 | #endif |
11729 | break; |
11730 | break; |
11731 | default: |
11732 | break; |
11733 | } |
11734 | break; |
11735 | default: |
11736 | break; |
11737 | } |
11738 | break; |
11739 | default: |
11740 | break; |
11741 | } |
11742 | break; |
11743 | case Opcode::Xchg16: |
11744 | switch (this->args.size()) { |
11745 | case 2: |
11746 | switch (this->args[0].kind()) { |
11747 | case Arg::Tmp: |
11748 | switch (this->args[1].kind()) { |
11749 | case Arg::Addr: |
11750 | case Arg::Stack: |
11751 | case Arg::CallArg: |
11752 | #if CPU(X86) || CPU(X86_64) |
11753 | if (!args[0].tmp().isGP()) |
11754 | OPGEN_RETURN(false); |
11755 | if (!Arg::isValidAddrForm(args[1].offset())) |
11756 | OPGEN_RETURN(false); |
11757 | OPGEN_RETURN(true); |
11758 | #endif |
11759 | break; |
11760 | break; |
11761 | case Arg::Index: |
11762 | #if CPU(X86) || CPU(X86_64) |
11763 | if (!args[0].tmp().isGP()) |
11764 | OPGEN_RETURN(false); |
11765 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
11766 | OPGEN_RETURN(false); |
11767 | OPGEN_RETURN(true); |
11768 | #endif |
11769 | break; |
11770 | break; |
11771 | default: |
11772 | break; |
11773 | } |
11774 | break; |
11775 | default: |
11776 | break; |
11777 | } |
11778 | break; |
11779 | default: |
11780 | break; |
11781 | } |
11782 | break; |
11783 | case Opcode::Xchg32: |
11784 | switch (this->args.size()) { |
11785 | case 2: |
11786 | switch (this->args[0].kind()) { |
11787 | case Arg::Tmp: |
11788 | switch (this->args[1].kind()) { |
11789 | case Arg::Addr: |
11790 | case Arg::Stack: |
11791 | case Arg::CallArg: |
11792 | #if CPU(X86) || CPU(X86_64) |
11793 | if (!args[0].tmp().isGP()) |
11794 | OPGEN_RETURN(false); |
11795 | if (!Arg::isValidAddrForm(args[1].offset())) |
11796 | OPGEN_RETURN(false); |
11797 | OPGEN_RETURN(true); |
11798 | #endif |
11799 | break; |
11800 | break; |
11801 | case Arg::Index: |
11802 | #if CPU(X86) || CPU(X86_64) |
11803 | if (!args[0].tmp().isGP()) |
11804 | OPGEN_RETURN(false); |
11805 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
11806 | OPGEN_RETURN(false); |
11807 | OPGEN_RETURN(true); |
11808 | #endif |
11809 | break; |
11810 | break; |
11811 | default: |
11812 | break; |
11813 | } |
11814 | break; |
11815 | default: |
11816 | break; |
11817 | } |
11818 | break; |
11819 | default: |
11820 | break; |
11821 | } |
11822 | break; |
11823 | case Opcode::Xchg64: |
11824 | switch (this->args.size()) { |
11825 | case 2: |
11826 | switch (this->args[0].kind()) { |
11827 | case Arg::Tmp: |
11828 | switch (this->args[1].kind()) { |
11829 | case Arg::Addr: |
11830 | case Arg::Stack: |
11831 | case Arg::CallArg: |
11832 | #if CPU(X86_64) |
11833 | if (!args[0].tmp().isGP()) |
11834 | OPGEN_RETURN(false); |
11835 | if (!Arg::isValidAddrForm(args[1].offset())) |
11836 | OPGEN_RETURN(false); |
11837 | OPGEN_RETURN(true); |
11838 | #endif |
11839 | break; |
11840 | break; |
11841 | case Arg::Index: |
11842 | #if CPU(X86_64) |
11843 | if (!args[0].tmp().isGP()) |
11844 | OPGEN_RETURN(false); |
11845 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
11846 | OPGEN_RETURN(false); |
11847 | OPGEN_RETURN(true); |
11848 | #endif |
11849 | break; |
11850 | break; |
11851 | default: |
11852 | break; |
11853 | } |
11854 | break; |
11855 | default: |
11856 | break; |
11857 | } |
11858 | break; |
11859 | default: |
11860 | break; |
11861 | } |
11862 | break; |
11863 | case Opcode::AtomicStrongCAS8: |
11864 | switch (this->args.size()) { |
11865 | case 5: |
11866 | switch (this->args[0].kind()) { |
11867 | case Arg::StatusCond: |
11868 | switch (this->args[1].kind()) { |
11869 | case Arg::Tmp: |
11870 | switch (this->args[2].kind()) { |
11871 | case Arg::Tmp: |
11872 | switch (this->args[3].kind()) { |
11873 | case Arg::Addr: |
11874 | case Arg::Stack: |
11875 | case Arg::CallArg: |
11876 | switch (this->args[4].kind()) { |
11877 | case Arg::Tmp: |
11878 | #if CPU(X86) || CPU(X86_64) |
11879 | if (!args[1].tmp().isGP()) |
11880 | OPGEN_RETURN(false); |
11881 | if (!args[2].tmp().isGP()) |
11882 | OPGEN_RETURN(false); |
11883 | if (!Arg::isValidAddrForm(args[3].offset())) |
11884 | OPGEN_RETURN(false); |
11885 | if (!args[4].tmp().isGP()) |
11886 | OPGEN_RETURN(false); |
11887 | if (!isAtomicStrongCAS8Valid(*this)) |
11888 | OPGEN_RETURN(false); |
11889 | OPGEN_RETURN(true); |
11890 | #endif |
11891 | break; |
11892 | break; |
11893 | default: |
11894 | break; |
11895 | } |
11896 | break; |
11897 | case Arg::Index: |
11898 | switch (this->args[4].kind()) { |
11899 | case Arg::Tmp: |
11900 | #if CPU(X86) || CPU(X86_64) |
11901 | if (!args[1].tmp().isGP()) |
11902 | OPGEN_RETURN(false); |
11903 | if (!args[2].tmp().isGP()) |
11904 | OPGEN_RETURN(false); |
11905 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width8)) |
11906 | OPGEN_RETURN(false); |
11907 | if (!args[4].tmp().isGP()) |
11908 | OPGEN_RETURN(false); |
11909 | if (!isAtomicStrongCAS8Valid(*this)) |
11910 | OPGEN_RETURN(false); |
11911 | OPGEN_RETURN(true); |
11912 | #endif |
11913 | break; |
11914 | break; |
11915 | default: |
11916 | break; |
11917 | } |
11918 | break; |
11919 | default: |
11920 | break; |
11921 | } |
11922 | break; |
11923 | default: |
11924 | break; |
11925 | } |
11926 | break; |
11927 | default: |
11928 | break; |
11929 | } |
11930 | break; |
11931 | default: |
11932 | break; |
11933 | } |
11934 | break; |
11935 | case 3: |
11936 | switch (this->args[0].kind()) { |
11937 | case Arg::Tmp: |
11938 | switch (this->args[1].kind()) { |
11939 | case Arg::Tmp: |
11940 | switch (this->args[2].kind()) { |
11941 | case Arg::Addr: |
11942 | case Arg::Stack: |
11943 | case Arg::CallArg: |
11944 | #if CPU(X86) || CPU(X86_64) |
11945 | if (!args[0].tmp().isGP()) |
11946 | OPGEN_RETURN(false); |
11947 | if (!args[1].tmp().isGP()) |
11948 | OPGEN_RETURN(false); |
11949 | if (!Arg::isValidAddrForm(args[2].offset())) |
11950 | OPGEN_RETURN(false); |
11951 | if (!isAtomicStrongCAS8Valid(*this)) |
11952 | OPGEN_RETURN(false); |
11953 | OPGEN_RETURN(true); |
11954 | #endif |
11955 | break; |
11956 | break; |
11957 | case Arg::Index: |
11958 | #if CPU(X86) || CPU(X86_64) |
11959 | if (!args[0].tmp().isGP()) |
11960 | OPGEN_RETURN(false); |
11961 | if (!args[1].tmp().isGP()) |
11962 | OPGEN_RETURN(false); |
11963 | if (!Arg::isValidIndexForm(args[2].scale(), args[2].offset(), Width8)) |
11964 | OPGEN_RETURN(false); |
11965 | if (!isAtomicStrongCAS8Valid(*this)) |
11966 | OPGEN_RETURN(false); |
11967 | OPGEN_RETURN(true); |
11968 | #endif |
11969 | break; |
11970 | break; |
11971 | default: |
11972 | break; |
11973 | } |
11974 | break; |
11975 | default: |
11976 | break; |
11977 | } |
11978 | break; |
11979 | default: |
11980 | break; |
11981 | } |
11982 | break; |
11983 | default: |
11984 | break; |
11985 | } |
11986 | break; |
11987 | case Opcode::AtomicStrongCAS16: |
11988 | switch (this->args.size()) { |
11989 | case 5: |
11990 | switch (this->args[0].kind()) { |
11991 | case Arg::StatusCond: |
11992 | switch (this->args[1].kind()) { |
11993 | case Arg::Tmp: |
11994 | switch (this->args[2].kind()) { |
11995 | case Arg::Tmp: |
11996 | switch (this->args[3].kind()) { |
11997 | case Arg::Addr: |
11998 | case Arg::Stack: |
11999 | case Arg::CallArg: |
12000 | switch (this->args[4].kind()) { |
12001 | case Arg::Tmp: |
12002 | #if CPU(X86) || CPU(X86_64) |
12003 | if (!args[1].tmp().isGP()) |
12004 | OPGEN_RETURN(false); |
12005 | if (!args[2].tmp().isGP()) |
12006 | OPGEN_RETURN(false); |
12007 | if (!Arg::isValidAddrForm(args[3].offset())) |
12008 | OPGEN_RETURN(false); |
12009 | if (!args[4].tmp().isGP()) |
12010 | OPGEN_RETURN(false); |
12011 | if (!isAtomicStrongCAS16Valid(*this)) |
12012 | OPGEN_RETURN(false); |
12013 | OPGEN_RETURN(true); |
12014 | #endif |
12015 | break; |
12016 | break; |
12017 | default: |
12018 | break; |
12019 | } |
12020 | break; |
12021 | case Arg::Index: |
12022 | switch (this->args[4].kind()) { |
12023 | case Arg::Tmp: |
12024 | #if CPU(X86) || CPU(X86_64) |
12025 | if (!args[1].tmp().isGP()) |
12026 | OPGEN_RETURN(false); |
12027 | if (!args[2].tmp().isGP()) |
12028 | OPGEN_RETURN(false); |
12029 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width16)) |
12030 | OPGEN_RETURN(false); |
12031 | if (!args[4].tmp().isGP()) |
12032 | OPGEN_RETURN(false); |
12033 | if (!isAtomicStrongCAS16Valid(*this)) |
12034 | OPGEN_RETURN(false); |
12035 | OPGEN_RETURN(true); |
12036 | #endif |
12037 | break; |
12038 | break; |
12039 | default: |
12040 | break; |
12041 | } |
12042 | break; |
12043 | default: |
12044 | break; |
12045 | } |
12046 | break; |
12047 | default: |
12048 | break; |
12049 | } |
12050 | break; |
12051 | default: |
12052 | break; |
12053 | } |
12054 | break; |
12055 | default: |
12056 | break; |
12057 | } |
12058 | break; |
12059 | case 3: |
12060 | switch (this->args[0].kind()) { |
12061 | case Arg::Tmp: |
12062 | switch (this->args[1].kind()) { |
12063 | case Arg::Tmp: |
12064 | switch (this->args[2].kind()) { |
12065 | case Arg::Addr: |
12066 | case Arg::Stack: |
12067 | case Arg::CallArg: |
12068 | #if CPU(X86) || CPU(X86_64) |
12069 | if (!args[0].tmp().isGP()) |
12070 | OPGEN_RETURN(false); |
12071 | if (!args[1].tmp().isGP()) |
12072 | OPGEN_RETURN(false); |
12073 | if (!Arg::isValidAddrForm(args[2].offset())) |
12074 | OPGEN_RETURN(false); |
12075 | if (!isAtomicStrongCAS16Valid(*this)) |
12076 | OPGEN_RETURN(false); |
12077 | OPGEN_RETURN(true); |
12078 | #endif |
12079 | break; |
12080 | break; |
12081 | case Arg::Index: |
12082 | #if CPU(X86) || CPU(X86_64) |
12083 | if (!args[0].tmp().isGP()) |
12084 | OPGEN_RETURN(false); |
12085 | if (!args[1].tmp().isGP()) |
12086 | OPGEN_RETURN(false); |
12087 | if (!Arg::isValidIndexForm(args[2].scale(), args[2].offset(), Width16)) |
12088 | OPGEN_RETURN(false); |
12089 | if (!isAtomicStrongCAS16Valid(*this)) |
12090 | OPGEN_RETURN(false); |
12091 | OPGEN_RETURN(true); |
12092 | #endif |
12093 | break; |
12094 | break; |
12095 | default: |
12096 | break; |
12097 | } |
12098 | break; |
12099 | default: |
12100 | break; |
12101 | } |
12102 | break; |
12103 | default: |
12104 | break; |
12105 | } |
12106 | break; |
12107 | default: |
12108 | break; |
12109 | } |
12110 | break; |
12111 | case Opcode::AtomicStrongCAS32: |
12112 | switch (this->args.size()) { |
12113 | case 5: |
12114 | switch (this->args[0].kind()) { |
12115 | case Arg::StatusCond: |
12116 | switch (this->args[1].kind()) { |
12117 | case Arg::Tmp: |
12118 | switch (this->args[2].kind()) { |
12119 | case Arg::Tmp: |
12120 | switch (this->args[3].kind()) { |
12121 | case Arg::Addr: |
12122 | case Arg::Stack: |
12123 | case Arg::CallArg: |
12124 | switch (this->args[4].kind()) { |
12125 | case Arg::Tmp: |
12126 | #if CPU(X86) || CPU(X86_64) |
12127 | if (!args[1].tmp().isGP()) |
12128 | OPGEN_RETURN(false); |
12129 | if (!args[2].tmp().isGP()) |
12130 | OPGEN_RETURN(false); |
12131 | if (!Arg::isValidAddrForm(args[3].offset())) |
12132 | OPGEN_RETURN(false); |
12133 | if (!args[4].tmp().isGP()) |
12134 | OPGEN_RETURN(false); |
12135 | if (!isAtomicStrongCAS32Valid(*this)) |
12136 | OPGEN_RETURN(false); |
12137 | OPGEN_RETURN(true); |
12138 | #endif |
12139 | break; |
12140 | break; |
12141 | default: |
12142 | break; |
12143 | } |
12144 | break; |
12145 | case Arg::Index: |
12146 | switch (this->args[4].kind()) { |
12147 | case Arg::Tmp: |
12148 | #if CPU(X86) || CPU(X86_64) |
12149 | if (!args[1].tmp().isGP()) |
12150 | OPGEN_RETURN(false); |
12151 | if (!args[2].tmp().isGP()) |
12152 | OPGEN_RETURN(false); |
12153 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width32)) |
12154 | OPGEN_RETURN(false); |
12155 | if (!args[4].tmp().isGP()) |
12156 | OPGEN_RETURN(false); |
12157 | if (!isAtomicStrongCAS32Valid(*this)) |
12158 | OPGEN_RETURN(false); |
12159 | OPGEN_RETURN(true); |
12160 | #endif |
12161 | break; |
12162 | break; |
12163 | default: |
12164 | break; |
12165 | } |
12166 | break; |
12167 | default: |
12168 | break; |
12169 | } |
12170 | break; |
12171 | default: |
12172 | break; |
12173 | } |
12174 | break; |
12175 | default: |
12176 | break; |
12177 | } |
12178 | break; |
12179 | default: |
12180 | break; |
12181 | } |
12182 | break; |
12183 | case 3: |
12184 | switch (this->args[0].kind()) { |
12185 | case Arg::Tmp: |
12186 | switch (this->args[1].kind()) { |
12187 | case Arg::Tmp: |
12188 | switch (this->args[2].kind()) { |
12189 | case Arg::Addr: |
12190 | case Arg::Stack: |
12191 | case Arg::CallArg: |
12192 | #if CPU(X86) || CPU(X86_64) |
12193 | if (!args[0].tmp().isGP()) |
12194 | OPGEN_RETURN(false); |
12195 | if (!args[1].tmp().isGP()) |
12196 | OPGEN_RETURN(false); |
12197 | if (!Arg::isValidAddrForm(args[2].offset())) |
12198 | OPGEN_RETURN(false); |
12199 | if (!isAtomicStrongCAS32Valid(*this)) |
12200 | OPGEN_RETURN(false); |
12201 | OPGEN_RETURN(true); |
12202 | #endif |
12203 | break; |
12204 | break; |
12205 | case Arg::Index: |
12206 | #if CPU(X86) || CPU(X86_64) |
12207 | if (!args[0].tmp().isGP()) |
12208 | OPGEN_RETURN(false); |
12209 | if (!args[1].tmp().isGP()) |
12210 | OPGEN_RETURN(false); |
12211 | if (!Arg::isValidIndexForm(args[2].scale(), args[2].offset(), Width32)) |
12212 | OPGEN_RETURN(false); |
12213 | if (!isAtomicStrongCAS32Valid(*this)) |
12214 | OPGEN_RETURN(false); |
12215 | OPGEN_RETURN(true); |
12216 | #endif |
12217 | break; |
12218 | break; |
12219 | default: |
12220 | break; |
12221 | } |
12222 | break; |
12223 | default: |
12224 | break; |
12225 | } |
12226 | break; |
12227 | default: |
12228 | break; |
12229 | } |
12230 | break; |
12231 | default: |
12232 | break; |
12233 | } |
12234 | break; |
12235 | case Opcode::AtomicStrongCAS64: |
12236 | switch (this->args.size()) { |
12237 | case 5: |
12238 | switch (this->args[0].kind()) { |
12239 | case Arg::StatusCond: |
12240 | switch (this->args[1].kind()) { |
12241 | case Arg::Tmp: |
12242 | switch (this->args[2].kind()) { |
12243 | case Arg::Tmp: |
12244 | switch (this->args[3].kind()) { |
12245 | case Arg::Addr: |
12246 | case Arg::Stack: |
12247 | case Arg::CallArg: |
12248 | switch (this->args[4].kind()) { |
12249 | case Arg::Tmp: |
12250 | #if CPU(X86_64) |
12251 | if (!args[1].tmp().isGP()) |
12252 | OPGEN_RETURN(false); |
12253 | if (!args[2].tmp().isGP()) |
12254 | OPGEN_RETURN(false); |
12255 | if (!Arg::isValidAddrForm(args[3].offset())) |
12256 | OPGEN_RETURN(false); |
12257 | if (!args[4].tmp().isGP()) |
12258 | OPGEN_RETURN(false); |
12259 | if (!isAtomicStrongCAS64Valid(*this)) |
12260 | OPGEN_RETURN(false); |
12261 | OPGEN_RETURN(true); |
12262 | #endif |
12263 | break; |
12264 | break; |
12265 | default: |
12266 | break; |
12267 | } |
12268 | break; |
12269 | case Arg::Index: |
12270 | switch (this->args[4].kind()) { |
12271 | case Arg::Tmp: |
12272 | #if CPU(X86_64) |
12273 | if (!args[1].tmp().isGP()) |
12274 | OPGEN_RETURN(false); |
12275 | if (!args[2].tmp().isGP()) |
12276 | OPGEN_RETURN(false); |
12277 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width64)) |
12278 | OPGEN_RETURN(false); |
12279 | if (!args[4].tmp().isGP()) |
12280 | OPGEN_RETURN(false); |
12281 | if (!isAtomicStrongCAS64Valid(*this)) |
12282 | OPGEN_RETURN(false); |
12283 | OPGEN_RETURN(true); |
12284 | #endif |
12285 | break; |
12286 | break; |
12287 | default: |
12288 | break; |
12289 | } |
12290 | break; |
12291 | default: |
12292 | break; |
12293 | } |
12294 | break; |
12295 | default: |
12296 | break; |
12297 | } |
12298 | break; |
12299 | default: |
12300 | break; |
12301 | } |
12302 | break; |
12303 | default: |
12304 | break; |
12305 | } |
12306 | break; |
12307 | case 3: |
12308 | switch (this->args[0].kind()) { |
12309 | case Arg::Tmp: |
12310 | switch (this->args[1].kind()) { |
12311 | case Arg::Tmp: |
12312 | switch (this->args[2].kind()) { |
12313 | case Arg::Addr: |
12314 | case Arg::Stack: |
12315 | case Arg::CallArg: |
12316 | #if CPU(X86_64) |
12317 | if (!args[0].tmp().isGP()) |
12318 | OPGEN_RETURN(false); |
12319 | if (!args[1].tmp().isGP()) |
12320 | OPGEN_RETURN(false); |
12321 | if (!Arg::isValidAddrForm(args[2].offset())) |
12322 | OPGEN_RETURN(false); |
12323 | if (!isAtomicStrongCAS64Valid(*this)) |
12324 | OPGEN_RETURN(false); |
12325 | OPGEN_RETURN(true); |
12326 | #endif |
12327 | break; |
12328 | break; |
12329 | case Arg::Index: |
12330 | #if CPU(X86_64) |
12331 | if (!args[0].tmp().isGP()) |
12332 | OPGEN_RETURN(false); |
12333 | if (!args[1].tmp().isGP()) |
12334 | OPGEN_RETURN(false); |
12335 | if (!Arg::isValidIndexForm(args[2].scale(), args[2].offset(), Width64)) |
12336 | OPGEN_RETURN(false); |
12337 | if (!isAtomicStrongCAS64Valid(*this)) |
12338 | OPGEN_RETURN(false); |
12339 | OPGEN_RETURN(true); |
12340 | #endif |
12341 | break; |
12342 | break; |
12343 | default: |
12344 | break; |
12345 | } |
12346 | break; |
12347 | default: |
12348 | break; |
12349 | } |
12350 | break; |
12351 | default: |
12352 | break; |
12353 | } |
12354 | break; |
12355 | default: |
12356 | break; |
12357 | } |
12358 | break; |
12359 | case Opcode::BranchAtomicStrongCAS8: |
12360 | switch (this->args.size()) { |
12361 | case 4: |
12362 | switch (this->args[0].kind()) { |
12363 | case Arg::StatusCond: |
12364 | switch (this->args[1].kind()) { |
12365 | case Arg::Tmp: |
12366 | switch (this->args[2].kind()) { |
12367 | case Arg::Tmp: |
12368 | switch (this->args[3].kind()) { |
12369 | case Arg::Addr: |
12370 | case Arg::Stack: |
12371 | case Arg::CallArg: |
12372 | #if CPU(X86) || CPU(X86_64) |
12373 | if (!args[1].tmp().isGP()) |
12374 | OPGEN_RETURN(false); |
12375 | if (!args[2].tmp().isGP()) |
12376 | OPGEN_RETURN(false); |
12377 | if (!Arg::isValidAddrForm(args[3].offset())) |
12378 | OPGEN_RETURN(false); |
12379 | if (!isBranchAtomicStrongCAS8Valid(*this)) |
12380 | OPGEN_RETURN(false); |
12381 | OPGEN_RETURN(true); |
12382 | #endif |
12383 | break; |
12384 | break; |
12385 | case Arg::Index: |
12386 | #if CPU(X86) || CPU(X86_64) |
12387 | if (!args[1].tmp().isGP()) |
12388 | OPGEN_RETURN(false); |
12389 | if (!args[2].tmp().isGP()) |
12390 | OPGEN_RETURN(false); |
12391 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width8)) |
12392 | OPGEN_RETURN(false); |
12393 | if (!isBranchAtomicStrongCAS8Valid(*this)) |
12394 | OPGEN_RETURN(false); |
12395 | OPGEN_RETURN(true); |
12396 | #endif |
12397 | break; |
12398 | break; |
12399 | default: |
12400 | break; |
12401 | } |
12402 | break; |
12403 | default: |
12404 | break; |
12405 | } |
12406 | break; |
12407 | default: |
12408 | break; |
12409 | } |
12410 | break; |
12411 | default: |
12412 | break; |
12413 | } |
12414 | break; |
12415 | default: |
12416 | break; |
12417 | } |
12418 | break; |
12419 | case Opcode::BranchAtomicStrongCAS16: |
12420 | switch (this->args.size()) { |
12421 | case 4: |
12422 | switch (this->args[0].kind()) { |
12423 | case Arg::StatusCond: |
12424 | switch (this->args[1].kind()) { |
12425 | case Arg::Tmp: |
12426 | switch (this->args[2].kind()) { |
12427 | case Arg::Tmp: |
12428 | switch (this->args[3].kind()) { |
12429 | case Arg::Addr: |
12430 | case Arg::Stack: |
12431 | case Arg::CallArg: |
12432 | #if CPU(X86) || CPU(X86_64) |
12433 | if (!args[1].tmp().isGP()) |
12434 | OPGEN_RETURN(false); |
12435 | if (!args[2].tmp().isGP()) |
12436 | OPGEN_RETURN(false); |
12437 | if (!Arg::isValidAddrForm(args[3].offset())) |
12438 | OPGEN_RETURN(false); |
12439 | if (!isBranchAtomicStrongCAS16Valid(*this)) |
12440 | OPGEN_RETURN(false); |
12441 | OPGEN_RETURN(true); |
12442 | #endif |
12443 | break; |
12444 | break; |
12445 | case Arg::Index: |
12446 | #if CPU(X86) || CPU(X86_64) |
12447 | if (!args[1].tmp().isGP()) |
12448 | OPGEN_RETURN(false); |
12449 | if (!args[2].tmp().isGP()) |
12450 | OPGEN_RETURN(false); |
12451 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width16)) |
12452 | OPGEN_RETURN(false); |
12453 | if (!isBranchAtomicStrongCAS16Valid(*this)) |
12454 | OPGEN_RETURN(false); |
12455 | OPGEN_RETURN(true); |
12456 | #endif |
12457 | break; |
12458 | break; |
12459 | default: |
12460 | break; |
12461 | } |
12462 | break; |
12463 | default: |
12464 | break; |
12465 | } |
12466 | break; |
12467 | default: |
12468 | break; |
12469 | } |
12470 | break; |
12471 | default: |
12472 | break; |
12473 | } |
12474 | break; |
12475 | default: |
12476 | break; |
12477 | } |
12478 | break; |
12479 | case Opcode::BranchAtomicStrongCAS32: |
12480 | switch (this->args.size()) { |
12481 | case 4: |
12482 | switch (this->args[0].kind()) { |
12483 | case Arg::StatusCond: |
12484 | switch (this->args[1].kind()) { |
12485 | case Arg::Tmp: |
12486 | switch (this->args[2].kind()) { |
12487 | case Arg::Tmp: |
12488 | switch (this->args[3].kind()) { |
12489 | case Arg::Addr: |
12490 | case Arg::Stack: |
12491 | case Arg::CallArg: |
12492 | #if CPU(X86) || CPU(X86_64) |
12493 | if (!args[1].tmp().isGP()) |
12494 | OPGEN_RETURN(false); |
12495 | if (!args[2].tmp().isGP()) |
12496 | OPGEN_RETURN(false); |
12497 | if (!Arg::isValidAddrForm(args[3].offset())) |
12498 | OPGEN_RETURN(false); |
12499 | if (!isBranchAtomicStrongCAS32Valid(*this)) |
12500 | OPGEN_RETURN(false); |
12501 | OPGEN_RETURN(true); |
12502 | #endif |
12503 | break; |
12504 | break; |
12505 | case Arg::Index: |
12506 | #if CPU(X86) || CPU(X86_64) |
12507 | if (!args[1].tmp().isGP()) |
12508 | OPGEN_RETURN(false); |
12509 | if (!args[2].tmp().isGP()) |
12510 | OPGEN_RETURN(false); |
12511 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width32)) |
12512 | OPGEN_RETURN(false); |
12513 | if (!isBranchAtomicStrongCAS32Valid(*this)) |
12514 | OPGEN_RETURN(false); |
12515 | OPGEN_RETURN(true); |
12516 | #endif |
12517 | break; |
12518 | break; |
12519 | default: |
12520 | break; |
12521 | } |
12522 | break; |
12523 | default: |
12524 | break; |
12525 | } |
12526 | break; |
12527 | default: |
12528 | break; |
12529 | } |
12530 | break; |
12531 | default: |
12532 | break; |
12533 | } |
12534 | break; |
12535 | default: |
12536 | break; |
12537 | } |
12538 | break; |
12539 | case Opcode::BranchAtomicStrongCAS64: |
12540 | switch (this->args.size()) { |
12541 | case 4: |
12542 | switch (this->args[0].kind()) { |
12543 | case Arg::StatusCond: |
12544 | switch (this->args[1].kind()) { |
12545 | case Arg::Tmp: |
12546 | switch (this->args[2].kind()) { |
12547 | case Arg::Tmp: |
12548 | switch (this->args[3].kind()) { |
12549 | case Arg::Addr: |
12550 | case Arg::Stack: |
12551 | case Arg::CallArg: |
12552 | #if CPU(X86_64) |
12553 | if (!args[1].tmp().isGP()) |
12554 | OPGEN_RETURN(false); |
12555 | if (!args[2].tmp().isGP()) |
12556 | OPGEN_RETURN(false); |
12557 | if (!Arg::isValidAddrForm(args[3].offset())) |
12558 | OPGEN_RETURN(false); |
12559 | if (!isBranchAtomicStrongCAS64Valid(*this)) |
12560 | OPGEN_RETURN(false); |
12561 | OPGEN_RETURN(true); |
12562 | #endif |
12563 | break; |
12564 | break; |
12565 | case Arg::Index: |
12566 | #if CPU(X86_64) |
12567 | if (!args[1].tmp().isGP()) |
12568 | OPGEN_RETURN(false); |
12569 | if (!args[2].tmp().isGP()) |
12570 | OPGEN_RETURN(false); |
12571 | if (!Arg::isValidIndexForm(args[3].scale(), args[3].offset(), Width64)) |
12572 | OPGEN_RETURN(false); |
12573 | if (!isBranchAtomicStrongCAS64Valid(*this)) |
12574 | OPGEN_RETURN(false); |
12575 | OPGEN_RETURN(true); |
12576 | #endif |
12577 | break; |
12578 | break; |
12579 | default: |
12580 | break; |
12581 | } |
12582 | break; |
12583 | default: |
12584 | break; |
12585 | } |
12586 | break; |
12587 | default: |
12588 | break; |
12589 | } |
12590 | break; |
12591 | default: |
12592 | break; |
12593 | } |
12594 | break; |
12595 | default: |
12596 | break; |
12597 | } |
12598 | break; |
12599 | case Opcode::AtomicAdd8: |
12600 | switch (this->args.size()) { |
12601 | case 2: |
12602 | switch (this->args[0].kind()) { |
12603 | case Arg::Imm: |
12604 | switch (this->args[1].kind()) { |
12605 | case Arg::Addr: |
12606 | case Arg::Stack: |
12607 | case Arg::CallArg: |
12608 | #if CPU(X86) || CPU(X86_64) |
12609 | if (!Arg::isValidImmForm(args[0].value())) |
12610 | OPGEN_RETURN(false); |
12611 | if (!Arg::isValidAddrForm(args[1].offset())) |
12612 | OPGEN_RETURN(false); |
12613 | OPGEN_RETURN(true); |
12614 | #endif |
12615 | break; |
12616 | break; |
12617 | case Arg::Index: |
12618 | #if CPU(X86) || CPU(X86_64) |
12619 | if (!Arg::isValidImmForm(args[0].value())) |
12620 | OPGEN_RETURN(false); |
12621 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
12622 | OPGEN_RETURN(false); |
12623 | OPGEN_RETURN(true); |
12624 | #endif |
12625 | break; |
12626 | break; |
12627 | default: |
12628 | break; |
12629 | } |
12630 | break; |
12631 | case Arg::Tmp: |
12632 | switch (this->args[1].kind()) { |
12633 | case Arg::Addr: |
12634 | case Arg::Stack: |
12635 | case Arg::CallArg: |
12636 | #if CPU(X86) || CPU(X86_64) |
12637 | if (!args[0].tmp().isGP()) |
12638 | OPGEN_RETURN(false); |
12639 | if (!Arg::isValidAddrForm(args[1].offset())) |
12640 | OPGEN_RETURN(false); |
12641 | OPGEN_RETURN(true); |
12642 | #endif |
12643 | break; |
12644 | break; |
12645 | case Arg::Index: |
12646 | #if CPU(X86) || CPU(X86_64) |
12647 | if (!args[0].tmp().isGP()) |
12648 | OPGEN_RETURN(false); |
12649 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
12650 | OPGEN_RETURN(false); |
12651 | OPGEN_RETURN(true); |
12652 | #endif |
12653 | break; |
12654 | break; |
12655 | default: |
12656 | break; |
12657 | } |
12658 | break; |
12659 | default: |
12660 | break; |
12661 | } |
12662 | break; |
12663 | default: |
12664 | break; |
12665 | } |
12666 | break; |
12667 | case Opcode::AtomicAdd16: |
12668 | switch (this->args.size()) { |
12669 | case 2: |
12670 | switch (this->args[0].kind()) { |
12671 | case Arg::Imm: |
12672 | switch (this->args[1].kind()) { |
12673 | case Arg::Addr: |
12674 | case Arg::Stack: |
12675 | case Arg::CallArg: |
12676 | #if CPU(X86) || CPU(X86_64) |
12677 | if (!Arg::isValidImmForm(args[0].value())) |
12678 | OPGEN_RETURN(false); |
12679 | if (!Arg::isValidAddrForm(args[1].offset())) |
12680 | OPGEN_RETURN(false); |
12681 | OPGEN_RETURN(true); |
12682 | #endif |
12683 | break; |
12684 | break; |
12685 | case Arg::Index: |
12686 | #if CPU(X86) || CPU(X86_64) |
12687 | if (!Arg::isValidImmForm(args[0].value())) |
12688 | OPGEN_RETURN(false); |
12689 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
12690 | OPGEN_RETURN(false); |
12691 | OPGEN_RETURN(true); |
12692 | #endif |
12693 | break; |
12694 | break; |
12695 | default: |
12696 | break; |
12697 | } |
12698 | break; |
12699 | case Arg::Tmp: |
12700 | switch (this->args[1].kind()) { |
12701 | case Arg::Addr: |
12702 | case Arg::Stack: |
12703 | case Arg::CallArg: |
12704 | #if CPU(X86) || CPU(X86_64) |
12705 | if (!args[0].tmp().isGP()) |
12706 | OPGEN_RETURN(false); |
12707 | if (!Arg::isValidAddrForm(args[1].offset())) |
12708 | OPGEN_RETURN(false); |
12709 | OPGEN_RETURN(true); |
12710 | #endif |
12711 | break; |
12712 | break; |
12713 | case Arg::Index: |
12714 | #if CPU(X86) || CPU(X86_64) |
12715 | if (!args[0].tmp().isGP()) |
12716 | OPGEN_RETURN(false); |
12717 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
12718 | OPGEN_RETURN(false); |
12719 | OPGEN_RETURN(true); |
12720 | #endif |
12721 | break; |
12722 | break; |
12723 | default: |
12724 | break; |
12725 | } |
12726 | break; |
12727 | default: |
12728 | break; |
12729 | } |
12730 | break; |
12731 | default: |
12732 | break; |
12733 | } |
12734 | break; |
12735 | case Opcode::AtomicAdd32: |
12736 | switch (this->args.size()) { |
12737 | case 2: |
12738 | switch (this->args[0].kind()) { |
12739 | case Arg::Imm: |
12740 | switch (this->args[1].kind()) { |
12741 | case Arg::Addr: |
12742 | case Arg::Stack: |
12743 | case Arg::CallArg: |
12744 | #if CPU(X86) || CPU(X86_64) |
12745 | if (!Arg::isValidImmForm(args[0].value())) |
12746 | OPGEN_RETURN(false); |
12747 | if (!Arg::isValidAddrForm(args[1].offset())) |
12748 | OPGEN_RETURN(false); |
12749 | OPGEN_RETURN(true); |
12750 | #endif |
12751 | break; |
12752 | break; |
12753 | case Arg::Index: |
12754 | #if CPU(X86) || CPU(X86_64) |
12755 | if (!Arg::isValidImmForm(args[0].value())) |
12756 | OPGEN_RETURN(false); |
12757 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
12758 | OPGEN_RETURN(false); |
12759 | OPGEN_RETURN(true); |
12760 | #endif |
12761 | break; |
12762 | break; |
12763 | default: |
12764 | break; |
12765 | } |
12766 | break; |
12767 | case Arg::Tmp: |
12768 | switch (this->args[1].kind()) { |
12769 | case Arg::Addr: |
12770 | case Arg::Stack: |
12771 | case Arg::CallArg: |
12772 | #if CPU(X86) || CPU(X86_64) |
12773 | if (!args[0].tmp().isGP()) |
12774 | OPGEN_RETURN(false); |
12775 | if (!Arg::isValidAddrForm(args[1].offset())) |
12776 | OPGEN_RETURN(false); |
12777 | OPGEN_RETURN(true); |
12778 | #endif |
12779 | break; |
12780 | break; |
12781 | case Arg::Index: |
12782 | #if CPU(X86) || CPU(X86_64) |
12783 | if (!args[0].tmp().isGP()) |
12784 | OPGEN_RETURN(false); |
12785 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
12786 | OPGEN_RETURN(false); |
12787 | OPGEN_RETURN(true); |
12788 | #endif |
12789 | break; |
12790 | break; |
12791 | default: |
12792 | break; |
12793 | } |
12794 | break; |
12795 | default: |
12796 | break; |
12797 | } |
12798 | break; |
12799 | default: |
12800 | break; |
12801 | } |
12802 | break; |
12803 | case Opcode::AtomicAdd64: |
12804 | switch (this->args.size()) { |
12805 | case 2: |
12806 | switch (this->args[0].kind()) { |
12807 | case Arg::Imm: |
12808 | switch (this->args[1].kind()) { |
12809 | case Arg::Addr: |
12810 | case Arg::Stack: |
12811 | case Arg::CallArg: |
12812 | #if CPU(X86_64) |
12813 | if (!Arg::isValidImmForm(args[0].value())) |
12814 | OPGEN_RETURN(false); |
12815 | if (!Arg::isValidAddrForm(args[1].offset())) |
12816 | OPGEN_RETURN(false); |
12817 | OPGEN_RETURN(true); |
12818 | #endif |
12819 | break; |
12820 | break; |
12821 | case Arg::Index: |
12822 | #if CPU(X86_64) |
12823 | if (!Arg::isValidImmForm(args[0].value())) |
12824 | OPGEN_RETURN(false); |
12825 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
12826 | OPGEN_RETURN(false); |
12827 | OPGEN_RETURN(true); |
12828 | #endif |
12829 | break; |
12830 | break; |
12831 | default: |
12832 | break; |
12833 | } |
12834 | break; |
12835 | case Arg::Tmp: |
12836 | switch (this->args[1].kind()) { |
12837 | case Arg::Addr: |
12838 | case Arg::Stack: |
12839 | case Arg::CallArg: |
12840 | #if CPU(X86_64) |
12841 | if (!args[0].tmp().isGP()) |
12842 | OPGEN_RETURN(false); |
12843 | if (!Arg::isValidAddrForm(args[1].offset())) |
12844 | OPGEN_RETURN(false); |
12845 | OPGEN_RETURN(true); |
12846 | #endif |
12847 | break; |
12848 | break; |
12849 | case Arg::Index: |
12850 | #if CPU(X86_64) |
12851 | if (!args[0].tmp().isGP()) |
12852 | OPGEN_RETURN(false); |
12853 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
12854 | OPGEN_RETURN(false); |
12855 | OPGEN_RETURN(true); |
12856 | #endif |
12857 | break; |
12858 | break; |
12859 | default: |
12860 | break; |
12861 | } |
12862 | break; |
12863 | default: |
12864 | break; |
12865 | } |
12866 | break; |
12867 | default: |
12868 | break; |
12869 | } |
12870 | break; |
12871 | case Opcode::AtomicSub8: |
12872 | switch (this->args.size()) { |
12873 | case 2: |
12874 | switch (this->args[0].kind()) { |
12875 | case Arg::Imm: |
12876 | switch (this->args[1].kind()) { |
12877 | case Arg::Addr: |
12878 | case Arg::Stack: |
12879 | case Arg::CallArg: |
12880 | #if CPU(X86) || CPU(X86_64) |
12881 | if (!Arg::isValidImmForm(args[0].value())) |
12882 | OPGEN_RETURN(false); |
12883 | if (!Arg::isValidAddrForm(args[1].offset())) |
12884 | OPGEN_RETURN(false); |
12885 | OPGEN_RETURN(true); |
12886 | #endif |
12887 | break; |
12888 | break; |
12889 | case Arg::Index: |
12890 | #if CPU(X86) || CPU(X86_64) |
12891 | if (!Arg::isValidImmForm(args[0].value())) |
12892 | OPGEN_RETURN(false); |
12893 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
12894 | OPGEN_RETURN(false); |
12895 | OPGEN_RETURN(true); |
12896 | #endif |
12897 | break; |
12898 | break; |
12899 | default: |
12900 | break; |
12901 | } |
12902 | break; |
12903 | case Arg::Tmp: |
12904 | switch (this->args[1].kind()) { |
12905 | case Arg::Addr: |
12906 | case Arg::Stack: |
12907 | case Arg::CallArg: |
12908 | #if CPU(X86) || CPU(X86_64) |
12909 | if (!args[0].tmp().isGP()) |
12910 | OPGEN_RETURN(false); |
12911 | if (!Arg::isValidAddrForm(args[1].offset())) |
12912 | OPGEN_RETURN(false); |
12913 | OPGEN_RETURN(true); |
12914 | #endif |
12915 | break; |
12916 | break; |
12917 | case Arg::Index: |
12918 | #if CPU(X86) || CPU(X86_64) |
12919 | if (!args[0].tmp().isGP()) |
12920 | OPGEN_RETURN(false); |
12921 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
12922 | OPGEN_RETURN(false); |
12923 | OPGEN_RETURN(true); |
12924 | #endif |
12925 | break; |
12926 | break; |
12927 | default: |
12928 | break; |
12929 | } |
12930 | break; |
12931 | default: |
12932 | break; |
12933 | } |
12934 | break; |
12935 | default: |
12936 | break; |
12937 | } |
12938 | break; |
12939 | case Opcode::AtomicSub16: |
12940 | switch (this->args.size()) { |
12941 | case 2: |
12942 | switch (this->args[0].kind()) { |
12943 | case Arg::Imm: |
12944 | switch (this->args[1].kind()) { |
12945 | case Arg::Addr: |
12946 | case Arg::Stack: |
12947 | case Arg::CallArg: |
12948 | #if CPU(X86) || CPU(X86_64) |
12949 | if (!Arg::isValidImmForm(args[0].value())) |
12950 | OPGEN_RETURN(false); |
12951 | if (!Arg::isValidAddrForm(args[1].offset())) |
12952 | OPGEN_RETURN(false); |
12953 | OPGEN_RETURN(true); |
12954 | #endif |
12955 | break; |
12956 | break; |
12957 | case Arg::Index: |
12958 | #if CPU(X86) || CPU(X86_64) |
12959 | if (!Arg::isValidImmForm(args[0].value())) |
12960 | OPGEN_RETURN(false); |
12961 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
12962 | OPGEN_RETURN(false); |
12963 | OPGEN_RETURN(true); |
12964 | #endif |
12965 | break; |
12966 | break; |
12967 | default: |
12968 | break; |
12969 | } |
12970 | break; |
12971 | case Arg::Tmp: |
12972 | switch (this->args[1].kind()) { |
12973 | case Arg::Addr: |
12974 | case Arg::Stack: |
12975 | case Arg::CallArg: |
12976 | #if CPU(X86) || CPU(X86_64) |
12977 | if (!args[0].tmp().isGP()) |
12978 | OPGEN_RETURN(false); |
12979 | if (!Arg::isValidAddrForm(args[1].offset())) |
12980 | OPGEN_RETURN(false); |
12981 | OPGEN_RETURN(true); |
12982 | #endif |
12983 | break; |
12984 | break; |
12985 | case Arg::Index: |
12986 | #if CPU(X86) || CPU(X86_64) |
12987 | if (!args[0].tmp().isGP()) |
12988 | OPGEN_RETURN(false); |
12989 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
12990 | OPGEN_RETURN(false); |
12991 | OPGEN_RETURN(true); |
12992 | #endif |
12993 | break; |
12994 | break; |
12995 | default: |
12996 | break; |
12997 | } |
12998 | break; |
12999 | default: |
13000 | break; |
13001 | } |
13002 | break; |
13003 | default: |
13004 | break; |
13005 | } |
13006 | break; |
13007 | case Opcode::AtomicSub32: |
13008 | switch (this->args.size()) { |
13009 | case 2: |
13010 | switch (this->args[0].kind()) { |
13011 | case Arg::Imm: |
13012 | switch (this->args[1].kind()) { |
13013 | case Arg::Addr: |
13014 | case Arg::Stack: |
13015 | case Arg::CallArg: |
13016 | #if CPU(X86) || CPU(X86_64) |
13017 | if (!Arg::isValidImmForm(args[0].value())) |
13018 | OPGEN_RETURN(false); |
13019 | if (!Arg::isValidAddrForm(args[1].offset())) |
13020 | OPGEN_RETURN(false); |
13021 | OPGEN_RETURN(true); |
13022 | #endif |
13023 | break; |
13024 | break; |
13025 | case Arg::Index: |
13026 | #if CPU(X86) || CPU(X86_64) |
13027 | if (!Arg::isValidImmForm(args[0].value())) |
13028 | OPGEN_RETURN(false); |
13029 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13030 | OPGEN_RETURN(false); |
13031 | OPGEN_RETURN(true); |
13032 | #endif |
13033 | break; |
13034 | break; |
13035 | default: |
13036 | break; |
13037 | } |
13038 | break; |
13039 | case Arg::Tmp: |
13040 | switch (this->args[1].kind()) { |
13041 | case Arg::Addr: |
13042 | case Arg::Stack: |
13043 | case Arg::CallArg: |
13044 | #if CPU(X86) || CPU(X86_64) |
13045 | if (!args[0].tmp().isGP()) |
13046 | OPGEN_RETURN(false); |
13047 | if (!Arg::isValidAddrForm(args[1].offset())) |
13048 | OPGEN_RETURN(false); |
13049 | OPGEN_RETURN(true); |
13050 | #endif |
13051 | break; |
13052 | break; |
13053 | case Arg::Index: |
13054 | #if CPU(X86) || CPU(X86_64) |
13055 | if (!args[0].tmp().isGP()) |
13056 | OPGEN_RETURN(false); |
13057 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13058 | OPGEN_RETURN(false); |
13059 | OPGEN_RETURN(true); |
13060 | #endif |
13061 | break; |
13062 | break; |
13063 | default: |
13064 | break; |
13065 | } |
13066 | break; |
13067 | default: |
13068 | break; |
13069 | } |
13070 | break; |
13071 | default: |
13072 | break; |
13073 | } |
13074 | break; |
13075 | case Opcode::AtomicSub64: |
13076 | switch (this->args.size()) { |
13077 | case 2: |
13078 | switch (this->args[0].kind()) { |
13079 | case Arg::Imm: |
13080 | switch (this->args[1].kind()) { |
13081 | case Arg::Addr: |
13082 | case Arg::Stack: |
13083 | case Arg::CallArg: |
13084 | #if CPU(X86_64) |
13085 | if (!Arg::isValidImmForm(args[0].value())) |
13086 | OPGEN_RETURN(false); |
13087 | if (!Arg::isValidAddrForm(args[1].offset())) |
13088 | OPGEN_RETURN(false); |
13089 | OPGEN_RETURN(true); |
13090 | #endif |
13091 | break; |
13092 | break; |
13093 | case Arg::Index: |
13094 | #if CPU(X86_64) |
13095 | if (!Arg::isValidImmForm(args[0].value())) |
13096 | OPGEN_RETURN(false); |
13097 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13098 | OPGEN_RETURN(false); |
13099 | OPGEN_RETURN(true); |
13100 | #endif |
13101 | break; |
13102 | break; |
13103 | default: |
13104 | break; |
13105 | } |
13106 | break; |
13107 | case Arg::Tmp: |
13108 | switch (this->args[1].kind()) { |
13109 | case Arg::Addr: |
13110 | case Arg::Stack: |
13111 | case Arg::CallArg: |
13112 | #if CPU(X86_64) |
13113 | if (!args[0].tmp().isGP()) |
13114 | OPGEN_RETURN(false); |
13115 | if (!Arg::isValidAddrForm(args[1].offset())) |
13116 | OPGEN_RETURN(false); |
13117 | OPGEN_RETURN(true); |
13118 | #endif |
13119 | break; |
13120 | break; |
13121 | case Arg::Index: |
13122 | #if CPU(X86_64) |
13123 | if (!args[0].tmp().isGP()) |
13124 | OPGEN_RETURN(false); |
13125 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13126 | OPGEN_RETURN(false); |
13127 | OPGEN_RETURN(true); |
13128 | #endif |
13129 | break; |
13130 | break; |
13131 | default: |
13132 | break; |
13133 | } |
13134 | break; |
13135 | default: |
13136 | break; |
13137 | } |
13138 | break; |
13139 | default: |
13140 | break; |
13141 | } |
13142 | break; |
13143 | case Opcode::AtomicAnd8: |
13144 | switch (this->args.size()) { |
13145 | case 2: |
13146 | switch (this->args[0].kind()) { |
13147 | case Arg::Imm: |
13148 | switch (this->args[1].kind()) { |
13149 | case Arg::Addr: |
13150 | case Arg::Stack: |
13151 | case Arg::CallArg: |
13152 | #if CPU(X86) || CPU(X86_64) |
13153 | if (!Arg::isValidImmForm(args[0].value())) |
13154 | OPGEN_RETURN(false); |
13155 | if (!Arg::isValidAddrForm(args[1].offset())) |
13156 | OPGEN_RETURN(false); |
13157 | OPGEN_RETURN(true); |
13158 | #endif |
13159 | break; |
13160 | break; |
13161 | case Arg::Index: |
13162 | #if CPU(X86) || CPU(X86_64) |
13163 | if (!Arg::isValidImmForm(args[0].value())) |
13164 | OPGEN_RETURN(false); |
13165 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13166 | OPGEN_RETURN(false); |
13167 | OPGEN_RETURN(true); |
13168 | #endif |
13169 | break; |
13170 | break; |
13171 | default: |
13172 | break; |
13173 | } |
13174 | break; |
13175 | case Arg::Tmp: |
13176 | switch (this->args[1].kind()) { |
13177 | case Arg::Addr: |
13178 | case Arg::Stack: |
13179 | case Arg::CallArg: |
13180 | #if CPU(X86) || CPU(X86_64) |
13181 | if (!args[0].tmp().isGP()) |
13182 | OPGEN_RETURN(false); |
13183 | if (!Arg::isValidAddrForm(args[1].offset())) |
13184 | OPGEN_RETURN(false); |
13185 | OPGEN_RETURN(true); |
13186 | #endif |
13187 | break; |
13188 | break; |
13189 | case Arg::Index: |
13190 | #if CPU(X86) || CPU(X86_64) |
13191 | if (!args[0].tmp().isGP()) |
13192 | OPGEN_RETURN(false); |
13193 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13194 | OPGEN_RETURN(false); |
13195 | OPGEN_RETURN(true); |
13196 | #endif |
13197 | break; |
13198 | break; |
13199 | default: |
13200 | break; |
13201 | } |
13202 | break; |
13203 | default: |
13204 | break; |
13205 | } |
13206 | break; |
13207 | default: |
13208 | break; |
13209 | } |
13210 | break; |
13211 | case Opcode::AtomicAnd16: |
13212 | switch (this->args.size()) { |
13213 | case 2: |
13214 | switch (this->args[0].kind()) { |
13215 | case Arg::Imm: |
13216 | switch (this->args[1].kind()) { |
13217 | case Arg::Addr: |
13218 | case Arg::Stack: |
13219 | case Arg::CallArg: |
13220 | #if CPU(X86) || CPU(X86_64) |
13221 | if (!Arg::isValidImmForm(args[0].value())) |
13222 | OPGEN_RETURN(false); |
13223 | if (!Arg::isValidAddrForm(args[1].offset())) |
13224 | OPGEN_RETURN(false); |
13225 | OPGEN_RETURN(true); |
13226 | #endif |
13227 | break; |
13228 | break; |
13229 | case Arg::Index: |
13230 | #if CPU(X86) || CPU(X86_64) |
13231 | if (!Arg::isValidImmForm(args[0].value())) |
13232 | OPGEN_RETURN(false); |
13233 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13234 | OPGEN_RETURN(false); |
13235 | OPGEN_RETURN(true); |
13236 | #endif |
13237 | break; |
13238 | break; |
13239 | default: |
13240 | break; |
13241 | } |
13242 | break; |
13243 | case Arg::Tmp: |
13244 | switch (this->args[1].kind()) { |
13245 | case Arg::Addr: |
13246 | case Arg::Stack: |
13247 | case Arg::CallArg: |
13248 | #if CPU(X86) || CPU(X86_64) |
13249 | if (!args[0].tmp().isGP()) |
13250 | OPGEN_RETURN(false); |
13251 | if (!Arg::isValidAddrForm(args[1].offset())) |
13252 | OPGEN_RETURN(false); |
13253 | OPGEN_RETURN(true); |
13254 | #endif |
13255 | break; |
13256 | break; |
13257 | case Arg::Index: |
13258 | #if CPU(X86) || CPU(X86_64) |
13259 | if (!args[0].tmp().isGP()) |
13260 | OPGEN_RETURN(false); |
13261 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13262 | OPGEN_RETURN(false); |
13263 | OPGEN_RETURN(true); |
13264 | #endif |
13265 | break; |
13266 | break; |
13267 | default: |
13268 | break; |
13269 | } |
13270 | break; |
13271 | default: |
13272 | break; |
13273 | } |
13274 | break; |
13275 | default: |
13276 | break; |
13277 | } |
13278 | break; |
13279 | case Opcode::AtomicAnd32: |
13280 | switch (this->args.size()) { |
13281 | case 2: |
13282 | switch (this->args[0].kind()) { |
13283 | case Arg::Imm: |
13284 | switch (this->args[1].kind()) { |
13285 | case Arg::Addr: |
13286 | case Arg::Stack: |
13287 | case Arg::CallArg: |
13288 | #if CPU(X86) || CPU(X86_64) |
13289 | if (!Arg::isValidImmForm(args[0].value())) |
13290 | OPGEN_RETURN(false); |
13291 | if (!Arg::isValidAddrForm(args[1].offset())) |
13292 | OPGEN_RETURN(false); |
13293 | OPGEN_RETURN(true); |
13294 | #endif |
13295 | break; |
13296 | break; |
13297 | case Arg::Index: |
13298 | #if CPU(X86) || CPU(X86_64) |
13299 | if (!Arg::isValidImmForm(args[0].value())) |
13300 | OPGEN_RETURN(false); |
13301 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13302 | OPGEN_RETURN(false); |
13303 | OPGEN_RETURN(true); |
13304 | #endif |
13305 | break; |
13306 | break; |
13307 | default: |
13308 | break; |
13309 | } |
13310 | break; |
13311 | case Arg::Tmp: |
13312 | switch (this->args[1].kind()) { |
13313 | case Arg::Addr: |
13314 | case Arg::Stack: |
13315 | case Arg::CallArg: |
13316 | #if CPU(X86) || CPU(X86_64) |
13317 | if (!args[0].tmp().isGP()) |
13318 | OPGEN_RETURN(false); |
13319 | if (!Arg::isValidAddrForm(args[1].offset())) |
13320 | OPGEN_RETURN(false); |
13321 | OPGEN_RETURN(true); |
13322 | #endif |
13323 | break; |
13324 | break; |
13325 | case Arg::Index: |
13326 | #if CPU(X86) || CPU(X86_64) |
13327 | if (!args[0].tmp().isGP()) |
13328 | OPGEN_RETURN(false); |
13329 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13330 | OPGEN_RETURN(false); |
13331 | OPGEN_RETURN(true); |
13332 | #endif |
13333 | break; |
13334 | break; |
13335 | default: |
13336 | break; |
13337 | } |
13338 | break; |
13339 | default: |
13340 | break; |
13341 | } |
13342 | break; |
13343 | default: |
13344 | break; |
13345 | } |
13346 | break; |
13347 | case Opcode::AtomicAnd64: |
13348 | switch (this->args.size()) { |
13349 | case 2: |
13350 | switch (this->args[0].kind()) { |
13351 | case Arg::Imm: |
13352 | switch (this->args[1].kind()) { |
13353 | case Arg::Addr: |
13354 | case Arg::Stack: |
13355 | case Arg::CallArg: |
13356 | #if CPU(X86_64) |
13357 | if (!Arg::isValidImmForm(args[0].value())) |
13358 | OPGEN_RETURN(false); |
13359 | if (!Arg::isValidAddrForm(args[1].offset())) |
13360 | OPGEN_RETURN(false); |
13361 | OPGEN_RETURN(true); |
13362 | #endif |
13363 | break; |
13364 | break; |
13365 | case Arg::Index: |
13366 | #if CPU(X86_64) |
13367 | if (!Arg::isValidImmForm(args[0].value())) |
13368 | OPGEN_RETURN(false); |
13369 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13370 | OPGEN_RETURN(false); |
13371 | OPGEN_RETURN(true); |
13372 | #endif |
13373 | break; |
13374 | break; |
13375 | default: |
13376 | break; |
13377 | } |
13378 | break; |
13379 | case Arg::Tmp: |
13380 | switch (this->args[1].kind()) { |
13381 | case Arg::Addr: |
13382 | case Arg::Stack: |
13383 | case Arg::CallArg: |
13384 | #if CPU(X86_64) |
13385 | if (!args[0].tmp().isGP()) |
13386 | OPGEN_RETURN(false); |
13387 | if (!Arg::isValidAddrForm(args[1].offset())) |
13388 | OPGEN_RETURN(false); |
13389 | OPGEN_RETURN(true); |
13390 | #endif |
13391 | break; |
13392 | break; |
13393 | case Arg::Index: |
13394 | #if CPU(X86_64) |
13395 | if (!args[0].tmp().isGP()) |
13396 | OPGEN_RETURN(false); |
13397 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13398 | OPGEN_RETURN(false); |
13399 | OPGEN_RETURN(true); |
13400 | #endif |
13401 | break; |
13402 | break; |
13403 | default: |
13404 | break; |
13405 | } |
13406 | break; |
13407 | default: |
13408 | break; |
13409 | } |
13410 | break; |
13411 | default: |
13412 | break; |
13413 | } |
13414 | break; |
13415 | case Opcode::AtomicOr8: |
13416 | switch (this->args.size()) { |
13417 | case 2: |
13418 | switch (this->args[0].kind()) { |
13419 | case Arg::Imm: |
13420 | switch (this->args[1].kind()) { |
13421 | case Arg::Addr: |
13422 | case Arg::Stack: |
13423 | case Arg::CallArg: |
13424 | #if CPU(X86) || CPU(X86_64) |
13425 | if (!Arg::isValidImmForm(args[0].value())) |
13426 | OPGEN_RETURN(false); |
13427 | if (!Arg::isValidAddrForm(args[1].offset())) |
13428 | OPGEN_RETURN(false); |
13429 | OPGEN_RETURN(true); |
13430 | #endif |
13431 | break; |
13432 | break; |
13433 | case Arg::Index: |
13434 | #if CPU(X86) || CPU(X86_64) |
13435 | if (!Arg::isValidImmForm(args[0].value())) |
13436 | OPGEN_RETURN(false); |
13437 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13438 | OPGEN_RETURN(false); |
13439 | OPGEN_RETURN(true); |
13440 | #endif |
13441 | break; |
13442 | break; |
13443 | default: |
13444 | break; |
13445 | } |
13446 | break; |
13447 | case Arg::Tmp: |
13448 | switch (this->args[1].kind()) { |
13449 | case Arg::Addr: |
13450 | case Arg::Stack: |
13451 | case Arg::CallArg: |
13452 | #if CPU(X86) || CPU(X86_64) |
13453 | if (!args[0].tmp().isGP()) |
13454 | OPGEN_RETURN(false); |
13455 | if (!Arg::isValidAddrForm(args[1].offset())) |
13456 | OPGEN_RETURN(false); |
13457 | OPGEN_RETURN(true); |
13458 | #endif |
13459 | break; |
13460 | break; |
13461 | case Arg::Index: |
13462 | #if CPU(X86) || CPU(X86_64) |
13463 | if (!args[0].tmp().isGP()) |
13464 | OPGEN_RETURN(false); |
13465 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13466 | OPGEN_RETURN(false); |
13467 | OPGEN_RETURN(true); |
13468 | #endif |
13469 | break; |
13470 | break; |
13471 | default: |
13472 | break; |
13473 | } |
13474 | break; |
13475 | default: |
13476 | break; |
13477 | } |
13478 | break; |
13479 | default: |
13480 | break; |
13481 | } |
13482 | break; |
13483 | case Opcode::AtomicOr16: |
13484 | switch (this->args.size()) { |
13485 | case 2: |
13486 | switch (this->args[0].kind()) { |
13487 | case Arg::Imm: |
13488 | switch (this->args[1].kind()) { |
13489 | case Arg::Addr: |
13490 | case Arg::Stack: |
13491 | case Arg::CallArg: |
13492 | #if CPU(X86) || CPU(X86_64) |
13493 | if (!Arg::isValidImmForm(args[0].value())) |
13494 | OPGEN_RETURN(false); |
13495 | if (!Arg::isValidAddrForm(args[1].offset())) |
13496 | OPGEN_RETURN(false); |
13497 | OPGEN_RETURN(true); |
13498 | #endif |
13499 | break; |
13500 | break; |
13501 | case Arg::Index: |
13502 | #if CPU(X86) || CPU(X86_64) |
13503 | if (!Arg::isValidImmForm(args[0].value())) |
13504 | OPGEN_RETURN(false); |
13505 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13506 | OPGEN_RETURN(false); |
13507 | OPGEN_RETURN(true); |
13508 | #endif |
13509 | break; |
13510 | break; |
13511 | default: |
13512 | break; |
13513 | } |
13514 | break; |
13515 | case Arg::Tmp: |
13516 | switch (this->args[1].kind()) { |
13517 | case Arg::Addr: |
13518 | case Arg::Stack: |
13519 | case Arg::CallArg: |
13520 | #if CPU(X86) || CPU(X86_64) |
13521 | if (!args[0].tmp().isGP()) |
13522 | OPGEN_RETURN(false); |
13523 | if (!Arg::isValidAddrForm(args[1].offset())) |
13524 | OPGEN_RETURN(false); |
13525 | OPGEN_RETURN(true); |
13526 | #endif |
13527 | break; |
13528 | break; |
13529 | case Arg::Index: |
13530 | #if CPU(X86) || CPU(X86_64) |
13531 | if (!args[0].tmp().isGP()) |
13532 | OPGEN_RETURN(false); |
13533 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13534 | OPGEN_RETURN(false); |
13535 | OPGEN_RETURN(true); |
13536 | #endif |
13537 | break; |
13538 | break; |
13539 | default: |
13540 | break; |
13541 | } |
13542 | break; |
13543 | default: |
13544 | break; |
13545 | } |
13546 | break; |
13547 | default: |
13548 | break; |
13549 | } |
13550 | break; |
13551 | case Opcode::AtomicOr32: |
13552 | switch (this->args.size()) { |
13553 | case 2: |
13554 | switch (this->args[0].kind()) { |
13555 | case Arg::Imm: |
13556 | switch (this->args[1].kind()) { |
13557 | case Arg::Addr: |
13558 | case Arg::Stack: |
13559 | case Arg::CallArg: |
13560 | #if CPU(X86) || CPU(X86_64) |
13561 | if (!Arg::isValidImmForm(args[0].value())) |
13562 | OPGEN_RETURN(false); |
13563 | if (!Arg::isValidAddrForm(args[1].offset())) |
13564 | OPGEN_RETURN(false); |
13565 | OPGEN_RETURN(true); |
13566 | #endif |
13567 | break; |
13568 | break; |
13569 | case Arg::Index: |
13570 | #if CPU(X86) || CPU(X86_64) |
13571 | if (!Arg::isValidImmForm(args[0].value())) |
13572 | OPGEN_RETURN(false); |
13573 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13574 | OPGEN_RETURN(false); |
13575 | OPGEN_RETURN(true); |
13576 | #endif |
13577 | break; |
13578 | break; |
13579 | default: |
13580 | break; |
13581 | } |
13582 | break; |
13583 | case Arg::Tmp: |
13584 | switch (this->args[1].kind()) { |
13585 | case Arg::Addr: |
13586 | case Arg::Stack: |
13587 | case Arg::CallArg: |
13588 | #if CPU(X86) || CPU(X86_64) |
13589 | if (!args[0].tmp().isGP()) |
13590 | OPGEN_RETURN(false); |
13591 | if (!Arg::isValidAddrForm(args[1].offset())) |
13592 | OPGEN_RETURN(false); |
13593 | OPGEN_RETURN(true); |
13594 | #endif |
13595 | break; |
13596 | break; |
13597 | case Arg::Index: |
13598 | #if CPU(X86) || CPU(X86_64) |
13599 | if (!args[0].tmp().isGP()) |
13600 | OPGEN_RETURN(false); |
13601 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13602 | OPGEN_RETURN(false); |
13603 | OPGEN_RETURN(true); |
13604 | #endif |
13605 | break; |
13606 | break; |
13607 | default: |
13608 | break; |
13609 | } |
13610 | break; |
13611 | default: |
13612 | break; |
13613 | } |
13614 | break; |
13615 | default: |
13616 | break; |
13617 | } |
13618 | break; |
13619 | case Opcode::AtomicOr64: |
13620 | switch (this->args.size()) { |
13621 | case 2: |
13622 | switch (this->args[0].kind()) { |
13623 | case Arg::Imm: |
13624 | switch (this->args[1].kind()) { |
13625 | case Arg::Addr: |
13626 | case Arg::Stack: |
13627 | case Arg::CallArg: |
13628 | #if CPU(X86_64) |
13629 | if (!Arg::isValidImmForm(args[0].value())) |
13630 | OPGEN_RETURN(false); |
13631 | if (!Arg::isValidAddrForm(args[1].offset())) |
13632 | OPGEN_RETURN(false); |
13633 | OPGEN_RETURN(true); |
13634 | #endif |
13635 | break; |
13636 | break; |
13637 | case Arg::Index: |
13638 | #if CPU(X86_64) |
13639 | if (!Arg::isValidImmForm(args[0].value())) |
13640 | OPGEN_RETURN(false); |
13641 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13642 | OPGEN_RETURN(false); |
13643 | OPGEN_RETURN(true); |
13644 | #endif |
13645 | break; |
13646 | break; |
13647 | default: |
13648 | break; |
13649 | } |
13650 | break; |
13651 | case Arg::Tmp: |
13652 | switch (this->args[1].kind()) { |
13653 | case Arg::Addr: |
13654 | case Arg::Stack: |
13655 | case Arg::CallArg: |
13656 | #if CPU(X86_64) |
13657 | if (!args[0].tmp().isGP()) |
13658 | OPGEN_RETURN(false); |
13659 | if (!Arg::isValidAddrForm(args[1].offset())) |
13660 | OPGEN_RETURN(false); |
13661 | OPGEN_RETURN(true); |
13662 | #endif |
13663 | break; |
13664 | break; |
13665 | case Arg::Index: |
13666 | #if CPU(X86_64) |
13667 | if (!args[0].tmp().isGP()) |
13668 | OPGEN_RETURN(false); |
13669 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13670 | OPGEN_RETURN(false); |
13671 | OPGEN_RETURN(true); |
13672 | #endif |
13673 | break; |
13674 | break; |
13675 | default: |
13676 | break; |
13677 | } |
13678 | break; |
13679 | default: |
13680 | break; |
13681 | } |
13682 | break; |
13683 | default: |
13684 | break; |
13685 | } |
13686 | break; |
13687 | case Opcode::AtomicXor8: |
13688 | switch (this->args.size()) { |
13689 | case 2: |
13690 | switch (this->args[0].kind()) { |
13691 | case Arg::Imm: |
13692 | switch (this->args[1].kind()) { |
13693 | case Arg::Addr: |
13694 | case Arg::Stack: |
13695 | case Arg::CallArg: |
13696 | #if CPU(X86) || CPU(X86_64) |
13697 | if (!Arg::isValidImmForm(args[0].value())) |
13698 | OPGEN_RETURN(false); |
13699 | if (!Arg::isValidAddrForm(args[1].offset())) |
13700 | OPGEN_RETURN(false); |
13701 | OPGEN_RETURN(true); |
13702 | #endif |
13703 | break; |
13704 | break; |
13705 | case Arg::Index: |
13706 | #if CPU(X86) || CPU(X86_64) |
13707 | if (!Arg::isValidImmForm(args[0].value())) |
13708 | OPGEN_RETURN(false); |
13709 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13710 | OPGEN_RETURN(false); |
13711 | OPGEN_RETURN(true); |
13712 | #endif |
13713 | break; |
13714 | break; |
13715 | default: |
13716 | break; |
13717 | } |
13718 | break; |
13719 | case Arg::Tmp: |
13720 | switch (this->args[1].kind()) { |
13721 | case Arg::Addr: |
13722 | case Arg::Stack: |
13723 | case Arg::CallArg: |
13724 | #if CPU(X86) || CPU(X86_64) |
13725 | if (!args[0].tmp().isGP()) |
13726 | OPGEN_RETURN(false); |
13727 | if (!Arg::isValidAddrForm(args[1].offset())) |
13728 | OPGEN_RETURN(false); |
13729 | OPGEN_RETURN(true); |
13730 | #endif |
13731 | break; |
13732 | break; |
13733 | case Arg::Index: |
13734 | #if CPU(X86) || CPU(X86_64) |
13735 | if (!args[0].tmp().isGP()) |
13736 | OPGEN_RETURN(false); |
13737 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
13738 | OPGEN_RETURN(false); |
13739 | OPGEN_RETURN(true); |
13740 | #endif |
13741 | break; |
13742 | break; |
13743 | default: |
13744 | break; |
13745 | } |
13746 | break; |
13747 | default: |
13748 | break; |
13749 | } |
13750 | break; |
13751 | default: |
13752 | break; |
13753 | } |
13754 | break; |
13755 | case Opcode::AtomicXor16: |
13756 | switch (this->args.size()) { |
13757 | case 2: |
13758 | switch (this->args[0].kind()) { |
13759 | case Arg::Imm: |
13760 | switch (this->args[1].kind()) { |
13761 | case Arg::Addr: |
13762 | case Arg::Stack: |
13763 | case Arg::CallArg: |
13764 | #if CPU(X86) || CPU(X86_64) |
13765 | if (!Arg::isValidImmForm(args[0].value())) |
13766 | OPGEN_RETURN(false); |
13767 | if (!Arg::isValidAddrForm(args[1].offset())) |
13768 | OPGEN_RETURN(false); |
13769 | OPGEN_RETURN(true); |
13770 | #endif |
13771 | break; |
13772 | break; |
13773 | case Arg::Index: |
13774 | #if CPU(X86) || CPU(X86_64) |
13775 | if (!Arg::isValidImmForm(args[0].value())) |
13776 | OPGEN_RETURN(false); |
13777 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13778 | OPGEN_RETURN(false); |
13779 | OPGEN_RETURN(true); |
13780 | #endif |
13781 | break; |
13782 | break; |
13783 | default: |
13784 | break; |
13785 | } |
13786 | break; |
13787 | case Arg::Tmp: |
13788 | switch (this->args[1].kind()) { |
13789 | case Arg::Addr: |
13790 | case Arg::Stack: |
13791 | case Arg::CallArg: |
13792 | #if CPU(X86) || CPU(X86_64) |
13793 | if (!args[0].tmp().isGP()) |
13794 | OPGEN_RETURN(false); |
13795 | if (!Arg::isValidAddrForm(args[1].offset())) |
13796 | OPGEN_RETURN(false); |
13797 | OPGEN_RETURN(true); |
13798 | #endif |
13799 | break; |
13800 | break; |
13801 | case Arg::Index: |
13802 | #if CPU(X86) || CPU(X86_64) |
13803 | if (!args[0].tmp().isGP()) |
13804 | OPGEN_RETURN(false); |
13805 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
13806 | OPGEN_RETURN(false); |
13807 | OPGEN_RETURN(true); |
13808 | #endif |
13809 | break; |
13810 | break; |
13811 | default: |
13812 | break; |
13813 | } |
13814 | break; |
13815 | default: |
13816 | break; |
13817 | } |
13818 | break; |
13819 | default: |
13820 | break; |
13821 | } |
13822 | break; |
13823 | case Opcode::AtomicXor32: |
13824 | switch (this->args.size()) { |
13825 | case 2: |
13826 | switch (this->args[0].kind()) { |
13827 | case Arg::Imm: |
13828 | switch (this->args[1].kind()) { |
13829 | case Arg::Addr: |
13830 | case Arg::Stack: |
13831 | case Arg::CallArg: |
13832 | #if CPU(X86) || CPU(X86_64) |
13833 | if (!Arg::isValidImmForm(args[0].value())) |
13834 | OPGEN_RETURN(false); |
13835 | if (!Arg::isValidAddrForm(args[1].offset())) |
13836 | OPGEN_RETURN(false); |
13837 | OPGEN_RETURN(true); |
13838 | #endif |
13839 | break; |
13840 | break; |
13841 | case Arg::Index: |
13842 | #if CPU(X86) || CPU(X86_64) |
13843 | if (!Arg::isValidImmForm(args[0].value())) |
13844 | OPGEN_RETURN(false); |
13845 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13846 | OPGEN_RETURN(false); |
13847 | OPGEN_RETURN(true); |
13848 | #endif |
13849 | break; |
13850 | break; |
13851 | default: |
13852 | break; |
13853 | } |
13854 | break; |
13855 | case Arg::Tmp: |
13856 | switch (this->args[1].kind()) { |
13857 | case Arg::Addr: |
13858 | case Arg::Stack: |
13859 | case Arg::CallArg: |
13860 | #if CPU(X86) || CPU(X86_64) |
13861 | if (!args[0].tmp().isGP()) |
13862 | OPGEN_RETURN(false); |
13863 | if (!Arg::isValidAddrForm(args[1].offset())) |
13864 | OPGEN_RETURN(false); |
13865 | OPGEN_RETURN(true); |
13866 | #endif |
13867 | break; |
13868 | break; |
13869 | case Arg::Index: |
13870 | #if CPU(X86) || CPU(X86_64) |
13871 | if (!args[0].tmp().isGP()) |
13872 | OPGEN_RETURN(false); |
13873 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
13874 | OPGEN_RETURN(false); |
13875 | OPGEN_RETURN(true); |
13876 | #endif |
13877 | break; |
13878 | break; |
13879 | default: |
13880 | break; |
13881 | } |
13882 | break; |
13883 | default: |
13884 | break; |
13885 | } |
13886 | break; |
13887 | default: |
13888 | break; |
13889 | } |
13890 | break; |
13891 | case Opcode::AtomicXor64: |
13892 | switch (this->args.size()) { |
13893 | case 2: |
13894 | switch (this->args[0].kind()) { |
13895 | case Arg::Imm: |
13896 | switch (this->args[1].kind()) { |
13897 | case Arg::Addr: |
13898 | case Arg::Stack: |
13899 | case Arg::CallArg: |
13900 | #if CPU(X86_64) |
13901 | if (!Arg::isValidImmForm(args[0].value())) |
13902 | OPGEN_RETURN(false); |
13903 | if (!Arg::isValidAddrForm(args[1].offset())) |
13904 | OPGEN_RETURN(false); |
13905 | OPGEN_RETURN(true); |
13906 | #endif |
13907 | break; |
13908 | break; |
13909 | case Arg::Index: |
13910 | #if CPU(X86_64) |
13911 | if (!Arg::isValidImmForm(args[0].value())) |
13912 | OPGEN_RETURN(false); |
13913 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13914 | OPGEN_RETURN(false); |
13915 | OPGEN_RETURN(true); |
13916 | #endif |
13917 | break; |
13918 | break; |
13919 | default: |
13920 | break; |
13921 | } |
13922 | break; |
13923 | case Arg::Tmp: |
13924 | switch (this->args[1].kind()) { |
13925 | case Arg::Addr: |
13926 | case Arg::Stack: |
13927 | case Arg::CallArg: |
13928 | #if CPU(X86_64) |
13929 | if (!args[0].tmp().isGP()) |
13930 | OPGEN_RETURN(false); |
13931 | if (!Arg::isValidAddrForm(args[1].offset())) |
13932 | OPGEN_RETURN(false); |
13933 | OPGEN_RETURN(true); |
13934 | #endif |
13935 | break; |
13936 | break; |
13937 | case Arg::Index: |
13938 | #if CPU(X86_64) |
13939 | if (!args[0].tmp().isGP()) |
13940 | OPGEN_RETURN(false); |
13941 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
13942 | OPGEN_RETURN(false); |
13943 | OPGEN_RETURN(true); |
13944 | #endif |
13945 | break; |
13946 | break; |
13947 | default: |
13948 | break; |
13949 | } |
13950 | break; |
13951 | default: |
13952 | break; |
13953 | } |
13954 | break; |
13955 | default: |
13956 | break; |
13957 | } |
13958 | break; |
13959 | case Opcode::AtomicNeg8: |
13960 | switch (this->args.size()) { |
13961 | case 1: |
13962 | switch (this->args[0].kind()) { |
13963 | case Arg::Addr: |
13964 | case Arg::Stack: |
13965 | case Arg::CallArg: |
13966 | #if CPU(X86) || CPU(X86_64) |
13967 | if (!Arg::isValidAddrForm(args[0].offset())) |
13968 | OPGEN_RETURN(false); |
13969 | OPGEN_RETURN(true); |
13970 | #endif |
13971 | break; |
13972 | break; |
13973 | case Arg::Index: |
13974 | #if CPU(X86) || CPU(X86_64) |
13975 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
13976 | OPGEN_RETURN(false); |
13977 | OPGEN_RETURN(true); |
13978 | #endif |
13979 | break; |
13980 | break; |
13981 | default: |
13982 | break; |
13983 | } |
13984 | break; |
13985 | default: |
13986 | break; |
13987 | } |
13988 | break; |
13989 | case Opcode::AtomicNeg16: |
13990 | switch (this->args.size()) { |
13991 | case 1: |
13992 | switch (this->args[0].kind()) { |
13993 | case Arg::Addr: |
13994 | case Arg::Stack: |
13995 | case Arg::CallArg: |
13996 | #if CPU(X86) || CPU(X86_64) |
13997 | if (!Arg::isValidAddrForm(args[0].offset())) |
13998 | OPGEN_RETURN(false); |
13999 | OPGEN_RETURN(true); |
14000 | #endif |
14001 | break; |
14002 | break; |
14003 | case Arg::Index: |
14004 | #if CPU(X86) || CPU(X86_64) |
14005 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
14006 | OPGEN_RETURN(false); |
14007 | OPGEN_RETURN(true); |
14008 | #endif |
14009 | break; |
14010 | break; |
14011 | default: |
14012 | break; |
14013 | } |
14014 | break; |
14015 | default: |
14016 | break; |
14017 | } |
14018 | break; |
14019 | case Opcode::AtomicNeg32: |
14020 | switch (this->args.size()) { |
14021 | case 1: |
14022 | switch (this->args[0].kind()) { |
14023 | case Arg::Addr: |
14024 | case Arg::Stack: |
14025 | case Arg::CallArg: |
14026 | #if CPU(X86) || CPU(X86_64) |
14027 | if (!Arg::isValidAddrForm(args[0].offset())) |
14028 | OPGEN_RETURN(false); |
14029 | OPGEN_RETURN(true); |
14030 | #endif |
14031 | break; |
14032 | break; |
14033 | case Arg::Index: |
14034 | #if CPU(X86) || CPU(X86_64) |
14035 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
14036 | OPGEN_RETURN(false); |
14037 | OPGEN_RETURN(true); |
14038 | #endif |
14039 | break; |
14040 | break; |
14041 | default: |
14042 | break; |
14043 | } |
14044 | break; |
14045 | default: |
14046 | break; |
14047 | } |
14048 | break; |
14049 | case Opcode::AtomicNeg64: |
14050 | switch (this->args.size()) { |
14051 | case 1: |
14052 | switch (this->args[0].kind()) { |
14053 | case Arg::Addr: |
14054 | case Arg::Stack: |
14055 | case Arg::CallArg: |
14056 | #if CPU(X86_64) |
14057 | if (!Arg::isValidAddrForm(args[0].offset())) |
14058 | OPGEN_RETURN(false); |
14059 | OPGEN_RETURN(true); |
14060 | #endif |
14061 | break; |
14062 | break; |
14063 | case Arg::Index: |
14064 | #if CPU(X86_64) |
14065 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
14066 | OPGEN_RETURN(false); |
14067 | OPGEN_RETURN(true); |
14068 | #endif |
14069 | break; |
14070 | break; |
14071 | default: |
14072 | break; |
14073 | } |
14074 | break; |
14075 | default: |
14076 | break; |
14077 | } |
14078 | break; |
14079 | case Opcode::AtomicNot8: |
14080 | switch (this->args.size()) { |
14081 | case 1: |
14082 | switch (this->args[0].kind()) { |
14083 | case Arg::Addr: |
14084 | case Arg::Stack: |
14085 | case Arg::CallArg: |
14086 | #if CPU(X86) || CPU(X86_64) |
14087 | if (!Arg::isValidAddrForm(args[0].offset())) |
14088 | OPGEN_RETURN(false); |
14089 | OPGEN_RETURN(true); |
14090 | #endif |
14091 | break; |
14092 | break; |
14093 | case Arg::Index: |
14094 | #if CPU(X86) || CPU(X86_64) |
14095 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width8)) |
14096 | OPGEN_RETURN(false); |
14097 | OPGEN_RETURN(true); |
14098 | #endif |
14099 | break; |
14100 | break; |
14101 | default: |
14102 | break; |
14103 | } |
14104 | break; |
14105 | default: |
14106 | break; |
14107 | } |
14108 | break; |
14109 | case Opcode::AtomicNot16: |
14110 | switch (this->args.size()) { |
14111 | case 1: |
14112 | switch (this->args[0].kind()) { |
14113 | case Arg::Addr: |
14114 | case Arg::Stack: |
14115 | case Arg::CallArg: |
14116 | #if CPU(X86) || CPU(X86_64) |
14117 | if (!Arg::isValidAddrForm(args[0].offset())) |
14118 | OPGEN_RETURN(false); |
14119 | OPGEN_RETURN(true); |
14120 | #endif |
14121 | break; |
14122 | break; |
14123 | case Arg::Index: |
14124 | #if CPU(X86) || CPU(X86_64) |
14125 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width16)) |
14126 | OPGEN_RETURN(false); |
14127 | OPGEN_RETURN(true); |
14128 | #endif |
14129 | break; |
14130 | break; |
14131 | default: |
14132 | break; |
14133 | } |
14134 | break; |
14135 | default: |
14136 | break; |
14137 | } |
14138 | break; |
14139 | case Opcode::AtomicNot32: |
14140 | switch (this->args.size()) { |
14141 | case 1: |
14142 | switch (this->args[0].kind()) { |
14143 | case Arg::Addr: |
14144 | case Arg::Stack: |
14145 | case Arg::CallArg: |
14146 | #if CPU(X86) || CPU(X86_64) |
14147 | if (!Arg::isValidAddrForm(args[0].offset())) |
14148 | OPGEN_RETURN(false); |
14149 | OPGEN_RETURN(true); |
14150 | #endif |
14151 | break; |
14152 | break; |
14153 | case Arg::Index: |
14154 | #if CPU(X86) || CPU(X86_64) |
14155 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width32)) |
14156 | OPGEN_RETURN(false); |
14157 | OPGEN_RETURN(true); |
14158 | #endif |
14159 | break; |
14160 | break; |
14161 | default: |
14162 | break; |
14163 | } |
14164 | break; |
14165 | default: |
14166 | break; |
14167 | } |
14168 | break; |
14169 | case Opcode::AtomicNot64: |
14170 | switch (this->args.size()) { |
14171 | case 1: |
14172 | switch (this->args[0].kind()) { |
14173 | case Arg::Addr: |
14174 | case Arg::Stack: |
14175 | case Arg::CallArg: |
14176 | #if CPU(X86_64) |
14177 | if (!Arg::isValidAddrForm(args[0].offset())) |
14178 | OPGEN_RETURN(false); |
14179 | OPGEN_RETURN(true); |
14180 | #endif |
14181 | break; |
14182 | break; |
14183 | case Arg::Index: |
14184 | #if CPU(X86_64) |
14185 | if (!Arg::isValidIndexForm(args[0].scale(), args[0].offset(), Width64)) |
14186 | OPGEN_RETURN(false); |
14187 | OPGEN_RETURN(true); |
14188 | #endif |
14189 | break; |
14190 | break; |
14191 | default: |
14192 | break; |
14193 | } |
14194 | break; |
14195 | default: |
14196 | break; |
14197 | } |
14198 | break; |
14199 | case Opcode::AtomicXchgAdd8: |
14200 | switch (this->args.size()) { |
14201 | case 2: |
14202 | switch (this->args[0].kind()) { |
14203 | case Arg::Tmp: |
14204 | switch (this->args[1].kind()) { |
14205 | case Arg::Addr: |
14206 | case Arg::Stack: |
14207 | case Arg::CallArg: |
14208 | #if CPU(X86) || CPU(X86_64) |
14209 | if (!args[0].tmp().isGP()) |
14210 | OPGEN_RETURN(false); |
14211 | if (!Arg::isValidAddrForm(args[1].offset())) |
14212 | OPGEN_RETURN(false); |
14213 | OPGEN_RETURN(true); |
14214 | #endif |
14215 | break; |
14216 | break; |
14217 | case Arg::Index: |
14218 | #if CPU(X86) || CPU(X86_64) |
14219 | if (!args[0].tmp().isGP()) |
14220 | OPGEN_RETURN(false); |
14221 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
14222 | OPGEN_RETURN(false); |
14223 | OPGEN_RETURN(true); |
14224 | #endif |
14225 | break; |
14226 | break; |
14227 | default: |
14228 | break; |
14229 | } |
14230 | break; |
14231 | default: |
14232 | break; |
14233 | } |
14234 | break; |
14235 | default: |
14236 | break; |
14237 | } |
14238 | break; |
14239 | case Opcode::AtomicXchgAdd16: |
14240 | switch (this->args.size()) { |
14241 | case 2: |
14242 | switch (this->args[0].kind()) { |
14243 | case Arg::Tmp: |
14244 | switch (this->args[1].kind()) { |
14245 | case Arg::Addr: |
14246 | case Arg::Stack: |
14247 | case Arg::CallArg: |
14248 | #if CPU(X86) || CPU(X86_64) |
14249 | if (!args[0].tmp().isGP()) |
14250 | OPGEN_RETURN(false); |
14251 | if (!Arg::isValidAddrForm(args[1].offset())) |
14252 | OPGEN_RETURN(false); |
14253 | OPGEN_RETURN(true); |
14254 | #endif |
14255 | break; |
14256 | break; |
14257 | case Arg::Index: |
14258 | #if CPU(X86) || CPU(X86_64) |
14259 | if (!args[0].tmp().isGP()) |
14260 | OPGEN_RETURN(false); |
14261 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
14262 | OPGEN_RETURN(false); |
14263 | OPGEN_RETURN(true); |
14264 | #endif |
14265 | break; |
14266 | break; |
14267 | default: |
14268 | break; |
14269 | } |
14270 | break; |
14271 | default: |
14272 | break; |
14273 | } |
14274 | break; |
14275 | default: |
14276 | break; |
14277 | } |
14278 | break; |
14279 | case Opcode::AtomicXchgAdd32: |
14280 | switch (this->args.size()) { |
14281 | case 2: |
14282 | switch (this->args[0].kind()) { |
14283 | case Arg::Tmp: |
14284 | switch (this->args[1].kind()) { |
14285 | case Arg::Addr: |
14286 | case Arg::Stack: |
14287 | case Arg::CallArg: |
14288 | #if CPU(X86) || CPU(X86_64) |
14289 | if (!args[0].tmp().isGP()) |
14290 | OPGEN_RETURN(false); |
14291 | if (!Arg::isValidAddrForm(args[1].offset())) |
14292 | OPGEN_RETURN(false); |
14293 | OPGEN_RETURN(true); |
14294 | #endif |
14295 | break; |
14296 | break; |
14297 | case Arg::Index: |
14298 | #if CPU(X86) || CPU(X86_64) |
14299 | if (!args[0].tmp().isGP()) |
14300 | OPGEN_RETURN(false); |
14301 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
14302 | OPGEN_RETURN(false); |
14303 | OPGEN_RETURN(true); |
14304 | #endif |
14305 | break; |
14306 | break; |
14307 | default: |
14308 | break; |
14309 | } |
14310 | break; |
14311 | default: |
14312 | break; |
14313 | } |
14314 | break; |
14315 | default: |
14316 | break; |
14317 | } |
14318 | break; |
14319 | case Opcode::AtomicXchgAdd64: |
14320 | switch (this->args.size()) { |
14321 | case 2: |
14322 | switch (this->args[0].kind()) { |
14323 | case Arg::Tmp: |
14324 | switch (this->args[1].kind()) { |
14325 | case Arg::Addr: |
14326 | case Arg::Stack: |
14327 | case Arg::CallArg: |
14328 | #if CPU(X86_64) |
14329 | if (!args[0].tmp().isGP()) |
14330 | OPGEN_RETURN(false); |
14331 | if (!Arg::isValidAddrForm(args[1].offset())) |
14332 | OPGEN_RETURN(false); |
14333 | OPGEN_RETURN(true); |
14334 | #endif |
14335 | break; |
14336 | break; |
14337 | case Arg::Index: |
14338 | #if CPU(X86_64) |
14339 | if (!args[0].tmp().isGP()) |
14340 | OPGEN_RETURN(false); |
14341 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
14342 | OPGEN_RETURN(false); |
14343 | OPGEN_RETURN(true); |
14344 | #endif |
14345 | break; |
14346 | break; |
14347 | default: |
14348 | break; |
14349 | } |
14350 | break; |
14351 | default: |
14352 | break; |
14353 | } |
14354 | break; |
14355 | default: |
14356 | break; |
14357 | } |
14358 | break; |
14359 | case Opcode::AtomicXchg8: |
14360 | switch (this->args.size()) { |
14361 | case 2: |
14362 | switch (this->args[0].kind()) { |
14363 | case Arg::Tmp: |
14364 | switch (this->args[1].kind()) { |
14365 | case Arg::Addr: |
14366 | case Arg::Stack: |
14367 | case Arg::CallArg: |
14368 | #if CPU(X86) || CPU(X86_64) |
14369 | if (!args[0].tmp().isGP()) |
14370 | OPGEN_RETURN(false); |
14371 | if (!Arg::isValidAddrForm(args[1].offset())) |
14372 | OPGEN_RETURN(false); |
14373 | OPGEN_RETURN(true); |
14374 | #endif |
14375 | break; |
14376 | break; |
14377 | case Arg::Index: |
14378 | #if CPU(X86) || CPU(X86_64) |
14379 | if (!args[0].tmp().isGP()) |
14380 | OPGEN_RETURN(false); |
14381 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
14382 | OPGEN_RETURN(false); |
14383 | OPGEN_RETURN(true); |
14384 | #endif |
14385 | break; |
14386 | break; |
14387 | default: |
14388 | break; |
14389 | } |
14390 | break; |
14391 | default: |
14392 | break; |
14393 | } |
14394 | break; |
14395 | default: |
14396 | break; |
14397 | } |
14398 | break; |
14399 | case Opcode::AtomicXchg16: |
14400 | switch (this->args.size()) { |
14401 | case 2: |
14402 | switch (this->args[0].kind()) { |
14403 | case Arg::Tmp: |
14404 | switch (this->args[1].kind()) { |
14405 | case Arg::Addr: |
14406 | case Arg::Stack: |
14407 | case Arg::CallArg: |
14408 | #if CPU(X86) || CPU(X86_64) |
14409 | if (!args[0].tmp().isGP()) |
14410 | OPGEN_RETURN(false); |
14411 | if (!Arg::isValidAddrForm(args[1].offset())) |
14412 | OPGEN_RETURN(false); |
14413 | OPGEN_RETURN(true); |
14414 | #endif |
14415 | break; |
14416 | break; |
14417 | case Arg::Index: |
14418 | #if CPU(X86) || CPU(X86_64) |
14419 | if (!args[0].tmp().isGP()) |
14420 | OPGEN_RETURN(false); |
14421 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width16)) |
14422 | OPGEN_RETURN(false); |
14423 | OPGEN_RETURN(true); |
14424 | #endif |
14425 | break; |
14426 | break; |
14427 | default: |
14428 | break; |
14429 | } |
14430 | break; |
14431 | default: |
14432 | break; |
14433 | } |
14434 | break; |
14435 | default: |
14436 | break; |
14437 | } |
14438 | break; |
14439 | case Opcode::AtomicXchg32: |
14440 | switch (this->args.size()) { |
14441 | case 2: |
14442 | switch (this->args[0].kind()) { |
14443 | case Arg::Tmp: |
14444 | switch (this->args[1].kind()) { |
14445 | case Arg::Addr: |
14446 | case Arg::Stack: |
14447 | case Arg::CallArg: |
14448 | #if CPU(X86) || CPU(X86_64) |
14449 | if (!args[0].tmp().isGP()) |
14450 | OPGEN_RETURN(false); |
14451 | if (!Arg::isValidAddrForm(args[1].offset())) |
14452 | OPGEN_RETURN(false); |
14453 | OPGEN_RETURN(true); |
14454 | #endif |
14455 | break; |
14456 | break; |
14457 | case Arg::Index: |
14458 | #if CPU(X86) || CPU(X86_64) |
14459 | if (!args[0].tmp().isGP()) |
14460 | OPGEN_RETURN(false); |
14461 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
14462 | OPGEN_RETURN(false); |
14463 | OPGEN_RETURN(true); |
14464 | #endif |
14465 | break; |
14466 | break; |
14467 | default: |
14468 | break; |
14469 | } |
14470 | break; |
14471 | default: |
14472 | break; |
14473 | } |
14474 | break; |
14475 | default: |
14476 | break; |
14477 | } |
14478 | break; |
14479 | case Opcode::AtomicXchg64: |
14480 | switch (this->args.size()) { |
14481 | case 2: |
14482 | switch (this->args[0].kind()) { |
14483 | case Arg::Tmp: |
14484 | switch (this->args[1].kind()) { |
14485 | case Arg::Addr: |
14486 | case Arg::Stack: |
14487 | case Arg::CallArg: |
14488 | #if CPU(X86_64) |
14489 | if (!args[0].tmp().isGP()) |
14490 | OPGEN_RETURN(false); |
14491 | if (!Arg::isValidAddrForm(args[1].offset())) |
14492 | OPGEN_RETURN(false); |
14493 | OPGEN_RETURN(true); |
14494 | #endif |
14495 | break; |
14496 | break; |
14497 | case Arg::Index: |
14498 | #if CPU(X86_64) |
14499 | if (!args[0].tmp().isGP()) |
14500 | OPGEN_RETURN(false); |
14501 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
14502 | OPGEN_RETURN(false); |
14503 | OPGEN_RETURN(true); |
14504 | #endif |
14505 | break; |
14506 | break; |
14507 | default: |
14508 | break; |
14509 | } |
14510 | break; |
14511 | default: |
14512 | break; |
14513 | } |
14514 | break; |
14515 | default: |
14516 | break; |
14517 | } |
14518 | break; |
14519 | case Opcode::LoadLink8: |
14520 | switch (this->args.size()) { |
14521 | case 2: |
14522 | switch (this->args[0].kind()) { |
14523 | case Arg::SimpleAddr: |
14524 | switch (this->args[1].kind()) { |
14525 | case Arg::Tmp: |
14526 | #if CPU(ARM64) |
14527 | if (!args[0].ptr().isGP()) |
14528 | OPGEN_RETURN(false); |
14529 | if (!args[1].tmp().isGP()) |
14530 | OPGEN_RETURN(false); |
14531 | OPGEN_RETURN(true); |
14532 | #endif |
14533 | break; |
14534 | break; |
14535 | default: |
14536 | break; |
14537 | } |
14538 | break; |
14539 | default: |
14540 | break; |
14541 | } |
14542 | break; |
14543 | default: |
14544 | break; |
14545 | } |
14546 | break; |
14547 | case Opcode::LoadLinkAcq8: |
14548 | switch (this->args.size()) { |
14549 | case 2: |
14550 | switch (this->args[0].kind()) { |
14551 | case Arg::SimpleAddr: |
14552 | switch (this->args[1].kind()) { |
14553 | case Arg::Tmp: |
14554 | #if CPU(ARM64) |
14555 | if (!args[0].ptr().isGP()) |
14556 | OPGEN_RETURN(false); |
14557 | if (!args[1].tmp().isGP()) |
14558 | OPGEN_RETURN(false); |
14559 | OPGEN_RETURN(true); |
14560 | #endif |
14561 | break; |
14562 | break; |
14563 | default: |
14564 | break; |
14565 | } |
14566 | break; |
14567 | default: |
14568 | break; |
14569 | } |
14570 | break; |
14571 | default: |
14572 | break; |
14573 | } |
14574 | break; |
14575 | case Opcode::StoreCond8: |
14576 | switch (this->args.size()) { |
14577 | case 3: |
14578 | switch (this->args[0].kind()) { |
14579 | case Arg::Tmp: |
14580 | switch (this->args[1].kind()) { |
14581 | case Arg::SimpleAddr: |
14582 | switch (this->args[2].kind()) { |
14583 | case Arg::Tmp: |
14584 | #if CPU(ARM64) |
14585 | if (!args[0].tmp().isGP()) |
14586 | OPGEN_RETURN(false); |
14587 | if (!args[1].ptr().isGP()) |
14588 | OPGEN_RETURN(false); |
14589 | if (!args[2].tmp().isGP()) |
14590 | OPGEN_RETURN(false); |
14591 | OPGEN_RETURN(true); |
14592 | #endif |
14593 | break; |
14594 | break; |
14595 | default: |
14596 | break; |
14597 | } |
14598 | break; |
14599 | default: |
14600 | break; |
14601 | } |
14602 | break; |
14603 | default: |
14604 | break; |
14605 | } |
14606 | break; |
14607 | default: |
14608 | break; |
14609 | } |
14610 | break; |
14611 | case Opcode::StoreCondRel8: |
14612 | switch (this->args.size()) { |
14613 | case 3: |
14614 | switch (this->args[0].kind()) { |
14615 | case Arg::Tmp: |
14616 | switch (this->args[1].kind()) { |
14617 | case Arg::SimpleAddr: |
14618 | switch (this->args[2].kind()) { |
14619 | case Arg::Tmp: |
14620 | #if CPU(ARM64) |
14621 | if (!args[0].tmp().isGP()) |
14622 | OPGEN_RETURN(false); |
14623 | if (!args[1].ptr().isGP()) |
14624 | OPGEN_RETURN(false); |
14625 | if (!args[2].tmp().isGP()) |
14626 | OPGEN_RETURN(false); |
14627 | OPGEN_RETURN(true); |
14628 | #endif |
14629 | break; |
14630 | break; |
14631 | default: |
14632 | break; |
14633 | } |
14634 | break; |
14635 | default: |
14636 | break; |
14637 | } |
14638 | break; |
14639 | default: |
14640 | break; |
14641 | } |
14642 | break; |
14643 | default: |
14644 | break; |
14645 | } |
14646 | break; |
14647 | case Opcode::LoadLink16: |
14648 | switch (this->args.size()) { |
14649 | case 2: |
14650 | switch (this->args[0].kind()) { |
14651 | case Arg::SimpleAddr: |
14652 | switch (this->args[1].kind()) { |
14653 | case Arg::Tmp: |
14654 | #if CPU(ARM64) |
14655 | if (!args[0].ptr().isGP()) |
14656 | OPGEN_RETURN(false); |
14657 | if (!args[1].tmp().isGP()) |
14658 | OPGEN_RETURN(false); |
14659 | OPGEN_RETURN(true); |
14660 | #endif |
14661 | break; |
14662 | break; |
14663 | default: |
14664 | break; |
14665 | } |
14666 | break; |
14667 | default: |
14668 | break; |
14669 | } |
14670 | break; |
14671 | default: |
14672 | break; |
14673 | } |
14674 | break; |
14675 | case Opcode::LoadLinkAcq16: |
14676 | switch (this->args.size()) { |
14677 | case 2: |
14678 | switch (this->args[0].kind()) { |
14679 | case Arg::SimpleAddr: |
14680 | switch (this->args[1].kind()) { |
14681 | case Arg::Tmp: |
14682 | #if CPU(ARM64) |
14683 | if (!args[0].ptr().isGP()) |
14684 | OPGEN_RETURN(false); |
14685 | if (!args[1].tmp().isGP()) |
14686 | OPGEN_RETURN(false); |
14687 | OPGEN_RETURN(true); |
14688 | #endif |
14689 | break; |
14690 | break; |
14691 | default: |
14692 | break; |
14693 | } |
14694 | break; |
14695 | default: |
14696 | break; |
14697 | } |
14698 | break; |
14699 | default: |
14700 | break; |
14701 | } |
14702 | break; |
14703 | case Opcode::StoreCond16: |
14704 | switch (this->args.size()) { |
14705 | case 3: |
14706 | switch (this->args[0].kind()) { |
14707 | case Arg::Tmp: |
14708 | switch (this->args[1].kind()) { |
14709 | case Arg::SimpleAddr: |
14710 | switch (this->args[2].kind()) { |
14711 | case Arg::Tmp: |
14712 | #if CPU(ARM64) |
14713 | if (!args[0].tmp().isGP()) |
14714 | OPGEN_RETURN(false); |
14715 | if (!args[1].ptr().isGP()) |
14716 | OPGEN_RETURN(false); |
14717 | if (!args[2].tmp().isGP()) |
14718 | OPGEN_RETURN(false); |
14719 | OPGEN_RETURN(true); |
14720 | #endif |
14721 | break; |
14722 | break; |
14723 | default: |
14724 | break; |
14725 | } |
14726 | break; |
14727 | default: |
14728 | break; |
14729 | } |
14730 | break; |
14731 | default: |
14732 | break; |
14733 | } |
14734 | break; |
14735 | default: |
14736 | break; |
14737 | } |
14738 | break; |
14739 | case Opcode::StoreCondRel16: |
14740 | switch (this->args.size()) { |
14741 | case 3: |
14742 | switch (this->args[0].kind()) { |
14743 | case Arg::Tmp: |
14744 | switch (this->args[1].kind()) { |
14745 | case Arg::SimpleAddr: |
14746 | switch (this->args[2].kind()) { |
14747 | case Arg::Tmp: |
14748 | #if CPU(ARM64) |
14749 | if (!args[0].tmp().isGP()) |
14750 | OPGEN_RETURN(false); |
14751 | if (!args[1].ptr().isGP()) |
14752 | OPGEN_RETURN(false); |
14753 | if (!args[2].tmp().isGP()) |
14754 | OPGEN_RETURN(false); |
14755 | OPGEN_RETURN(true); |
14756 | #endif |
14757 | break; |
14758 | break; |
14759 | default: |
14760 | break; |
14761 | } |
14762 | break; |
14763 | default: |
14764 | break; |
14765 | } |
14766 | break; |
14767 | default: |
14768 | break; |
14769 | } |
14770 | break; |
14771 | default: |
14772 | break; |
14773 | } |
14774 | break; |
14775 | case Opcode::LoadLink32: |
14776 | switch (this->args.size()) { |
14777 | case 2: |
14778 | switch (this->args[0].kind()) { |
14779 | case Arg::SimpleAddr: |
14780 | switch (this->args[1].kind()) { |
14781 | case Arg::Tmp: |
14782 | #if CPU(ARM64) |
14783 | if (!args[0].ptr().isGP()) |
14784 | OPGEN_RETURN(false); |
14785 | if (!args[1].tmp().isGP()) |
14786 | OPGEN_RETURN(false); |
14787 | OPGEN_RETURN(true); |
14788 | #endif |
14789 | break; |
14790 | break; |
14791 | default: |
14792 | break; |
14793 | } |
14794 | break; |
14795 | default: |
14796 | break; |
14797 | } |
14798 | break; |
14799 | default: |
14800 | break; |
14801 | } |
14802 | break; |
14803 | case Opcode::LoadLinkAcq32: |
14804 | switch (this->args.size()) { |
14805 | case 2: |
14806 | switch (this->args[0].kind()) { |
14807 | case Arg::SimpleAddr: |
14808 | switch (this->args[1].kind()) { |
14809 | case Arg::Tmp: |
14810 | #if CPU(ARM64) |
14811 | if (!args[0].ptr().isGP()) |
14812 | OPGEN_RETURN(false); |
14813 | if (!args[1].tmp().isGP()) |
14814 | OPGEN_RETURN(false); |
14815 | OPGEN_RETURN(true); |
14816 | #endif |
14817 | break; |
14818 | break; |
14819 | default: |
14820 | break; |
14821 | } |
14822 | break; |
14823 | default: |
14824 | break; |
14825 | } |
14826 | break; |
14827 | default: |
14828 | break; |
14829 | } |
14830 | break; |
14831 | case Opcode::StoreCond32: |
14832 | switch (this->args.size()) { |
14833 | case 3: |
14834 | switch (this->args[0].kind()) { |
14835 | case Arg::Tmp: |
14836 | switch (this->args[1].kind()) { |
14837 | case Arg::SimpleAddr: |
14838 | switch (this->args[2].kind()) { |
14839 | case Arg::Tmp: |
14840 | #if CPU(ARM64) |
14841 | if (!args[0].tmp().isGP()) |
14842 | OPGEN_RETURN(false); |
14843 | if (!args[1].ptr().isGP()) |
14844 | OPGEN_RETURN(false); |
14845 | if (!args[2].tmp().isGP()) |
14846 | OPGEN_RETURN(false); |
14847 | OPGEN_RETURN(true); |
14848 | #endif |
14849 | break; |
14850 | break; |
14851 | default: |
14852 | break; |
14853 | } |
14854 | break; |
14855 | default: |
14856 | break; |
14857 | } |
14858 | break; |
14859 | default: |
14860 | break; |
14861 | } |
14862 | break; |
14863 | default: |
14864 | break; |
14865 | } |
14866 | break; |
14867 | case Opcode::StoreCondRel32: |
14868 | switch (this->args.size()) { |
14869 | case 3: |
14870 | switch (this->args[0].kind()) { |
14871 | case Arg::Tmp: |
14872 | switch (this->args[1].kind()) { |
14873 | case Arg::SimpleAddr: |
14874 | switch (this->args[2].kind()) { |
14875 | case Arg::Tmp: |
14876 | #if CPU(ARM64) |
14877 | if (!args[0].tmp().isGP()) |
14878 | OPGEN_RETURN(false); |
14879 | if (!args[1].ptr().isGP()) |
14880 | OPGEN_RETURN(false); |
14881 | if (!args[2].tmp().isGP()) |
14882 | OPGEN_RETURN(false); |
14883 | OPGEN_RETURN(true); |
14884 | #endif |
14885 | break; |
14886 | break; |
14887 | default: |
14888 | break; |
14889 | } |
14890 | break; |
14891 | default: |
14892 | break; |
14893 | } |
14894 | break; |
14895 | default: |
14896 | break; |
14897 | } |
14898 | break; |
14899 | default: |
14900 | break; |
14901 | } |
14902 | break; |
14903 | case Opcode::LoadLink64: |
14904 | switch (this->args.size()) { |
14905 | case 2: |
14906 | switch (this->args[0].kind()) { |
14907 | case Arg::SimpleAddr: |
14908 | switch (this->args[1].kind()) { |
14909 | case Arg::Tmp: |
14910 | #if CPU(ARM64) |
14911 | if (!args[0].ptr().isGP()) |
14912 | OPGEN_RETURN(false); |
14913 | if (!args[1].tmp().isGP()) |
14914 | OPGEN_RETURN(false); |
14915 | OPGEN_RETURN(true); |
14916 | #endif |
14917 | break; |
14918 | break; |
14919 | default: |
14920 | break; |
14921 | } |
14922 | break; |
14923 | default: |
14924 | break; |
14925 | } |
14926 | break; |
14927 | default: |
14928 | break; |
14929 | } |
14930 | break; |
14931 | case Opcode::LoadLinkAcq64: |
14932 | switch (this->args.size()) { |
14933 | case 2: |
14934 | switch (this->args[0].kind()) { |
14935 | case Arg::SimpleAddr: |
14936 | switch (this->args[1].kind()) { |
14937 | case Arg::Tmp: |
14938 | #if CPU(ARM64) |
14939 | if (!args[0].ptr().isGP()) |
14940 | OPGEN_RETURN(false); |
14941 | if (!args[1].tmp().isGP()) |
14942 | OPGEN_RETURN(false); |
14943 | OPGEN_RETURN(true); |
14944 | #endif |
14945 | break; |
14946 | break; |
14947 | default: |
14948 | break; |
14949 | } |
14950 | break; |
14951 | default: |
14952 | break; |
14953 | } |
14954 | break; |
14955 | default: |
14956 | break; |
14957 | } |
14958 | break; |
14959 | case Opcode::StoreCond64: |
14960 | switch (this->args.size()) { |
14961 | case 3: |
14962 | switch (this->args[0].kind()) { |
14963 | case Arg::Tmp: |
14964 | switch (this->args[1].kind()) { |
14965 | case Arg::SimpleAddr: |
14966 | switch (this->args[2].kind()) { |
14967 | case Arg::Tmp: |
14968 | #if CPU(ARM64) |
14969 | if (!args[0].tmp().isGP()) |
14970 | OPGEN_RETURN(false); |
14971 | if (!args[1].ptr().isGP()) |
14972 | OPGEN_RETURN(false); |
14973 | if (!args[2].tmp().isGP()) |
14974 | OPGEN_RETURN(false); |
14975 | OPGEN_RETURN(true); |
14976 | #endif |
14977 | break; |
14978 | break; |
14979 | default: |
14980 | break; |
14981 | } |
14982 | break; |
14983 | default: |
14984 | break; |
14985 | } |
14986 | break; |
14987 | default: |
14988 | break; |
14989 | } |
14990 | break; |
14991 | default: |
14992 | break; |
14993 | } |
14994 | break; |
14995 | case Opcode::StoreCondRel64: |
14996 | switch (this->args.size()) { |
14997 | case 3: |
14998 | switch (this->args[0].kind()) { |
14999 | case Arg::Tmp: |
15000 | switch (this->args[1].kind()) { |
15001 | case Arg::SimpleAddr: |
15002 | switch (this->args[2].kind()) { |
15003 | case Arg::Tmp: |
15004 | #if CPU(ARM64) |
15005 | if (!args[0].tmp().isGP()) |
15006 | OPGEN_RETURN(false); |
15007 | if (!args[1].ptr().isGP()) |
15008 | OPGEN_RETURN(false); |
15009 | if (!args[2].tmp().isGP()) |
15010 | OPGEN_RETURN(false); |
15011 | OPGEN_RETURN(true); |
15012 | #endif |
15013 | break; |
15014 | break; |
15015 | default: |
15016 | break; |
15017 | } |
15018 | break; |
15019 | default: |
15020 | break; |
15021 | } |
15022 | break; |
15023 | default: |
15024 | break; |
15025 | } |
15026 | break; |
15027 | default: |
15028 | break; |
15029 | } |
15030 | break; |
15031 | case Opcode::Depend32: |
15032 | switch (this->args.size()) { |
15033 | case 2: |
15034 | switch (this->args[0].kind()) { |
15035 | case Arg::Tmp: |
15036 | switch (this->args[1].kind()) { |
15037 | case Arg::Tmp: |
15038 | #if CPU(ARM64) |
15039 | if (!args[0].tmp().isGP()) |
15040 | OPGEN_RETURN(false); |
15041 | if (!args[1].tmp().isGP()) |
15042 | OPGEN_RETURN(false); |
15043 | OPGEN_RETURN(true); |
15044 | #endif |
15045 | break; |
15046 | break; |
15047 | default: |
15048 | break; |
15049 | } |
15050 | break; |
15051 | default: |
15052 | break; |
15053 | } |
15054 | break; |
15055 | default: |
15056 | break; |
15057 | } |
15058 | break; |
15059 | case Opcode::Depend64: |
15060 | switch (this->args.size()) { |
15061 | case 2: |
15062 | switch (this->args[0].kind()) { |
15063 | case Arg::Tmp: |
15064 | switch (this->args[1].kind()) { |
15065 | case Arg::Tmp: |
15066 | #if CPU(ARM64) |
15067 | if (!args[0].tmp().isGP()) |
15068 | OPGEN_RETURN(false); |
15069 | if (!args[1].tmp().isGP()) |
15070 | OPGEN_RETURN(false); |
15071 | OPGEN_RETURN(true); |
15072 | #endif |
15073 | break; |
15074 | break; |
15075 | default: |
15076 | break; |
15077 | } |
15078 | break; |
15079 | default: |
15080 | break; |
15081 | } |
15082 | break; |
15083 | default: |
15084 | break; |
15085 | } |
15086 | break; |
15087 | case Opcode::Compare32: |
15088 | switch (this->args.size()) { |
15089 | case 4: |
15090 | switch (this->args[0].kind()) { |
15091 | case Arg::RelCond: |
15092 | switch (this->args[1].kind()) { |
15093 | case Arg::Tmp: |
15094 | switch (this->args[2].kind()) { |
15095 | case Arg::Tmp: |
15096 | switch (this->args[3].kind()) { |
15097 | case Arg::Tmp: |
15098 | if (!args[1].tmp().isGP()) |
15099 | OPGEN_RETURN(false); |
15100 | if (!args[2].tmp().isGP()) |
15101 | OPGEN_RETURN(false); |
15102 | if (!args[3].tmp().isGP()) |
15103 | OPGEN_RETURN(false); |
15104 | OPGEN_RETURN(true); |
15105 | break; |
15106 | break; |
15107 | default: |
15108 | break; |
15109 | } |
15110 | break; |
15111 | case Arg::Imm: |
15112 | switch (this->args[3].kind()) { |
15113 | case Arg::Tmp: |
15114 | if (!args[1].tmp().isGP()) |
15115 | OPGEN_RETURN(false); |
15116 | if (!Arg::isValidImmForm(args[2].value())) |
15117 | OPGEN_RETURN(false); |
15118 | if (!args[3].tmp().isGP()) |
15119 | OPGEN_RETURN(false); |
15120 | OPGEN_RETURN(true); |
15121 | break; |
15122 | break; |
15123 | default: |
15124 | break; |
15125 | } |
15126 | break; |
15127 | default: |
15128 | break; |
15129 | } |
15130 | break; |
15131 | default: |
15132 | break; |
15133 | } |
15134 | break; |
15135 | default: |
15136 | break; |
15137 | } |
15138 | break; |
15139 | default: |
15140 | break; |
15141 | } |
15142 | break; |
15143 | case Opcode::Compare64: |
15144 | switch (this->args.size()) { |
15145 | case 4: |
15146 | switch (this->args[0].kind()) { |
15147 | case Arg::RelCond: |
15148 | switch (this->args[1].kind()) { |
15149 | case Arg::Tmp: |
15150 | switch (this->args[2].kind()) { |
15151 | case Arg::Tmp: |
15152 | switch (this->args[3].kind()) { |
15153 | case Arg::Tmp: |
15154 | #if CPU(X86_64) || CPU(ARM64) |
15155 | if (!args[1].tmp().isGP()) |
15156 | OPGEN_RETURN(false); |
15157 | if (!args[2].tmp().isGP()) |
15158 | OPGEN_RETURN(false); |
15159 | if (!args[3].tmp().isGP()) |
15160 | OPGEN_RETURN(false); |
15161 | OPGEN_RETURN(true); |
15162 | #endif |
15163 | break; |
15164 | break; |
15165 | default: |
15166 | break; |
15167 | } |
15168 | break; |
15169 | case Arg::Imm: |
15170 | switch (this->args[3].kind()) { |
15171 | case Arg::Tmp: |
15172 | #if CPU(X86_64) |
15173 | if (!args[1].tmp().isGP()) |
15174 | OPGEN_RETURN(false); |
15175 | if (!Arg::isValidImmForm(args[2].value())) |
15176 | OPGEN_RETURN(false); |
15177 | if (!args[3].tmp().isGP()) |
15178 | OPGEN_RETURN(false); |
15179 | OPGEN_RETURN(true); |
15180 | #endif |
15181 | break; |
15182 | break; |
15183 | default: |
15184 | break; |
15185 | } |
15186 | break; |
15187 | default: |
15188 | break; |
15189 | } |
15190 | break; |
15191 | default: |
15192 | break; |
15193 | } |
15194 | break; |
15195 | default: |
15196 | break; |
15197 | } |
15198 | break; |
15199 | default: |
15200 | break; |
15201 | } |
15202 | break; |
15203 | case Opcode::Test32: |
15204 | switch (this->args.size()) { |
15205 | case 4: |
15206 | switch (this->args[0].kind()) { |
15207 | case Arg::ResCond: |
15208 | switch (this->args[1].kind()) { |
15209 | case Arg::Addr: |
15210 | case Arg::Stack: |
15211 | case Arg::CallArg: |
15212 | switch (this->args[2].kind()) { |
15213 | case Arg::Imm: |
15214 | switch (this->args[3].kind()) { |
15215 | case Arg::Tmp: |
15216 | #if CPU(X86) || CPU(X86_64) |
15217 | if (!Arg::isValidAddrForm(args[1].offset())) |
15218 | OPGEN_RETURN(false); |
15219 | if (!Arg::isValidImmForm(args[2].value())) |
15220 | OPGEN_RETURN(false); |
15221 | if (!args[3].tmp().isGP()) |
15222 | OPGEN_RETURN(false); |
15223 | OPGEN_RETURN(true); |
15224 | #endif |
15225 | break; |
15226 | break; |
15227 | default: |
15228 | break; |
15229 | } |
15230 | break; |
15231 | default: |
15232 | break; |
15233 | } |
15234 | break; |
15235 | case Arg::Tmp: |
15236 | switch (this->args[2].kind()) { |
15237 | case Arg::Tmp: |
15238 | switch (this->args[3].kind()) { |
15239 | case Arg::Tmp: |
15240 | if (!args[1].tmp().isGP()) |
15241 | OPGEN_RETURN(false); |
15242 | if (!args[2].tmp().isGP()) |
15243 | OPGEN_RETURN(false); |
15244 | if (!args[3].tmp().isGP()) |
15245 | OPGEN_RETURN(false); |
15246 | OPGEN_RETURN(true); |
15247 | break; |
15248 | break; |
15249 | default: |
15250 | break; |
15251 | } |
15252 | break; |
15253 | case Arg::BitImm: |
15254 | switch (this->args[3].kind()) { |
15255 | case Arg::Tmp: |
15256 | if (!args[1].tmp().isGP()) |
15257 | OPGEN_RETURN(false); |
15258 | if (!Arg::isValidBitImmForm(args[2].value())) |
15259 | OPGEN_RETURN(false); |
15260 | if (!args[3].tmp().isGP()) |
15261 | OPGEN_RETURN(false); |
15262 | OPGEN_RETURN(true); |
15263 | break; |
15264 | break; |
15265 | default: |
15266 | break; |
15267 | } |
15268 | break; |
15269 | default: |
15270 | break; |
15271 | } |
15272 | break; |
15273 | default: |
15274 | break; |
15275 | } |
15276 | break; |
15277 | default: |
15278 | break; |
15279 | } |
15280 | break; |
15281 | default: |
15282 | break; |
15283 | } |
15284 | break; |
15285 | case Opcode::Test64: |
15286 | switch (this->args.size()) { |
15287 | case 4: |
15288 | switch (this->args[0].kind()) { |
15289 | case Arg::ResCond: |
15290 | switch (this->args[1].kind()) { |
15291 | case Arg::Tmp: |
15292 | switch (this->args[2].kind()) { |
15293 | case Arg::Imm: |
15294 | switch (this->args[3].kind()) { |
15295 | case Arg::Tmp: |
15296 | #if CPU(X86_64) |
15297 | if (!args[1].tmp().isGP()) |
15298 | OPGEN_RETURN(false); |
15299 | if (!Arg::isValidImmForm(args[2].value())) |
15300 | OPGEN_RETURN(false); |
15301 | if (!args[3].tmp().isGP()) |
15302 | OPGEN_RETURN(false); |
15303 | OPGEN_RETURN(true); |
15304 | #endif |
15305 | break; |
15306 | break; |
15307 | default: |
15308 | break; |
15309 | } |
15310 | break; |
15311 | case Arg::Tmp: |
15312 | switch (this->args[3].kind()) { |
15313 | case Arg::Tmp: |
15314 | #if CPU(X86_64) || CPU(ARM64) |
15315 | if (!args[1].tmp().isGP()) |
15316 | OPGEN_RETURN(false); |
15317 | if (!args[2].tmp().isGP()) |
15318 | OPGEN_RETURN(false); |
15319 | if (!args[3].tmp().isGP()) |
15320 | OPGEN_RETURN(false); |
15321 | OPGEN_RETURN(true); |
15322 | #endif |
15323 | break; |
15324 | break; |
15325 | default: |
15326 | break; |
15327 | } |
15328 | break; |
15329 | default: |
15330 | break; |
15331 | } |
15332 | break; |
15333 | default: |
15334 | break; |
15335 | } |
15336 | break; |
15337 | default: |
15338 | break; |
15339 | } |
15340 | break; |
15341 | default: |
15342 | break; |
15343 | } |
15344 | break; |
15345 | case Opcode::CompareDouble: |
15346 | switch (this->args.size()) { |
15347 | case 4: |
15348 | switch (this->args[0].kind()) { |
15349 | case Arg::DoubleCond: |
15350 | switch (this->args[1].kind()) { |
15351 | case Arg::Tmp: |
15352 | switch (this->args[2].kind()) { |
15353 | case Arg::Tmp: |
15354 | switch (this->args[3].kind()) { |
15355 | case Arg::Tmp: |
15356 | if (!args[1].tmp().isFP()) |
15357 | OPGEN_RETURN(false); |
15358 | if (!args[2].tmp().isFP()) |
15359 | OPGEN_RETURN(false); |
15360 | if (!args[3].tmp().isGP()) |
15361 | OPGEN_RETURN(false); |
15362 | OPGEN_RETURN(true); |
15363 | break; |
15364 | break; |
15365 | default: |
15366 | break; |
15367 | } |
15368 | break; |
15369 | default: |
15370 | break; |
15371 | } |
15372 | break; |
15373 | default: |
15374 | break; |
15375 | } |
15376 | break; |
15377 | default: |
15378 | break; |
15379 | } |
15380 | break; |
15381 | default: |
15382 | break; |
15383 | } |
15384 | break; |
15385 | case Opcode::CompareFloat: |
15386 | switch (this->args.size()) { |
15387 | case 4: |
15388 | switch (this->args[0].kind()) { |
15389 | case Arg::DoubleCond: |
15390 | switch (this->args[1].kind()) { |
15391 | case Arg::Tmp: |
15392 | switch (this->args[2].kind()) { |
15393 | case Arg::Tmp: |
15394 | switch (this->args[3].kind()) { |
15395 | case Arg::Tmp: |
15396 | if (!args[1].tmp().isFP()) |
15397 | OPGEN_RETURN(false); |
15398 | if (!args[2].tmp().isFP()) |
15399 | OPGEN_RETURN(false); |
15400 | if (!args[3].tmp().isGP()) |
15401 | OPGEN_RETURN(false); |
15402 | OPGEN_RETURN(true); |
15403 | break; |
15404 | break; |
15405 | default: |
15406 | break; |
15407 | } |
15408 | break; |
15409 | default: |
15410 | break; |
15411 | } |
15412 | break; |
15413 | default: |
15414 | break; |
15415 | } |
15416 | break; |
15417 | default: |
15418 | break; |
15419 | } |
15420 | break; |
15421 | default: |
15422 | break; |
15423 | } |
15424 | break; |
15425 | case Opcode::Branch8: |
15426 | switch (this->args.size()) { |
15427 | case 3: |
15428 | switch (this->args[0].kind()) { |
15429 | case Arg::RelCond: |
15430 | switch (this->args[1].kind()) { |
15431 | case Arg::Addr: |
15432 | case Arg::Stack: |
15433 | case Arg::CallArg: |
15434 | switch (this->args[2].kind()) { |
15435 | case Arg::Imm: |
15436 | #if CPU(X86) || CPU(X86_64) |
15437 | if (!Arg::isValidAddrForm(args[1].offset())) |
15438 | OPGEN_RETURN(false); |
15439 | if (!Arg::isValidImmForm(args[2].value())) |
15440 | OPGEN_RETURN(false); |
15441 | OPGEN_RETURN(true); |
15442 | #endif |
15443 | break; |
15444 | break; |
15445 | default: |
15446 | break; |
15447 | } |
15448 | break; |
15449 | case Arg::Index: |
15450 | switch (this->args[2].kind()) { |
15451 | case Arg::Imm: |
15452 | #if CPU(X86) || CPU(X86_64) |
15453 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
15454 | OPGEN_RETURN(false); |
15455 | if (!Arg::isValidImmForm(args[2].value())) |
15456 | OPGEN_RETURN(false); |
15457 | OPGEN_RETURN(true); |
15458 | #endif |
15459 | break; |
15460 | break; |
15461 | default: |
15462 | break; |
15463 | } |
15464 | break; |
15465 | default: |
15466 | break; |
15467 | } |
15468 | break; |
15469 | default: |
15470 | break; |
15471 | } |
15472 | break; |
15473 | default: |
15474 | break; |
15475 | } |
15476 | break; |
15477 | case Opcode::Branch32: |
15478 | switch (this->args.size()) { |
15479 | case 3: |
15480 | switch (this->args[0].kind()) { |
15481 | case Arg::RelCond: |
15482 | switch (this->args[1].kind()) { |
15483 | case Arg::Addr: |
15484 | case Arg::Stack: |
15485 | case Arg::CallArg: |
15486 | switch (this->args[2].kind()) { |
15487 | case Arg::Imm: |
15488 | #if CPU(X86) || CPU(X86_64) |
15489 | if (!Arg::isValidAddrForm(args[1].offset())) |
15490 | OPGEN_RETURN(false); |
15491 | if (!Arg::isValidImmForm(args[2].value())) |
15492 | OPGEN_RETURN(false); |
15493 | OPGEN_RETURN(true); |
15494 | #endif |
15495 | break; |
15496 | break; |
15497 | case Arg::Tmp: |
15498 | #if CPU(X86) || CPU(X86_64) |
15499 | if (!Arg::isValidAddrForm(args[1].offset())) |
15500 | OPGEN_RETURN(false); |
15501 | if (!args[2].tmp().isGP()) |
15502 | OPGEN_RETURN(false); |
15503 | OPGEN_RETURN(true); |
15504 | #endif |
15505 | break; |
15506 | break; |
15507 | default: |
15508 | break; |
15509 | } |
15510 | break; |
15511 | case Arg::Tmp: |
15512 | switch (this->args[2].kind()) { |
15513 | case Arg::Tmp: |
15514 | if (!args[1].tmp().isGP()) |
15515 | OPGEN_RETURN(false); |
15516 | if (!args[2].tmp().isGP()) |
15517 | OPGEN_RETURN(false); |
15518 | OPGEN_RETURN(true); |
15519 | break; |
15520 | break; |
15521 | case Arg::Imm: |
15522 | if (!args[1].tmp().isGP()) |
15523 | OPGEN_RETURN(false); |
15524 | if (!Arg::isValidImmForm(args[2].value())) |
15525 | OPGEN_RETURN(false); |
15526 | OPGEN_RETURN(true); |
15527 | break; |
15528 | break; |
15529 | case Arg::Addr: |
15530 | case Arg::Stack: |
15531 | case Arg::CallArg: |
15532 | #if CPU(X86) || CPU(X86_64) |
15533 | if (!args[1].tmp().isGP()) |
15534 | OPGEN_RETURN(false); |
15535 | if (!Arg::isValidAddrForm(args[2].offset())) |
15536 | OPGEN_RETURN(false); |
15537 | OPGEN_RETURN(true); |
15538 | #endif |
15539 | break; |
15540 | break; |
15541 | default: |
15542 | break; |
15543 | } |
15544 | break; |
15545 | case Arg::Index: |
15546 | switch (this->args[2].kind()) { |
15547 | case Arg::Imm: |
15548 | #if CPU(X86) || CPU(X86_64) |
15549 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
15550 | OPGEN_RETURN(false); |
15551 | if (!Arg::isValidImmForm(args[2].value())) |
15552 | OPGEN_RETURN(false); |
15553 | OPGEN_RETURN(true); |
15554 | #endif |
15555 | break; |
15556 | break; |
15557 | default: |
15558 | break; |
15559 | } |
15560 | break; |
15561 | default: |
15562 | break; |
15563 | } |
15564 | break; |
15565 | default: |
15566 | break; |
15567 | } |
15568 | break; |
15569 | default: |
15570 | break; |
15571 | } |
15572 | break; |
15573 | case Opcode::Branch64: |
15574 | switch (this->args.size()) { |
15575 | case 3: |
15576 | switch (this->args[0].kind()) { |
15577 | case Arg::RelCond: |
15578 | switch (this->args[1].kind()) { |
15579 | case Arg::Tmp: |
15580 | switch (this->args[2].kind()) { |
15581 | case Arg::Tmp: |
15582 | #if CPU(X86_64) || CPU(ARM64) |
15583 | if (!args[1].tmp().isGP()) |
15584 | OPGEN_RETURN(false); |
15585 | if (!args[2].tmp().isGP()) |
15586 | OPGEN_RETURN(false); |
15587 | OPGEN_RETURN(true); |
15588 | #endif |
15589 | break; |
15590 | break; |
15591 | case Arg::Imm: |
15592 | #if CPU(X86_64) || CPU(ARM64) |
15593 | if (!args[1].tmp().isGP()) |
15594 | OPGEN_RETURN(false); |
15595 | if (!Arg::isValidImmForm(args[2].value())) |
15596 | OPGEN_RETURN(false); |
15597 | OPGEN_RETURN(true); |
15598 | #endif |
15599 | break; |
15600 | break; |
15601 | case Arg::Addr: |
15602 | case Arg::Stack: |
15603 | case Arg::CallArg: |
15604 | #if CPU(X86_64) |
15605 | if (!args[1].tmp().isGP()) |
15606 | OPGEN_RETURN(false); |
15607 | if (!Arg::isValidAddrForm(args[2].offset())) |
15608 | OPGEN_RETURN(false); |
15609 | OPGEN_RETURN(true); |
15610 | #endif |
15611 | break; |
15612 | break; |
15613 | default: |
15614 | break; |
15615 | } |
15616 | break; |
15617 | case Arg::Addr: |
15618 | case Arg::Stack: |
15619 | case Arg::CallArg: |
15620 | switch (this->args[2].kind()) { |
15621 | case Arg::Tmp: |
15622 | #if CPU(X86_64) |
15623 | if (!Arg::isValidAddrForm(args[1].offset())) |
15624 | OPGEN_RETURN(false); |
15625 | if (!args[2].tmp().isGP()) |
15626 | OPGEN_RETURN(false); |
15627 | OPGEN_RETURN(true); |
15628 | #endif |
15629 | break; |
15630 | break; |
15631 | case Arg::Imm: |
15632 | #if CPU(X86_64) |
15633 | if (!Arg::isValidAddrForm(args[1].offset())) |
15634 | OPGEN_RETURN(false); |
15635 | if (!Arg::isValidImmForm(args[2].value())) |
15636 | OPGEN_RETURN(false); |
15637 | OPGEN_RETURN(true); |
15638 | #endif |
15639 | break; |
15640 | break; |
15641 | default: |
15642 | break; |
15643 | } |
15644 | break; |
15645 | case Arg::Index: |
15646 | switch (this->args[2].kind()) { |
15647 | case Arg::Tmp: |
15648 | #if CPU(X86_64) |
15649 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
15650 | OPGEN_RETURN(false); |
15651 | if (!args[2].tmp().isGP()) |
15652 | OPGEN_RETURN(false); |
15653 | OPGEN_RETURN(true); |
15654 | #endif |
15655 | break; |
15656 | break; |
15657 | default: |
15658 | break; |
15659 | } |
15660 | break; |
15661 | default: |
15662 | break; |
15663 | } |
15664 | break; |
15665 | default: |
15666 | break; |
15667 | } |
15668 | break; |
15669 | default: |
15670 | break; |
15671 | } |
15672 | break; |
15673 | case Opcode::BranchTest8: |
15674 | switch (this->args.size()) { |
15675 | case 3: |
15676 | switch (this->args[0].kind()) { |
15677 | case Arg::ResCond: |
15678 | switch (this->args[1].kind()) { |
15679 | case Arg::Addr: |
15680 | case Arg::Stack: |
15681 | case Arg::CallArg: |
15682 | switch (this->args[2].kind()) { |
15683 | case Arg::BitImm: |
15684 | #if CPU(X86) || CPU(X86_64) |
15685 | if (!Arg::isValidAddrForm(args[1].offset())) |
15686 | OPGEN_RETURN(false); |
15687 | if (!Arg::isValidBitImmForm(args[2].value())) |
15688 | OPGEN_RETURN(false); |
15689 | OPGEN_RETURN(true); |
15690 | #endif |
15691 | break; |
15692 | break; |
15693 | default: |
15694 | break; |
15695 | } |
15696 | break; |
15697 | case Arg::Index: |
15698 | switch (this->args[2].kind()) { |
15699 | case Arg::BitImm: |
15700 | #if CPU(X86) || CPU(X86_64) |
15701 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width8)) |
15702 | OPGEN_RETURN(false); |
15703 | if (!Arg::isValidBitImmForm(args[2].value())) |
15704 | OPGEN_RETURN(false); |
15705 | OPGEN_RETURN(true); |
15706 | #endif |
15707 | break; |
15708 | break; |
15709 | default: |
15710 | break; |
15711 | } |
15712 | break; |
15713 | default: |
15714 | break; |
15715 | } |
15716 | break; |
15717 | default: |
15718 | break; |
15719 | } |
15720 | break; |
15721 | default: |
15722 | break; |
15723 | } |
15724 | break; |
15725 | case Opcode::BranchTest32: |
15726 | switch (this->args.size()) { |
15727 | case 3: |
15728 | switch (this->args[0].kind()) { |
15729 | case Arg::ResCond: |
15730 | switch (this->args[1].kind()) { |
15731 | case Arg::Tmp: |
15732 | switch (this->args[2].kind()) { |
15733 | case Arg::Tmp: |
15734 | if (!args[1].tmp().isGP()) |
15735 | OPGEN_RETURN(false); |
15736 | if (!args[2].tmp().isGP()) |
15737 | OPGEN_RETURN(false); |
15738 | OPGEN_RETURN(true); |
15739 | break; |
15740 | break; |
15741 | case Arg::BitImm: |
15742 | if (!args[1].tmp().isGP()) |
15743 | OPGEN_RETURN(false); |
15744 | if (!Arg::isValidBitImmForm(args[2].value())) |
15745 | OPGEN_RETURN(false); |
15746 | OPGEN_RETURN(true); |
15747 | break; |
15748 | break; |
15749 | default: |
15750 | break; |
15751 | } |
15752 | break; |
15753 | case Arg::Addr: |
15754 | case Arg::Stack: |
15755 | case Arg::CallArg: |
15756 | switch (this->args[2].kind()) { |
15757 | case Arg::BitImm: |
15758 | #if CPU(X86) || CPU(X86_64) |
15759 | if (!Arg::isValidAddrForm(args[1].offset())) |
15760 | OPGEN_RETURN(false); |
15761 | if (!Arg::isValidBitImmForm(args[2].value())) |
15762 | OPGEN_RETURN(false); |
15763 | OPGEN_RETURN(true); |
15764 | #endif |
15765 | break; |
15766 | break; |
15767 | default: |
15768 | break; |
15769 | } |
15770 | break; |
15771 | case Arg::Index: |
15772 | switch (this->args[2].kind()) { |
15773 | case Arg::BitImm: |
15774 | #if CPU(X86) || CPU(X86_64) |
15775 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
15776 | OPGEN_RETURN(false); |
15777 | if (!Arg::isValidBitImmForm(args[2].value())) |
15778 | OPGEN_RETURN(false); |
15779 | OPGEN_RETURN(true); |
15780 | #endif |
15781 | break; |
15782 | break; |
15783 | default: |
15784 | break; |
15785 | } |
15786 | break; |
15787 | default: |
15788 | break; |
15789 | } |
15790 | break; |
15791 | default: |
15792 | break; |
15793 | } |
15794 | break; |
15795 | default: |
15796 | break; |
15797 | } |
15798 | break; |
15799 | case Opcode::BranchTest64: |
15800 | switch (this->args.size()) { |
15801 | case 3: |
15802 | switch (this->args[0].kind()) { |
15803 | case Arg::ResCond: |
15804 | switch (this->args[1].kind()) { |
15805 | case Arg::Tmp: |
15806 | switch (this->args[2].kind()) { |
15807 | case Arg::Tmp: |
15808 | #if CPU(X86_64) || CPU(ARM64) |
15809 | if (!args[1].tmp().isGP()) |
15810 | OPGEN_RETURN(false); |
15811 | if (!args[2].tmp().isGP()) |
15812 | OPGEN_RETURN(false); |
15813 | OPGEN_RETURN(true); |
15814 | #endif |
15815 | break; |
15816 | break; |
15817 | #if USE(JSVALUE64) |
15818 | case Arg::BitImm64: |
15819 | #if CPU(ARM64) |
15820 | if (!args[1].tmp().isGP()) |
15821 | OPGEN_RETURN(false); |
15822 | if (!Arg::isValidBitImm64Form(args[2].value())) |
15823 | OPGEN_RETURN(false); |
15824 | OPGEN_RETURN(true); |
15825 | #endif |
15826 | break; |
15827 | break; |
15828 | #endif // USE(JSVALUE64) |
15829 | case Arg::BitImm: |
15830 | #if CPU(X86_64) |
15831 | if (!args[1].tmp().isGP()) |
15832 | OPGEN_RETURN(false); |
15833 | if (!Arg::isValidBitImmForm(args[2].value())) |
15834 | OPGEN_RETURN(false); |
15835 | OPGEN_RETURN(true); |
15836 | #endif |
15837 | break; |
15838 | break; |
15839 | default: |
15840 | break; |
15841 | } |
15842 | break; |
15843 | case Arg::Addr: |
15844 | case Arg::Stack: |
15845 | case Arg::CallArg: |
15846 | switch (this->args[2].kind()) { |
15847 | case Arg::BitImm: |
15848 | #if CPU(X86_64) |
15849 | if (!Arg::isValidAddrForm(args[1].offset())) |
15850 | OPGEN_RETURN(false); |
15851 | if (!Arg::isValidBitImmForm(args[2].value())) |
15852 | OPGEN_RETURN(false); |
15853 | OPGEN_RETURN(true); |
15854 | #endif |
15855 | break; |
15856 | break; |
15857 | case Arg::Tmp: |
15858 | #if CPU(X86_64) |
15859 | if (!Arg::isValidAddrForm(args[1].offset())) |
15860 | OPGEN_RETURN(false); |
15861 | if (!args[2].tmp().isGP()) |
15862 | OPGEN_RETURN(false); |
15863 | OPGEN_RETURN(true); |
15864 | #endif |
15865 | break; |
15866 | break; |
15867 | default: |
15868 | break; |
15869 | } |
15870 | break; |
15871 | case Arg::Index: |
15872 | switch (this->args[2].kind()) { |
15873 | case Arg::BitImm: |
15874 | #if CPU(X86_64) |
15875 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
15876 | OPGEN_RETURN(false); |
15877 | if (!Arg::isValidBitImmForm(args[2].value())) |
15878 | OPGEN_RETURN(false); |
15879 | OPGEN_RETURN(true); |
15880 | #endif |
15881 | break; |
15882 | break; |
15883 | default: |
15884 | break; |
15885 | } |
15886 | break; |
15887 | default: |
15888 | break; |
15889 | } |
15890 | break; |
15891 | default: |
15892 | break; |
15893 | } |
15894 | break; |
15895 | default: |
15896 | break; |
15897 | } |
15898 | break; |
15899 | case Opcode::BranchTestBit64: |
15900 | switch (this->args.size()) { |
15901 | case 3: |
15902 | switch (this->args[0].kind()) { |
15903 | case Arg::ResCond: |
15904 | switch (this->args[1].kind()) { |
15905 | case Arg::Tmp: |
15906 | switch (this->args[2].kind()) { |
15907 | case Arg::Imm: |
15908 | #if CPU(X86_64) |
15909 | if (!args[1].tmp().isGP()) |
15910 | OPGEN_RETURN(false); |
15911 | if (!Arg::isValidImmForm(args[2].value())) |
15912 | OPGEN_RETURN(false); |
15913 | OPGEN_RETURN(true); |
15914 | #endif |
15915 | break; |
15916 | break; |
15917 | case Arg::Tmp: |
15918 | #if CPU(X86_64) |
15919 | if (!args[1].tmp().isGP()) |
15920 | OPGEN_RETURN(false); |
15921 | if (!args[2].tmp().isGP()) |
15922 | OPGEN_RETURN(false); |
15923 | OPGEN_RETURN(true); |
15924 | #endif |
15925 | break; |
15926 | break; |
15927 | default: |
15928 | break; |
15929 | } |
15930 | break; |
15931 | case Arg::Addr: |
15932 | case Arg::Stack: |
15933 | case Arg::CallArg: |
15934 | switch (this->args[2].kind()) { |
15935 | case Arg::Imm: |
15936 | #if CPU(X86_64) |
15937 | if (!Arg::isValidAddrForm(args[1].offset())) |
15938 | OPGEN_RETURN(false); |
15939 | if (!Arg::isValidImmForm(args[2].value())) |
15940 | OPGEN_RETURN(false); |
15941 | OPGEN_RETURN(true); |
15942 | #endif |
15943 | break; |
15944 | break; |
15945 | default: |
15946 | break; |
15947 | } |
15948 | break; |
15949 | default: |
15950 | break; |
15951 | } |
15952 | break; |
15953 | default: |
15954 | break; |
15955 | } |
15956 | break; |
15957 | default: |
15958 | break; |
15959 | } |
15960 | break; |
15961 | case Opcode::BranchTestBit32: |
15962 | switch (this->args.size()) { |
15963 | case 3: |
15964 | switch (this->args[0].kind()) { |
15965 | case Arg::ResCond: |
15966 | switch (this->args[1].kind()) { |
15967 | case Arg::Tmp: |
15968 | switch (this->args[2].kind()) { |
15969 | case Arg::Imm: |
15970 | #if CPU(X86) || CPU(X86_64) |
15971 | if (!args[1].tmp().isGP()) |
15972 | OPGEN_RETURN(false); |
15973 | if (!Arg::isValidImmForm(args[2].value())) |
15974 | OPGEN_RETURN(false); |
15975 | OPGEN_RETURN(true); |
15976 | #endif |
15977 | break; |
15978 | break; |
15979 | case Arg::Tmp: |
15980 | #if CPU(X86) || CPU(X86_64) |
15981 | if (!args[1].tmp().isGP()) |
15982 | OPGEN_RETURN(false); |
15983 | if (!args[2].tmp().isGP()) |
15984 | OPGEN_RETURN(false); |
15985 | OPGEN_RETURN(true); |
15986 | #endif |
15987 | break; |
15988 | break; |
15989 | default: |
15990 | break; |
15991 | } |
15992 | break; |
15993 | case Arg::Addr: |
15994 | case Arg::Stack: |
15995 | case Arg::CallArg: |
15996 | switch (this->args[2].kind()) { |
15997 | case Arg::Imm: |
15998 | #if CPU(X86) || CPU(X86_64) |
15999 | if (!Arg::isValidAddrForm(args[1].offset())) |
16000 | OPGEN_RETURN(false); |
16001 | if (!Arg::isValidImmForm(args[2].value())) |
16002 | OPGEN_RETURN(false); |
16003 | OPGEN_RETURN(true); |
16004 | #endif |
16005 | break; |
16006 | break; |
16007 | default: |
16008 | break; |
16009 | } |
16010 | break; |
16011 | default: |
16012 | break; |
16013 | } |
16014 | break; |
16015 | default: |
16016 | break; |
16017 | } |
16018 | break; |
16019 | default: |
16020 | break; |
16021 | } |
16022 | break; |
16023 | case Opcode::BranchDouble: |
16024 | switch (this->args.size()) { |
16025 | case 3: |
16026 | switch (this->args[0].kind()) { |
16027 | case Arg::DoubleCond: |
16028 | switch (this->args[1].kind()) { |
16029 | case Arg::Tmp: |
16030 | switch (this->args[2].kind()) { |
16031 | case Arg::Tmp: |
16032 | if (!args[1].tmp().isFP()) |
16033 | OPGEN_RETURN(false); |
16034 | if (!args[2].tmp().isFP()) |
16035 | OPGEN_RETURN(false); |
16036 | OPGEN_RETURN(true); |
16037 | break; |
16038 | break; |
16039 | default: |
16040 | break; |
16041 | } |
16042 | break; |
16043 | default: |
16044 | break; |
16045 | } |
16046 | break; |
16047 | default: |
16048 | break; |
16049 | } |
16050 | break; |
16051 | default: |
16052 | break; |
16053 | } |
16054 | break; |
16055 | case Opcode::BranchFloat: |
16056 | switch (this->args.size()) { |
16057 | case 3: |
16058 | switch (this->args[0].kind()) { |
16059 | case Arg::DoubleCond: |
16060 | switch (this->args[1].kind()) { |
16061 | case Arg::Tmp: |
16062 | switch (this->args[2].kind()) { |
16063 | case Arg::Tmp: |
16064 | if (!args[1].tmp().isFP()) |
16065 | OPGEN_RETURN(false); |
16066 | if (!args[2].tmp().isFP()) |
16067 | OPGEN_RETURN(false); |
16068 | OPGEN_RETURN(true); |
16069 | break; |
16070 | break; |
16071 | default: |
16072 | break; |
16073 | } |
16074 | break; |
16075 | default: |
16076 | break; |
16077 | } |
16078 | break; |
16079 | default: |
16080 | break; |
16081 | } |
16082 | break; |
16083 | default: |
16084 | break; |
16085 | } |
16086 | break; |
16087 | case Opcode::BranchAdd32: |
16088 | switch (this->args.size()) { |
16089 | case 4: |
16090 | switch (this->args[0].kind()) { |
16091 | case Arg::ResCond: |
16092 | switch (this->args[1].kind()) { |
16093 | case Arg::Tmp: |
16094 | switch (this->args[2].kind()) { |
16095 | case Arg::Tmp: |
16096 | switch (this->args[3].kind()) { |
16097 | case Arg::Tmp: |
16098 | if (!args[1].tmp().isGP()) |
16099 | OPGEN_RETURN(false); |
16100 | if (!args[2].tmp().isGP()) |
16101 | OPGEN_RETURN(false); |
16102 | if (!args[3].tmp().isGP()) |
16103 | OPGEN_RETURN(false); |
16104 | OPGEN_RETURN(true); |
16105 | break; |
16106 | break; |
16107 | default: |
16108 | break; |
16109 | } |
16110 | break; |
16111 | case Arg::Addr: |
16112 | case Arg::Stack: |
16113 | case Arg::CallArg: |
16114 | switch (this->args[3].kind()) { |
16115 | case Arg::Tmp: |
16116 | #if CPU(X86) || CPU(X86_64) |
16117 | if (!args[1].tmp().isGP()) |
16118 | OPGEN_RETURN(false); |
16119 | if (!Arg::isValidAddrForm(args[2].offset())) |
16120 | OPGEN_RETURN(false); |
16121 | if (!args[3].tmp().isGP()) |
16122 | OPGEN_RETURN(false); |
16123 | OPGEN_RETURN(true); |
16124 | #endif |
16125 | break; |
16126 | break; |
16127 | default: |
16128 | break; |
16129 | } |
16130 | break; |
16131 | default: |
16132 | break; |
16133 | } |
16134 | break; |
16135 | case Arg::Addr: |
16136 | case Arg::Stack: |
16137 | case Arg::CallArg: |
16138 | switch (this->args[2].kind()) { |
16139 | case Arg::Tmp: |
16140 | switch (this->args[3].kind()) { |
16141 | case Arg::Tmp: |
16142 | #if CPU(X86) || CPU(X86_64) |
16143 | if (!Arg::isValidAddrForm(args[1].offset())) |
16144 | OPGEN_RETURN(false); |
16145 | if (!args[2].tmp().isGP()) |
16146 | OPGEN_RETURN(false); |
16147 | if (!args[3].tmp().isGP()) |
16148 | OPGEN_RETURN(false); |
16149 | OPGEN_RETURN(true); |
16150 | #endif |
16151 | break; |
16152 | break; |
16153 | default: |
16154 | break; |
16155 | } |
16156 | break; |
16157 | default: |
16158 | break; |
16159 | } |
16160 | break; |
16161 | default: |
16162 | break; |
16163 | } |
16164 | break; |
16165 | default: |
16166 | break; |
16167 | } |
16168 | break; |
16169 | case 3: |
16170 | switch (this->args[0].kind()) { |
16171 | case Arg::ResCond: |
16172 | switch (this->args[1].kind()) { |
16173 | case Arg::Tmp: |
16174 | switch (this->args[2].kind()) { |
16175 | case Arg::Tmp: |
16176 | if (!args[1].tmp().isGP()) |
16177 | OPGEN_RETURN(false); |
16178 | if (!args[2].tmp().isGP()) |
16179 | OPGEN_RETURN(false); |
16180 | OPGEN_RETURN(true); |
16181 | break; |
16182 | break; |
16183 | case Arg::Addr: |
16184 | case Arg::Stack: |
16185 | case Arg::CallArg: |
16186 | #if CPU(X86) || CPU(X86_64) |
16187 | if (!args[1].tmp().isGP()) |
16188 | OPGEN_RETURN(false); |
16189 | if (!Arg::isValidAddrForm(args[2].offset())) |
16190 | OPGEN_RETURN(false); |
16191 | OPGEN_RETURN(true); |
16192 | #endif |
16193 | break; |
16194 | break; |
16195 | default: |
16196 | break; |
16197 | } |
16198 | break; |
16199 | case Arg::Imm: |
16200 | switch (this->args[2].kind()) { |
16201 | case Arg::Tmp: |
16202 | if (!Arg::isValidImmForm(args[1].value())) |
16203 | OPGEN_RETURN(false); |
16204 | if (!args[2].tmp().isGP()) |
16205 | OPGEN_RETURN(false); |
16206 | OPGEN_RETURN(true); |
16207 | break; |
16208 | break; |
16209 | case Arg::Addr: |
16210 | case Arg::Stack: |
16211 | case Arg::CallArg: |
16212 | #if CPU(X86) || CPU(X86_64) |
16213 | if (!Arg::isValidImmForm(args[1].value())) |
16214 | OPGEN_RETURN(false); |
16215 | if (!Arg::isValidAddrForm(args[2].offset())) |
16216 | OPGEN_RETURN(false); |
16217 | OPGEN_RETURN(true); |
16218 | #endif |
16219 | break; |
16220 | break; |
16221 | default: |
16222 | break; |
16223 | } |
16224 | break; |
16225 | case Arg::Addr: |
16226 | case Arg::Stack: |
16227 | case Arg::CallArg: |
16228 | switch (this->args[2].kind()) { |
16229 | case Arg::Tmp: |
16230 | #if CPU(X86) || CPU(X86_64) |
16231 | if (!Arg::isValidAddrForm(args[1].offset())) |
16232 | OPGEN_RETURN(false); |
16233 | if (!args[2].tmp().isGP()) |
16234 | OPGEN_RETURN(false); |
16235 | OPGEN_RETURN(true); |
16236 | #endif |
16237 | break; |
16238 | break; |
16239 | default: |
16240 | break; |
16241 | } |
16242 | break; |
16243 | default: |
16244 | break; |
16245 | } |
16246 | break; |
16247 | default: |
16248 | break; |
16249 | } |
16250 | break; |
16251 | default: |
16252 | break; |
16253 | } |
16254 | break; |
16255 | case Opcode::BranchAdd64: |
16256 | switch (this->args.size()) { |
16257 | case 4: |
16258 | switch (this->args[0].kind()) { |
16259 | case Arg::ResCond: |
16260 | switch (this->args[1].kind()) { |
16261 | case Arg::Tmp: |
16262 | switch (this->args[2].kind()) { |
16263 | case Arg::Tmp: |
16264 | switch (this->args[3].kind()) { |
16265 | case Arg::Tmp: |
16266 | if (!args[1].tmp().isGP()) |
16267 | OPGEN_RETURN(false); |
16268 | if (!args[2].tmp().isGP()) |
16269 | OPGEN_RETURN(false); |
16270 | if (!args[3].tmp().isGP()) |
16271 | OPGEN_RETURN(false); |
16272 | OPGEN_RETURN(true); |
16273 | break; |
16274 | break; |
16275 | default: |
16276 | break; |
16277 | } |
16278 | break; |
16279 | case Arg::Addr: |
16280 | case Arg::Stack: |
16281 | case Arg::CallArg: |
16282 | switch (this->args[3].kind()) { |
16283 | case Arg::Tmp: |
16284 | #if CPU(X86) || CPU(X86_64) |
16285 | if (!args[1].tmp().isGP()) |
16286 | OPGEN_RETURN(false); |
16287 | if (!Arg::isValidAddrForm(args[2].offset())) |
16288 | OPGEN_RETURN(false); |
16289 | if (!args[3].tmp().isGP()) |
16290 | OPGEN_RETURN(false); |
16291 | OPGEN_RETURN(true); |
16292 | #endif |
16293 | break; |
16294 | break; |
16295 | default: |
16296 | break; |
16297 | } |
16298 | break; |
16299 | default: |
16300 | break; |
16301 | } |
16302 | break; |
16303 | case Arg::Addr: |
16304 | case Arg::Stack: |
16305 | case Arg::CallArg: |
16306 | switch (this->args[2].kind()) { |
16307 | case Arg::Tmp: |
16308 | switch (this->args[3].kind()) { |
16309 | case Arg::Tmp: |
16310 | #if CPU(X86) || CPU(X86_64) |
16311 | if (!Arg::isValidAddrForm(args[1].offset())) |
16312 | OPGEN_RETURN(false); |
16313 | if (!args[2].tmp().isGP()) |
16314 | OPGEN_RETURN(false); |
16315 | if (!args[3].tmp().isGP()) |
16316 | OPGEN_RETURN(false); |
16317 | OPGEN_RETURN(true); |
16318 | #endif |
16319 | break; |
16320 | break; |
16321 | default: |
16322 | break; |
16323 | } |
16324 | break; |
16325 | default: |
16326 | break; |
16327 | } |
16328 | break; |
16329 | default: |
16330 | break; |
16331 | } |
16332 | break; |
16333 | default: |
16334 | break; |
16335 | } |
16336 | break; |
16337 | case 3: |
16338 | switch (this->args[0].kind()) { |
16339 | case Arg::ResCond: |
16340 | switch (this->args[1].kind()) { |
16341 | case Arg::Imm: |
16342 | switch (this->args[2].kind()) { |
16343 | case Arg::Tmp: |
16344 | #if CPU(X86_64) || CPU(ARM64) |
16345 | if (!Arg::isValidImmForm(args[1].value())) |
16346 | OPGEN_RETURN(false); |
16347 | if (!args[2].tmp().isGP()) |
16348 | OPGEN_RETURN(false); |
16349 | OPGEN_RETURN(true); |
16350 | #endif |
16351 | break; |
16352 | break; |
16353 | default: |
16354 | break; |
16355 | } |
16356 | break; |
16357 | case Arg::Tmp: |
16358 | switch (this->args[2].kind()) { |
16359 | case Arg::Tmp: |
16360 | #if CPU(X86_64) || CPU(ARM64) |
16361 | if (!args[1].tmp().isGP()) |
16362 | OPGEN_RETURN(false); |
16363 | if (!args[2].tmp().isGP()) |
16364 | OPGEN_RETURN(false); |
16365 | OPGEN_RETURN(true); |
16366 | #endif |
16367 | break; |
16368 | break; |
16369 | default: |
16370 | break; |
16371 | } |
16372 | break; |
16373 | case Arg::Addr: |
16374 | case Arg::Stack: |
16375 | case Arg::CallArg: |
16376 | switch (this->args[2].kind()) { |
16377 | case Arg::Tmp: |
16378 | #if CPU(X86_64) |
16379 | if (!Arg::isValidAddrForm(args[1].offset())) |
16380 | OPGEN_RETURN(false); |
16381 | if (!args[2].tmp().isGP()) |
16382 | OPGEN_RETURN(false); |
16383 | OPGEN_RETURN(true); |
16384 | #endif |
16385 | break; |
16386 | break; |
16387 | default: |
16388 | break; |
16389 | } |
16390 | break; |
16391 | default: |
16392 | break; |
16393 | } |
16394 | break; |
16395 | default: |
16396 | break; |
16397 | } |
16398 | break; |
16399 | default: |
16400 | break; |
16401 | } |
16402 | break; |
16403 | case Opcode::BranchMul32: |
16404 | switch (this->args.size()) { |
16405 | case 3: |
16406 | switch (this->args[0].kind()) { |
16407 | case Arg::ResCond: |
16408 | switch (this->args[1].kind()) { |
16409 | case Arg::Tmp: |
16410 | switch (this->args[2].kind()) { |
16411 | case Arg::Tmp: |
16412 | #if CPU(X86) || CPU(X86_64) |
16413 | if (!args[1].tmp().isGP()) |
16414 | OPGEN_RETURN(false); |
16415 | if (!args[2].tmp().isGP()) |
16416 | OPGEN_RETURN(false); |
16417 | OPGEN_RETURN(true); |
16418 | #endif |
16419 | break; |
16420 | break; |
16421 | default: |
16422 | break; |
16423 | } |
16424 | break; |
16425 | case Arg::Addr: |
16426 | case Arg::Stack: |
16427 | case Arg::CallArg: |
16428 | switch (this->args[2].kind()) { |
16429 | case Arg::Tmp: |
16430 | #if CPU(X86) || CPU(X86_64) |
16431 | if (!Arg::isValidAddrForm(args[1].offset())) |
16432 | OPGEN_RETURN(false); |
16433 | if (!args[2].tmp().isGP()) |
16434 | OPGEN_RETURN(false); |
16435 | OPGEN_RETURN(true); |
16436 | #endif |
16437 | break; |
16438 | break; |
16439 | default: |
16440 | break; |
16441 | } |
16442 | break; |
16443 | default: |
16444 | break; |
16445 | } |
16446 | break; |
16447 | default: |
16448 | break; |
16449 | } |
16450 | break; |
16451 | case 4: |
16452 | switch (this->args[0].kind()) { |
16453 | case Arg::ResCond: |
16454 | switch (this->args[1].kind()) { |
16455 | case Arg::Tmp: |
16456 | switch (this->args[2].kind()) { |
16457 | case Arg::Imm: |
16458 | switch (this->args[3].kind()) { |
16459 | case Arg::Tmp: |
16460 | #if CPU(X86) || CPU(X86_64) |
16461 | if (!args[1].tmp().isGP()) |
16462 | OPGEN_RETURN(false); |
16463 | if (!Arg::isValidImmForm(args[2].value())) |
16464 | OPGEN_RETURN(false); |
16465 | if (!args[3].tmp().isGP()) |
16466 | OPGEN_RETURN(false); |
16467 | OPGEN_RETURN(true); |
16468 | #endif |
16469 | break; |
16470 | break; |
16471 | default: |
16472 | break; |
16473 | } |
16474 | break; |
16475 | default: |
16476 | break; |
16477 | } |
16478 | break; |
16479 | default: |
16480 | break; |
16481 | } |
16482 | break; |
16483 | default: |
16484 | break; |
16485 | } |
16486 | break; |
16487 | case 6: |
16488 | switch (this->args[0].kind()) { |
16489 | case Arg::ResCond: |
16490 | switch (this->args[1].kind()) { |
16491 | case Arg::Tmp: |
16492 | switch (this->args[2].kind()) { |
16493 | case Arg::Tmp: |
16494 | switch (this->args[3].kind()) { |
16495 | case Arg::Tmp: |
16496 | switch (this->args[4].kind()) { |
16497 | case Arg::Tmp: |
16498 | switch (this->args[5].kind()) { |
16499 | case Arg::Tmp: |
16500 | #if CPU(ARM64) |
16501 | if (!args[1].tmp().isGP()) |
16502 | OPGEN_RETURN(false); |
16503 | if (!args[2].tmp().isGP()) |
16504 | OPGEN_RETURN(false); |
16505 | if (!args[3].tmp().isGP()) |
16506 | OPGEN_RETURN(false); |
16507 | if (!args[4].tmp().isGP()) |
16508 | OPGEN_RETURN(false); |
16509 | if (!args[5].tmp().isGP()) |
16510 | OPGEN_RETURN(false); |
16511 | OPGEN_RETURN(true); |
16512 | #endif |
16513 | break; |
16514 | break; |
16515 | default: |
16516 | break; |
16517 | } |
16518 | break; |
16519 | default: |
16520 | break; |
16521 | } |
16522 | break; |
16523 | default: |
16524 | break; |
16525 | } |
16526 | break; |
16527 | default: |
16528 | break; |
16529 | } |
16530 | break; |
16531 | default: |
16532 | break; |
16533 | } |
16534 | break; |
16535 | default: |
16536 | break; |
16537 | } |
16538 | break; |
16539 | default: |
16540 | break; |
16541 | } |
16542 | break; |
16543 | case Opcode::BranchMul64: |
16544 | switch (this->args.size()) { |
16545 | case 3: |
16546 | switch (this->args[0].kind()) { |
16547 | case Arg::ResCond: |
16548 | switch (this->args[1].kind()) { |
16549 | case Arg::Tmp: |
16550 | switch (this->args[2].kind()) { |
16551 | case Arg::Tmp: |
16552 | #if CPU(X86_64) |
16553 | if (!args[1].tmp().isGP()) |
16554 | OPGEN_RETURN(false); |
16555 | if (!args[2].tmp().isGP()) |
16556 | OPGEN_RETURN(false); |
16557 | OPGEN_RETURN(true); |
16558 | #endif |
16559 | break; |
16560 | break; |
16561 | default: |
16562 | break; |
16563 | } |
16564 | break; |
16565 | default: |
16566 | break; |
16567 | } |
16568 | break; |
16569 | default: |
16570 | break; |
16571 | } |
16572 | break; |
16573 | case 6: |
16574 | switch (this->args[0].kind()) { |
16575 | case Arg::ResCond: |
16576 | switch (this->args[1].kind()) { |
16577 | case Arg::Tmp: |
16578 | switch (this->args[2].kind()) { |
16579 | case Arg::Tmp: |
16580 | switch (this->args[3].kind()) { |
16581 | case Arg::Tmp: |
16582 | switch (this->args[4].kind()) { |
16583 | case Arg::Tmp: |
16584 | switch (this->args[5].kind()) { |
16585 | case Arg::Tmp: |
16586 | #if CPU(ARM64) |
16587 | if (!args[1].tmp().isGP()) |
16588 | OPGEN_RETURN(false); |
16589 | if (!args[2].tmp().isGP()) |
16590 | OPGEN_RETURN(false); |
16591 | if (!args[3].tmp().isGP()) |
16592 | OPGEN_RETURN(false); |
16593 | if (!args[4].tmp().isGP()) |
16594 | OPGEN_RETURN(false); |
16595 | if (!args[5].tmp().isGP()) |
16596 | OPGEN_RETURN(false); |
16597 | OPGEN_RETURN(true); |
16598 | #endif |
16599 | break; |
16600 | break; |
16601 | default: |
16602 | break; |
16603 | } |
16604 | break; |
16605 | default: |
16606 | break; |
16607 | } |
16608 | break; |
16609 | default: |
16610 | break; |
16611 | } |
16612 | break; |
16613 | default: |
16614 | break; |
16615 | } |
16616 | break; |
16617 | default: |
16618 | break; |
16619 | } |
16620 | break; |
16621 | default: |
16622 | break; |
16623 | } |
16624 | break; |
16625 | default: |
16626 | break; |
16627 | } |
16628 | break; |
16629 | case Opcode::BranchSub32: |
16630 | switch (this->args.size()) { |
16631 | case 3: |
16632 | switch (this->args[0].kind()) { |
16633 | case Arg::ResCond: |
16634 | switch (this->args[1].kind()) { |
16635 | case Arg::Tmp: |
16636 | switch (this->args[2].kind()) { |
16637 | case Arg::Tmp: |
16638 | if (!args[1].tmp().isGP()) |
16639 | OPGEN_RETURN(false); |
16640 | if (!args[2].tmp().isGP()) |
16641 | OPGEN_RETURN(false); |
16642 | OPGEN_RETURN(true); |
16643 | break; |
16644 | break; |
16645 | case Arg::Addr: |
16646 | case Arg::Stack: |
16647 | case Arg::CallArg: |
16648 | #if CPU(X86) || CPU(X86_64) |
16649 | if (!args[1].tmp().isGP()) |
16650 | OPGEN_RETURN(false); |
16651 | if (!Arg::isValidAddrForm(args[2].offset())) |
16652 | OPGEN_RETURN(false); |
16653 | OPGEN_RETURN(true); |
16654 | #endif |
16655 | break; |
16656 | break; |
16657 | default: |
16658 | break; |
16659 | } |
16660 | break; |
16661 | case Arg::Imm: |
16662 | switch (this->args[2].kind()) { |
16663 | case Arg::Tmp: |
16664 | if (!Arg::isValidImmForm(args[1].value())) |
16665 | OPGEN_RETURN(false); |
16666 | if (!args[2].tmp().isGP()) |
16667 | OPGEN_RETURN(false); |
16668 | OPGEN_RETURN(true); |
16669 | break; |
16670 | break; |
16671 | case Arg::Addr: |
16672 | case Arg::Stack: |
16673 | case Arg::CallArg: |
16674 | #if CPU(X86) || CPU(X86_64) |
16675 | if (!Arg::isValidImmForm(args[1].value())) |
16676 | OPGEN_RETURN(false); |
16677 | if (!Arg::isValidAddrForm(args[2].offset())) |
16678 | OPGEN_RETURN(false); |
16679 | OPGEN_RETURN(true); |
16680 | #endif |
16681 | break; |
16682 | break; |
16683 | default: |
16684 | break; |
16685 | } |
16686 | break; |
16687 | case Arg::Addr: |
16688 | case Arg::Stack: |
16689 | case Arg::CallArg: |
16690 | switch (this->args[2].kind()) { |
16691 | case Arg::Tmp: |
16692 | #if CPU(X86) || CPU(X86_64) |
16693 | if (!Arg::isValidAddrForm(args[1].offset())) |
16694 | OPGEN_RETURN(false); |
16695 | if (!args[2].tmp().isGP()) |
16696 | OPGEN_RETURN(false); |
16697 | OPGEN_RETURN(true); |
16698 | #endif |
16699 | break; |
16700 | break; |
16701 | default: |
16702 | break; |
16703 | } |
16704 | break; |
16705 | default: |
16706 | break; |
16707 | } |
16708 | break; |
16709 | default: |
16710 | break; |
16711 | } |
16712 | break; |
16713 | default: |
16714 | break; |
16715 | } |
16716 | break; |
16717 | case Opcode::BranchSub64: |
16718 | switch (this->args.size()) { |
16719 | case 3: |
16720 | switch (this->args[0].kind()) { |
16721 | case Arg::ResCond: |
16722 | switch (this->args[1].kind()) { |
16723 | case Arg::Imm: |
16724 | switch (this->args[2].kind()) { |
16725 | case Arg::Tmp: |
16726 | #if CPU(X86_64) || CPU(ARM64) |
16727 | if (!Arg::isValidImmForm(args[1].value())) |
16728 | OPGEN_RETURN(false); |
16729 | if (!args[2].tmp().isGP()) |
16730 | OPGEN_RETURN(false); |
16731 | OPGEN_RETURN(true); |
16732 | #endif |
16733 | break; |
16734 | break; |
16735 | default: |
16736 | break; |
16737 | } |
16738 | break; |
16739 | case Arg::Tmp: |
16740 | switch (this->args[2].kind()) { |
16741 | case Arg::Tmp: |
16742 | #if CPU(X86_64) || CPU(ARM64) |
16743 | if (!args[1].tmp().isGP()) |
16744 | OPGEN_RETURN(false); |
16745 | if (!args[2].tmp().isGP()) |
16746 | OPGEN_RETURN(false); |
16747 | OPGEN_RETURN(true); |
16748 | #endif |
16749 | break; |
16750 | break; |
16751 | default: |
16752 | break; |
16753 | } |
16754 | break; |
16755 | default: |
16756 | break; |
16757 | } |
16758 | break; |
16759 | default: |
16760 | break; |
16761 | } |
16762 | break; |
16763 | default: |
16764 | break; |
16765 | } |
16766 | break; |
16767 | case Opcode::BranchNeg32: |
16768 | switch (this->args.size()) { |
16769 | case 2: |
16770 | switch (this->args[0].kind()) { |
16771 | case Arg::ResCond: |
16772 | switch (this->args[1].kind()) { |
16773 | case Arg::Tmp: |
16774 | if (!args[1].tmp().isGP()) |
16775 | OPGEN_RETURN(false); |
16776 | OPGEN_RETURN(true); |
16777 | break; |
16778 | break; |
16779 | default: |
16780 | break; |
16781 | } |
16782 | break; |
16783 | default: |
16784 | break; |
16785 | } |
16786 | break; |
16787 | default: |
16788 | break; |
16789 | } |
16790 | break; |
16791 | case Opcode::BranchNeg64: |
16792 | switch (this->args.size()) { |
16793 | case 2: |
16794 | switch (this->args[0].kind()) { |
16795 | case Arg::ResCond: |
16796 | switch (this->args[1].kind()) { |
16797 | case Arg::Tmp: |
16798 | #if CPU(X86_64) || CPU(ARM64) |
16799 | if (!args[1].tmp().isGP()) |
16800 | OPGEN_RETURN(false); |
16801 | OPGEN_RETURN(true); |
16802 | #endif |
16803 | break; |
16804 | break; |
16805 | default: |
16806 | break; |
16807 | } |
16808 | break; |
16809 | default: |
16810 | break; |
16811 | } |
16812 | break; |
16813 | default: |
16814 | break; |
16815 | } |
16816 | break; |
16817 | case Opcode::MoveConditionally32: |
16818 | switch (this->args.size()) { |
16819 | case 5: |
16820 | switch (this->args[0].kind()) { |
16821 | case Arg::RelCond: |
16822 | switch (this->args[1].kind()) { |
16823 | case Arg::Tmp: |
16824 | switch (this->args[2].kind()) { |
16825 | case Arg::Tmp: |
16826 | switch (this->args[3].kind()) { |
16827 | case Arg::Tmp: |
16828 | switch (this->args[4].kind()) { |
16829 | case Arg::Tmp: |
16830 | if (!args[1].tmp().isGP()) |
16831 | OPGEN_RETURN(false); |
16832 | if (!args[2].tmp().isGP()) |
16833 | OPGEN_RETURN(false); |
16834 | if (!args[3].tmp().isGP()) |
16835 | OPGEN_RETURN(false); |
16836 | if (!args[4].tmp().isGP()) |
16837 | OPGEN_RETURN(false); |
16838 | OPGEN_RETURN(true); |
16839 | break; |
16840 | break; |
16841 | default: |
16842 | break; |
16843 | } |
16844 | break; |
16845 | default: |
16846 | break; |
16847 | } |
16848 | break; |
16849 | default: |
16850 | break; |
16851 | } |
16852 | break; |
16853 | default: |
16854 | break; |
16855 | } |
16856 | break; |
16857 | default: |
16858 | break; |
16859 | } |
16860 | break; |
16861 | case 6: |
16862 | switch (this->args[0].kind()) { |
16863 | case Arg::RelCond: |
16864 | switch (this->args[1].kind()) { |
16865 | case Arg::Tmp: |
16866 | switch (this->args[2].kind()) { |
16867 | case Arg::Tmp: |
16868 | switch (this->args[3].kind()) { |
16869 | case Arg::Tmp: |
16870 | switch (this->args[4].kind()) { |
16871 | case Arg::Tmp: |
16872 | switch (this->args[5].kind()) { |
16873 | case Arg::Tmp: |
16874 | if (!args[1].tmp().isGP()) |
16875 | OPGEN_RETURN(false); |
16876 | if (!args[2].tmp().isGP()) |
16877 | OPGEN_RETURN(false); |
16878 | if (!args[3].tmp().isGP()) |
16879 | OPGEN_RETURN(false); |
16880 | if (!args[4].tmp().isGP()) |
16881 | OPGEN_RETURN(false); |
16882 | if (!args[5].tmp().isGP()) |
16883 | OPGEN_RETURN(false); |
16884 | OPGEN_RETURN(true); |
16885 | break; |
16886 | break; |
16887 | default: |
16888 | break; |
16889 | } |
16890 | break; |
16891 | default: |
16892 | break; |
16893 | } |
16894 | break; |
16895 | default: |
16896 | break; |
16897 | } |
16898 | break; |
16899 | case Arg::Imm: |
16900 | switch (this->args[3].kind()) { |
16901 | case Arg::Tmp: |
16902 | switch (this->args[4].kind()) { |
16903 | case Arg::Tmp: |
16904 | switch (this->args[5].kind()) { |
16905 | case Arg::Tmp: |
16906 | if (!args[1].tmp().isGP()) |
16907 | OPGEN_RETURN(false); |
16908 | if (!Arg::isValidImmForm(args[2].value())) |
16909 | OPGEN_RETURN(false); |
16910 | if (!args[3].tmp().isGP()) |
16911 | OPGEN_RETURN(false); |
16912 | if (!args[4].tmp().isGP()) |
16913 | OPGEN_RETURN(false); |
16914 | if (!args[5].tmp().isGP()) |
16915 | OPGEN_RETURN(false); |
16916 | OPGEN_RETURN(true); |
16917 | break; |
16918 | break; |
16919 | default: |
16920 | break; |
16921 | } |
16922 | break; |
16923 | default: |
16924 | break; |
16925 | } |
16926 | break; |
16927 | default: |
16928 | break; |
16929 | } |
16930 | break; |
16931 | default: |
16932 | break; |
16933 | } |
16934 | break; |
16935 | default: |
16936 | break; |
16937 | } |
16938 | break; |
16939 | default: |
16940 | break; |
16941 | } |
16942 | break; |
16943 | default: |
16944 | break; |
16945 | } |
16946 | break; |
16947 | case Opcode::MoveConditionally64: |
16948 | switch (this->args.size()) { |
16949 | case 5: |
16950 | switch (this->args[0].kind()) { |
16951 | case Arg::RelCond: |
16952 | switch (this->args[1].kind()) { |
16953 | case Arg::Tmp: |
16954 | switch (this->args[2].kind()) { |
16955 | case Arg::Tmp: |
16956 | switch (this->args[3].kind()) { |
16957 | case Arg::Tmp: |
16958 | switch (this->args[4].kind()) { |
16959 | case Arg::Tmp: |
16960 | #if CPU(X86_64) || CPU(ARM64) |
16961 | if (!args[1].tmp().isGP()) |
16962 | OPGEN_RETURN(false); |
16963 | if (!args[2].tmp().isGP()) |
16964 | OPGEN_RETURN(false); |
16965 | if (!args[3].tmp().isGP()) |
16966 | OPGEN_RETURN(false); |
16967 | if (!args[4].tmp().isGP()) |
16968 | OPGEN_RETURN(false); |
16969 | OPGEN_RETURN(true); |
16970 | #endif |
16971 | break; |
16972 | break; |
16973 | default: |
16974 | break; |
16975 | } |
16976 | break; |
16977 | default: |
16978 | break; |
16979 | } |
16980 | break; |
16981 | default: |
16982 | break; |
16983 | } |
16984 | break; |
16985 | default: |
16986 | break; |
16987 | } |
16988 | break; |
16989 | default: |
16990 | break; |
16991 | } |
16992 | break; |
16993 | case 6: |
16994 | switch (this->args[0].kind()) { |
16995 | case Arg::RelCond: |
16996 | switch (this->args[1].kind()) { |
16997 | case Arg::Tmp: |
16998 | switch (this->args[2].kind()) { |
16999 | case Arg::Tmp: |
17000 | switch (this->args[3].kind()) { |
17001 | case Arg::Tmp: |
17002 | switch (this->args[4].kind()) { |
17003 | case Arg::Tmp: |
17004 | switch (this->args[5].kind()) { |
17005 | case Arg::Tmp: |
17006 | #if CPU(X86_64) || CPU(ARM64) |
17007 | if (!args[1].tmp().isGP()) |
17008 | OPGEN_RETURN(false); |
17009 | if (!args[2].tmp().isGP()) |
17010 | OPGEN_RETURN(false); |
17011 | if (!args[3].tmp().isGP()) |
17012 | OPGEN_RETURN(false); |
17013 | if (!args[4].tmp().isGP()) |
17014 | OPGEN_RETURN(false); |
17015 | if (!args[5].tmp().isGP()) |
17016 | OPGEN_RETURN(false); |
17017 | OPGEN_RETURN(true); |
17018 | #endif |
17019 | break; |
17020 | break; |
17021 | default: |
17022 | break; |
17023 | } |
17024 | break; |
17025 | default: |
17026 | break; |
17027 | } |
17028 | break; |
17029 | default: |
17030 | break; |
17031 | } |
17032 | break; |
17033 | case Arg::Imm: |
17034 | switch (this->args[3].kind()) { |
17035 | case Arg::Tmp: |
17036 | switch (this->args[4].kind()) { |
17037 | case Arg::Tmp: |
17038 | switch (this->args[5].kind()) { |
17039 | case Arg::Tmp: |
17040 | #if CPU(X86_64) || CPU(ARM64) |
17041 | if (!args[1].tmp().isGP()) |
17042 | OPGEN_RETURN(false); |
17043 | if (!Arg::isValidImmForm(args[2].value())) |
17044 | OPGEN_RETURN(false); |
17045 | if (!args[3].tmp().isGP()) |
17046 | OPGEN_RETURN(false); |
17047 | if (!args[4].tmp().isGP()) |
17048 | OPGEN_RETURN(false); |
17049 | if (!args[5].tmp().isGP()) |
17050 | OPGEN_RETURN(false); |
17051 | OPGEN_RETURN(true); |
17052 | #endif |
17053 | break; |
17054 | break; |
17055 | default: |
17056 | break; |
17057 | } |
17058 | break; |
17059 | default: |
17060 | break; |
17061 | } |
17062 | break; |
17063 | default: |
17064 | break; |
17065 | } |
17066 | break; |
17067 | default: |
17068 | break; |
17069 | } |
17070 | break; |
17071 | default: |
17072 | break; |
17073 | } |
17074 | break; |
17075 | default: |
17076 | break; |
17077 | } |
17078 | break; |
17079 | default: |
17080 | break; |
17081 | } |
17082 | break; |
17083 | case Opcode::MoveConditionallyTest32: |
17084 | switch (this->args.size()) { |
17085 | case 5: |
17086 | switch (this->args[0].kind()) { |
17087 | case Arg::ResCond: |
17088 | switch (this->args[1].kind()) { |
17089 | case Arg::Tmp: |
17090 | switch (this->args[2].kind()) { |
17091 | case Arg::Tmp: |
17092 | switch (this->args[3].kind()) { |
17093 | case Arg::Tmp: |
17094 | switch (this->args[4].kind()) { |
17095 | case Arg::Tmp: |
17096 | if (!args[1].tmp().isGP()) |
17097 | OPGEN_RETURN(false); |
17098 | if (!args[2].tmp().isGP()) |
17099 | OPGEN_RETURN(false); |
17100 | if (!args[3].tmp().isGP()) |
17101 | OPGEN_RETURN(false); |
17102 | if (!args[4].tmp().isGP()) |
17103 | OPGEN_RETURN(false); |
17104 | OPGEN_RETURN(true); |
17105 | break; |
17106 | break; |
17107 | default: |
17108 | break; |
17109 | } |
17110 | break; |
17111 | default: |
17112 | break; |
17113 | } |
17114 | break; |
17115 | case Arg::Imm: |
17116 | switch (this->args[3].kind()) { |
17117 | case Arg::Tmp: |
17118 | switch (this->args[4].kind()) { |
17119 | case Arg::Tmp: |
17120 | #if CPU(X86) || CPU(X86_64) |
17121 | if (!args[1].tmp().isGP()) |
17122 | OPGEN_RETURN(false); |
17123 | if (!Arg::isValidImmForm(args[2].value())) |
17124 | OPGEN_RETURN(false); |
17125 | if (!args[3].tmp().isGP()) |
17126 | OPGEN_RETURN(false); |
17127 | if (!args[4].tmp().isGP()) |
17128 | OPGEN_RETURN(false); |
17129 | OPGEN_RETURN(true); |
17130 | #endif |
17131 | break; |
17132 | break; |
17133 | default: |
17134 | break; |
17135 | } |
17136 | break; |
17137 | default: |
17138 | break; |
17139 | } |
17140 | break; |
17141 | default: |
17142 | break; |
17143 | } |
17144 | break; |
17145 | default: |
17146 | break; |
17147 | } |
17148 | break; |
17149 | default: |
17150 | break; |
17151 | } |
17152 | break; |
17153 | case 6: |
17154 | switch (this->args[0].kind()) { |
17155 | case Arg::ResCond: |
17156 | switch (this->args[1].kind()) { |
17157 | case Arg::Tmp: |
17158 | switch (this->args[2].kind()) { |
17159 | case Arg::Tmp: |
17160 | switch (this->args[3].kind()) { |
17161 | case Arg::Tmp: |
17162 | switch (this->args[4].kind()) { |
17163 | case Arg::Tmp: |
17164 | switch (this->args[5].kind()) { |
17165 | case Arg::Tmp: |
17166 | if (!args[1].tmp().isGP()) |
17167 | OPGEN_RETURN(false); |
17168 | if (!args[2].tmp().isGP()) |
17169 | OPGEN_RETURN(false); |
17170 | if (!args[3].tmp().isGP()) |
17171 | OPGEN_RETURN(false); |
17172 | if (!args[4].tmp().isGP()) |
17173 | OPGEN_RETURN(false); |
17174 | if (!args[5].tmp().isGP()) |
17175 | OPGEN_RETURN(false); |
17176 | OPGEN_RETURN(true); |
17177 | break; |
17178 | break; |
17179 | default: |
17180 | break; |
17181 | } |
17182 | break; |
17183 | default: |
17184 | break; |
17185 | } |
17186 | break; |
17187 | default: |
17188 | break; |
17189 | } |
17190 | break; |
17191 | case Arg::BitImm: |
17192 | switch (this->args[3].kind()) { |
17193 | case Arg::Tmp: |
17194 | switch (this->args[4].kind()) { |
17195 | case Arg::Tmp: |
17196 | switch (this->args[5].kind()) { |
17197 | case Arg::Tmp: |
17198 | if (!args[1].tmp().isGP()) |
17199 | OPGEN_RETURN(false); |
17200 | if (!Arg::isValidBitImmForm(args[2].value())) |
17201 | OPGEN_RETURN(false); |
17202 | if (!args[3].tmp().isGP()) |
17203 | OPGEN_RETURN(false); |
17204 | if (!args[4].tmp().isGP()) |
17205 | OPGEN_RETURN(false); |
17206 | if (!args[5].tmp().isGP()) |
17207 | OPGEN_RETURN(false); |
17208 | OPGEN_RETURN(true); |
17209 | break; |
17210 | break; |
17211 | default: |
17212 | break; |
17213 | } |
17214 | break; |
17215 | default: |
17216 | break; |
17217 | } |
17218 | break; |
17219 | default: |
17220 | break; |
17221 | } |
17222 | break; |
17223 | default: |
17224 | break; |
17225 | } |
17226 | break; |
17227 | default: |
17228 | break; |
17229 | } |
17230 | break; |
17231 | default: |
17232 | break; |
17233 | } |
17234 | break; |
17235 | default: |
17236 | break; |
17237 | } |
17238 | break; |
17239 | case Opcode::MoveConditionallyTest64: |
17240 | switch (this->args.size()) { |
17241 | case 5: |
17242 | switch (this->args[0].kind()) { |
17243 | case Arg::ResCond: |
17244 | switch (this->args[1].kind()) { |
17245 | case Arg::Tmp: |
17246 | switch (this->args[2].kind()) { |
17247 | case Arg::Tmp: |
17248 | switch (this->args[3].kind()) { |
17249 | case Arg::Tmp: |
17250 | switch (this->args[4].kind()) { |
17251 | case Arg::Tmp: |
17252 | #if CPU(X86_64) || CPU(ARM64) |
17253 | if (!args[1].tmp().isGP()) |
17254 | OPGEN_RETURN(false); |
17255 | if (!args[2].tmp().isGP()) |
17256 | OPGEN_RETURN(false); |
17257 | if (!args[3].tmp().isGP()) |
17258 | OPGEN_RETURN(false); |
17259 | if (!args[4].tmp().isGP()) |
17260 | OPGEN_RETURN(false); |
17261 | OPGEN_RETURN(true); |
17262 | #endif |
17263 | break; |
17264 | break; |
17265 | default: |
17266 | break; |
17267 | } |
17268 | break; |
17269 | default: |
17270 | break; |
17271 | } |
17272 | break; |
17273 | case Arg::Imm: |
17274 | switch (this->args[3].kind()) { |
17275 | case Arg::Tmp: |
17276 | switch (this->args[4].kind()) { |
17277 | case Arg::Tmp: |
17278 | #if CPU(X86_64) |
17279 | if (!args[1].tmp().isGP()) |
17280 | OPGEN_RETURN(false); |
17281 | if (!Arg::isValidImmForm(args[2].value())) |
17282 | OPGEN_RETURN(false); |
17283 | if (!args[3].tmp().isGP()) |
17284 | OPGEN_RETURN(false); |
17285 | if (!args[4].tmp().isGP()) |
17286 | OPGEN_RETURN(false); |
17287 | OPGEN_RETURN(true); |
17288 | #endif |
17289 | break; |
17290 | break; |
17291 | default: |
17292 | break; |
17293 | } |
17294 | break; |
17295 | default: |
17296 | break; |
17297 | } |
17298 | break; |
17299 | default: |
17300 | break; |
17301 | } |
17302 | break; |
17303 | default: |
17304 | break; |
17305 | } |
17306 | break; |
17307 | default: |
17308 | break; |
17309 | } |
17310 | break; |
17311 | case 6: |
17312 | switch (this->args[0].kind()) { |
17313 | case Arg::ResCond: |
17314 | switch (this->args[1].kind()) { |
17315 | case Arg::Tmp: |
17316 | switch (this->args[2].kind()) { |
17317 | case Arg::Tmp: |
17318 | switch (this->args[3].kind()) { |
17319 | case Arg::Tmp: |
17320 | switch (this->args[4].kind()) { |
17321 | case Arg::Tmp: |
17322 | switch (this->args[5].kind()) { |
17323 | case Arg::Tmp: |
17324 | #if CPU(X86_64) || CPU(ARM64) |
17325 | if (!args[1].tmp().isGP()) |
17326 | OPGEN_RETURN(false); |
17327 | if (!args[2].tmp().isGP()) |
17328 | OPGEN_RETURN(false); |
17329 | if (!args[3].tmp().isGP()) |
17330 | OPGEN_RETURN(false); |
17331 | if (!args[4].tmp().isGP()) |
17332 | OPGEN_RETURN(false); |
17333 | if (!args[5].tmp().isGP()) |
17334 | OPGEN_RETURN(false); |
17335 | OPGEN_RETURN(true); |
17336 | #endif |
17337 | break; |
17338 | break; |
17339 | default: |
17340 | break; |
17341 | } |
17342 | break; |
17343 | default: |
17344 | break; |
17345 | } |
17346 | break; |
17347 | default: |
17348 | break; |
17349 | } |
17350 | break; |
17351 | case Arg::Imm: |
17352 | switch (this->args[3].kind()) { |
17353 | case Arg::Tmp: |
17354 | switch (this->args[4].kind()) { |
17355 | case Arg::Tmp: |
17356 | switch (this->args[5].kind()) { |
17357 | case Arg::Tmp: |
17358 | #if CPU(X86_64) |
17359 | if (!args[1].tmp().isGP()) |
17360 | OPGEN_RETURN(false); |
17361 | if (!Arg::isValidImmForm(args[2].value())) |
17362 | OPGEN_RETURN(false); |
17363 | if (!args[3].tmp().isGP()) |
17364 | OPGEN_RETURN(false); |
17365 | if (!args[4].tmp().isGP()) |
17366 | OPGEN_RETURN(false); |
17367 | if (!args[5].tmp().isGP()) |
17368 | OPGEN_RETURN(false); |
17369 | OPGEN_RETURN(true); |
17370 | #endif |
17371 | break; |
17372 | break; |
17373 | default: |
17374 | break; |
17375 | } |
17376 | break; |
17377 | default: |
17378 | break; |
17379 | } |
17380 | break; |
17381 | default: |
17382 | break; |
17383 | } |
17384 | break; |
17385 | default: |
17386 | break; |
17387 | } |
17388 | break; |
17389 | default: |
17390 | break; |
17391 | } |
17392 | break; |
17393 | default: |
17394 | break; |
17395 | } |
17396 | break; |
17397 | default: |
17398 | break; |
17399 | } |
17400 | break; |
17401 | case Opcode::MoveConditionallyDouble: |
17402 | switch (this->args.size()) { |
17403 | case 6: |
17404 | switch (this->args[0].kind()) { |
17405 | case Arg::DoubleCond: |
17406 | switch (this->args[1].kind()) { |
17407 | case Arg::Tmp: |
17408 | switch (this->args[2].kind()) { |
17409 | case Arg::Tmp: |
17410 | switch (this->args[3].kind()) { |
17411 | case Arg::Tmp: |
17412 | switch (this->args[4].kind()) { |
17413 | case Arg::Tmp: |
17414 | switch (this->args[5].kind()) { |
17415 | case Arg::Tmp: |
17416 | if (!args[1].tmp().isFP()) |
17417 | OPGEN_RETURN(false); |
17418 | if (!args[2].tmp().isFP()) |
17419 | OPGEN_RETURN(false); |
17420 | if (!args[3].tmp().isGP()) |
17421 | OPGEN_RETURN(false); |
17422 | if (!args[4].tmp().isGP()) |
17423 | OPGEN_RETURN(false); |
17424 | if (!args[5].tmp().isGP()) |
17425 | OPGEN_RETURN(false); |
17426 | OPGEN_RETURN(true); |
17427 | break; |
17428 | break; |
17429 | default: |
17430 | break; |
17431 | } |
17432 | break; |
17433 | default: |
17434 | break; |
17435 | } |
17436 | break; |
17437 | default: |
17438 | break; |
17439 | } |
17440 | break; |
17441 | default: |
17442 | break; |
17443 | } |
17444 | break; |
17445 | default: |
17446 | break; |
17447 | } |
17448 | break; |
17449 | default: |
17450 | break; |
17451 | } |
17452 | break; |
17453 | case 5: |
17454 | switch (this->args[0].kind()) { |
17455 | case Arg::DoubleCond: |
17456 | switch (this->args[1].kind()) { |
17457 | case Arg::Tmp: |
17458 | switch (this->args[2].kind()) { |
17459 | case Arg::Tmp: |
17460 | switch (this->args[3].kind()) { |
17461 | case Arg::Tmp: |
17462 | switch (this->args[4].kind()) { |
17463 | case Arg::Tmp: |
17464 | if (!args[1].tmp().isFP()) |
17465 | OPGEN_RETURN(false); |
17466 | if (!args[2].tmp().isFP()) |
17467 | OPGEN_RETURN(false); |
17468 | if (!args[3].tmp().isGP()) |
17469 | OPGEN_RETURN(false); |
17470 | if (!args[4].tmp().isGP()) |
17471 | OPGEN_RETURN(false); |
17472 | OPGEN_RETURN(true); |
17473 | break; |
17474 | break; |
17475 | default: |
17476 | break; |
17477 | } |
17478 | break; |
17479 | default: |
17480 | break; |
17481 | } |
17482 | break; |
17483 | default: |
17484 | break; |
17485 | } |
17486 | break; |
17487 | default: |
17488 | break; |
17489 | } |
17490 | break; |
17491 | default: |
17492 | break; |
17493 | } |
17494 | break; |
17495 | default: |
17496 | break; |
17497 | } |
17498 | break; |
17499 | case Opcode::MoveConditionallyFloat: |
17500 | switch (this->args.size()) { |
17501 | case 6: |
17502 | switch (this->args[0].kind()) { |
17503 | case Arg::DoubleCond: |
17504 | switch (this->args[1].kind()) { |
17505 | case Arg::Tmp: |
17506 | switch (this->args[2].kind()) { |
17507 | case Arg::Tmp: |
17508 | switch (this->args[3].kind()) { |
17509 | case Arg::Tmp: |
17510 | switch (this->args[4].kind()) { |
17511 | case Arg::Tmp: |
17512 | switch (this->args[5].kind()) { |
17513 | case Arg::Tmp: |
17514 | if (!args[1].tmp().isFP()) |
17515 | OPGEN_RETURN(false); |
17516 | if (!args[2].tmp().isFP()) |
17517 | OPGEN_RETURN(false); |
17518 | if (!args[3].tmp().isGP()) |
17519 | OPGEN_RETURN(false); |
17520 | if (!args[4].tmp().isGP()) |
17521 | OPGEN_RETURN(false); |
17522 | if (!args[5].tmp().isGP()) |
17523 | OPGEN_RETURN(false); |
17524 | OPGEN_RETURN(true); |
17525 | break; |
17526 | break; |
17527 | default: |
17528 | break; |
17529 | } |
17530 | break; |
17531 | default: |
17532 | break; |
17533 | } |
17534 | break; |
17535 | default: |
17536 | break; |
17537 | } |
17538 | break; |
17539 | default: |
17540 | break; |
17541 | } |
17542 | break; |
17543 | default: |
17544 | break; |
17545 | } |
17546 | break; |
17547 | default: |
17548 | break; |
17549 | } |
17550 | break; |
17551 | case 5: |
17552 | switch (this->args[0].kind()) { |
17553 | case Arg::DoubleCond: |
17554 | switch (this->args[1].kind()) { |
17555 | case Arg::Tmp: |
17556 | switch (this->args[2].kind()) { |
17557 | case Arg::Tmp: |
17558 | switch (this->args[3].kind()) { |
17559 | case Arg::Tmp: |
17560 | switch (this->args[4].kind()) { |
17561 | case Arg::Tmp: |
17562 | if (!args[1].tmp().isFP()) |
17563 | OPGEN_RETURN(false); |
17564 | if (!args[2].tmp().isFP()) |
17565 | OPGEN_RETURN(false); |
17566 | if (!args[3].tmp().isGP()) |
17567 | OPGEN_RETURN(false); |
17568 | if (!args[4].tmp().isGP()) |
17569 | OPGEN_RETURN(false); |
17570 | OPGEN_RETURN(true); |
17571 | break; |
17572 | break; |
17573 | default: |
17574 | break; |
17575 | } |
17576 | break; |
17577 | default: |
17578 | break; |
17579 | } |
17580 | break; |
17581 | default: |
17582 | break; |
17583 | } |
17584 | break; |
17585 | default: |
17586 | break; |
17587 | } |
17588 | break; |
17589 | default: |
17590 | break; |
17591 | } |
17592 | break; |
17593 | default: |
17594 | break; |
17595 | } |
17596 | break; |
17597 | case Opcode::MoveDoubleConditionally32: |
17598 | switch (this->args.size()) { |
17599 | case 6: |
17600 | switch (this->args[0].kind()) { |
17601 | case Arg::RelCond: |
17602 | switch (this->args[1].kind()) { |
17603 | case Arg::Tmp: |
17604 | switch (this->args[2].kind()) { |
17605 | case Arg::Tmp: |
17606 | switch (this->args[3].kind()) { |
17607 | case Arg::Tmp: |
17608 | switch (this->args[4].kind()) { |
17609 | case Arg::Tmp: |
17610 | switch (this->args[5].kind()) { |
17611 | case Arg::Tmp: |
17612 | if (!args[1].tmp().isGP()) |
17613 | OPGEN_RETURN(false); |
17614 | if (!args[2].tmp().isGP()) |
17615 | OPGEN_RETURN(false); |
17616 | if (!args[3].tmp().isFP()) |
17617 | OPGEN_RETURN(false); |
17618 | if (!args[4].tmp().isFP()) |
17619 | OPGEN_RETURN(false); |
17620 | if (!args[5].tmp().isFP()) |
17621 | OPGEN_RETURN(false); |
17622 | OPGEN_RETURN(true); |
17623 | break; |
17624 | break; |
17625 | default: |
17626 | break; |
17627 | } |
17628 | break; |
17629 | default: |
17630 | break; |
17631 | } |
17632 | break; |
17633 | default: |
17634 | break; |
17635 | } |
17636 | break; |
17637 | case Arg::Imm: |
17638 | switch (this->args[3].kind()) { |
17639 | case Arg::Tmp: |
17640 | switch (this->args[4].kind()) { |
17641 | case Arg::Tmp: |
17642 | switch (this->args[5].kind()) { |
17643 | case Arg::Tmp: |
17644 | if (!args[1].tmp().isGP()) |
17645 | OPGEN_RETURN(false); |
17646 | if (!Arg::isValidImmForm(args[2].value())) |
17647 | OPGEN_RETURN(false); |
17648 | if (!args[3].tmp().isFP()) |
17649 | OPGEN_RETURN(false); |
17650 | if (!args[4].tmp().isFP()) |
17651 | OPGEN_RETURN(false); |
17652 | if (!args[5].tmp().isFP()) |
17653 | OPGEN_RETURN(false); |
17654 | OPGEN_RETURN(true); |
17655 | break; |
17656 | break; |
17657 | default: |
17658 | break; |
17659 | } |
17660 | break; |
17661 | default: |
17662 | break; |
17663 | } |
17664 | break; |
17665 | default: |
17666 | break; |
17667 | } |
17668 | break; |
17669 | case Arg::Addr: |
17670 | case Arg::Stack: |
17671 | case Arg::CallArg: |
17672 | switch (this->args[3].kind()) { |
17673 | case Arg::Tmp: |
17674 | switch (this->args[4].kind()) { |
17675 | case Arg::Tmp: |
17676 | switch (this->args[5].kind()) { |
17677 | case Arg::Tmp: |
17678 | #if CPU(X86) || CPU(X86_64) |
17679 | if (!args[1].tmp().isGP()) |
17680 | OPGEN_RETURN(false); |
17681 | if (!Arg::isValidAddrForm(args[2].offset())) |
17682 | OPGEN_RETURN(false); |
17683 | if (!args[3].tmp().isFP()) |
17684 | OPGEN_RETURN(false); |
17685 | if (!args[4].tmp().isFP()) |
17686 | OPGEN_RETURN(false); |
17687 | if (!args[5].tmp().isFP()) |
17688 | OPGEN_RETURN(false); |
17689 | OPGEN_RETURN(true); |
17690 | #endif |
17691 | break; |
17692 | break; |
17693 | default: |
17694 | break; |
17695 | } |
17696 | break; |
17697 | default: |
17698 | break; |
17699 | } |
17700 | break; |
17701 | default: |
17702 | break; |
17703 | } |
17704 | break; |
17705 | default: |
17706 | break; |
17707 | } |
17708 | break; |
17709 | case Arg::Addr: |
17710 | case Arg::Stack: |
17711 | case Arg::CallArg: |
17712 | switch (this->args[2].kind()) { |
17713 | case Arg::Imm: |
17714 | switch (this->args[3].kind()) { |
17715 | case Arg::Tmp: |
17716 | switch (this->args[4].kind()) { |
17717 | case Arg::Tmp: |
17718 | switch (this->args[5].kind()) { |
17719 | case Arg::Tmp: |
17720 | #if CPU(X86) || CPU(X86_64) |
17721 | if (!Arg::isValidAddrForm(args[1].offset())) |
17722 | OPGEN_RETURN(false); |
17723 | if (!Arg::isValidImmForm(args[2].value())) |
17724 | OPGEN_RETURN(false); |
17725 | if (!args[3].tmp().isFP()) |
17726 | OPGEN_RETURN(false); |
17727 | if (!args[4].tmp().isFP()) |
17728 | OPGEN_RETURN(false); |
17729 | if (!args[5].tmp().isFP()) |
17730 | OPGEN_RETURN(false); |
17731 | OPGEN_RETURN(true); |
17732 | #endif |
17733 | break; |
17734 | break; |
17735 | default: |
17736 | break; |
17737 | } |
17738 | break; |
17739 | default: |
17740 | break; |
17741 | } |
17742 | break; |
17743 | default: |
17744 | break; |
17745 | } |
17746 | break; |
17747 | case Arg::Tmp: |
17748 | switch (this->args[3].kind()) { |
17749 | case Arg::Tmp: |
17750 | switch (this->args[4].kind()) { |
17751 | case Arg::Tmp: |
17752 | switch (this->args[5].kind()) { |
17753 | case Arg::Tmp: |
17754 | #if CPU(X86) || CPU(X86_64) |
17755 | if (!Arg::isValidAddrForm(args[1].offset())) |
17756 | OPGEN_RETURN(false); |
17757 | if (!args[2].tmp().isGP()) |
17758 | OPGEN_RETURN(false); |
17759 | if (!args[3].tmp().isFP()) |
17760 | OPGEN_RETURN(false); |
17761 | if (!args[4].tmp().isFP()) |
17762 | OPGEN_RETURN(false); |
17763 | if (!args[5].tmp().isFP()) |
17764 | OPGEN_RETURN(false); |
17765 | OPGEN_RETURN(true); |
17766 | #endif |
17767 | break; |
17768 | break; |
17769 | default: |
17770 | break; |
17771 | } |
17772 | break; |
17773 | default: |
17774 | break; |
17775 | } |
17776 | break; |
17777 | default: |
17778 | break; |
17779 | } |
17780 | break; |
17781 | default: |
17782 | break; |
17783 | } |
17784 | break; |
17785 | case Arg::Index: |
17786 | switch (this->args[2].kind()) { |
17787 | case Arg::Imm: |
17788 | switch (this->args[3].kind()) { |
17789 | case Arg::Tmp: |
17790 | switch (this->args[4].kind()) { |
17791 | case Arg::Tmp: |
17792 | switch (this->args[5].kind()) { |
17793 | case Arg::Tmp: |
17794 | #if CPU(X86) || CPU(X86_64) |
17795 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
17796 | OPGEN_RETURN(false); |
17797 | if (!Arg::isValidImmForm(args[2].value())) |
17798 | OPGEN_RETURN(false); |
17799 | if (!args[3].tmp().isFP()) |
17800 | OPGEN_RETURN(false); |
17801 | if (!args[4].tmp().isFP()) |
17802 | OPGEN_RETURN(false); |
17803 | if (!args[5].tmp().isFP()) |
17804 | OPGEN_RETURN(false); |
17805 | OPGEN_RETURN(true); |
17806 | #endif |
17807 | break; |
17808 | break; |
17809 | default: |
17810 | break; |
17811 | } |
17812 | break; |
17813 | default: |
17814 | break; |
17815 | } |
17816 | break; |
17817 | default: |
17818 | break; |
17819 | } |
17820 | break; |
17821 | default: |
17822 | break; |
17823 | } |
17824 | break; |
17825 | default: |
17826 | break; |
17827 | } |
17828 | break; |
17829 | default: |
17830 | break; |
17831 | } |
17832 | break; |
17833 | default: |
17834 | break; |
17835 | } |
17836 | break; |
17837 | case Opcode::MoveDoubleConditionally64: |
17838 | switch (this->args.size()) { |
17839 | case 6: |
17840 | switch (this->args[0].kind()) { |
17841 | case Arg::RelCond: |
17842 | switch (this->args[1].kind()) { |
17843 | case Arg::Tmp: |
17844 | switch (this->args[2].kind()) { |
17845 | case Arg::Tmp: |
17846 | switch (this->args[3].kind()) { |
17847 | case Arg::Tmp: |
17848 | switch (this->args[4].kind()) { |
17849 | case Arg::Tmp: |
17850 | switch (this->args[5].kind()) { |
17851 | case Arg::Tmp: |
17852 | #if CPU(X86_64) || CPU(ARM64) |
17853 | if (!args[1].tmp().isGP()) |
17854 | OPGEN_RETURN(false); |
17855 | if (!args[2].tmp().isGP()) |
17856 | OPGEN_RETURN(false); |
17857 | if (!args[3].tmp().isFP()) |
17858 | OPGEN_RETURN(false); |
17859 | if (!args[4].tmp().isFP()) |
17860 | OPGEN_RETURN(false); |
17861 | if (!args[5].tmp().isFP()) |
17862 | OPGEN_RETURN(false); |
17863 | OPGEN_RETURN(true); |
17864 | #endif |
17865 | break; |
17866 | break; |
17867 | default: |
17868 | break; |
17869 | } |
17870 | break; |
17871 | default: |
17872 | break; |
17873 | } |
17874 | break; |
17875 | default: |
17876 | break; |
17877 | } |
17878 | break; |
17879 | case Arg::Imm: |
17880 | switch (this->args[3].kind()) { |
17881 | case Arg::Tmp: |
17882 | switch (this->args[4].kind()) { |
17883 | case Arg::Tmp: |
17884 | switch (this->args[5].kind()) { |
17885 | case Arg::Tmp: |
17886 | #if CPU(X86_64) || CPU(ARM64) |
17887 | if (!args[1].tmp().isGP()) |
17888 | OPGEN_RETURN(false); |
17889 | if (!Arg::isValidImmForm(args[2].value())) |
17890 | OPGEN_RETURN(false); |
17891 | if (!args[3].tmp().isFP()) |
17892 | OPGEN_RETURN(false); |
17893 | if (!args[4].tmp().isFP()) |
17894 | OPGEN_RETURN(false); |
17895 | if (!args[5].tmp().isFP()) |
17896 | OPGEN_RETURN(false); |
17897 | OPGEN_RETURN(true); |
17898 | #endif |
17899 | break; |
17900 | break; |
17901 | default: |
17902 | break; |
17903 | } |
17904 | break; |
17905 | default: |
17906 | break; |
17907 | } |
17908 | break; |
17909 | default: |
17910 | break; |
17911 | } |
17912 | break; |
17913 | case Arg::Addr: |
17914 | case Arg::Stack: |
17915 | case Arg::CallArg: |
17916 | switch (this->args[3].kind()) { |
17917 | case Arg::Tmp: |
17918 | switch (this->args[4].kind()) { |
17919 | case Arg::Tmp: |
17920 | switch (this->args[5].kind()) { |
17921 | case Arg::Tmp: |
17922 | #if CPU(X86_64) |
17923 | if (!args[1].tmp().isGP()) |
17924 | OPGEN_RETURN(false); |
17925 | if (!Arg::isValidAddrForm(args[2].offset())) |
17926 | OPGEN_RETURN(false); |
17927 | if (!args[3].tmp().isFP()) |
17928 | OPGEN_RETURN(false); |
17929 | if (!args[4].tmp().isFP()) |
17930 | OPGEN_RETURN(false); |
17931 | if (!args[5].tmp().isFP()) |
17932 | OPGEN_RETURN(false); |
17933 | OPGEN_RETURN(true); |
17934 | #endif |
17935 | break; |
17936 | break; |
17937 | default: |
17938 | break; |
17939 | } |
17940 | break; |
17941 | default: |
17942 | break; |
17943 | } |
17944 | break; |
17945 | default: |
17946 | break; |
17947 | } |
17948 | break; |
17949 | default: |
17950 | break; |
17951 | } |
17952 | break; |
17953 | case Arg::Addr: |
17954 | case Arg::Stack: |
17955 | case Arg::CallArg: |
17956 | switch (this->args[2].kind()) { |
17957 | case Arg::Tmp: |
17958 | switch (this->args[3].kind()) { |
17959 | case Arg::Tmp: |
17960 | switch (this->args[4].kind()) { |
17961 | case Arg::Tmp: |
17962 | switch (this->args[5].kind()) { |
17963 | case Arg::Tmp: |
17964 | #if CPU(X86_64) |
17965 | if (!Arg::isValidAddrForm(args[1].offset())) |
17966 | OPGEN_RETURN(false); |
17967 | if (!args[2].tmp().isGP()) |
17968 | OPGEN_RETURN(false); |
17969 | if (!args[3].tmp().isFP()) |
17970 | OPGEN_RETURN(false); |
17971 | if (!args[4].tmp().isFP()) |
17972 | OPGEN_RETURN(false); |
17973 | if (!args[5].tmp().isFP()) |
17974 | OPGEN_RETURN(false); |
17975 | OPGEN_RETURN(true); |
17976 | #endif |
17977 | break; |
17978 | break; |
17979 | default: |
17980 | break; |
17981 | } |
17982 | break; |
17983 | default: |
17984 | break; |
17985 | } |
17986 | break; |
17987 | default: |
17988 | break; |
17989 | } |
17990 | break; |
17991 | case Arg::Imm: |
17992 | switch (this->args[3].kind()) { |
17993 | case Arg::Tmp: |
17994 | switch (this->args[4].kind()) { |
17995 | case Arg::Tmp: |
17996 | switch (this->args[5].kind()) { |
17997 | case Arg::Tmp: |
17998 | #if CPU(X86_64) |
17999 | if (!Arg::isValidAddrForm(args[1].offset())) |
18000 | OPGEN_RETURN(false); |
18001 | if (!Arg::isValidImmForm(args[2].value())) |
18002 | OPGEN_RETURN(false); |
18003 | if (!args[3].tmp().isFP()) |
18004 | OPGEN_RETURN(false); |
18005 | if (!args[4].tmp().isFP()) |
18006 | OPGEN_RETURN(false); |
18007 | if (!args[5].tmp().isFP()) |
18008 | OPGEN_RETURN(false); |
18009 | OPGEN_RETURN(true); |
18010 | #endif |
18011 | break; |
18012 | break; |
18013 | default: |
18014 | break; |
18015 | } |
18016 | break; |
18017 | default: |
18018 | break; |
18019 | } |
18020 | break; |
18021 | default: |
18022 | break; |
18023 | } |
18024 | break; |
18025 | default: |
18026 | break; |
18027 | } |
18028 | break; |
18029 | case Arg::Index: |
18030 | switch (this->args[2].kind()) { |
18031 | case Arg::Tmp: |
18032 | switch (this->args[3].kind()) { |
18033 | case Arg::Tmp: |
18034 | switch (this->args[4].kind()) { |
18035 | case Arg::Tmp: |
18036 | switch (this->args[5].kind()) { |
18037 | case Arg::Tmp: |
18038 | #if CPU(X86_64) |
18039 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
18040 | OPGEN_RETURN(false); |
18041 | if (!args[2].tmp().isGP()) |
18042 | OPGEN_RETURN(false); |
18043 | if (!args[3].tmp().isFP()) |
18044 | OPGEN_RETURN(false); |
18045 | if (!args[4].tmp().isFP()) |
18046 | OPGEN_RETURN(false); |
18047 | if (!args[5].tmp().isFP()) |
18048 | OPGEN_RETURN(false); |
18049 | OPGEN_RETURN(true); |
18050 | #endif |
18051 | break; |
18052 | break; |
18053 | default: |
18054 | break; |
18055 | } |
18056 | break; |
18057 | default: |
18058 | break; |
18059 | } |
18060 | break; |
18061 | default: |
18062 | break; |
18063 | } |
18064 | break; |
18065 | default: |
18066 | break; |
18067 | } |
18068 | break; |
18069 | default: |
18070 | break; |
18071 | } |
18072 | break; |
18073 | default: |
18074 | break; |
18075 | } |
18076 | break; |
18077 | default: |
18078 | break; |
18079 | } |
18080 | break; |
18081 | case Opcode::MoveDoubleConditionallyTest32: |
18082 | switch (this->args.size()) { |
18083 | case 6: |
18084 | switch (this->args[0].kind()) { |
18085 | case Arg::ResCond: |
18086 | switch (this->args[1].kind()) { |
18087 | case Arg::Tmp: |
18088 | switch (this->args[2].kind()) { |
18089 | case Arg::Tmp: |
18090 | switch (this->args[3].kind()) { |
18091 | case Arg::Tmp: |
18092 | switch (this->args[4].kind()) { |
18093 | case Arg::Tmp: |
18094 | switch (this->args[5].kind()) { |
18095 | case Arg::Tmp: |
18096 | if (!args[1].tmp().isGP()) |
18097 | OPGEN_RETURN(false); |
18098 | if (!args[2].tmp().isGP()) |
18099 | OPGEN_RETURN(false); |
18100 | if (!args[3].tmp().isFP()) |
18101 | OPGEN_RETURN(false); |
18102 | if (!args[4].tmp().isFP()) |
18103 | OPGEN_RETURN(false); |
18104 | if (!args[5].tmp().isFP()) |
18105 | OPGEN_RETURN(false); |
18106 | OPGEN_RETURN(true); |
18107 | break; |
18108 | break; |
18109 | default: |
18110 | break; |
18111 | } |
18112 | break; |
18113 | default: |
18114 | break; |
18115 | } |
18116 | break; |
18117 | default: |
18118 | break; |
18119 | } |
18120 | break; |
18121 | case Arg::BitImm: |
18122 | switch (this->args[3].kind()) { |
18123 | case Arg::Tmp: |
18124 | switch (this->args[4].kind()) { |
18125 | case Arg::Tmp: |
18126 | switch (this->args[5].kind()) { |
18127 | case Arg::Tmp: |
18128 | if (!args[1].tmp().isGP()) |
18129 | OPGEN_RETURN(false); |
18130 | if (!Arg::isValidBitImmForm(args[2].value())) |
18131 | OPGEN_RETURN(false); |
18132 | if (!args[3].tmp().isFP()) |
18133 | OPGEN_RETURN(false); |
18134 | if (!args[4].tmp().isFP()) |
18135 | OPGEN_RETURN(false); |
18136 | if (!args[5].tmp().isFP()) |
18137 | OPGEN_RETURN(false); |
18138 | OPGEN_RETURN(true); |
18139 | break; |
18140 | break; |
18141 | default: |
18142 | break; |
18143 | } |
18144 | break; |
18145 | default: |
18146 | break; |
18147 | } |
18148 | break; |
18149 | default: |
18150 | break; |
18151 | } |
18152 | break; |
18153 | default: |
18154 | break; |
18155 | } |
18156 | break; |
18157 | case Arg::Addr: |
18158 | case Arg::Stack: |
18159 | case Arg::CallArg: |
18160 | switch (this->args[2].kind()) { |
18161 | case Arg::Imm: |
18162 | switch (this->args[3].kind()) { |
18163 | case Arg::Tmp: |
18164 | switch (this->args[4].kind()) { |
18165 | case Arg::Tmp: |
18166 | switch (this->args[5].kind()) { |
18167 | case Arg::Tmp: |
18168 | #if CPU(X86) || CPU(X86_64) |
18169 | if (!Arg::isValidAddrForm(args[1].offset())) |
18170 | OPGEN_RETURN(false); |
18171 | if (!Arg::isValidImmForm(args[2].value())) |
18172 | OPGEN_RETURN(false); |
18173 | if (!args[3].tmp().isFP()) |
18174 | OPGEN_RETURN(false); |
18175 | if (!args[4].tmp().isFP()) |
18176 | OPGEN_RETURN(false); |
18177 | if (!args[5].tmp().isFP()) |
18178 | OPGEN_RETURN(false); |
18179 | OPGEN_RETURN(true); |
18180 | #endif |
18181 | break; |
18182 | break; |
18183 | default: |
18184 | break; |
18185 | } |
18186 | break; |
18187 | default: |
18188 | break; |
18189 | } |
18190 | break; |
18191 | default: |
18192 | break; |
18193 | } |
18194 | break; |
18195 | default: |
18196 | break; |
18197 | } |
18198 | break; |
18199 | case Arg::Index: |
18200 | switch (this->args[2].kind()) { |
18201 | case Arg::Imm: |
18202 | switch (this->args[3].kind()) { |
18203 | case Arg::Tmp: |
18204 | switch (this->args[4].kind()) { |
18205 | case Arg::Tmp: |
18206 | switch (this->args[5].kind()) { |
18207 | case Arg::Tmp: |
18208 | #if CPU(X86) || CPU(X86_64) |
18209 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width32)) |
18210 | OPGEN_RETURN(false); |
18211 | if (!Arg::isValidImmForm(args[2].value())) |
18212 | OPGEN_RETURN(false); |
18213 | if (!args[3].tmp().isFP()) |
18214 | OPGEN_RETURN(false); |
18215 | if (!args[4].tmp().isFP()) |
18216 | OPGEN_RETURN(false); |
18217 | if (!args[5].tmp().isFP()) |
18218 | OPGEN_RETURN(false); |
18219 | OPGEN_RETURN(true); |
18220 | #endif |
18221 | break; |
18222 | break; |
18223 | default: |
18224 | break; |
18225 | } |
18226 | break; |
18227 | default: |
18228 | break; |
18229 | } |
18230 | break; |
18231 | default: |
18232 | break; |
18233 | } |
18234 | break; |
18235 | default: |
18236 | break; |
18237 | } |
18238 | break; |
18239 | default: |
18240 | break; |
18241 | } |
18242 | break; |
18243 | default: |
18244 | break; |
18245 | } |
18246 | break; |
18247 | default: |
18248 | break; |
18249 | } |
18250 | break; |
18251 | case Opcode::MoveDoubleConditionallyTest64: |
18252 | switch (this->args.size()) { |
18253 | case 6: |
18254 | switch (this->args[0].kind()) { |
18255 | case Arg::ResCond: |
18256 | switch (this->args[1].kind()) { |
18257 | case Arg::Tmp: |
18258 | switch (this->args[2].kind()) { |
18259 | case Arg::Tmp: |
18260 | switch (this->args[3].kind()) { |
18261 | case Arg::Tmp: |
18262 | switch (this->args[4].kind()) { |
18263 | case Arg::Tmp: |
18264 | switch (this->args[5].kind()) { |
18265 | case Arg::Tmp: |
18266 | #if CPU(X86_64) || CPU(ARM64) |
18267 | if (!args[1].tmp().isGP()) |
18268 | OPGEN_RETURN(false); |
18269 | if (!args[2].tmp().isGP()) |
18270 | OPGEN_RETURN(false); |
18271 | if (!args[3].tmp().isFP()) |
18272 | OPGEN_RETURN(false); |
18273 | if (!args[4].tmp().isFP()) |
18274 | OPGEN_RETURN(false); |
18275 | if (!args[5].tmp().isFP()) |
18276 | OPGEN_RETURN(false); |
18277 | OPGEN_RETURN(true); |
18278 | #endif |
18279 | break; |
18280 | break; |
18281 | default: |
18282 | break; |
18283 | } |
18284 | break; |
18285 | default: |
18286 | break; |
18287 | } |
18288 | break; |
18289 | default: |
18290 | break; |
18291 | } |
18292 | break; |
18293 | case Arg::Imm: |
18294 | switch (this->args[3].kind()) { |
18295 | case Arg::Tmp: |
18296 | switch (this->args[4].kind()) { |
18297 | case Arg::Tmp: |
18298 | switch (this->args[5].kind()) { |
18299 | case Arg::Tmp: |
18300 | #if CPU(X86_64) |
18301 | if (!args[1].tmp().isGP()) |
18302 | OPGEN_RETURN(false); |
18303 | if (!Arg::isValidImmForm(args[2].value())) |
18304 | OPGEN_RETURN(false); |
18305 | if (!args[3].tmp().isFP()) |
18306 | OPGEN_RETURN(false); |
18307 | if (!args[4].tmp().isFP()) |
18308 | OPGEN_RETURN(false); |
18309 | if (!args[5].tmp().isFP()) |
18310 | OPGEN_RETURN(false); |
18311 | OPGEN_RETURN(true); |
18312 | #endif |
18313 | break; |
18314 | break; |
18315 | default: |
18316 | break; |
18317 | } |
18318 | break; |
18319 | default: |
18320 | break; |
18321 | } |
18322 | break; |
18323 | default: |
18324 | break; |
18325 | } |
18326 | break; |
18327 | default: |
18328 | break; |
18329 | } |
18330 | break; |
18331 | case Arg::Addr: |
18332 | case Arg::Stack: |
18333 | case Arg::CallArg: |
18334 | switch (this->args[2].kind()) { |
18335 | case Arg::Imm: |
18336 | switch (this->args[3].kind()) { |
18337 | case Arg::Tmp: |
18338 | switch (this->args[4].kind()) { |
18339 | case Arg::Tmp: |
18340 | switch (this->args[5].kind()) { |
18341 | case Arg::Tmp: |
18342 | #if CPU(X86_64) |
18343 | if (!Arg::isValidAddrForm(args[1].offset())) |
18344 | OPGEN_RETURN(false); |
18345 | if (!Arg::isValidImmForm(args[2].value())) |
18346 | OPGEN_RETURN(false); |
18347 | if (!args[3].tmp().isFP()) |
18348 | OPGEN_RETURN(false); |
18349 | if (!args[4].tmp().isFP()) |
18350 | OPGEN_RETURN(false); |
18351 | if (!args[5].tmp().isFP()) |
18352 | OPGEN_RETURN(false); |
18353 | OPGEN_RETURN(true); |
18354 | #endif |
18355 | break; |
18356 | break; |
18357 | default: |
18358 | break; |
18359 | } |
18360 | break; |
18361 | default: |
18362 | break; |
18363 | } |
18364 | break; |
18365 | default: |
18366 | break; |
18367 | } |
18368 | break; |
18369 | case Arg::Tmp: |
18370 | switch (this->args[3].kind()) { |
18371 | case Arg::Tmp: |
18372 | switch (this->args[4].kind()) { |
18373 | case Arg::Tmp: |
18374 | switch (this->args[5].kind()) { |
18375 | case Arg::Tmp: |
18376 | #if CPU(X86_64) |
18377 | if (!Arg::isValidAddrForm(args[1].offset())) |
18378 | OPGEN_RETURN(false); |
18379 | if (!args[2].tmp().isGP()) |
18380 | OPGEN_RETURN(false); |
18381 | if (!args[3].tmp().isFP()) |
18382 | OPGEN_RETURN(false); |
18383 | if (!args[4].tmp().isFP()) |
18384 | OPGEN_RETURN(false); |
18385 | if (!args[5].tmp().isFP()) |
18386 | OPGEN_RETURN(false); |
18387 | OPGEN_RETURN(true); |
18388 | #endif |
18389 | break; |
18390 | break; |
18391 | default: |
18392 | break; |
18393 | } |
18394 | break; |
18395 | default: |
18396 | break; |
18397 | } |
18398 | break; |
18399 | default: |
18400 | break; |
18401 | } |
18402 | break; |
18403 | default: |
18404 | break; |
18405 | } |
18406 | break; |
18407 | case Arg::Index: |
18408 | switch (this->args[2].kind()) { |
18409 | case Arg::Imm: |
18410 | switch (this->args[3].kind()) { |
18411 | case Arg::Tmp: |
18412 | switch (this->args[4].kind()) { |
18413 | case Arg::Tmp: |
18414 | switch (this->args[5].kind()) { |
18415 | case Arg::Tmp: |
18416 | #if CPU(X86_64) |
18417 | if (!Arg::isValidIndexForm(args[1].scale(), args[1].offset(), Width64)) |
18418 | OPGEN_RETURN(false); |
18419 | if (!Arg::isValidImmForm(args[2].value())) |
18420 | OPGEN_RETURN(false); |
18421 | if (!args[3].tmp().isFP()) |
18422 | OPGEN_RETURN(false); |
18423 | if (!args[4].tmp().isFP()) |
18424 | OPGEN_RETURN(false); |
18425 | if (!args[5].tmp().isFP()) |
18426 | OPGEN_RETURN(false); |
18427 | OPGEN_RETURN(true); |
18428 | #endif |
18429 | break; |
18430 | break; |
18431 | default: |
18432 | break; |
18433 | } |
18434 | break; |
18435 | default: |
18436 | break; |
18437 | } |
18438 | break; |
18439 | default: |
18440 | break; |
18441 | } |
18442 | break; |
18443 | default: |
18444 | break; |
18445 | } |
18446 | break; |
18447 | default: |
18448 | break; |
18449 | } |
18450 | break; |
18451 | default: |
18452 | break; |
18453 | } |
18454 | break; |
18455 | default: |
18456 | break; |
18457 | } |
18458 | break; |
18459 | case Opcode::MoveDoubleConditionallyDouble: |
18460 | switch (this->args.size()) { |
18461 | case 6: |
18462 | switch (this->args[0].kind()) { |
18463 | case Arg::DoubleCond: |
18464 | switch (this->args[1].kind()) { |
18465 | case Arg::Tmp: |
18466 | switch (this->args[2].kind()) { |
18467 | case Arg::Tmp: |
18468 | switch (this->args[3].kind()) { |
18469 | case Arg::Tmp: |
18470 | switch (this->args[4].kind()) { |
18471 | case Arg::Tmp: |
18472 | switch (this->args[5].kind()) { |
18473 | case Arg::Tmp: |
18474 | if (!args[1].tmp().isFP()) |
18475 | OPGEN_RETURN(false); |
18476 | if (!args[2].tmp().isFP()) |
18477 | OPGEN_RETURN(false); |
18478 | if (!args[3].tmp().isFP()) |
18479 | OPGEN_RETURN(false); |
18480 | if (!args[4].tmp().isFP()) |
18481 | OPGEN_RETURN(false); |
18482 | if (!args[5].tmp().isFP()) |
18483 | OPGEN_RETURN(false); |
18484 | OPGEN_RETURN(true); |
18485 | break; |
18486 | break; |
18487 | default: |
18488 | break; |
18489 | } |
18490 | break; |
18491 | default: |
18492 | break; |
18493 | } |
18494 | break; |
18495 | default: |
18496 | break; |
18497 | } |
18498 | break; |
18499 | default: |
18500 | break; |
18501 | } |
18502 | break; |
18503 | default: |
18504 | break; |
18505 | } |
18506 | break; |
18507 | default: |
18508 | break; |
18509 | } |
18510 | break; |
18511 | default: |
18512 | break; |
18513 | } |
18514 | break; |
18515 | case Opcode::MoveDoubleConditionallyFloat: |
18516 | switch (this->args.size()) { |
18517 | case 6: |
18518 | switch (this->args[0].kind()) { |
18519 | case Arg::DoubleCond: |
18520 | switch (this->args[1].kind()) { |
18521 | case Arg::Tmp: |
18522 | switch (this->args[2].kind()) { |
18523 | case Arg::Tmp: |
18524 | switch (this->args[3].kind()) { |
18525 | case Arg::Tmp: |
18526 | switch (this->args[4].kind()) { |
18527 | case Arg::Tmp: |
18528 | switch (this->args[5].kind()) { |
18529 | case Arg::Tmp: |
18530 | if (!args[1].tmp().isFP()) |
18531 | OPGEN_RETURN(false); |
18532 | if (!args[2].tmp().isFP()) |
18533 | OPGEN_RETURN(false); |
18534 | if (!args[3].tmp().isFP()) |
18535 | OPGEN_RETURN(false); |
18536 | if (!args[4].tmp().isFP()) |
18537 | OPGEN_RETURN(false); |
18538 | if (!args[5].tmp().isFP()) |
18539 | OPGEN_RETURN(false); |
18540 | OPGEN_RETURN(true); |
18541 | break; |
18542 | break; |
18543 | default: |
18544 | break; |
18545 | } |
18546 | break; |
18547 | default: |
18548 | break; |
18549 | } |
18550 | break; |
18551 | default: |
18552 | break; |
18553 | } |
18554 | break; |
18555 | default: |
18556 | break; |
18557 | } |
18558 | break; |
18559 | default: |
18560 | break; |
18561 | } |
18562 | break; |
18563 | default: |
18564 | break; |
18565 | } |
18566 | break; |
18567 | default: |
18568 | break; |
18569 | } |
18570 | break; |
18571 | case Opcode::MemoryFence: |
18572 | switch (this->args.size()) { |
18573 | case 0: |
18574 | OPGEN_RETURN(true); |
18575 | break; |
18576 | break; |
18577 | default: |
18578 | break; |
18579 | } |
18580 | break; |
18581 | case Opcode::StoreFence: |
18582 | switch (this->args.size()) { |
18583 | case 0: |
18584 | OPGEN_RETURN(true); |
18585 | break; |
18586 | break; |
18587 | default: |
18588 | break; |
18589 | } |
18590 | break; |
18591 | case Opcode::LoadFence: |
18592 | switch (this->args.size()) { |
18593 | case 0: |
18594 | OPGEN_RETURN(true); |
18595 | break; |
18596 | break; |
18597 | default: |
18598 | break; |
18599 | } |
18600 | break; |
18601 | case Opcode::Jump: |
18602 | switch (this->args.size()) { |
18603 | case 0: |
18604 | OPGEN_RETURN(true); |
18605 | break; |
18606 | break; |
18607 | default: |
18608 | break; |
18609 | } |
18610 | break; |
18611 | case Opcode::RetVoid: |
18612 | switch (this->args.size()) { |
18613 | case 0: |
18614 | OPGEN_RETURN(true); |
18615 | break; |
18616 | break; |
18617 | default: |
18618 | break; |
18619 | } |
18620 | break; |
18621 | case Opcode::Ret32: |
18622 | switch (this->args.size()) { |
18623 | case 1: |
18624 | switch (this->args[0].kind()) { |
18625 | case Arg::Tmp: |
18626 | if (!args[0].tmp().isGP()) |
18627 | OPGEN_RETURN(false); |
18628 | OPGEN_RETURN(true); |
18629 | break; |
18630 | break; |
18631 | default: |
18632 | break; |
18633 | } |
18634 | break; |
18635 | default: |
18636 | break; |
18637 | } |
18638 | break; |
18639 | case Opcode::Ret64: |
18640 | switch (this->args.size()) { |
18641 | case 1: |
18642 | switch (this->args[0].kind()) { |
18643 | case Arg::Tmp: |
18644 | #if CPU(X86_64) || CPU(ARM64) |
18645 | if (!args[0].tmp().isGP()) |
18646 | OPGEN_RETURN(false); |
18647 | OPGEN_RETURN(true); |
18648 | #endif |
18649 | break; |
18650 | break; |
18651 | default: |
18652 | break; |
18653 | } |
18654 | break; |
18655 | default: |
18656 | break; |
18657 | } |
18658 | break; |
18659 | case Opcode::RetFloat: |
18660 | switch (this->args.size()) { |
18661 | case 1: |
18662 | switch (this->args[0].kind()) { |
18663 | case Arg::Tmp: |
18664 | if (!args[0].tmp().isFP()) |
18665 | OPGEN_RETURN(false); |
18666 | OPGEN_RETURN(true); |
18667 | break; |
18668 | break; |
18669 | default: |
18670 | break; |
18671 | } |
18672 | break; |
18673 | default: |
18674 | break; |
18675 | } |
18676 | break; |
18677 | case Opcode::RetDouble: |
18678 | switch (this->args.size()) { |
18679 | case 1: |
18680 | switch (this->args[0].kind()) { |
18681 | case Arg::Tmp: |
18682 | if (!args[0].tmp().isFP()) |
18683 | OPGEN_RETURN(false); |
18684 | OPGEN_RETURN(true); |
18685 | break; |
18686 | break; |
18687 | default: |
18688 | break; |
18689 | } |
18690 | break; |
18691 | default: |
18692 | break; |
18693 | } |
18694 | break; |
18695 | case Opcode::Oops: |
18696 | switch (this->args.size()) { |
18697 | case 0: |
18698 | OPGEN_RETURN(true); |
18699 | break; |
18700 | break; |
18701 | default: |
18702 | break; |
18703 | } |
18704 | break; |
18705 | case Opcode::EntrySwitch: |
18706 | OPGEN_RETURN(EntrySwitchCustom::isValidForm(*this)); |
18707 | break; |
18708 | case Opcode::Shuffle: |
18709 | OPGEN_RETURN(ShuffleCustom::isValidForm(*this)); |
18710 | break; |
18711 | case Opcode::Patch: |
18712 | OPGEN_RETURN(PatchCustom::isValidForm(*this)); |
18713 | break; |
18714 | case Opcode::CCall: |
18715 | OPGEN_RETURN(CCallCustom::isValidForm(*this)); |
18716 | break; |
18717 | case Opcode::ColdCCall: |
18718 | OPGEN_RETURN(ColdCCallCustom::isValidForm(*this)); |
18719 | break; |
18720 | case Opcode::WasmBoundsCheck: |
18721 | OPGEN_RETURN(WasmBoundsCheckCustom::isValidForm(*this)); |
18722 | break; |
18723 | default: |
18724 | break; |
18725 | } |
18726 | return false; |
18727 | } |
18728 | bool Inst::admitsStack(unsigned argIndex) |
18729 | { |
18730 | switch (kind.opcode) { |
18731 | case Opcode::Nop: |
18732 | switch (argIndex) { |
18733 | default: |
18734 | break; |
18735 | } |
18736 | break; |
18737 | case Opcode::Add32: |
18738 | switch (argIndex) { |
18739 | case 0: |
18740 | switch (args.size()) { |
18741 | case 2: |
18742 | switch (Arg::Addr) { |
18743 | case Arg::Tmp: |
18744 | break; |
18745 | case Arg::Imm: |
18746 | break; |
18747 | case Arg::Addr: |
18748 | case Arg::Stack: |
18749 | case Arg::CallArg: |
18750 | switch (args[1].kind()) { |
18751 | case Arg::Tmp: |
18752 | #if CPU(X86) || CPU(X86_64) |
18753 | OPGEN_RETURN(true); |
18754 | #endif |
18755 | break; |
18756 | break; |
18757 | default: |
18758 | break; |
18759 | } |
18760 | break; |
18761 | case Arg::Index: |
18762 | break; |
18763 | default: |
18764 | break; |
18765 | } |
18766 | break; |
18767 | default: |
18768 | break; |
18769 | } |
18770 | break; |
18771 | case 1: |
18772 | switch (args.size()) { |
18773 | case 2: |
18774 | switch (args[0].kind()) { |
18775 | case Arg::Tmp: |
18776 | switch (Arg::Addr) { |
18777 | case Arg::Tmp: |
18778 | break; |
18779 | case Arg::Addr: |
18780 | case Arg::Stack: |
18781 | case Arg::CallArg: |
18782 | #if CPU(X86) || CPU(X86_64) |
18783 | OPGEN_RETURN(true); |
18784 | #endif |
18785 | break; |
18786 | break; |
18787 | case Arg::Index: |
18788 | break; |
18789 | default: |
18790 | break; |
18791 | } |
18792 | break; |
18793 | case Arg::Imm: |
18794 | switch (Arg::Addr) { |
18795 | case Arg::Addr: |
18796 | case Arg::Stack: |
18797 | case Arg::CallArg: |
18798 | #if CPU(X86) || CPU(X86_64) |
18799 | OPGEN_RETURN(true); |
18800 | #endif |
18801 | break; |
18802 | break; |
18803 | case Arg::Index: |
18804 | break; |
18805 | case Arg::Tmp: |
18806 | break; |
18807 | default: |
18808 | break; |
18809 | } |
18810 | break; |
18811 | case Arg::Addr: |
18812 | case Arg::Stack: |
18813 | case Arg::CallArg: |
18814 | break; |
18815 | case Arg::Index: |
18816 | break; |
18817 | default: |
18818 | break; |
18819 | } |
18820 | break; |
18821 | default: |
18822 | break; |
18823 | } |
18824 | break; |
18825 | case 2: |
18826 | OPGEN_RETURN(false); |
18827 | break; |
18828 | default: |
18829 | break; |
18830 | } |
18831 | break; |
18832 | case Opcode::Add8: |
18833 | switch (argIndex) { |
18834 | case 0: |
18835 | OPGEN_RETURN(false); |
18836 | break; |
18837 | case 1: |
18838 | switch (args[0].kind()) { |
18839 | case Arg::Imm: |
18840 | switch (Arg::Addr) { |
18841 | case Arg::Addr: |
18842 | case Arg::Stack: |
18843 | case Arg::CallArg: |
18844 | #if CPU(X86) || CPU(X86_64) |
18845 | OPGEN_RETURN(true); |
18846 | #endif |
18847 | break; |
18848 | break; |
18849 | case Arg::Index: |
18850 | break; |
18851 | default: |
18852 | break; |
18853 | } |
18854 | break; |
18855 | case Arg::Tmp: |
18856 | switch (Arg::Addr) { |
18857 | case Arg::Addr: |
18858 | case Arg::Stack: |
18859 | case Arg::CallArg: |
18860 | #if CPU(X86) || CPU(X86_64) |
18861 | OPGEN_RETURN(true); |
18862 | #endif |
18863 | break; |
18864 | break; |
18865 | case Arg::Index: |
18866 | break; |
18867 | default: |
18868 | break; |
18869 | } |
18870 | break; |
18871 | default: |
18872 | break; |
18873 | } |
18874 | break; |
18875 | default: |
18876 | break; |
18877 | } |
18878 | break; |
18879 | case Opcode::Add16: |
18880 | switch (argIndex) { |
18881 | case 0: |
18882 | OPGEN_RETURN(false); |
18883 | break; |
18884 | case 1: |
18885 | switch (args[0].kind()) { |
18886 | case Arg::Imm: |
18887 | switch (Arg::Addr) { |
18888 | case Arg::Addr: |
18889 | case Arg::Stack: |
18890 | case Arg::CallArg: |
18891 | #if CPU(X86) || CPU(X86_64) |
18892 | OPGEN_RETURN(true); |
18893 | #endif |
18894 | break; |
18895 | break; |
18896 | case Arg::Index: |
18897 | break; |
18898 | default: |
18899 | break; |
18900 | } |
18901 | break; |
18902 | case Arg::Tmp: |
18903 | switch (Arg::Addr) { |
18904 | case Arg::Addr: |
18905 | case Arg::Stack: |
18906 | case Arg::CallArg: |
18907 | #if CPU(X86) || CPU(X86_64) |
18908 | OPGEN_RETURN(true); |
18909 | #endif |
18910 | break; |
18911 | break; |
18912 | case Arg::Index: |
18913 | break; |
18914 | default: |
18915 | break; |
18916 | } |
18917 | break; |
18918 | default: |
18919 | break; |
18920 | } |
18921 | break; |
18922 | default: |
18923 | break; |
18924 | } |
18925 | break; |
18926 | case Opcode::Add64: |
18927 | switch (argIndex) { |
18928 | case 0: |
18929 | switch (args.size()) { |
18930 | case 2: |
18931 | switch (Arg::Addr) { |
18932 | case Arg::Tmp: |
18933 | break; |
18934 | case Arg::Imm: |
18935 | break; |
18936 | case Arg::Addr: |
18937 | case Arg::Stack: |
18938 | case Arg::CallArg: |
18939 | switch (args[1].kind()) { |
18940 | case Arg::Tmp: |
18941 | #if CPU(X86_64) |
18942 | OPGEN_RETURN(true); |
18943 | #endif |
18944 | break; |
18945 | break; |
18946 | default: |
18947 | break; |
18948 | } |
18949 | break; |
18950 | case Arg::Index: |
18951 | break; |
18952 | default: |
18953 | break; |
18954 | } |
18955 | break; |
18956 | default: |
18957 | break; |
18958 | } |
18959 | break; |
18960 | case 1: |
18961 | switch (args.size()) { |
18962 | case 2: |
18963 | switch (args[0].kind()) { |
18964 | case Arg::Tmp: |
18965 | switch (Arg::Addr) { |
18966 | case Arg::Tmp: |
18967 | break; |
18968 | case Arg::Addr: |
18969 | case Arg::Stack: |
18970 | case Arg::CallArg: |
18971 | #if CPU(X86_64) |
18972 | OPGEN_RETURN(true); |
18973 | #endif |
18974 | break; |
18975 | break; |
18976 | case Arg::Index: |
18977 | break; |
18978 | default: |
18979 | break; |
18980 | } |
18981 | break; |
18982 | case Arg::Imm: |
18983 | switch (Arg::Addr) { |
18984 | case Arg::Addr: |
18985 | case Arg::Stack: |
18986 | case Arg::CallArg: |
18987 | #if CPU(X86_64) |
18988 | OPGEN_RETURN(true); |
18989 | #endif |
18990 | break; |
18991 | break; |
18992 | case Arg::Index: |
18993 | break; |
18994 | case Arg::Tmp: |
18995 | break; |
18996 | default: |
18997 | break; |
18998 | } |
18999 | break; |
19000 | case Arg::Addr: |
19001 | case Arg::Stack: |
19002 | case Arg::CallArg: |
19003 | break; |
19004 | case Arg::Index: |
19005 | break; |
19006 | default: |
19007 | break; |
19008 | } |
19009 | break; |
19010 | default: |
19011 | break; |
19012 | } |
19013 | break; |
19014 | case 2: |
19015 | OPGEN_RETURN(false); |
19016 | break; |
19017 | default: |
19018 | break; |
19019 | } |
19020 | break; |
19021 | case Opcode::AddDouble: |
19022 | switch (argIndex) { |
19023 | case 0: |
19024 | switch (args.size()) { |
19025 | case 3: |
19026 | switch (Arg::Addr) { |
19027 | case Arg::Tmp: |
19028 | break; |
19029 | case Arg::Addr: |
19030 | case Arg::Stack: |
19031 | case Arg::CallArg: |
19032 | switch (args[1].kind()) { |
19033 | case Arg::Tmp: |
19034 | switch (args[2].kind()) { |
19035 | case Arg::Tmp: |
19036 | #if CPU(X86) || CPU(X86_64) |
19037 | OPGEN_RETURN(true); |
19038 | #endif |
19039 | break; |
19040 | break; |
19041 | default: |
19042 | break; |
19043 | } |
19044 | break; |
19045 | default: |
19046 | break; |
19047 | } |
19048 | break; |
19049 | case Arg::Index: |
19050 | break; |
19051 | default: |
19052 | break; |
19053 | } |
19054 | break; |
19055 | case 2: |
19056 | switch (Arg::Addr) { |
19057 | case Arg::Tmp: |
19058 | break; |
19059 | case Arg::Addr: |
19060 | case Arg::Stack: |
19061 | case Arg::CallArg: |
19062 | switch (args[1].kind()) { |
19063 | case Arg::Tmp: |
19064 | #if CPU(X86) || CPU(X86_64) |
19065 | OPGEN_RETURN(true); |
19066 | #endif |
19067 | break; |
19068 | break; |
19069 | default: |
19070 | break; |
19071 | } |
19072 | break; |
19073 | default: |
19074 | break; |
19075 | } |
19076 | break; |
19077 | default: |
19078 | break; |
19079 | } |
19080 | break; |
19081 | case 1: |
19082 | switch (args.size()) { |
19083 | case 3: |
19084 | switch (args[0].kind()) { |
19085 | case Arg::Tmp: |
19086 | switch (Arg::Addr) { |
19087 | case Arg::Tmp: |
19088 | break; |
19089 | case Arg::Addr: |
19090 | case Arg::Stack: |
19091 | case Arg::CallArg: |
19092 | switch (args[2].kind()) { |
19093 | case Arg::Tmp: |
19094 | #if CPU(X86) || CPU(X86_64) |
19095 | OPGEN_RETURN(true); |
19096 | #endif |
19097 | break; |
19098 | break; |
19099 | default: |
19100 | break; |
19101 | } |
19102 | break; |
19103 | default: |
19104 | break; |
19105 | } |
19106 | break; |
19107 | case Arg::Addr: |
19108 | case Arg::Stack: |
19109 | case Arg::CallArg: |
19110 | break; |
19111 | case Arg::Index: |
19112 | break; |
19113 | default: |
19114 | break; |
19115 | } |
19116 | break; |
19117 | default: |
19118 | break; |
19119 | } |
19120 | break; |
19121 | case 2: |
19122 | OPGEN_RETURN(false); |
19123 | break; |
19124 | default: |
19125 | break; |
19126 | } |
19127 | break; |
19128 | case Opcode::AddFloat: |
19129 | switch (argIndex) { |
19130 | case 0: |
19131 | switch (args.size()) { |
19132 | case 3: |
19133 | switch (Arg::Addr) { |
19134 | case Arg::Tmp: |
19135 | break; |
19136 | case Arg::Addr: |
19137 | case Arg::Stack: |
19138 | case Arg::CallArg: |
19139 | switch (args[1].kind()) { |
19140 | case Arg::Tmp: |
19141 | switch (args[2].kind()) { |
19142 | case Arg::Tmp: |
19143 | #if CPU(X86) || CPU(X86_64) |
19144 | OPGEN_RETURN(true); |
19145 | #endif |
19146 | break; |
19147 | break; |
19148 | default: |
19149 | break; |
19150 | } |
19151 | break; |
19152 | default: |
19153 | break; |
19154 | } |
19155 | break; |
19156 | case Arg::Index: |
19157 | break; |
19158 | default: |
19159 | break; |
19160 | } |
19161 | break; |
19162 | case 2: |
19163 | switch (Arg::Addr) { |
19164 | case Arg::Tmp: |
19165 | break; |
19166 | case Arg::Addr: |
19167 | case Arg::Stack: |
19168 | case Arg::CallArg: |
19169 | switch (args[1].kind()) { |
19170 | case Arg::Tmp: |
19171 | #if CPU(X86) || CPU(X86_64) |
19172 | OPGEN_RETURN(true); |
19173 | #endif |
19174 | break; |
19175 | break; |
19176 | default: |
19177 | break; |
19178 | } |
19179 | break; |
19180 | default: |
19181 | break; |
19182 | } |
19183 | break; |
19184 | default: |
19185 | break; |
19186 | } |
19187 | break; |
19188 | case 1: |
19189 | switch (args.size()) { |
19190 | case 3: |
19191 | switch (args[0].kind()) { |
19192 | case Arg::Tmp: |
19193 | switch (Arg::Addr) { |
19194 | case Arg::Tmp: |
19195 | break; |
19196 | case Arg::Addr: |
19197 | case Arg::Stack: |
19198 | case Arg::CallArg: |
19199 | switch (args[2].kind()) { |
19200 | case Arg::Tmp: |
19201 | #if CPU(X86) || CPU(X86_64) |
19202 | OPGEN_RETURN(true); |
19203 | #endif |
19204 | break; |
19205 | break; |
19206 | default: |
19207 | break; |
19208 | } |
19209 | break; |
19210 | default: |
19211 | break; |
19212 | } |
19213 | break; |
19214 | case Arg::Addr: |
19215 | case Arg::Stack: |
19216 | case Arg::CallArg: |
19217 | break; |
19218 | case Arg::Index: |
19219 | break; |
19220 | default: |
19221 | break; |
19222 | } |
19223 | break; |
19224 | default: |
19225 | break; |
19226 | } |
19227 | break; |
19228 | case 2: |
19229 | OPGEN_RETURN(false); |
19230 | break; |
19231 | default: |
19232 | break; |
19233 | } |
19234 | break; |
19235 | case Opcode::Sub32: |
19236 | switch (argIndex) { |
19237 | case 0: |
19238 | switch (args.size()) { |
19239 | case 2: |
19240 | switch (Arg::Addr) { |
19241 | case Arg::Tmp: |
19242 | break; |
19243 | case Arg::Imm: |
19244 | break; |
19245 | case Arg::Addr: |
19246 | case Arg::Stack: |
19247 | case Arg::CallArg: |
19248 | switch (args[1].kind()) { |
19249 | case Arg::Tmp: |
19250 | #if CPU(X86) || CPU(X86_64) |
19251 | OPGEN_RETURN(true); |
19252 | #endif |
19253 | break; |
19254 | break; |
19255 | default: |
19256 | break; |
19257 | } |
19258 | break; |
19259 | case Arg::Index: |
19260 | break; |
19261 | default: |
19262 | break; |
19263 | } |
19264 | break; |
19265 | default: |
19266 | break; |
19267 | } |
19268 | break; |
19269 | case 1: |
19270 | switch (args.size()) { |
19271 | case 2: |
19272 | switch (args[0].kind()) { |
19273 | case Arg::Tmp: |
19274 | switch (Arg::Addr) { |
19275 | case Arg::Tmp: |
19276 | break; |
19277 | case Arg::Addr: |
19278 | case Arg::Stack: |
19279 | case Arg::CallArg: |
19280 | #if CPU(X86) || CPU(X86_64) |
19281 | OPGEN_RETURN(true); |
19282 | #endif |
19283 | break; |
19284 | break; |
19285 | case Arg::Index: |
19286 | break; |
19287 | default: |
19288 | break; |
19289 | } |
19290 | break; |
19291 | case Arg::Imm: |
19292 | switch (Arg::Addr) { |
19293 | case Arg::Addr: |
19294 | case Arg::Stack: |
19295 | case Arg::CallArg: |
19296 | #if CPU(X86) || CPU(X86_64) |
19297 | OPGEN_RETURN(true); |
19298 | #endif |
19299 | break; |
19300 | break; |
19301 | case Arg::Index: |
19302 | break; |
19303 | case Arg::Tmp: |
19304 | break; |
19305 | default: |
19306 | break; |
19307 | } |
19308 | break; |
19309 | case Arg::Addr: |
19310 | case Arg::Stack: |
19311 | case Arg::CallArg: |
19312 | break; |
19313 | case Arg::Index: |
19314 | break; |
19315 | default: |
19316 | break; |
19317 | } |
19318 | break; |
19319 | default: |
19320 | break; |
19321 | } |
19322 | break; |
19323 | case 2: |
19324 | OPGEN_RETURN(false); |
19325 | break; |
19326 | default: |
19327 | break; |
19328 | } |
19329 | break; |
19330 | case Opcode::Sub64: |
19331 | switch (argIndex) { |
19332 | case 0: |
19333 | switch (args.size()) { |
19334 | case 2: |
19335 | switch (Arg::Addr) { |
19336 | case Arg::Tmp: |
19337 | break; |
19338 | case Arg::Imm: |
19339 | break; |
19340 | case Arg::Addr: |
19341 | case Arg::Stack: |
19342 | case Arg::CallArg: |
19343 | switch (args[1].kind()) { |
19344 | case Arg::Tmp: |
19345 | #if CPU(X86_64) |
19346 | OPGEN_RETURN(true); |
19347 | #endif |
19348 | break; |
19349 | break; |
19350 | default: |
19351 | break; |
19352 | } |
19353 | break; |
19354 | case Arg::Index: |
19355 | break; |
19356 | default: |
19357 | break; |
19358 | } |
19359 | break; |
19360 | default: |
19361 | break; |
19362 | } |
19363 | break; |
19364 | case 1: |
19365 | switch (args.size()) { |
19366 | case 2: |
19367 | switch (args[0].kind()) { |
19368 | case Arg::Tmp: |
19369 | switch (Arg::Addr) { |
19370 | case Arg::Tmp: |
19371 | break; |
19372 | case Arg::Addr: |
19373 | case Arg::Stack: |
19374 | case Arg::CallArg: |
19375 | #if CPU(X86_64) |
19376 | OPGEN_RETURN(true); |
19377 | #endif |
19378 | break; |
19379 | break; |
19380 | case Arg::Index: |
19381 | break; |
19382 | default: |
19383 | break; |
19384 | } |
19385 | break; |
19386 | case Arg::Imm: |
19387 | switch (Arg::Addr) { |
19388 | case Arg::Addr: |
19389 | case Arg::Stack: |
19390 | case Arg::CallArg: |
19391 | #if CPU(X86_64) |
19392 | OPGEN_RETURN(true); |
19393 | #endif |
19394 | break; |
19395 | break; |
19396 | case Arg::Index: |
19397 | break; |
19398 | case Arg::Tmp: |
19399 | break; |
19400 | default: |
19401 | break; |
19402 | } |
19403 | break; |
19404 | case Arg::Addr: |
19405 | case Arg::Stack: |
19406 | case Arg::CallArg: |
19407 | break; |
19408 | case Arg::Index: |
19409 | break; |
19410 | default: |
19411 | break; |
19412 | } |
19413 | break; |
19414 | default: |
19415 | break; |
19416 | } |
19417 | break; |
19418 | case 2: |
19419 | OPGEN_RETURN(false); |
19420 | break; |
19421 | default: |
19422 | break; |
19423 | } |
19424 | break; |
19425 | case Opcode::SubDouble: |
19426 | switch (argIndex) { |
19427 | case 0: |
19428 | switch (args.size()) { |
19429 | case 2: |
19430 | switch (Arg::Addr) { |
19431 | case Arg::Tmp: |
19432 | break; |
19433 | case Arg::Addr: |
19434 | case Arg::Stack: |
19435 | case Arg::CallArg: |
19436 | switch (args[1].kind()) { |
19437 | case Arg::Tmp: |
19438 | #if CPU(X86) || CPU(X86_64) |
19439 | OPGEN_RETURN(true); |
19440 | #endif |
19441 | break; |
19442 | break; |
19443 | default: |
19444 | break; |
19445 | } |
19446 | break; |
19447 | default: |
19448 | break; |
19449 | } |
19450 | break; |
19451 | default: |
19452 | break; |
19453 | } |
19454 | break; |
19455 | case 1: |
19456 | switch (args.size()) { |
19457 | case 3: |
19458 | switch (args[0].kind()) { |
19459 | case Arg::Tmp: |
19460 | switch (Arg::Addr) { |
19461 | case Arg::Tmp: |
19462 | break; |
19463 | case Arg::Addr: |
19464 | case Arg::Stack: |
19465 | case Arg::CallArg: |
19466 | switch (args[2].kind()) { |
19467 | case Arg::Tmp: |
19468 | #if CPU(X86) || CPU(X86_64) |
19469 | OPGEN_RETURN(true); |
19470 | #endif |
19471 | break; |
19472 | break; |
19473 | default: |
19474 | break; |
19475 | } |
19476 | break; |
19477 | case Arg::Index: |
19478 | break; |
19479 | default: |
19480 | break; |
19481 | } |
19482 | break; |
19483 | default: |
19484 | break; |
19485 | } |
19486 | break; |
19487 | default: |
19488 | break; |
19489 | } |
19490 | break; |
19491 | case 2: |
19492 | OPGEN_RETURN(false); |
19493 | break; |
19494 | default: |
19495 | break; |
19496 | } |
19497 | break; |
19498 | case Opcode::SubFloat: |
19499 | switch (argIndex) { |
19500 | case 0: |
19501 | switch (args.size()) { |
19502 | case 2: |
19503 | switch (Arg::Addr) { |
19504 | case Arg::Tmp: |
19505 | break; |
19506 | case Arg::Addr: |
19507 | case Arg::Stack: |
19508 | case Arg::CallArg: |
19509 | switch (args[1].kind()) { |
19510 | case Arg::Tmp: |
19511 | #if CPU(X86) || CPU(X86_64) |
19512 | OPGEN_RETURN(true); |
19513 | #endif |
19514 | break; |
19515 | break; |
19516 | default: |
19517 | break; |
19518 | } |
19519 | break; |
19520 | default: |
19521 | break; |
19522 | } |
19523 | break; |
19524 | default: |
19525 | break; |
19526 | } |
19527 | break; |
19528 | case 1: |
19529 | switch (args.size()) { |
19530 | case 3: |
19531 | switch (args[0].kind()) { |
19532 | case Arg::Tmp: |
19533 | switch (Arg::Addr) { |
19534 | case Arg::Tmp: |
19535 | break; |
19536 | case Arg::Addr: |
19537 | case Arg::Stack: |
19538 | case Arg::CallArg: |
19539 | switch (args[2].kind()) { |
19540 | case Arg::Tmp: |
19541 | #if CPU(X86) || CPU(X86_64) |
19542 | OPGEN_RETURN(true); |
19543 | #endif |
19544 | break; |
19545 | break; |
19546 | default: |
19547 | break; |
19548 | } |
19549 | break; |
19550 | case Arg::Index: |
19551 | break; |
19552 | default: |
19553 | break; |
19554 | } |
19555 | break; |
19556 | default: |
19557 | break; |
19558 | } |
19559 | break; |
19560 | default: |
19561 | break; |
19562 | } |
19563 | break; |
19564 | case 2: |
19565 | OPGEN_RETURN(false); |
19566 | break; |
19567 | default: |
19568 | break; |
19569 | } |
19570 | break; |
19571 | case Opcode::Neg32: |
19572 | switch (argIndex) { |
19573 | case 0: |
19574 | switch (Arg::Addr) { |
19575 | case Arg::Tmp: |
19576 | break; |
19577 | case Arg::Addr: |
19578 | case Arg::Stack: |
19579 | case Arg::CallArg: |
19580 | #if CPU(X86) || CPU(X86_64) |
19581 | OPGEN_RETURN(true); |
19582 | #endif |
19583 | break; |
19584 | break; |
19585 | case Arg::Index: |
19586 | break; |
19587 | default: |
19588 | break; |
19589 | } |
19590 | break; |
19591 | default: |
19592 | break; |
19593 | } |
19594 | break; |
19595 | case Opcode::Neg64: |
19596 | switch (argIndex) { |
19597 | case 0: |
19598 | switch (Arg::Addr) { |
19599 | case Arg::Tmp: |
19600 | break; |
19601 | case Arg::Addr: |
19602 | case Arg::Stack: |
19603 | case Arg::CallArg: |
19604 | #if CPU(X86_64) |
19605 | OPGEN_RETURN(true); |
19606 | #endif |
19607 | break; |
19608 | break; |
19609 | case Arg::Index: |
19610 | break; |
19611 | default: |
19612 | break; |
19613 | } |
19614 | break; |
19615 | default: |
19616 | break; |
19617 | } |
19618 | break; |
19619 | case Opcode::NegateDouble: |
19620 | switch (argIndex) { |
19621 | case 0: |
19622 | OPGEN_RETURN(false); |
19623 | break; |
19624 | case 1: |
19625 | OPGEN_RETURN(false); |
19626 | break; |
19627 | default: |
19628 | break; |
19629 | } |
19630 | break; |
19631 | case Opcode::NegateFloat: |
19632 | switch (argIndex) { |
19633 | case 0: |
19634 | OPGEN_RETURN(false); |
19635 | break; |
19636 | case 1: |
19637 | OPGEN_RETURN(false); |
19638 | break; |
19639 | default: |
19640 | break; |
19641 | } |
19642 | break; |
19643 | case Opcode::Mul32: |
19644 | switch (argIndex) { |
19645 | case 0: |
19646 | switch (args.size()) { |
19647 | case 2: |
19648 | switch (Arg::Addr) { |
19649 | case Arg::Tmp: |
19650 | break; |
19651 | case Arg::Addr: |
19652 | case Arg::Stack: |
19653 | case Arg::CallArg: |
19654 | switch (args[1].kind()) { |
19655 | case Arg::Tmp: |
19656 | #if CPU(X86) || CPU(X86_64) |
19657 | OPGEN_RETURN(true); |
19658 | #endif |
19659 | break; |
19660 | break; |
19661 | default: |
19662 | break; |
19663 | } |
19664 | break; |
19665 | default: |
19666 | break; |
19667 | } |
19668 | break; |
19669 | case 3: |
19670 | switch (Arg::Addr) { |
19671 | case Arg::Tmp: |
19672 | break; |
19673 | case Arg::Addr: |
19674 | case Arg::Stack: |
19675 | case Arg::CallArg: |
19676 | switch (args[1].kind()) { |
19677 | case Arg::Tmp: |
19678 | switch (args[2].kind()) { |
19679 | case Arg::Tmp: |
19680 | #if CPU(X86) || CPU(X86_64) |
19681 | OPGEN_RETURN(true); |
19682 | #endif |
19683 | break; |
19684 | break; |
19685 | default: |
19686 | break; |
19687 | } |
19688 | break; |
19689 | default: |
19690 | break; |
19691 | } |
19692 | break; |
19693 | case Arg::Imm: |
19694 | break; |
19695 | default: |
19696 | break; |
19697 | } |
19698 | break; |
19699 | default: |
19700 | break; |
19701 | } |
19702 | break; |
19703 | case 1: |
19704 | switch (args.size()) { |
19705 | case 3: |
19706 | switch (args[0].kind()) { |
19707 | case Arg::Tmp: |
19708 | switch (Arg::Addr) { |
19709 | case Arg::Tmp: |
19710 | break; |
19711 | case Arg::Addr: |
19712 | case Arg::Stack: |
19713 | case Arg::CallArg: |
19714 | switch (args[2].kind()) { |
19715 | case Arg::Tmp: |
19716 | #if CPU(X86) || CPU(X86_64) |
19717 | OPGEN_RETURN(true); |
19718 | #endif |
19719 | break; |
19720 | break; |
19721 | default: |
19722 | break; |
19723 | } |
19724 | break; |
19725 | default: |
19726 | break; |
19727 | } |
19728 | break; |
19729 | case Arg::Addr: |
19730 | case Arg::Stack: |
19731 | case Arg::CallArg: |
19732 | break; |
19733 | case Arg::Imm: |
19734 | break; |
19735 | default: |
19736 | break; |
19737 | } |
19738 | break; |
19739 | default: |
19740 | break; |
19741 | } |
19742 | break; |
19743 | case 2: |
19744 | OPGEN_RETURN(false); |
19745 | break; |
19746 | default: |
19747 | break; |
19748 | } |
19749 | break; |
19750 | case Opcode::Mul64: |
19751 | switch (argIndex) { |
19752 | case 0: |
19753 | OPGEN_RETURN(false); |
19754 | break; |
19755 | case 1: |
19756 | OPGEN_RETURN(false); |
19757 | break; |
19758 | case 2: |
19759 | OPGEN_RETURN(false); |
19760 | break; |
19761 | default: |
19762 | break; |
19763 | } |
19764 | break; |
19765 | case Opcode::MultiplyAdd32: |
19766 | switch (argIndex) { |
19767 | case 0: |
19768 | OPGEN_RETURN(false); |
19769 | break; |
19770 | case 1: |
19771 | OPGEN_RETURN(false); |
19772 | break; |
19773 | case 2: |
19774 | OPGEN_RETURN(false); |
19775 | break; |
19776 | case 3: |
19777 | OPGEN_RETURN(false); |
19778 | break; |
19779 | default: |
19780 | break; |
19781 | } |
19782 | break; |
19783 | case Opcode::MultiplyAdd64: |
19784 | switch (argIndex) { |
19785 | case 0: |
19786 | OPGEN_RETURN(false); |
19787 | break; |
19788 | case 1: |
19789 | OPGEN_RETURN(false); |
19790 | break; |
19791 | case 2: |
19792 | OPGEN_RETURN(false); |
19793 | break; |
19794 | case 3: |
19795 | OPGEN_RETURN(false); |
19796 | break; |
19797 | default: |
19798 | break; |
19799 | } |
19800 | break; |
19801 | case Opcode::MultiplySub32: |
19802 | switch (argIndex) { |
19803 | case 0: |
19804 | OPGEN_RETURN(false); |
19805 | break; |
19806 | case 1: |
19807 | OPGEN_RETURN(false); |
19808 | break; |
19809 | case 2: |
19810 | OPGEN_RETURN(false); |
19811 | break; |
19812 | case 3: |
19813 | OPGEN_RETURN(false); |
19814 | break; |
19815 | default: |
19816 | break; |
19817 | } |
19818 | break; |
19819 | case Opcode::MultiplySub64: |
19820 | switch (argIndex) { |
19821 | case 0: |
19822 | OPGEN_RETURN(false); |
19823 | break; |
19824 | case 1: |
19825 | OPGEN_RETURN(false); |
19826 | break; |
19827 | case 2: |
19828 | OPGEN_RETURN(false); |
19829 | break; |
19830 | case 3: |
19831 | OPGEN_RETURN(false); |
19832 | break; |
19833 | default: |
19834 | break; |
19835 | } |
19836 | break; |
19837 | case Opcode::MultiplyNeg32: |
19838 | switch (argIndex) { |
19839 | case 0: |
19840 | OPGEN_RETURN(false); |
19841 | break; |
19842 | case 1: |
19843 | OPGEN_RETURN(false); |
19844 | break; |
19845 | case 2: |
19846 | OPGEN_RETURN(false); |
19847 | break; |
19848 | default: |
19849 | break; |
19850 | } |
19851 | break; |
19852 | case Opcode::MultiplyNeg64: |
19853 | switch (argIndex) { |
19854 | case 0: |
19855 | OPGEN_RETURN(false); |
19856 | break; |
19857 | case 1: |
19858 | OPGEN_RETURN(false); |
19859 | break; |
19860 | case 2: |
19861 | OPGEN_RETURN(false); |
19862 | break; |
19863 | default: |
19864 | break; |
19865 | } |
19866 | break; |
19867 | case Opcode::MultiplySignExtend32: |
19868 | switch (argIndex) { |
19869 | case 0: |
19870 | OPGEN_RETURN(false); |
19871 | break; |
19872 | case 1: |
19873 | OPGEN_RETURN(false); |
19874 | break; |
19875 | case 2: |
19876 | OPGEN_RETURN(false); |
19877 | break; |
19878 | default: |
19879 | break; |
19880 | } |
19881 | break; |
19882 | case Opcode::Div32: |
19883 | switch (argIndex) { |
19884 | case 0: |
19885 | OPGEN_RETURN(false); |
19886 | break; |
19887 | case 1: |
19888 | OPGEN_RETURN(false); |
19889 | break; |
19890 | case 2: |
19891 | OPGEN_RETURN(false); |
19892 | break; |
19893 | default: |
19894 | break; |
19895 | } |
19896 | break; |
19897 | case Opcode::UDiv32: |
19898 | switch (argIndex) { |
19899 | case 0: |
19900 | OPGEN_RETURN(false); |
19901 | break; |
19902 | case 1: |
19903 | OPGEN_RETURN(false); |
19904 | break; |
19905 | case 2: |
19906 | OPGEN_RETURN(false); |
19907 | break; |
19908 | default: |
19909 | break; |
19910 | } |
19911 | break; |
19912 | case Opcode::Div64: |
19913 | switch (argIndex) { |
19914 | case 0: |
19915 | OPGEN_RETURN(false); |
19916 | break; |
19917 | case 1: |
19918 | OPGEN_RETURN(false); |
19919 | break; |
19920 | case 2: |
19921 | OPGEN_RETURN(false); |
19922 | break; |
19923 | default: |
19924 | break; |
19925 | } |
19926 | break; |
19927 | case Opcode::UDiv64: |
19928 | switch (argIndex) { |
19929 | case 0: |
19930 | OPGEN_RETURN(false); |
19931 | break; |
19932 | case 1: |
19933 | OPGEN_RETURN(false); |
19934 | break; |
19935 | case 2: |
19936 | OPGEN_RETURN(false); |
19937 | break; |
19938 | default: |
19939 | break; |
19940 | } |
19941 | break; |
19942 | case Opcode::MulDouble: |
19943 | switch (argIndex) { |
19944 | case 0: |
19945 | switch (args.size()) { |
19946 | case 3: |
19947 | switch (Arg::Addr) { |
19948 | case Arg::Tmp: |
19949 | break; |
19950 | case Arg::Addr: |
19951 | case Arg::Stack: |
19952 | case Arg::CallArg: |
19953 | switch (args[1].kind()) { |
19954 | case Arg::Tmp: |
19955 | switch (args[2].kind()) { |
19956 | case Arg::Tmp: |
19957 | #if CPU(X86) || CPU(X86_64) |
19958 | OPGEN_RETURN(true); |
19959 | #endif |
19960 | break; |
19961 | break; |
19962 | default: |
19963 | break; |
19964 | } |
19965 | break; |
19966 | default: |
19967 | break; |
19968 | } |
19969 | break; |
19970 | case Arg::Index: |
19971 | break; |
19972 | default: |
19973 | break; |
19974 | } |
19975 | break; |
19976 | case 2: |
19977 | switch (Arg::Addr) { |
19978 | case Arg::Tmp: |
19979 | break; |
19980 | case Arg::Addr: |
19981 | case Arg::Stack: |
19982 | case Arg::CallArg: |
19983 | switch (args[1].kind()) { |
19984 | case Arg::Tmp: |
19985 | #if CPU(X86) || CPU(X86_64) |
19986 | OPGEN_RETURN(true); |
19987 | #endif |
19988 | break; |
19989 | break; |
19990 | default: |
19991 | break; |
19992 | } |
19993 | break; |
19994 | default: |
19995 | break; |
19996 | } |
19997 | break; |
19998 | default: |
19999 | break; |
20000 | } |
20001 | break; |
20002 | case 1: |
20003 | switch (args.size()) { |
20004 | case 3: |
20005 | switch (args[0].kind()) { |
20006 | case Arg::Tmp: |
20007 | switch (Arg::Addr) { |
20008 | case Arg::Tmp: |
20009 | break; |
20010 | case Arg::Addr: |
20011 | case Arg::Stack: |
20012 | case Arg::CallArg: |
20013 | switch (args[2].kind()) { |
20014 | case Arg::Tmp: |
20015 | #if CPU(X86) || CPU(X86_64) |
20016 | OPGEN_RETURN(true); |
20017 | #endif |
20018 | break; |
20019 | break; |
20020 | default: |
20021 | break; |
20022 | } |
20023 | break; |
20024 | default: |
20025 | break; |
20026 | } |
20027 | break; |
20028 | case Arg::Addr: |
20029 | case Arg::Stack: |
20030 | case Arg::CallArg: |
20031 | break; |
20032 | case Arg::Index: |
20033 | break; |
20034 | default: |
20035 | break; |
20036 | } |
20037 | break; |
20038 | default: |
20039 | break; |
20040 | } |
20041 | break; |
20042 | case 2: |
20043 | OPGEN_RETURN(false); |
20044 | break; |
20045 | default: |
20046 | break; |
20047 | } |
20048 | break; |
20049 | case Opcode::MulFloat: |
20050 | switch (argIndex) { |
20051 | case 0: |
20052 | switch (args.size()) { |
20053 | case 3: |
20054 | switch (Arg::Addr) { |
20055 | case Arg::Tmp: |
20056 | break; |
20057 | case Arg::Addr: |
20058 | case Arg::Stack: |
20059 | case Arg::CallArg: |
20060 | switch (args[1].kind()) { |
20061 | case Arg::Tmp: |
20062 | switch (args[2].kind()) { |
20063 | case Arg::Tmp: |
20064 | #if CPU(X86) || CPU(X86_64) |
20065 | OPGEN_RETURN(true); |
20066 | #endif |
20067 | break; |
20068 | break; |
20069 | default: |
20070 | break; |
20071 | } |
20072 | break; |
20073 | default: |
20074 | break; |
20075 | } |
20076 | break; |
20077 | case Arg::Index: |
20078 | break; |
20079 | default: |
20080 | break; |
20081 | } |
20082 | break; |
20083 | case 2: |
20084 | switch (Arg::Addr) { |
20085 | case Arg::Tmp: |
20086 | break; |
20087 | case Arg::Addr: |
20088 | case Arg::Stack: |
20089 | case Arg::CallArg: |
20090 | switch (args[1].kind()) { |
20091 | case Arg::Tmp: |
20092 | #if CPU(X86) || CPU(X86_64) |
20093 | OPGEN_RETURN(true); |
20094 | #endif |
20095 | break; |
20096 | break; |
20097 | default: |
20098 | break; |
20099 | } |
20100 | break; |
20101 | default: |
20102 | break; |
20103 | } |
20104 | break; |
20105 | default: |
20106 | break; |
20107 | } |
20108 | break; |
20109 | case 1: |
20110 | switch (args.size()) { |
20111 | case 3: |
20112 | switch (args[0].kind()) { |
20113 | case Arg::Tmp: |
20114 | switch (Arg::Addr) { |
20115 | case Arg::Tmp: |
20116 | break; |
20117 | case Arg::Addr: |
20118 | case Arg::Stack: |
20119 | case Arg::CallArg: |
20120 | switch (args[2].kind()) { |
20121 | case Arg::Tmp: |
20122 | #if CPU(X86) || CPU(X86_64) |
20123 | OPGEN_RETURN(true); |
20124 | #endif |
20125 | break; |
20126 | break; |
20127 | default: |
20128 | break; |
20129 | } |
20130 | break; |
20131 | default: |
20132 | break; |
20133 | } |
20134 | break; |
20135 | case Arg::Addr: |
20136 | case Arg::Stack: |
20137 | case Arg::CallArg: |
20138 | break; |
20139 | case Arg::Index: |
20140 | break; |
20141 | default: |
20142 | break; |
20143 | } |
20144 | break; |
20145 | default: |
20146 | break; |
20147 | } |
20148 | break; |
20149 | case 2: |
20150 | OPGEN_RETURN(false); |
20151 | break; |
20152 | default: |
20153 | break; |
20154 | } |
20155 | break; |
20156 | case Opcode::DivDouble: |
20157 | switch (argIndex) { |
20158 | case 0: |
20159 | switch (args.size()) { |
20160 | case 2: |
20161 | switch (Arg::Addr) { |
20162 | case Arg::Tmp: |
20163 | break; |
20164 | case Arg::Addr: |
20165 | case Arg::Stack: |
20166 | case Arg::CallArg: |
20167 | switch (args[1].kind()) { |
20168 | case Arg::Tmp: |
20169 | #if CPU(X86) || CPU(X86_64) |
20170 | OPGEN_RETURN(true); |
20171 | #endif |
20172 | break; |
20173 | break; |
20174 | default: |
20175 | break; |
20176 | } |
20177 | break; |
20178 | default: |
20179 | break; |
20180 | } |
20181 | break; |
20182 | default: |
20183 | break; |
20184 | } |
20185 | break; |
20186 | case 1: |
20187 | OPGEN_RETURN(false); |
20188 | break; |
20189 | case 2: |
20190 | OPGEN_RETURN(false); |
20191 | break; |
20192 | default: |
20193 | break; |
20194 | } |
20195 | break; |
20196 | case Opcode::DivFloat: |
20197 | switch (argIndex) { |
20198 | case 0: |
20199 | switch (args.size()) { |
20200 | case 2: |
20201 | switch (Arg::Addr) { |
20202 | case Arg::Tmp: |
20203 | break; |
20204 | case Arg::Addr: |
20205 | case Arg::Stack: |
20206 | case Arg::CallArg: |
20207 | switch (args[1].kind()) { |
20208 | case Arg::Tmp: |
20209 | #if CPU(X86) || CPU(X86_64) |
20210 | OPGEN_RETURN(true); |
20211 | #endif |
20212 | break; |
20213 | break; |
20214 | default: |
20215 | break; |
20216 | } |
20217 | break; |
20218 | default: |
20219 | break; |
20220 | } |
20221 | break; |
20222 | default: |
20223 | break; |
20224 | } |
20225 | break; |
20226 | case 1: |
20227 | OPGEN_RETURN(false); |
20228 | break; |
20229 | case 2: |
20230 | OPGEN_RETURN(false); |
20231 | break; |
20232 | default: |
20233 | break; |
20234 | } |
20235 | break; |
20236 | case Opcode::X86ConvertToDoubleWord32: |
20237 | switch (argIndex) { |
20238 | case 0: |
20239 | OPGEN_RETURN(false); |
20240 | break; |
20241 | case 1: |
20242 | OPGEN_RETURN(false); |
20243 | break; |
20244 | default: |
20245 | break; |
20246 | } |
20247 | break; |
20248 | case Opcode::X86ConvertToQuadWord64: |
20249 | switch (argIndex) { |
20250 | case 0: |
20251 | OPGEN_RETURN(false); |
20252 | break; |
20253 | case 1: |
20254 | OPGEN_RETURN(false); |
20255 | break; |
20256 | default: |
20257 | break; |
20258 | } |
20259 | break; |
20260 | case Opcode::X86Div32: |
20261 | switch (argIndex) { |
20262 | case 0: |
20263 | OPGEN_RETURN(false); |
20264 | break; |
20265 | case 1: |
20266 | OPGEN_RETURN(false); |
20267 | break; |
20268 | case 2: |
20269 | OPGEN_RETURN(false); |
20270 | break; |
20271 | default: |
20272 | break; |
20273 | } |
20274 | break; |
20275 | case Opcode::X86UDiv32: |
20276 | switch (argIndex) { |
20277 | case 0: |
20278 | OPGEN_RETURN(false); |
20279 | break; |
20280 | case 1: |
20281 | OPGEN_RETURN(false); |
20282 | break; |
20283 | case 2: |
20284 | OPGEN_RETURN(false); |
20285 | break; |
20286 | default: |
20287 | break; |
20288 | } |
20289 | break; |
20290 | case Opcode::X86Div64: |
20291 | switch (argIndex) { |
20292 | case 0: |
20293 | OPGEN_RETURN(false); |
20294 | break; |
20295 | case 1: |
20296 | OPGEN_RETURN(false); |
20297 | break; |
20298 | case 2: |
20299 | OPGEN_RETURN(false); |
20300 | break; |
20301 | default: |
20302 | break; |
20303 | } |
20304 | break; |
20305 | case Opcode::X86UDiv64: |
20306 | switch (argIndex) { |
20307 | case 0: |
20308 | OPGEN_RETURN(false); |
20309 | break; |
20310 | case 1: |
20311 | OPGEN_RETURN(false); |
20312 | break; |
20313 | case 2: |
20314 | OPGEN_RETURN(false); |
20315 | break; |
20316 | default: |
20317 | break; |
20318 | } |
20319 | break; |
20320 | case Opcode::Lea32: |
20321 | switch (argIndex) { |
20322 | case 0: |
20323 | OPGEN_RETURN(false); |
20324 | break; |
20325 | case 1: |
20326 | OPGEN_RETURN(false); |
20327 | break; |
20328 | default: |
20329 | break; |
20330 | } |
20331 | break; |
20332 | case Opcode::Lea64: |
20333 | switch (argIndex) { |
20334 | case 0: |
20335 | OPGEN_RETURN(false); |
20336 | break; |
20337 | case 1: |
20338 | OPGEN_RETURN(false); |
20339 | break; |
20340 | default: |
20341 | break; |
20342 | } |
20343 | break; |
20344 | case Opcode::And32: |
20345 | switch (argIndex) { |
20346 | case 0: |
20347 | switch (args.size()) { |
20348 | case 3: |
20349 | switch (Arg::Addr) { |
20350 | case Arg::Tmp: |
20351 | break; |
20352 | case Arg::BitImm: |
20353 | break; |
20354 | case Arg::Addr: |
20355 | case Arg::Stack: |
20356 | case Arg::CallArg: |
20357 | switch (args[1].kind()) { |
20358 | case Arg::Tmp: |
20359 | switch (args[2].kind()) { |
20360 | case Arg::Tmp: |
20361 | #if CPU(X86) || CPU(X86_64) |
20362 | OPGEN_RETURN(true); |
20363 | #endif |
20364 | break; |
20365 | break; |
20366 | default: |
20367 | break; |
20368 | } |
20369 | break; |
20370 | default: |
20371 | break; |
20372 | } |
20373 | break; |
20374 | default: |
20375 | break; |
20376 | } |
20377 | break; |
20378 | case 2: |
20379 | switch (Arg::Addr) { |
20380 | case Arg::Tmp: |
20381 | break; |
20382 | case Arg::Imm: |
20383 | break; |
20384 | case Arg::Addr: |
20385 | case Arg::Stack: |
20386 | case Arg::CallArg: |
20387 | switch (args[1].kind()) { |
20388 | case Arg::Tmp: |
20389 | #if CPU(X86) || CPU(X86_64) |
20390 | OPGEN_RETURN(true); |
20391 | #endif |
20392 | break; |
20393 | break; |
20394 | default: |
20395 | break; |
20396 | } |
20397 | break; |
20398 | case Arg::Index: |
20399 | break; |
20400 | default: |
20401 | break; |
20402 | } |
20403 | break; |
20404 | default: |
20405 | break; |
20406 | } |
20407 | break; |
20408 | case 1: |
20409 | switch (args.size()) { |
20410 | case 3: |
20411 | switch (args[0].kind()) { |
20412 | case Arg::Tmp: |
20413 | switch (Arg::Addr) { |
20414 | case Arg::Tmp: |
20415 | break; |
20416 | case Arg::Addr: |
20417 | case Arg::Stack: |
20418 | case Arg::CallArg: |
20419 | switch (args[2].kind()) { |
20420 | case Arg::Tmp: |
20421 | #if CPU(X86) || CPU(X86_64) |
20422 | OPGEN_RETURN(true); |
20423 | #endif |
20424 | break; |
20425 | break; |
20426 | default: |
20427 | break; |
20428 | } |
20429 | break; |
20430 | default: |
20431 | break; |
20432 | } |
20433 | break; |
20434 | case Arg::BitImm: |
20435 | break; |
20436 | case Arg::Addr: |
20437 | case Arg::Stack: |
20438 | case Arg::CallArg: |
20439 | break; |
20440 | default: |
20441 | break; |
20442 | } |
20443 | break; |
20444 | case 2: |
20445 | switch (args[0].kind()) { |
20446 | case Arg::Tmp: |
20447 | switch (Arg::Addr) { |
20448 | case Arg::Tmp: |
20449 | break; |
20450 | case Arg::Addr: |
20451 | case Arg::Stack: |
20452 | case Arg::CallArg: |
20453 | #if CPU(X86) || CPU(X86_64) |
20454 | OPGEN_RETURN(true); |
20455 | #endif |
20456 | break; |
20457 | break; |
20458 | case Arg::Index: |
20459 | break; |
20460 | default: |
20461 | break; |
20462 | } |
20463 | break; |
20464 | case Arg::Imm: |
20465 | switch (Arg::Addr) { |
20466 | case Arg::Tmp: |
20467 | break; |
20468 | case Arg::Addr: |
20469 | case Arg::Stack: |
20470 | case Arg::CallArg: |
20471 | #if CPU(X86) || CPU(X86_64) |
20472 | OPGEN_RETURN(true); |
20473 | #endif |
20474 | break; |
20475 | break; |
20476 | case Arg::Index: |
20477 | break; |
20478 | default: |
20479 | break; |
20480 | } |
20481 | break; |
20482 | case Arg::Addr: |
20483 | case Arg::Stack: |
20484 | case Arg::CallArg: |
20485 | break; |
20486 | case Arg::Index: |
20487 | break; |
20488 | default: |
20489 | break; |
20490 | } |
20491 | break; |
20492 | default: |
20493 | break; |
20494 | } |
20495 | break; |
20496 | case 2: |
20497 | OPGEN_RETURN(false); |
20498 | break; |
20499 | default: |
20500 | break; |
20501 | } |
20502 | break; |
20503 | case Opcode::And64: |
20504 | switch (argIndex) { |
20505 | case 0: |
20506 | switch (args.size()) { |
20507 | case 2: |
20508 | switch (Arg::Addr) { |
20509 | case Arg::Tmp: |
20510 | break; |
20511 | case Arg::Imm: |
20512 | break; |
20513 | case Arg::Addr: |
20514 | case Arg::Stack: |
20515 | case Arg::CallArg: |
20516 | switch (args[1].kind()) { |
20517 | case Arg::Tmp: |
20518 | #if CPU(X86_64) |
20519 | OPGEN_RETURN(true); |
20520 | #endif |
20521 | break; |
20522 | break; |
20523 | default: |
20524 | break; |
20525 | } |
20526 | break; |
20527 | case Arg::Index: |
20528 | break; |
20529 | default: |
20530 | break; |
20531 | } |
20532 | break; |
20533 | default: |
20534 | break; |
20535 | } |
20536 | break; |
20537 | case 1: |
20538 | switch (args.size()) { |
20539 | case 2: |
20540 | switch (args[0].kind()) { |
20541 | case Arg::Tmp: |
20542 | switch (Arg::Addr) { |
20543 | case Arg::Tmp: |
20544 | break; |
20545 | case Arg::Addr: |
20546 | case Arg::Stack: |
20547 | case Arg::CallArg: |
20548 | #if CPU(X86_64) |
20549 | OPGEN_RETURN(true); |
20550 | #endif |
20551 | break; |
20552 | break; |
20553 | case Arg::Index: |
20554 | break; |
20555 | default: |
20556 | break; |
20557 | } |
20558 | break; |
20559 | case Arg::Imm: |
20560 | switch (Arg::Addr) { |
20561 | case Arg::Tmp: |
20562 | break; |
20563 | case Arg::Addr: |
20564 | case Arg::Stack: |
20565 | case Arg::CallArg: |
20566 | #if CPU(X86_64) |
20567 | OPGEN_RETURN(true); |
20568 | #endif |
20569 | break; |
20570 | break; |
20571 | case Arg::Index: |
20572 | break; |
20573 | default: |
20574 | break; |
20575 | } |
20576 | break; |
20577 | case Arg::Addr: |
20578 | case Arg::Stack: |
20579 | case Arg::CallArg: |
20580 | break; |
20581 | case Arg::Index: |
20582 | break; |
20583 | default: |
20584 | break; |
20585 | } |
20586 | break; |
20587 | default: |
20588 | break; |
20589 | } |
20590 | break; |
20591 | case 2: |
20592 | OPGEN_RETURN(false); |
20593 | break; |
20594 | default: |
20595 | break; |
20596 | } |
20597 | break; |
20598 | case Opcode::AndDouble: |
20599 | switch (argIndex) { |
20600 | case 0: |
20601 | OPGEN_RETURN(false); |
20602 | break; |
20603 | case 1: |
20604 | OPGEN_RETURN(false); |
20605 | break; |
20606 | case 2: |
20607 | OPGEN_RETURN(false); |
20608 | break; |
20609 | default: |
20610 | break; |
20611 | } |
20612 | break; |
20613 | case Opcode::AndFloat: |
20614 | switch (argIndex) { |
20615 | case 0: |
20616 | OPGEN_RETURN(false); |
20617 | break; |
20618 | case 1: |
20619 | OPGEN_RETURN(false); |
20620 | break; |
20621 | case 2: |
20622 | OPGEN_RETURN(false); |
20623 | break; |
20624 | default: |
20625 | break; |
20626 | } |
20627 | break; |
20628 | case Opcode::OrDouble: |
20629 | switch (argIndex) { |
20630 | case 0: |
20631 | OPGEN_RETURN(false); |
20632 | break; |
20633 | case 1: |
20634 | OPGEN_RETURN(false); |
20635 | break; |
20636 | case 2: |
20637 | OPGEN_RETURN(false); |
20638 | break; |
20639 | default: |
20640 | break; |
20641 | } |
20642 | break; |
20643 | case Opcode::OrFloat: |
20644 | switch (argIndex) { |
20645 | case 0: |
20646 | OPGEN_RETURN(false); |
20647 | break; |
20648 | case 1: |
20649 | OPGEN_RETURN(false); |
20650 | break; |
20651 | case 2: |
20652 | OPGEN_RETURN(false); |
20653 | break; |
20654 | default: |
20655 | break; |
20656 | } |
20657 | break; |
20658 | case Opcode::XorDouble: |
20659 | switch (argIndex) { |
20660 | case 0: |
20661 | OPGEN_RETURN(false); |
20662 | break; |
20663 | case 1: |
20664 | OPGEN_RETURN(false); |
20665 | break; |
20666 | case 2: |
20667 | OPGEN_RETURN(false); |
20668 | break; |
20669 | default: |
20670 | break; |
20671 | } |
20672 | break; |
20673 | case Opcode::XorFloat: |
20674 | switch (argIndex) { |
20675 | case 0: |
20676 | OPGEN_RETURN(false); |
20677 | break; |
20678 | case 1: |
20679 | OPGEN_RETURN(false); |
20680 | break; |
20681 | case 2: |
20682 | OPGEN_RETURN(false); |
20683 | break; |
20684 | default: |
20685 | break; |
20686 | } |
20687 | break; |
20688 | case Opcode::Lshift32: |
20689 | switch (argIndex) { |
20690 | case 0: |
20691 | OPGEN_RETURN(false); |
20692 | break; |
20693 | case 1: |
20694 | OPGEN_RETURN(false); |
20695 | break; |
20696 | case 2: |
20697 | OPGEN_RETURN(false); |
20698 | break; |
20699 | default: |
20700 | break; |
20701 | } |
20702 | break; |
20703 | case Opcode::Lshift64: |
20704 | switch (argIndex) { |
20705 | case 0: |
20706 | OPGEN_RETURN(false); |
20707 | break; |
20708 | case 1: |
20709 | OPGEN_RETURN(false); |
20710 | break; |
20711 | case 2: |
20712 | OPGEN_RETURN(false); |
20713 | break; |
20714 | default: |
20715 | break; |
20716 | } |
20717 | break; |
20718 | case Opcode::Rshift32: |
20719 | switch (argIndex) { |
20720 | case 0: |
20721 | OPGEN_RETURN(false); |
20722 | break; |
20723 | case 1: |
20724 | OPGEN_RETURN(false); |
20725 | break; |
20726 | case 2: |
20727 | OPGEN_RETURN(false); |
20728 | break; |
20729 | default: |
20730 | break; |
20731 | } |
20732 | break; |
20733 | case Opcode::Rshift64: |
20734 | switch (argIndex) { |
20735 | case 0: |
20736 | OPGEN_RETURN(false); |
20737 | break; |
20738 | case 1: |
20739 | OPGEN_RETURN(false); |
20740 | break; |
20741 | case 2: |
20742 | OPGEN_RETURN(false); |
20743 | break; |
20744 | default: |
20745 | break; |
20746 | } |
20747 | break; |
20748 | case Opcode::Urshift32: |
20749 | switch (argIndex) { |
20750 | case 0: |
20751 | OPGEN_RETURN(false); |
20752 | break; |
20753 | case 1: |
20754 | OPGEN_RETURN(false); |
20755 | break; |
20756 | case 2: |
20757 | OPGEN_RETURN(false); |
20758 | break; |
20759 | default: |
20760 | break; |
20761 | } |
20762 | break; |
20763 | case Opcode::Urshift64: |
20764 | switch (argIndex) { |
20765 | case 0: |
20766 | OPGEN_RETURN(false); |
20767 | break; |
20768 | case 1: |
20769 | OPGEN_RETURN(false); |
20770 | break; |
20771 | case 2: |
20772 | OPGEN_RETURN(false); |
20773 | break; |
20774 | default: |
20775 | break; |
20776 | } |
20777 | break; |
20778 | case Opcode::RotateRight32: |
20779 | switch (argIndex) { |
20780 | case 0: |
20781 | OPGEN_RETURN(false); |
20782 | break; |
20783 | case 1: |
20784 | OPGEN_RETURN(false); |
20785 | break; |
20786 | case 2: |
20787 | OPGEN_RETURN(false); |
20788 | break; |
20789 | default: |
20790 | break; |
20791 | } |
20792 | break; |
20793 | case Opcode::RotateRight64: |
20794 | switch (argIndex) { |
20795 | case 0: |
20796 | OPGEN_RETURN(false); |
20797 | break; |
20798 | case 1: |
20799 | OPGEN_RETURN(false); |
20800 | break; |
20801 | case 2: |
20802 | OPGEN_RETURN(false); |
20803 | break; |
20804 | default: |
20805 | break; |
20806 | } |
20807 | break; |
20808 | case Opcode::RotateLeft32: |
20809 | switch (argIndex) { |
20810 | case 0: |
20811 | OPGEN_RETURN(false); |
20812 | break; |
20813 | case 1: |
20814 | OPGEN_RETURN(false); |
20815 | break; |
20816 | default: |
20817 | break; |
20818 | } |
20819 | break; |
20820 | case Opcode::RotateLeft64: |
20821 | switch (argIndex) { |
20822 | case 0: |
20823 | OPGEN_RETURN(false); |
20824 | break; |
20825 | case 1: |
20826 | OPGEN_RETURN(false); |
20827 | break; |
20828 | default: |
20829 | break; |
20830 | } |
20831 | break; |
20832 | case Opcode::Or32: |
20833 | switch (argIndex) { |
20834 | case 0: |
20835 | switch (args.size()) { |
20836 | case 3: |
20837 | switch (Arg::Addr) { |
20838 | case Arg::Tmp: |
20839 | break; |
20840 | case Arg::BitImm: |
20841 | break; |
20842 | case Arg::Addr: |
20843 | case Arg::Stack: |
20844 | case Arg::CallArg: |
20845 | switch (args[1].kind()) { |
20846 | case Arg::Tmp: |
20847 | switch (args[2].kind()) { |
20848 | case Arg::Tmp: |
20849 | #if CPU(X86) || CPU(X86_64) |
20850 | OPGEN_RETURN(true); |
20851 | #endif |
20852 | break; |
20853 | break; |
20854 | default: |
20855 | break; |
20856 | } |
20857 | break; |
20858 | default: |
20859 | break; |
20860 | } |
20861 | break; |
20862 | default: |
20863 | break; |
20864 | } |
20865 | break; |
20866 | case 2: |
20867 | switch (Arg::Addr) { |
20868 | case Arg::Tmp: |
20869 | break; |
20870 | case Arg::Imm: |
20871 | break; |
20872 | case Arg::Addr: |
20873 | case Arg::Stack: |
20874 | case Arg::CallArg: |
20875 | switch (args[1].kind()) { |
20876 | case Arg::Tmp: |
20877 | #if CPU(X86) || CPU(X86_64) |
20878 | OPGEN_RETURN(true); |
20879 | #endif |
20880 | break; |
20881 | break; |
20882 | default: |
20883 | break; |
20884 | } |
20885 | break; |
20886 | case Arg::Index: |
20887 | break; |
20888 | default: |
20889 | break; |
20890 | } |
20891 | break; |
20892 | default: |
20893 | break; |
20894 | } |
20895 | break; |
20896 | case 1: |
20897 | switch (args.size()) { |
20898 | case 3: |
20899 | switch (args[0].kind()) { |
20900 | case Arg::Tmp: |
20901 | switch (Arg::Addr) { |
20902 | case Arg::Tmp: |
20903 | break; |
20904 | case Arg::Addr: |
20905 | case Arg::Stack: |
20906 | case Arg::CallArg: |
20907 | switch (args[2].kind()) { |
20908 | case Arg::Tmp: |
20909 | #if CPU(X86) || CPU(X86_64) |
20910 | OPGEN_RETURN(true); |
20911 | #endif |
20912 | break; |
20913 | break; |
20914 | default: |
20915 | break; |
20916 | } |
20917 | break; |
20918 | default: |
20919 | break; |
20920 | } |
20921 | break; |
20922 | case Arg::BitImm: |
20923 | break; |
20924 | case Arg::Addr: |
20925 | case Arg::Stack: |
20926 | case Arg::CallArg: |
20927 | break; |
20928 | default: |
20929 | break; |
20930 | } |
20931 | break; |
20932 | case 2: |
20933 | switch (args[0].kind()) { |
20934 | case Arg::Tmp: |
20935 | switch (Arg::Addr) { |
20936 | case Arg::Tmp: |
20937 | break; |
20938 | case Arg::Addr: |
20939 | case Arg::Stack: |
20940 | case Arg::CallArg: |
20941 | #if CPU(X86) || CPU(X86_64) |
20942 | OPGEN_RETURN(true); |
20943 | #endif |
20944 | break; |
20945 | break; |
20946 | case Arg::Index: |
20947 | break; |
20948 | default: |
20949 | break; |
20950 | } |
20951 | break; |
20952 | case Arg::Imm: |
20953 | switch (Arg::Addr) { |
20954 | case Arg::Tmp: |
20955 | break; |
20956 | case Arg::Addr: |
20957 | case Arg::Stack: |
20958 | case Arg::CallArg: |
20959 | #if CPU(X86) || CPU(X86_64) |
20960 | OPGEN_RETURN(true); |
20961 | #endif |
20962 | break; |
20963 | break; |
20964 | case Arg::Index: |
20965 | break; |
20966 | default: |
20967 | break; |
20968 | } |
20969 | break; |
20970 | case Arg::Addr: |
20971 | case Arg::Stack: |
20972 | case Arg::CallArg: |
20973 | break; |
20974 | case Arg::Index: |
20975 | break; |
20976 | default: |
20977 | break; |
20978 | } |
20979 | break; |
20980 | default: |
20981 | break; |
20982 | } |
20983 | break; |
20984 | case 2: |
20985 | OPGEN_RETURN(false); |
20986 | break; |
20987 | default: |
20988 | break; |
20989 | } |
20990 | break; |
20991 | case Opcode::Or64: |
20992 | switch (argIndex) { |
20993 | case 0: |
20994 | switch (args.size()) { |
20995 | case 2: |
20996 | switch (Arg::Addr) { |
20997 | case Arg::Tmp: |
20998 | break; |
20999 | case Arg::Imm: |
21000 | break; |
21001 | case Arg::Addr: |
21002 | case Arg::Stack: |
21003 | case Arg::CallArg: |
21004 | switch (args[1].kind()) { |
21005 | case Arg::Tmp: |
21006 | #if CPU(X86_64) |
21007 | OPGEN_RETURN(true); |
21008 | #endif |
21009 | break; |
21010 | break; |
21011 | default: |
21012 | break; |
21013 | } |
21014 | break; |
21015 | case Arg::Index: |
21016 | break; |
21017 | default: |
21018 | break; |
21019 | } |
21020 | break; |
21021 | default: |
21022 | break; |
21023 | } |
21024 | break; |
21025 | case 1: |
21026 | switch (args.size()) { |
21027 | case 2: |
21028 | switch (args[0].kind()) { |
21029 | case Arg::Tmp: |
21030 | switch (Arg::Addr) { |
21031 | case Arg::Tmp: |
21032 | break; |
21033 | case Arg::Addr: |
21034 | case Arg::Stack: |
21035 | case Arg::CallArg: |
21036 | #if CPU(X86_64) |
21037 | OPGEN_RETURN(true); |
21038 | #endif |
21039 | break; |
21040 | break; |
21041 | case Arg::Index: |
21042 | break; |
21043 | default: |
21044 | break; |
21045 | } |
21046 | break; |
21047 | case Arg::Imm: |
21048 | switch (Arg::Addr) { |
21049 | case Arg::Tmp: |
21050 | break; |
21051 | case Arg::Addr: |
21052 | case Arg::Stack: |
21053 | case Arg::CallArg: |
21054 | #if CPU(X86_64) |
21055 | OPGEN_RETURN(true); |
21056 | #endif |
21057 | break; |
21058 | break; |
21059 | case Arg::Index: |
21060 | break; |
21061 | default: |
21062 | break; |
21063 | } |
21064 | break; |
21065 | case Arg::Addr: |
21066 | case Arg::Stack: |
21067 | case Arg::CallArg: |
21068 | break; |
21069 | case Arg::Index: |
21070 | break; |
21071 | default: |
21072 | break; |
21073 | } |
21074 | break; |
21075 | default: |
21076 | break; |
21077 | } |
21078 | break; |
21079 | case 2: |
21080 | OPGEN_RETURN(false); |
21081 | break; |
21082 | default: |
21083 | break; |
21084 | } |
21085 | break; |
21086 | case Opcode::Xor32: |
21087 | switch (argIndex) { |
21088 | case 0: |
21089 | switch (args.size()) { |
21090 | case 3: |
21091 | switch (Arg::Addr) { |
21092 | case Arg::Tmp: |
21093 | break; |
21094 | case Arg::BitImm: |
21095 | break; |
21096 | case Arg::Addr: |
21097 | case Arg::Stack: |
21098 | case Arg::CallArg: |
21099 | switch (args[1].kind()) { |
21100 | case Arg::Tmp: |
21101 | switch (args[2].kind()) { |
21102 | case Arg::Tmp: |
21103 | #if CPU(X86) || CPU(X86_64) |
21104 | OPGEN_RETURN(true); |
21105 | #endif |
21106 | break; |
21107 | break; |
21108 | default: |
21109 | break; |
21110 | } |
21111 | break; |
21112 | default: |
21113 | break; |
21114 | } |
21115 | break; |
21116 | default: |
21117 | break; |
21118 | } |
21119 | break; |
21120 | case 2: |
21121 | switch (Arg::Addr) { |
21122 | case Arg::Tmp: |
21123 | break; |
21124 | case Arg::Imm: |
21125 | break; |
21126 | case Arg::Addr: |
21127 | case Arg::Stack: |
21128 | case Arg::CallArg: |
21129 | switch (args[1].kind()) { |
21130 | case Arg::Tmp: |
21131 | #if CPU(X86) || CPU(X86_64) |
21132 | OPGEN_RETURN(true); |
21133 | #endif |
21134 | break; |
21135 | break; |
21136 | default: |
21137 | break; |
21138 | } |
21139 | break; |
21140 | case Arg::Index: |
21141 | break; |
21142 | default: |
21143 | break; |
21144 | } |
21145 | break; |
21146 | default: |
21147 | break; |
21148 | } |
21149 | break; |
21150 | case 1: |
21151 | switch (args.size()) { |
21152 | case 3: |
21153 | switch (args[0].kind()) { |
21154 | case Arg::Tmp: |
21155 | switch (Arg::Addr) { |
21156 | case Arg::Tmp: |
21157 | break; |
21158 | case Arg::Addr: |
21159 | case Arg::Stack: |
21160 | case Arg::CallArg: |
21161 | switch (args[2].kind()) { |
21162 | case Arg::Tmp: |
21163 | #if CPU(X86) || CPU(X86_64) |
21164 | OPGEN_RETURN(true); |
21165 | #endif |
21166 | break; |
21167 | break; |
21168 | default: |
21169 | break; |
21170 | } |
21171 | break; |
21172 | default: |
21173 | break; |
21174 | } |
21175 | break; |
21176 | case Arg::BitImm: |
21177 | break; |
21178 | case Arg::Addr: |
21179 | case Arg::Stack: |
21180 | case Arg::CallArg: |
21181 | break; |
21182 | default: |
21183 | break; |
21184 | } |
21185 | break; |
21186 | case 2: |
21187 | switch (args[0].kind()) { |
21188 | case Arg::Tmp: |
21189 | switch (Arg::Addr) { |
21190 | case Arg::Tmp: |
21191 | break; |
21192 | case Arg::Addr: |
21193 | case Arg::Stack: |
21194 | case Arg::CallArg: |
21195 | #if CPU(X86) || CPU(X86_64) |
21196 | OPGEN_RETURN(true); |
21197 | #endif |
21198 | break; |
21199 | break; |
21200 | case Arg::Index: |
21201 | break; |
21202 | default: |
21203 | break; |
21204 | } |
21205 | break; |
21206 | case Arg::Imm: |
21207 | switch (Arg::Addr) { |
21208 | case Arg::Tmp: |
21209 | break; |
21210 | case Arg::Addr: |
21211 | case Arg::Stack: |
21212 | case Arg::CallArg: |
21213 | #if CPU(X86) || CPU(X86_64) |
21214 | OPGEN_RETURN(true); |
21215 | #endif |
21216 | break; |
21217 | break; |
21218 | case Arg::Index: |
21219 | break; |
21220 | default: |
21221 | break; |
21222 | } |
21223 | break; |
21224 | case Arg::Addr: |
21225 | case Arg::Stack: |
21226 | case Arg::CallArg: |
21227 | break; |
21228 | case Arg::Index: |
21229 | break; |
21230 | default: |
21231 | break; |
21232 | } |
21233 | break; |
21234 | default: |
21235 | break; |
21236 | } |
21237 | break; |
21238 | case 2: |
21239 | OPGEN_RETURN(false); |
21240 | break; |
21241 | default: |
21242 | break; |
21243 | } |
21244 | break; |
21245 | case Opcode::Xor64: |
21246 | switch (argIndex) { |
21247 | case 0: |
21248 | switch (args.size()) { |
21249 | case 2: |
21250 | switch (Arg::Addr) { |
21251 | case Arg::Tmp: |
21252 | break; |
21253 | case Arg::Addr: |
21254 | case Arg::Stack: |
21255 | case Arg::CallArg: |
21256 | switch (args[1].kind()) { |
21257 | case Arg::Tmp: |
21258 | #if CPU(X86_64) |
21259 | OPGEN_RETURN(true); |
21260 | #endif |
21261 | break; |
21262 | break; |
21263 | default: |
21264 | break; |
21265 | } |
21266 | break; |
21267 | case Arg::Index: |
21268 | break; |
21269 | case Arg::Imm: |
21270 | break; |
21271 | default: |
21272 | break; |
21273 | } |
21274 | break; |
21275 | default: |
21276 | break; |
21277 | } |
21278 | break; |
21279 | case 1: |
21280 | switch (args.size()) { |
21281 | case 2: |
21282 | switch (args[0].kind()) { |
21283 | case Arg::Tmp: |
21284 | switch (Arg::Addr) { |
21285 | case Arg::Tmp: |
21286 | break; |
21287 | case Arg::Addr: |
21288 | case Arg::Stack: |
21289 | case Arg::CallArg: |
21290 | #if CPU(X86_64) |
21291 | OPGEN_RETURN(true); |
21292 | #endif |
21293 | break; |
21294 | break; |
21295 | case Arg::Index: |
21296 | break; |
21297 | default: |
21298 | break; |
21299 | } |
21300 | break; |
21301 | case Arg::Addr: |
21302 | case Arg::Stack: |
21303 | case Arg::CallArg: |
21304 | break; |
21305 | case Arg::Index: |
21306 | break; |
21307 | case Arg::Imm: |
21308 | switch (Arg::Addr) { |
21309 | case Arg::Addr: |
21310 | case Arg::Stack: |
21311 | case Arg::CallArg: |
21312 | #if CPU(X86_64) |
21313 | OPGEN_RETURN(true); |
21314 | #endif |
21315 | break; |
21316 | break; |
21317 | case Arg::Index: |
21318 | break; |
21319 | case Arg::Tmp: |
21320 | break; |
21321 | default: |
21322 | break; |
21323 | } |
21324 | break; |
21325 | default: |
21326 | break; |
21327 | } |
21328 | break; |
21329 | default: |
21330 | break; |
21331 | } |
21332 | break; |
21333 | case 2: |
21334 | OPGEN_RETURN(false); |
21335 | break; |
21336 | default: |
21337 | break; |
21338 | } |
21339 | break; |
21340 | case Opcode::Not32: |
21341 | switch (argIndex) { |
21342 | case 0: |
21343 | switch (args.size()) { |
21344 | case 1: |
21345 | switch (Arg::Addr) { |
21346 | case Arg::Tmp: |
21347 | break; |
21348 | case Arg::Addr: |
21349 | case Arg::Stack: |
21350 | case Arg::CallArg: |
21351 | #if CPU(X86) || CPU(X86_64) |
21352 | OPGEN_RETURN(true); |
21353 | #endif |
21354 | break; |
21355 | break; |
21356 | case Arg::Index: |
21357 | break; |
21358 | default: |
21359 | break; |
21360 | } |
21361 | break; |
21362 | default: |
21363 | break; |
21364 | } |
21365 | break; |
21366 | case 1: |
21367 | OPGEN_RETURN(false); |
21368 | break; |
21369 | default: |
21370 | break; |
21371 | } |
21372 | break; |
21373 | case Opcode::Not64: |
21374 | switch (argIndex) { |
21375 | case 0: |
21376 | switch (args.size()) { |
21377 | case 1: |
21378 | switch (Arg::Addr) { |
21379 | case Arg::Tmp: |
21380 | break; |
21381 | case Arg::Addr: |
21382 | case Arg::Stack: |
21383 | case Arg::CallArg: |
21384 | #if CPU(X86_64) |
21385 | OPGEN_RETURN(true); |
21386 | #endif |
21387 | break; |
21388 | break; |
21389 | case Arg::Index: |
21390 | break; |
21391 | default: |
21392 | break; |
21393 | } |
21394 | break; |
21395 | default: |
21396 | break; |
21397 | } |
21398 | break; |
21399 | case 1: |
21400 | OPGEN_RETURN(false); |
21401 | break; |
21402 | default: |
21403 | break; |
21404 | } |
21405 | break; |
21406 | case Opcode::AbsDouble: |
21407 | switch (argIndex) { |
21408 | case 0: |
21409 | OPGEN_RETURN(false); |
21410 | break; |
21411 | case 1: |
21412 | OPGEN_RETURN(false); |
21413 | break; |
21414 | default: |
21415 | break; |
21416 | } |
21417 | break; |
21418 | case Opcode::AbsFloat: |
21419 | switch (argIndex) { |
21420 | case 0: |
21421 | OPGEN_RETURN(false); |
21422 | break; |
21423 | case 1: |
21424 | OPGEN_RETURN(false); |
21425 | break; |
21426 | default: |
21427 | break; |
21428 | } |
21429 | break; |
21430 | case Opcode::CeilDouble: |
21431 | switch (argIndex) { |
21432 | case 0: |
21433 | switch (Arg::Addr) { |
21434 | case Arg::Tmp: |
21435 | break; |
21436 | case Arg::Addr: |
21437 | case Arg::Stack: |
21438 | case Arg::CallArg: |
21439 | switch (args[1].kind()) { |
21440 | case Arg::Tmp: |
21441 | #if CPU(X86) || CPU(X86_64) |
21442 | OPGEN_RETURN(true); |
21443 | #endif |
21444 | break; |
21445 | break; |
21446 | default: |
21447 | break; |
21448 | } |
21449 | break; |
21450 | default: |
21451 | break; |
21452 | } |
21453 | break; |
21454 | case 1: |
21455 | OPGEN_RETURN(false); |
21456 | break; |
21457 | default: |
21458 | break; |
21459 | } |
21460 | break; |
21461 | case Opcode::CeilFloat: |
21462 | switch (argIndex) { |
21463 | case 0: |
21464 | switch (Arg::Addr) { |
21465 | case Arg::Tmp: |
21466 | break; |
21467 | case Arg::Addr: |
21468 | case Arg::Stack: |
21469 | case Arg::CallArg: |
21470 | switch (args[1].kind()) { |
21471 | case Arg::Tmp: |
21472 | #if CPU(X86) || CPU(X86_64) |
21473 | OPGEN_RETURN(true); |
21474 | #endif |
21475 | break; |
21476 | break; |
21477 | default: |
21478 | break; |
21479 | } |
21480 | break; |
21481 | default: |
21482 | break; |
21483 | } |
21484 | break; |
21485 | case 1: |
21486 | OPGEN_RETURN(false); |
21487 | break; |
21488 | default: |
21489 | break; |
21490 | } |
21491 | break; |
21492 | case Opcode::FloorDouble: |
21493 | switch (argIndex) { |
21494 | case 0: |
21495 | switch (Arg::Addr) { |
21496 | case Arg::Tmp: |
21497 | break; |
21498 | case Arg::Addr: |
21499 | case Arg::Stack: |
21500 | case Arg::CallArg: |
21501 | switch (args[1].kind()) { |
21502 | case Arg::Tmp: |
21503 | #if CPU(X86) || CPU(X86_64) |
21504 | OPGEN_RETURN(true); |
21505 | #endif |
21506 | break; |
21507 | break; |
21508 | default: |
21509 | break; |
21510 | } |
21511 | break; |
21512 | default: |
21513 | break; |
21514 | } |
21515 | break; |
21516 | case 1: |
21517 | OPGEN_RETURN(false); |
21518 | break; |
21519 | default: |
21520 | break; |
21521 | } |
21522 | break; |
21523 | case Opcode::FloorFloat: |
21524 | switch (argIndex) { |
21525 | case 0: |
21526 | switch (Arg::Addr) { |
21527 | case Arg::Tmp: |
21528 | break; |
21529 | case Arg::Addr: |
21530 | case Arg::Stack: |
21531 | case Arg::CallArg: |
21532 | switch (args[1].kind()) { |
21533 | case Arg::Tmp: |
21534 | #if CPU(X86) || CPU(X86_64) |
21535 | OPGEN_RETURN(true); |
21536 | #endif |
21537 | break; |
21538 | break; |
21539 | default: |
21540 | break; |
21541 | } |
21542 | break; |
21543 | default: |
21544 | break; |
21545 | } |
21546 | break; |
21547 | case 1: |
21548 | OPGEN_RETURN(false); |
21549 | break; |
21550 | default: |
21551 | break; |
21552 | } |
21553 | break; |
21554 | case Opcode::SqrtDouble: |
21555 | switch (argIndex) { |
21556 | case 0: |
21557 | switch (Arg::Addr) { |
21558 | case Arg::Tmp: |
21559 | break; |
21560 | case Arg::Addr: |
21561 | case Arg::Stack: |
21562 | case Arg::CallArg: |
21563 | switch (args[1].kind()) { |
21564 | case Arg::Tmp: |
21565 | #if CPU(X86) || CPU(X86_64) |
21566 | OPGEN_RETURN(true); |
21567 | #endif |
21568 | break; |
21569 | break; |
21570 | default: |
21571 | break; |
21572 | } |
21573 | break; |
21574 | default: |
21575 | break; |
21576 | } |
21577 | break; |
21578 | case 1: |
21579 | OPGEN_RETURN(false); |
21580 | break; |
21581 | default: |
21582 | break; |
21583 | } |
21584 | break; |
21585 | case Opcode::SqrtFloat: |
21586 | switch (argIndex) { |
21587 | case 0: |
21588 | switch (Arg::Addr) { |
21589 | case Arg::Tmp: |
21590 | break; |
21591 | case Arg::Addr: |
21592 | case Arg::Stack: |
21593 | case Arg::CallArg: |
21594 | switch (args[1].kind()) { |
21595 | case Arg::Tmp: |
21596 | #if CPU(X86) || CPU(X86_64) |
21597 | OPGEN_RETURN(true); |
21598 | #endif |
21599 | break; |
21600 | break; |
21601 | default: |
21602 | break; |
21603 | } |
21604 | break; |
21605 | default: |
21606 | break; |
21607 | } |
21608 | break; |
21609 | case 1: |
21610 | OPGEN_RETURN(false); |
21611 | break; |
21612 | default: |
21613 | break; |
21614 | } |
21615 | break; |
21616 | case Opcode::ConvertInt32ToDouble: |
21617 | switch (argIndex) { |
21618 | case 0: |
21619 | switch (Arg::Addr) { |
21620 | case Arg::Tmp: |
21621 | break; |
21622 | case Arg::Addr: |
21623 | case Arg::Stack: |
21624 | case Arg::CallArg: |
21625 | switch (args[1].kind()) { |
21626 | case Arg::Tmp: |
21627 | #if CPU(X86) || CPU(X86_64) |
21628 | OPGEN_RETURN(true); |
21629 | #endif |
21630 | break; |
21631 | break; |
21632 | default: |
21633 | break; |
21634 | } |
21635 | break; |
21636 | default: |
21637 | break; |
21638 | } |
21639 | break; |
21640 | case 1: |
21641 | OPGEN_RETURN(false); |
21642 | break; |
21643 | default: |
21644 | break; |
21645 | } |
21646 | break; |
21647 | case Opcode::ConvertInt64ToDouble: |
21648 | switch (argIndex) { |
21649 | case 0: |
21650 | switch (Arg::Addr) { |
21651 | case Arg::Tmp: |
21652 | break; |
21653 | case Arg::Addr: |
21654 | case Arg::Stack: |
21655 | case Arg::CallArg: |
21656 | switch (args[1].kind()) { |
21657 | case Arg::Tmp: |
21658 | #if CPU(X86_64) |
21659 | OPGEN_RETURN(true); |
21660 | #endif |
21661 | break; |
21662 | break; |
21663 | default: |
21664 | break; |
21665 | } |
21666 | break; |
21667 | default: |
21668 | break; |
21669 | } |
21670 | break; |
21671 | case 1: |
21672 | OPGEN_RETURN(false); |
21673 | break; |
21674 | default: |
21675 | break; |
21676 | } |
21677 | break; |
21678 | case Opcode::ConvertInt32ToFloat: |
21679 | switch (argIndex) { |
21680 | case 0: |
21681 | switch (Arg::Addr) { |
21682 | case Arg::Tmp: |
21683 | break; |
21684 | case Arg::Addr: |
21685 | case Arg::Stack: |
21686 | case Arg::CallArg: |
21687 | switch (args[1].kind()) { |
21688 | case Arg::Tmp: |
21689 | #if CPU(X86) || CPU(X86_64) |
21690 | OPGEN_RETURN(true); |
21691 | #endif |
21692 | break; |
21693 | break; |
21694 | default: |
21695 | break; |
21696 | } |
21697 | break; |
21698 | default: |
21699 | break; |
21700 | } |
21701 | break; |
21702 | case 1: |
21703 | OPGEN_RETURN(false); |
21704 | break; |
21705 | default: |
21706 | break; |
21707 | } |
21708 | break; |
21709 | case Opcode::ConvertInt64ToFloat: |
21710 | switch (argIndex) { |
21711 | case 0: |
21712 | switch (Arg::Addr) { |
21713 | case Arg::Tmp: |
21714 | break; |
21715 | case Arg::Addr: |
21716 | case Arg::Stack: |
21717 | case Arg::CallArg: |
21718 | switch (args[1].kind()) { |
21719 | case Arg::Tmp: |
21720 | #if CPU(X86_64) |
21721 | OPGEN_RETURN(true); |
21722 | #endif |
21723 | break; |
21724 | break; |
21725 | default: |
21726 | break; |
21727 | } |
21728 | break; |
21729 | default: |
21730 | break; |
21731 | } |
21732 | break; |
21733 | case 1: |
21734 | OPGEN_RETURN(false); |
21735 | break; |
21736 | default: |
21737 | break; |
21738 | } |
21739 | break; |
21740 | case Opcode::CountLeadingZeros32: |
21741 | switch (argIndex) { |
21742 | case 0: |
21743 | switch (Arg::Addr) { |
21744 | case Arg::Tmp: |
21745 | break; |
21746 | case Arg::Addr: |
21747 | case Arg::Stack: |
21748 | case Arg::CallArg: |
21749 | switch (args[1].kind()) { |
21750 | case Arg::Tmp: |
21751 | #if CPU(X86) || CPU(X86_64) |
21752 | OPGEN_RETURN(true); |
21753 | #endif |
21754 | break; |
21755 | break; |
21756 | default: |
21757 | break; |
21758 | } |
21759 | break; |
21760 | default: |
21761 | break; |
21762 | } |
21763 | break; |
21764 | case 1: |
21765 | OPGEN_RETURN(false); |
21766 | break; |
21767 | default: |
21768 | break; |
21769 | } |
21770 | break; |
21771 | case Opcode::CountLeadingZeros64: |
21772 | switch (argIndex) { |
21773 | case 0: |
21774 | switch (Arg::Addr) { |
21775 | case Arg::Tmp: |
21776 | break; |
21777 | case Arg::Addr: |
21778 | case Arg::Stack: |
21779 | case Arg::CallArg: |
21780 | switch (args[1].kind()) { |
21781 | case Arg::Tmp: |
21782 | #if CPU(X86_64) |
21783 | OPGEN_RETURN(true); |
21784 | #endif |
21785 | break; |
21786 | break; |
21787 | default: |
21788 | break; |
21789 | } |
21790 | break; |
21791 | default: |
21792 | break; |
21793 | } |
21794 | break; |
21795 | case 1: |
21796 | OPGEN_RETURN(false); |
21797 | break; |
21798 | default: |
21799 | break; |
21800 | } |
21801 | break; |
21802 | case Opcode::ConvertDoubleToFloat: |
21803 | switch (argIndex) { |
21804 | case 0: |
21805 | switch (Arg::Addr) { |
21806 | case Arg::Tmp: |
21807 | break; |
21808 | case Arg::Addr: |
21809 | case Arg::Stack: |
21810 | case Arg::CallArg: |
21811 | switch (args[1].kind()) { |
21812 | case Arg::Tmp: |
21813 | #if CPU(X86) || CPU(X86_64) |
21814 | OPGEN_RETURN(true); |
21815 | #endif |
21816 | break; |
21817 | break; |
21818 | default: |
21819 | break; |
21820 | } |
21821 | break; |
21822 | default: |
21823 | break; |
21824 | } |
21825 | break; |
21826 | case 1: |
21827 | OPGEN_RETURN(false); |
21828 | break; |
21829 | default: |
21830 | break; |
21831 | } |
21832 | break; |
21833 | case Opcode::ConvertFloatToDouble: |
21834 | switch (argIndex) { |
21835 | case 0: |
21836 | switch (Arg::Addr) { |
21837 | case Arg::Tmp: |
21838 | break; |
21839 | case Arg::Addr: |
21840 | case Arg::Stack: |
21841 | case Arg::CallArg: |
21842 | switch (args[1].kind()) { |
21843 | case Arg::Tmp: |
21844 | #if CPU(X86) || CPU(X86_64) |
21845 | OPGEN_RETURN(true); |
21846 | #endif |
21847 | break; |
21848 | break; |
21849 | default: |
21850 | break; |
21851 | } |
21852 | break; |
21853 | default: |
21854 | break; |
21855 | } |
21856 | break; |
21857 | case 1: |
21858 | OPGEN_RETURN(false); |
21859 | break; |
21860 | default: |
21861 | break; |
21862 | } |
21863 | break; |
21864 | case Opcode::Move: |
21865 | switch (argIndex) { |
21866 | case 0: |
21867 | switch (args.size()) { |
21868 | case 2: |
21869 | switch (Arg::Addr) { |
21870 | case Arg::Tmp: |
21871 | break; |
21872 | case Arg::Imm: |
21873 | break; |
21874 | #if USE(JSVALUE64) |
21875 | case Arg::BigImm: |
21876 | break; |
21877 | #endif // USE(JSVALUE64) |
21878 | case Arg::Addr: |
21879 | case Arg::Stack: |
21880 | case Arg::CallArg: |
21881 | switch (args[1].kind()) { |
21882 | case Arg::Tmp: |
21883 | OPGEN_RETURN(true); |
21884 | break; |
21885 | break; |
21886 | default: |
21887 | break; |
21888 | } |
21889 | break; |
21890 | case Arg::Index: |
21891 | break; |
21892 | default: |
21893 | break; |
21894 | } |
21895 | break; |
21896 | case 3: |
21897 | OPGEN_RETURN(true); |
21898 | break; |
21899 | default: |
21900 | break; |
21901 | } |
21902 | break; |
21903 | case 1: |
21904 | switch (args.size()) { |
21905 | case 2: |
21906 | switch (args[0].kind()) { |
21907 | case Arg::Tmp: |
21908 | switch (Arg::Addr) { |
21909 | case Arg::Tmp: |
21910 | break; |
21911 | case Arg::Addr: |
21912 | case Arg::Stack: |
21913 | case Arg::CallArg: |
21914 | OPGEN_RETURN(true); |
21915 | break; |
21916 | break; |
21917 | case Arg::Index: |
21918 | break; |
21919 | default: |
21920 | break; |
21921 | } |
21922 | break; |
21923 | case Arg::Imm: |
21924 | switch (Arg::Addr) { |
21925 | case Arg::Tmp: |
21926 | break; |
21927 | case Arg::Addr: |
21928 | case Arg::Stack: |
21929 | case Arg::CallArg: |
21930 | #if CPU(X86) || CPU(X86_64) |
21931 | OPGEN_RETURN(true); |
21932 | #endif |
21933 | break; |
21934 | break; |
21935 | default: |
21936 | break; |
21937 | } |
21938 | break; |
21939 | #if USE(JSVALUE64) |
21940 | case Arg::BigImm: |
21941 | break; |
21942 | #endif // USE(JSVALUE64) |
21943 | case Arg::Addr: |
21944 | case Arg::Stack: |
21945 | case Arg::CallArg: |
21946 | break; |
21947 | case Arg::Index: |
21948 | break; |
21949 | default: |
21950 | break; |
21951 | } |
21952 | break; |
21953 | case 3: |
21954 | OPGEN_RETURN(true); |
21955 | break; |
21956 | default: |
21957 | break; |
21958 | } |
21959 | break; |
21960 | case 2: |
21961 | OPGEN_RETURN(false); |
21962 | break; |
21963 | default: |
21964 | break; |
21965 | } |
21966 | break; |
21967 | case Opcode::Swap32: |
21968 | switch (argIndex) { |
21969 | case 0: |
21970 | OPGEN_RETURN(false); |
21971 | break; |
21972 | case 1: |
21973 | switch (args[0].kind()) { |
21974 | case Arg::Tmp: |
21975 | switch (Arg::Addr) { |
21976 | case Arg::Tmp: |
21977 | break; |
21978 | case Arg::Addr: |
21979 | case Arg::Stack: |
21980 | case Arg::CallArg: |
21981 | #if CPU(X86) || CPU(X86_64) |
21982 | OPGEN_RETURN(true); |
21983 | #endif |
21984 | break; |
21985 | break; |
21986 | default: |
21987 | break; |
21988 | } |
21989 | break; |
21990 | default: |
21991 | break; |
21992 | } |
21993 | break; |
21994 | default: |
21995 | break; |
21996 | } |
21997 | break; |
21998 | case Opcode::Swap64: |
21999 | switch (argIndex) { |
22000 | case 0: |
22001 | OPGEN_RETURN(false); |
22002 | break; |
22003 | case 1: |
22004 | switch (args[0].kind()) { |
22005 | case Arg::Tmp: |
22006 | switch (Arg::Addr) { |
22007 | case Arg::Tmp: |
22008 | break; |
22009 | case Arg::Addr: |
22010 | case Arg::Stack: |
22011 | case Arg::CallArg: |
22012 | #if CPU(X86_64) |
22013 | OPGEN_RETURN(true); |
22014 | #endif |
22015 | break; |
22016 | break; |
22017 | default: |
22018 | break; |
22019 | } |
22020 | break; |
22021 | default: |
22022 | break; |
22023 | } |
22024 | break; |
22025 | default: |
22026 | break; |
22027 | } |
22028 | break; |
22029 | case Opcode::Move32: |
22030 | switch (argIndex) { |
22031 | case 0: |
22032 | switch (args.size()) { |
22033 | case 2: |
22034 | switch (Arg::Addr) { |
22035 | case Arg::Tmp: |
22036 | break; |
22037 | case Arg::Addr: |
22038 | case Arg::Stack: |
22039 | case Arg::CallArg: |
22040 | switch (args[1].kind()) { |
22041 | case Arg::Tmp: |
22042 | OPGEN_RETURN(true); |
22043 | break; |
22044 | break; |
22045 | default: |
22046 | break; |
22047 | } |
22048 | break; |
22049 | case Arg::Index: |
22050 | break; |
22051 | case Arg::Imm: |
22052 | break; |
22053 | default: |
22054 | break; |
22055 | } |
22056 | break; |
22057 | case 3: |
22058 | OPGEN_RETURN(true); |
22059 | break; |
22060 | default: |
22061 | break; |
22062 | } |
22063 | break; |
22064 | case 1: |
22065 | switch (args.size()) { |
22066 | case 2: |
22067 | switch (args[0].kind()) { |
22068 | case Arg::Tmp: |
22069 | switch (Arg::Addr) { |
22070 | case Arg::Tmp: |
22071 | break; |
22072 | case Arg::Addr: |
22073 | case Arg::Stack: |
22074 | case Arg::CallArg: |
22075 | OPGEN_RETURN(true); |
22076 | break; |
22077 | break; |
22078 | case Arg::Index: |
22079 | break; |
22080 | default: |
22081 | break; |
22082 | } |
22083 | break; |
22084 | case Arg::Addr: |
22085 | case Arg::Stack: |
22086 | case Arg::CallArg: |
22087 | break; |
22088 | case Arg::Index: |
22089 | break; |
22090 | case Arg::Imm: |
22091 | switch (Arg::Addr) { |
22092 | case Arg::Tmp: |
22093 | break; |
22094 | case Arg::Addr: |
22095 | case Arg::Stack: |
22096 | case Arg::CallArg: |
22097 | #if CPU(X86) || CPU(X86_64) |
22098 | OPGEN_RETURN(true); |
22099 | #endif |
22100 | break; |
22101 | break; |
22102 | case Arg::Index: |
22103 | break; |
22104 | default: |
22105 | break; |
22106 | } |
22107 | break; |
22108 | default: |
22109 | break; |
22110 | } |
22111 | break; |
22112 | case 3: |
22113 | OPGEN_RETURN(true); |
22114 | break; |
22115 | default: |
22116 | break; |
22117 | } |
22118 | break; |
22119 | case 2: |
22120 | OPGEN_RETURN(false); |
22121 | break; |
22122 | default: |
22123 | break; |
22124 | } |
22125 | break; |
22126 | case Opcode::StoreZero32: |
22127 | switch (argIndex) { |
22128 | case 0: |
22129 | switch (Arg::Addr) { |
22130 | case Arg::Addr: |
22131 | case Arg::Stack: |
22132 | case Arg::CallArg: |
22133 | OPGEN_RETURN(true); |
22134 | break; |
22135 | break; |
22136 | case Arg::Index: |
22137 | break; |
22138 | default: |
22139 | break; |
22140 | } |
22141 | break; |
22142 | default: |
22143 | break; |
22144 | } |
22145 | break; |
22146 | case Opcode::StoreZero64: |
22147 | switch (argIndex) { |
22148 | case 0: |
22149 | switch (Arg::Addr) { |
22150 | case Arg::Addr: |
22151 | case Arg::Stack: |
22152 | case Arg::CallArg: |
22153 | #if CPU(X86_64) || CPU(ARM64) |
22154 | OPGEN_RETURN(true); |
22155 | #endif |
22156 | break; |
22157 | break; |
22158 | case Arg::Index: |
22159 | break; |
22160 | default: |
22161 | break; |
22162 | } |
22163 | break; |
22164 | default: |
22165 | break; |
22166 | } |
22167 | break; |
22168 | case Opcode::SignExtend32ToPtr: |
22169 | switch (argIndex) { |
22170 | case 0: |
22171 | OPGEN_RETURN(false); |
22172 | break; |
22173 | case 1: |
22174 | OPGEN_RETURN(false); |
22175 | break; |
22176 | default: |
22177 | break; |
22178 | } |
22179 | break; |
22180 | case Opcode::ZeroExtend8To32: |
22181 | switch (argIndex) { |
22182 | case 0: |
22183 | switch (Arg::Addr) { |
22184 | case Arg::Tmp: |
22185 | break; |
22186 | case Arg::Addr: |
22187 | case Arg::Stack: |
22188 | case Arg::CallArg: |
22189 | switch (args[1].kind()) { |
22190 | case Arg::Tmp: |
22191 | #if CPU(X86) || CPU(X86_64) |
22192 | OPGEN_RETURN(true); |
22193 | #endif |
22194 | break; |
22195 | break; |
22196 | default: |
22197 | break; |
22198 | } |
22199 | break; |
22200 | case Arg::Index: |
22201 | break; |
22202 | default: |
22203 | break; |
22204 | } |
22205 | break; |
22206 | case 1: |
22207 | OPGEN_RETURN(false); |
22208 | break; |
22209 | default: |
22210 | break; |
22211 | } |
22212 | break; |
22213 | case Opcode::SignExtend8To32: |
22214 | switch (argIndex) { |
22215 | case 0: |
22216 | switch (Arg::Addr) { |
22217 | case Arg::Tmp: |
22218 | break; |
22219 | case Arg::Addr: |
22220 | case Arg::Stack: |
22221 | case Arg::CallArg: |
22222 | switch (args[1].kind()) { |
22223 | case Arg::Tmp: |
22224 | #if CPU(X86) || CPU(X86_64) |
22225 | OPGEN_RETURN(true); |
22226 | #endif |
22227 | break; |
22228 | break; |
22229 | default: |
22230 | break; |
22231 | } |
22232 | break; |
22233 | case Arg::Index: |
22234 | break; |
22235 | default: |
22236 | break; |
22237 | } |
22238 | break; |
22239 | case 1: |
22240 | OPGEN_RETURN(false); |
22241 | break; |
22242 | default: |
22243 | break; |
22244 | } |
22245 | break; |
22246 | case Opcode::ZeroExtend16To32: |
22247 | switch (argIndex) { |
22248 | case 0: |
22249 | switch (Arg::Addr) { |
22250 | case Arg::Tmp: |
22251 | break; |
22252 | case Arg::Addr: |
22253 | case Arg::Stack: |
22254 | case Arg::CallArg: |
22255 | switch (args[1].kind()) { |
22256 | case Arg::Tmp: |
22257 | #if CPU(X86) || CPU(X86_64) |
22258 | OPGEN_RETURN(true); |
22259 | #endif |
22260 | break; |
22261 | break; |
22262 | default: |
22263 | break; |
22264 | } |
22265 | break; |
22266 | case Arg::Index: |
22267 | break; |
22268 | default: |
22269 | break; |
22270 | } |
22271 | break; |
22272 | case 1: |
22273 | OPGEN_RETURN(false); |
22274 | break; |
22275 | default: |
22276 | break; |
22277 | } |
22278 | break; |
22279 | case Opcode::SignExtend16To32: |
22280 | switch (argIndex) { |
22281 | case 0: |
22282 | switch (Arg::Addr) { |
22283 | case Arg::Tmp: |
22284 | break; |
22285 | case Arg::Addr: |
22286 | case Arg::Stack: |
22287 | case Arg::CallArg: |
22288 | switch (args[1].kind()) { |
22289 | case Arg::Tmp: |
22290 | #if CPU(X86) || CPU(X86_64) |
22291 | OPGEN_RETURN(true); |
22292 | #endif |
22293 | break; |
22294 | break; |
22295 | default: |
22296 | break; |
22297 | } |
22298 | break; |
22299 | case Arg::Index: |
22300 | break; |
22301 | default: |
22302 | break; |
22303 | } |
22304 | break; |
22305 | case 1: |
22306 | OPGEN_RETURN(false); |
22307 | break; |
22308 | default: |
22309 | break; |
22310 | } |
22311 | break; |
22312 | case Opcode::MoveFloat: |
22313 | switch (argIndex) { |
22314 | case 0: |
22315 | switch (args.size()) { |
22316 | case 2: |
22317 | switch (Arg::Addr) { |
22318 | case Arg::Tmp: |
22319 | break; |
22320 | case Arg::Addr: |
22321 | case Arg::Stack: |
22322 | case Arg::CallArg: |
22323 | switch (args[1].kind()) { |
22324 | case Arg::Tmp: |
22325 | OPGEN_RETURN(true); |
22326 | break; |
22327 | break; |
22328 | default: |
22329 | break; |
22330 | } |
22331 | break; |
22332 | case Arg::Index: |
22333 | break; |
22334 | default: |
22335 | break; |
22336 | } |
22337 | break; |
22338 | case 3: |
22339 | OPGEN_RETURN(true); |
22340 | break; |
22341 | default: |
22342 | break; |
22343 | } |
22344 | break; |
22345 | case 1: |
22346 | switch (args.size()) { |
22347 | case 2: |
22348 | switch (args[0].kind()) { |
22349 | case Arg::Tmp: |
22350 | switch (Arg::Addr) { |
22351 | case Arg::Tmp: |
22352 | break; |
22353 | case Arg::Addr: |
22354 | case Arg::Stack: |
22355 | case Arg::CallArg: |
22356 | OPGEN_RETURN(true); |
22357 | break; |
22358 | break; |
22359 | case Arg::Index: |
22360 | break; |
22361 | default: |
22362 | break; |
22363 | } |
22364 | break; |
22365 | case Arg::Addr: |
22366 | case Arg::Stack: |
22367 | case Arg::CallArg: |
22368 | break; |
22369 | case Arg::Index: |
22370 | break; |
22371 | default: |
22372 | break; |
22373 | } |
22374 | break; |
22375 | case 3: |
22376 | OPGEN_RETURN(true); |
22377 | break; |
22378 | default: |
22379 | break; |
22380 | } |
22381 | break; |
22382 | case 2: |
22383 | OPGEN_RETURN(false); |
22384 | break; |
22385 | default: |
22386 | break; |
22387 | } |
22388 | break; |
22389 | case Opcode::MoveDouble: |
22390 | switch (argIndex) { |
22391 | case 0: |
22392 | switch (args.size()) { |
22393 | case 2: |
22394 | switch (Arg::Addr) { |
22395 | case Arg::Tmp: |
22396 | break; |
22397 | case Arg::Addr: |
22398 | case Arg::Stack: |
22399 | case Arg::CallArg: |
22400 | switch (args[1].kind()) { |
22401 | case Arg::Tmp: |
22402 | OPGEN_RETURN(true); |
22403 | break; |
22404 | break; |
22405 | default: |
22406 | break; |
22407 | } |
22408 | break; |
22409 | case Arg::Index: |
22410 | break; |
22411 | default: |
22412 | break; |
22413 | } |
22414 | break; |
22415 | case 3: |
22416 | OPGEN_RETURN(true); |
22417 | break; |
22418 | default: |
22419 | break; |
22420 | } |
22421 | break; |
22422 | case 1: |
22423 | switch (args.size()) { |
22424 | case 2: |
22425 | switch (args[0].kind()) { |
22426 | case Arg::Tmp: |
22427 | switch (Arg::Addr) { |
22428 | case Arg::Tmp: |
22429 | break; |
22430 | case Arg::Addr: |
22431 | case Arg::Stack: |
22432 | case Arg::CallArg: |
22433 | OPGEN_RETURN(true); |
22434 | break; |
22435 | break; |
22436 | case Arg::Index: |
22437 | break; |
22438 | default: |
22439 | break; |
22440 | } |
22441 | break; |
22442 | case Arg::Addr: |
22443 | case Arg::Stack: |
22444 | case Arg::CallArg: |
22445 | break; |
22446 | case Arg::Index: |
22447 | break; |
22448 | default: |
22449 | break; |
22450 | } |
22451 | break; |
22452 | case 3: |
22453 | OPGEN_RETURN(true); |
22454 | break; |
22455 | default: |
22456 | break; |
22457 | } |
22458 | break; |
22459 | case 2: |
22460 | OPGEN_RETURN(false); |
22461 | break; |
22462 | default: |
22463 | break; |
22464 | } |
22465 | break; |
22466 | case Opcode::MoveZeroToDouble: |
22467 | switch (argIndex) { |
22468 | case 0: |
22469 | OPGEN_RETURN(false); |
22470 | break; |
22471 | default: |
22472 | break; |
22473 | } |
22474 | break; |
22475 | case Opcode::Move64ToDouble: |
22476 | switch (argIndex) { |
22477 | case 0: |
22478 | switch (Arg::Addr) { |
22479 | case Arg::Tmp: |
22480 | break; |
22481 | case Arg::Addr: |
22482 | case Arg::Stack: |
22483 | case Arg::CallArg: |
22484 | switch (args[1].kind()) { |
22485 | case Arg::Tmp: |
22486 | #if CPU(X86_64) |
22487 | OPGEN_RETURN(true); |
22488 | #endif |
22489 | break; |
22490 | break; |
22491 | default: |
22492 | break; |
22493 | } |
22494 | break; |
22495 | case Arg::Index: |
22496 | break; |
22497 | default: |
22498 | break; |
22499 | } |
22500 | break; |
22501 | case 1: |
22502 | OPGEN_RETURN(false); |
22503 | break; |
22504 | default: |
22505 | break; |
22506 | } |
22507 | break; |
22508 | case Opcode::Move32ToFloat: |
22509 | switch (argIndex) { |
22510 | case 0: |
22511 | switch (Arg::Addr) { |
22512 | case Arg::Tmp: |
22513 | break; |
22514 | case Arg::Addr: |
22515 | case Arg::Stack: |
22516 | case Arg::CallArg: |
22517 | switch (args[1].kind()) { |
22518 | case Arg::Tmp: |
22519 | #if CPU(X86) || CPU(X86_64) |
22520 | OPGEN_RETURN(true); |
22521 | #endif |
22522 | break; |
22523 | break; |
22524 | default: |
22525 | break; |
22526 | } |
22527 | break; |
22528 | case Arg::Index: |
22529 | break; |
22530 | default: |
22531 | break; |
22532 | } |
22533 | break; |
22534 | case 1: |
22535 | OPGEN_RETURN(false); |
22536 | break; |
22537 | default: |
22538 | break; |
22539 | } |
22540 | break; |
22541 | case Opcode::MoveDoubleTo64: |
22542 | switch (argIndex) { |
22543 | case 0: |
22544 | switch (Arg::Addr) { |
22545 | case Arg::Tmp: |
22546 | break; |
22547 | case Arg::Addr: |
22548 | case Arg::Stack: |
22549 | case Arg::CallArg: |
22550 | switch (args[1].kind()) { |
22551 | case Arg::Tmp: |
22552 | #if CPU(X86_64) || CPU(ARM64) |
22553 | OPGEN_RETURN(true); |
22554 | #endif |
22555 | break; |
22556 | break; |
22557 | default: |
22558 | break; |
22559 | } |
22560 | break; |
22561 | case Arg::Index: |
22562 | break; |
22563 | default: |
22564 | break; |
22565 | } |
22566 | break; |
22567 | case 1: |
22568 | OPGEN_RETURN(false); |
22569 | break; |
22570 | default: |
22571 | break; |
22572 | } |
22573 | break; |
22574 | case Opcode::MoveFloatTo32: |
22575 | switch (argIndex) { |
22576 | case 0: |
22577 | switch (Arg::Addr) { |
22578 | case Arg::Tmp: |
22579 | break; |
22580 | case Arg::Addr: |
22581 | case Arg::Stack: |
22582 | case Arg::CallArg: |
22583 | switch (args[1].kind()) { |
22584 | case Arg::Tmp: |
22585 | OPGEN_RETURN(true); |
22586 | break; |
22587 | break; |
22588 | default: |
22589 | break; |
22590 | } |
22591 | break; |
22592 | case Arg::Index: |
22593 | break; |
22594 | default: |
22595 | break; |
22596 | } |
22597 | break; |
22598 | case 1: |
22599 | OPGEN_RETURN(false); |
22600 | break; |
22601 | default: |
22602 | break; |
22603 | } |
22604 | break; |
22605 | case Opcode::Load8: |
22606 | switch (argIndex) { |
22607 | case 0: |
22608 | switch (Arg::Addr) { |
22609 | case Arg::Addr: |
22610 | case Arg::Stack: |
22611 | case Arg::CallArg: |
22612 | switch (args[1].kind()) { |
22613 | case Arg::Tmp: |
22614 | OPGEN_RETURN(true); |
22615 | break; |
22616 | break; |
22617 | default: |
22618 | break; |
22619 | } |
22620 | break; |
22621 | case Arg::Index: |
22622 | break; |
22623 | default: |
22624 | break; |
22625 | } |
22626 | break; |
22627 | case 1: |
22628 | OPGEN_RETURN(false); |
22629 | break; |
22630 | default: |
22631 | break; |
22632 | } |
22633 | break; |
22634 | case Opcode::LoadAcq8: |
22635 | switch (argIndex) { |
22636 | case 0: |
22637 | OPGEN_RETURN(false); |
22638 | break; |
22639 | case 1: |
22640 | OPGEN_RETURN(false); |
22641 | break; |
22642 | default: |
22643 | break; |
22644 | } |
22645 | break; |
22646 | case Opcode::Store8: |
22647 | switch (argIndex) { |
22648 | case 0: |
22649 | OPGEN_RETURN(false); |
22650 | break; |
22651 | case 1: |
22652 | switch (args[0].kind()) { |
22653 | case Arg::Tmp: |
22654 | switch (Arg::Addr) { |
22655 | case Arg::Index: |
22656 | break; |
22657 | case Arg::Addr: |
22658 | case Arg::Stack: |
22659 | case Arg::CallArg: |
22660 | OPGEN_RETURN(true); |
22661 | break; |
22662 | break; |
22663 | default: |
22664 | break; |
22665 | } |
22666 | break; |
22667 | case Arg::Imm: |
22668 | switch (Arg::Addr) { |
22669 | case Arg::Index: |
22670 | break; |
22671 | case Arg::Addr: |
22672 | case Arg::Stack: |
22673 | case Arg::CallArg: |
22674 | #if CPU(X86) || CPU(X86_64) |
22675 | OPGEN_RETURN(true); |
22676 | #endif |
22677 | break; |
22678 | break; |
22679 | default: |
22680 | break; |
22681 | } |
22682 | break; |
22683 | default: |
22684 | break; |
22685 | } |
22686 | break; |
22687 | default: |
22688 | break; |
22689 | } |
22690 | break; |
22691 | case Opcode::StoreRel8: |
22692 | switch (argIndex) { |
22693 | case 0: |
22694 | OPGEN_RETURN(false); |
22695 | break; |
22696 | case 1: |
22697 | OPGEN_RETURN(false); |
22698 | break; |
22699 | default: |
22700 | break; |
22701 | } |
22702 | break; |
22703 | case Opcode::Load8SignedExtendTo32: |
22704 | switch (argIndex) { |
22705 | case 0: |
22706 | switch (Arg::Addr) { |
22707 | case Arg::Addr: |
22708 | case Arg::Stack: |
22709 | case Arg::CallArg: |
22710 | switch (args[1].kind()) { |
22711 | case Arg::Tmp: |
22712 | OPGEN_RETURN(true); |
22713 | break; |
22714 | break; |
22715 | default: |
22716 | break; |
22717 | } |
22718 | break; |
22719 | case Arg::Index: |
22720 | break; |
22721 | default: |
22722 | break; |
22723 | } |
22724 | break; |
22725 | case 1: |
22726 | OPGEN_RETURN(false); |
22727 | break; |
22728 | default: |
22729 | break; |
22730 | } |
22731 | break; |
22732 | case Opcode::LoadAcq8SignedExtendTo32: |
22733 | switch (argIndex) { |
22734 | case 0: |
22735 | OPGEN_RETURN(false); |
22736 | break; |
22737 | case 1: |
22738 | OPGEN_RETURN(false); |
22739 | break; |
22740 | default: |
22741 | break; |
22742 | } |
22743 | break; |
22744 | case Opcode::Load16: |
22745 | switch (argIndex) { |
22746 | case 0: |
22747 | switch (Arg::Addr) { |
22748 | case Arg::Addr: |
22749 | case Arg::Stack: |
22750 | case Arg::CallArg: |
22751 | switch (args[1].kind()) { |
22752 | case Arg::Tmp: |
22753 | OPGEN_RETURN(true); |
22754 | break; |
22755 | break; |
22756 | default: |
22757 | break; |
22758 | } |
22759 | break; |
22760 | case Arg::Index: |
22761 | break; |
22762 | default: |
22763 | break; |
22764 | } |
22765 | break; |
22766 | case 1: |
22767 | OPGEN_RETURN(false); |
22768 | break; |
22769 | default: |
22770 | break; |
22771 | } |
22772 | break; |
22773 | case Opcode::LoadAcq16: |
22774 | switch (argIndex) { |
22775 | case 0: |
22776 | OPGEN_RETURN(false); |
22777 | break; |
22778 | case 1: |
22779 | OPGEN_RETURN(false); |
22780 | break; |
22781 | default: |
22782 | break; |
22783 | } |
22784 | break; |
22785 | case Opcode::Load16SignedExtendTo32: |
22786 | switch (argIndex) { |
22787 | case 0: |
22788 | switch (Arg::Addr) { |
22789 | case Arg::Addr: |
22790 | case Arg::Stack: |
22791 | case Arg::CallArg: |
22792 | switch (args[1].kind()) { |
22793 | case Arg::Tmp: |
22794 | OPGEN_RETURN(true); |
22795 | break; |
22796 | break; |
22797 | default: |
22798 | break; |
22799 | } |
22800 | break; |
22801 | case Arg::Index: |
22802 | break; |
22803 | default: |
22804 | break; |
22805 | } |
22806 | break; |
22807 | case 1: |
22808 | OPGEN_RETURN(false); |
22809 | break; |
22810 | default: |
22811 | break; |
22812 | } |
22813 | break; |
22814 | case Opcode::LoadAcq16SignedExtendTo32: |
22815 | switch (argIndex) { |
22816 | case 0: |
22817 | OPGEN_RETURN(false); |
22818 | break; |
22819 | case 1: |
22820 | OPGEN_RETURN(false); |
22821 | break; |
22822 | default: |
22823 | break; |
22824 | } |
22825 | break; |
22826 | case Opcode::Store16: |
22827 | switch (argIndex) { |
22828 | case 0: |
22829 | OPGEN_RETURN(false); |
22830 | break; |
22831 | case 1: |
22832 | switch (args[0].kind()) { |
22833 | case Arg::Tmp: |
22834 | switch (Arg::Addr) { |
22835 | case Arg::Index: |
22836 | break; |
22837 | case Arg::Addr: |
22838 | case Arg::Stack: |
22839 | case Arg::CallArg: |
22840 | OPGEN_RETURN(true); |
22841 | break; |
22842 | break; |
22843 | default: |
22844 | break; |
22845 | } |
22846 | break; |
22847 | case Arg::Imm: |
22848 | switch (Arg::Addr) { |
22849 | case Arg::Index: |
22850 | break; |
22851 | case Arg::Addr: |
22852 | case Arg::Stack: |
22853 | case Arg::CallArg: |
22854 | #if CPU(X86) || CPU(X86_64) |
22855 | OPGEN_RETURN(true); |
22856 | #endif |
22857 | break; |
22858 | break; |
22859 | default: |
22860 | break; |
22861 | } |
22862 | break; |
22863 | default: |
22864 | break; |
22865 | } |
22866 | break; |
22867 | default: |
22868 | break; |
22869 | } |
22870 | break; |
22871 | case Opcode::StoreRel16: |
22872 | switch (argIndex) { |
22873 | case 0: |
22874 | OPGEN_RETURN(false); |
22875 | break; |
22876 | case 1: |
22877 | OPGEN_RETURN(false); |
22878 | break; |
22879 | default: |
22880 | break; |
22881 | } |
22882 | break; |
22883 | case Opcode::LoadAcq32: |
22884 | switch (argIndex) { |
22885 | case 0: |
22886 | OPGEN_RETURN(false); |
22887 | break; |
22888 | case 1: |
22889 | OPGEN_RETURN(false); |
22890 | break; |
22891 | default: |
22892 | break; |
22893 | } |
22894 | break; |
22895 | case Opcode::StoreRel32: |
22896 | switch (argIndex) { |
22897 | case 0: |
22898 | OPGEN_RETURN(false); |
22899 | break; |
22900 | case 1: |
22901 | OPGEN_RETURN(false); |
22902 | break; |
22903 | default: |
22904 | break; |
22905 | } |
22906 | break; |
22907 | case Opcode::LoadAcq64: |
22908 | switch (argIndex) { |
22909 | case 0: |
22910 | OPGEN_RETURN(false); |
22911 | break; |
22912 | case 1: |
22913 | OPGEN_RETURN(false); |
22914 | break; |
22915 | default: |
22916 | break; |
22917 | } |
22918 | break; |
22919 | case Opcode::StoreRel64: |
22920 | switch (argIndex) { |
22921 | case 0: |
22922 | OPGEN_RETURN(false); |
22923 | break; |
22924 | case 1: |
22925 | OPGEN_RETURN(false); |
22926 | break; |
22927 | default: |
22928 | break; |
22929 | } |
22930 | break; |
22931 | case Opcode::Xchg8: |
22932 | switch (argIndex) { |
22933 | case 0: |
22934 | OPGEN_RETURN(false); |
22935 | break; |
22936 | case 1: |
22937 | switch (args[0].kind()) { |
22938 | case Arg::Tmp: |
22939 | switch (Arg::Addr) { |
22940 | case Arg::Addr: |
22941 | case Arg::Stack: |
22942 | case Arg::CallArg: |
22943 | #if CPU(X86) || CPU(X86_64) |
22944 | OPGEN_RETURN(true); |
22945 | #endif |
22946 | break; |
22947 | break; |
22948 | case Arg::Index: |
22949 | break; |
22950 | default: |
22951 | break; |
22952 | } |
22953 | break; |
22954 | default: |
22955 | break; |
22956 | } |
22957 | break; |
22958 | default: |
22959 | break; |
22960 | } |
22961 | break; |
22962 | case Opcode::Xchg16: |
22963 | switch (argIndex) { |
22964 | case 0: |
22965 | OPGEN_RETURN(false); |
22966 | break; |
22967 | case 1: |
22968 | switch (args[0].kind()) { |
22969 | case Arg::Tmp: |
22970 | switch (Arg::Addr) { |
22971 | case Arg::Addr: |
22972 | case Arg::Stack: |
22973 | case Arg::CallArg: |
22974 | #if CPU(X86) || CPU(X86_64) |
22975 | OPGEN_RETURN(true); |
22976 | #endif |
22977 | break; |
22978 | break; |
22979 | case Arg::Index: |
22980 | break; |
22981 | default: |
22982 | break; |
22983 | } |
22984 | break; |
22985 | default: |
22986 | break; |
22987 | } |
22988 | break; |
22989 | default: |
22990 | break; |
22991 | } |
22992 | break; |
22993 | case Opcode::Xchg32: |
22994 | switch (argIndex) { |
22995 | case 0: |
22996 | OPGEN_RETURN(false); |
22997 | break; |
22998 | case 1: |
22999 | switch (args[0].kind()) { |
23000 | case Arg::Tmp: |
23001 | switch (Arg::Addr) { |
23002 | case Arg::Addr: |
23003 | case Arg::Stack: |
23004 | case Arg::CallArg: |
23005 | #if CPU(X86) || CPU(X86_64) |
23006 | OPGEN_RETURN(true); |
23007 | #endif |
23008 | break; |
23009 | break; |
23010 | case Arg::Index: |
23011 | break; |
23012 | default: |
23013 | break; |
23014 | } |
23015 | break; |
23016 | default: |
23017 | break; |
23018 | } |
23019 | break; |
23020 | default: |
23021 | break; |
23022 | } |
23023 | break; |
23024 | case Opcode::Xchg64: |
23025 | switch (argIndex) { |
23026 | case 0: |
23027 | OPGEN_RETURN(false); |
23028 | break; |
23029 | case 1: |
23030 | switch (args[0].kind()) { |
23031 | case Arg::Tmp: |
23032 | switch (Arg::Addr) { |
23033 | case Arg::Addr: |
23034 | case Arg::Stack: |
23035 | case Arg::CallArg: |
23036 | #if CPU(X86_64) |
23037 | OPGEN_RETURN(true); |
23038 | #endif |
23039 | break; |
23040 | break; |
23041 | case Arg::Index: |
23042 | break; |
23043 | default: |
23044 | break; |
23045 | } |
23046 | break; |
23047 | default: |
23048 | break; |
23049 | } |
23050 | break; |
23051 | default: |
23052 | break; |
23053 | } |
23054 | break; |
23055 | case Opcode::AtomicStrongCAS8: |
23056 | switch (argIndex) { |
23057 | case 0: |
23058 | OPGEN_RETURN(false); |
23059 | break; |
23060 | case 1: |
23061 | OPGEN_RETURN(false); |
23062 | break; |
23063 | case 2: |
23064 | switch (args.size()) { |
23065 | case 3: |
23066 | switch (args[0].kind()) { |
23067 | case Arg::Tmp: |
23068 | switch (args[1].kind()) { |
23069 | case Arg::Tmp: |
23070 | switch (Arg::Addr) { |
23071 | case Arg::Addr: |
23072 | case Arg::Stack: |
23073 | case Arg::CallArg: |
23074 | #if CPU(X86) || CPU(X86_64) |
23075 | OPGEN_RETURN(true); |
23076 | #endif |
23077 | break; |
23078 | break; |
23079 | case Arg::Index: |
23080 | break; |
23081 | default: |
23082 | break; |
23083 | } |
23084 | break; |
23085 | default: |
23086 | break; |
23087 | } |
23088 | break; |
23089 | default: |
23090 | break; |
23091 | } |
23092 | break; |
23093 | default: |
23094 | break; |
23095 | } |
23096 | break; |
23097 | case 3: |
23098 | switch (args.size()) { |
23099 | case 5: |
23100 | switch (args[0].kind()) { |
23101 | case Arg::StatusCond: |
23102 | switch (args[1].kind()) { |
23103 | case Arg::Tmp: |
23104 | switch (args[2].kind()) { |
23105 | case Arg::Tmp: |
23106 | switch (Arg::Addr) { |
23107 | case Arg::Addr: |
23108 | case Arg::Stack: |
23109 | case Arg::CallArg: |
23110 | switch (args[4].kind()) { |
23111 | case Arg::Tmp: |
23112 | #if CPU(X86) || CPU(X86_64) |
23113 | OPGEN_RETURN(true); |
23114 | #endif |
23115 | break; |
23116 | break; |
23117 | default: |
23118 | break; |
23119 | } |
23120 | break; |
23121 | case Arg::Index: |
23122 | break; |
23123 | default: |
23124 | break; |
23125 | } |
23126 | break; |
23127 | default: |
23128 | break; |
23129 | } |
23130 | break; |
23131 | default: |
23132 | break; |
23133 | } |
23134 | break; |
23135 | default: |
23136 | break; |
23137 | } |
23138 | break; |
23139 | default: |
23140 | break; |
23141 | } |
23142 | break; |
23143 | case 4: |
23144 | OPGEN_RETURN(false); |
23145 | break; |
23146 | default: |
23147 | break; |
23148 | } |
23149 | break; |
23150 | case Opcode::AtomicStrongCAS16: |
23151 | switch (argIndex) { |
23152 | case 0: |
23153 | OPGEN_RETURN(false); |
23154 | break; |
23155 | case 1: |
23156 | OPGEN_RETURN(false); |
23157 | break; |
23158 | case 2: |
23159 | switch (args.size()) { |
23160 | case 3: |
23161 | switch (args[0].kind()) { |
23162 | case Arg::Tmp: |
23163 | switch (args[1].kind()) { |
23164 | case Arg::Tmp: |
23165 | switch (Arg::Addr) { |
23166 | case Arg::Addr: |
23167 | case Arg::Stack: |
23168 | case Arg::CallArg: |
23169 | #if CPU(X86) || CPU(X86_64) |
23170 | OPGEN_RETURN(true); |
23171 | #endif |
23172 | break; |
23173 | break; |
23174 | case Arg::Index: |
23175 | break; |
23176 | default: |
23177 | break; |
23178 | } |
23179 | break; |
23180 | default: |
23181 | break; |
23182 | } |
23183 | break; |
23184 | default: |
23185 | break; |
23186 | } |
23187 | break; |
23188 | default: |
23189 | break; |
23190 | } |
23191 | break; |
23192 | case 3: |
23193 | switch (args.size()) { |
23194 | case 5: |
23195 | switch (args[0].kind()) { |
23196 | case Arg::StatusCond: |
23197 | switch (args[1].kind()) { |
23198 | case Arg::Tmp: |
23199 | switch (args[2].kind()) { |
23200 | case Arg::Tmp: |
23201 | switch (Arg::Addr) { |
23202 | case Arg::Addr: |
23203 | case Arg::Stack: |
23204 | case Arg::CallArg: |
23205 | switch (args[4].kind()) { |
23206 | case Arg::Tmp: |
23207 | #if CPU(X86) || CPU(X86_64) |
23208 | OPGEN_RETURN(true); |
23209 | #endif |
23210 | break; |
23211 | break; |
23212 | default: |
23213 | break; |
23214 | } |
23215 | break; |
23216 | case Arg::Index: |
23217 | break; |
23218 | default: |
23219 | break; |
23220 | } |
23221 | break; |
23222 | default: |
23223 | break; |
23224 | } |
23225 | break; |
23226 | default: |
23227 | break; |
23228 | } |
23229 | break; |
23230 | default: |
23231 | break; |
23232 | } |
23233 | break; |
23234 | default: |
23235 | break; |
23236 | } |
23237 | break; |
23238 | case 4: |
23239 | OPGEN_RETURN(false); |
23240 | break; |
23241 | default: |
23242 | break; |
23243 | } |
23244 | break; |
23245 | case Opcode::AtomicStrongCAS32: |
23246 | switch (argIndex) { |
23247 | case 0: |
23248 | OPGEN_RETURN(false); |
23249 | break; |
23250 | case 1: |
23251 | OPGEN_RETURN(false); |
23252 | break; |
23253 | case 2: |
23254 | switch (args.size()) { |
23255 | case 3: |
23256 | switch (args[0].kind()) { |
23257 | case Arg::Tmp: |
23258 | switch (args[1].kind()) { |
23259 | case Arg::Tmp: |
23260 | switch (Arg::Addr) { |
23261 | case Arg::Addr: |
23262 | case Arg::Stack: |
23263 | case Arg::CallArg: |
23264 | #if CPU(X86) || CPU(X86_64) |
23265 | OPGEN_RETURN(true); |
23266 | #endif |
23267 | break; |
23268 | break; |
23269 | case Arg::Index: |
23270 | break; |
23271 | default: |
23272 | break; |
23273 | } |
23274 | break; |
23275 | default: |
23276 | break; |
23277 | } |
23278 | break; |
23279 | default: |
23280 | break; |
23281 | } |
23282 | break; |
23283 | default: |
23284 | break; |
23285 | } |
23286 | break; |
23287 | case 3: |
23288 | switch (args.size()) { |
23289 | case 5: |
23290 | switch (args[0].kind()) { |
23291 | case Arg::StatusCond: |
23292 | switch (args[1].kind()) { |
23293 | case Arg::Tmp: |
23294 | switch (args[2].kind()) { |
23295 | case Arg::Tmp: |
23296 | switch (Arg::Addr) { |
23297 | case Arg::Addr: |
23298 | case Arg::Stack: |
23299 | case Arg::CallArg: |
23300 | switch (args[4].kind()) { |
23301 | case Arg::Tmp: |
23302 | #if CPU(X86) || CPU(X86_64) |
23303 | OPGEN_RETURN(true); |
23304 | #endif |
23305 | break; |
23306 | break; |
23307 | default: |
23308 | break; |
23309 | } |
23310 | break; |
23311 | case Arg::Index: |
23312 | break; |
23313 | default: |
23314 | break; |
23315 | } |
23316 | break; |
23317 | default: |
23318 | break; |
23319 | } |
23320 | break; |
23321 | default: |
23322 | break; |
23323 | } |
23324 | break; |
23325 | default: |
23326 | break; |
23327 | } |
23328 | break; |
23329 | default: |
23330 | break; |
23331 | } |
23332 | break; |
23333 | case 4: |
23334 | OPGEN_RETURN(false); |
23335 | break; |
23336 | default: |
23337 | break; |
23338 | } |
23339 | break; |
23340 | case Opcode::AtomicStrongCAS64: |
23341 | switch (argIndex) { |
23342 | case 0: |
23343 | OPGEN_RETURN(false); |
23344 | break; |
23345 | case 1: |
23346 | OPGEN_RETURN(false); |
23347 | break; |
23348 | case 2: |
23349 | switch (args.size()) { |
23350 | case 3: |
23351 | switch (args[0].kind()) { |
23352 | case Arg::Tmp: |
23353 | switch (args[1].kind()) { |
23354 | case Arg::Tmp: |
23355 | switch (Arg::Addr) { |
23356 | case Arg::Addr: |
23357 | case Arg::Stack: |
23358 | case Arg::CallArg: |
23359 | #if CPU(X86_64) |
23360 | OPGEN_RETURN(true); |
23361 | #endif |
23362 | break; |
23363 | break; |
23364 | case Arg::Index: |
23365 | break; |
23366 | default: |
23367 | break; |
23368 | } |
23369 | break; |
23370 | default: |
23371 | break; |
23372 | } |
23373 | break; |
23374 | default: |
23375 | break; |
23376 | } |
23377 | break; |
23378 | default: |
23379 | break; |
23380 | } |
23381 | break; |
23382 | case 3: |
23383 | switch (args.size()) { |
23384 | case 5: |
23385 | switch (args[0].kind()) { |
23386 | case Arg::StatusCond: |
23387 | switch (args[1].kind()) { |
23388 | case Arg::Tmp: |
23389 | switch (args[2].kind()) { |
23390 | case Arg::Tmp: |
23391 | switch (Arg::Addr) { |
23392 | case Arg::Addr: |
23393 | case Arg::Stack: |
23394 | case Arg::CallArg: |
23395 | switch (args[4].kind()) { |
23396 | case Arg::Tmp: |
23397 | #if CPU(X86_64) |
23398 | OPGEN_RETURN(true); |
23399 | #endif |
23400 | break; |
23401 | break; |
23402 | default: |
23403 | break; |
23404 | } |
23405 | break; |
23406 | case Arg::Index: |
23407 | break; |
23408 | default: |
23409 | break; |
23410 | } |
23411 | break; |
23412 | default: |
23413 | break; |
23414 | } |
23415 | break; |
23416 | default: |
23417 | break; |
23418 | } |
23419 | break; |
23420 | default: |
23421 | break; |
23422 | } |
23423 | break; |
23424 | default: |
23425 | break; |
23426 | } |
23427 | break; |
23428 | case 4: |
23429 | OPGEN_RETURN(false); |
23430 | break; |
23431 | default: |
23432 | break; |
23433 | } |
23434 | break; |
23435 | case Opcode::BranchAtomicStrongCAS8: |
23436 | switch (argIndex) { |
23437 | case 0: |
23438 | OPGEN_RETURN(false); |
23439 | break; |
23440 | case 1: |
23441 | OPGEN_RETURN(false); |
23442 | break; |
23443 | case 2: |
23444 | OPGEN_RETURN(false); |
23445 | break; |
23446 | case 3: |
23447 | switch (args[0].kind()) { |
23448 | case Arg::StatusCond: |
23449 | switch (args[1].kind()) { |
23450 | case Arg::Tmp: |
23451 | switch (args[2].kind()) { |
23452 | case Arg::Tmp: |
23453 | switch (Arg::Addr) { |
23454 | case Arg::Addr: |
23455 | case Arg::Stack: |
23456 | case Arg::CallArg: |
23457 | #if CPU(X86) || CPU(X86_64) |
23458 | OPGEN_RETURN(true); |
23459 | #endif |
23460 | break; |
23461 | break; |
23462 | case Arg::Index: |
23463 | break; |
23464 | default: |
23465 | break; |
23466 | } |
23467 | break; |
23468 | default: |
23469 | break; |
23470 | } |
23471 | break; |
23472 | default: |
23473 | break; |
23474 | } |
23475 | break; |
23476 | default: |
23477 | break; |
23478 | } |
23479 | break; |
23480 | default: |
23481 | break; |
23482 | } |
23483 | break; |
23484 | case Opcode::BranchAtomicStrongCAS16: |
23485 | switch (argIndex) { |
23486 | case 0: |
23487 | OPGEN_RETURN(false); |
23488 | break; |
23489 | case 1: |
23490 | OPGEN_RETURN(false); |
23491 | break; |
23492 | case 2: |
23493 | OPGEN_RETURN(false); |
23494 | break; |
23495 | case 3: |
23496 | switch (args[0].kind()) { |
23497 | case Arg::StatusCond: |
23498 | switch (args[1].kind()) { |
23499 | case Arg::Tmp: |
23500 | switch (args[2].kind()) { |
23501 | case Arg::Tmp: |
23502 | switch (Arg::Addr) { |
23503 | case Arg::Addr: |
23504 | case Arg::Stack: |
23505 | case Arg::CallArg: |
23506 | #if CPU(X86) || CPU(X86_64) |
23507 | OPGEN_RETURN(true); |
23508 | #endif |
23509 | break; |
23510 | break; |
23511 | case Arg::Index: |
23512 | break; |
23513 | default: |
23514 | break; |
23515 | } |
23516 | break; |
23517 | default: |
23518 | break; |
23519 | } |
23520 | break; |
23521 | default: |
23522 | break; |
23523 | } |
23524 | break; |
23525 | default: |
23526 | break; |
23527 | } |
23528 | break; |
23529 | default: |
23530 | break; |
23531 | } |
23532 | break; |
23533 | case Opcode::BranchAtomicStrongCAS32: |
23534 | switch (argIndex) { |
23535 | case 0: |
23536 | OPGEN_RETURN(false); |
23537 | break; |
23538 | case 1: |
23539 | OPGEN_RETURN(false); |
23540 | break; |
23541 | case 2: |
23542 | OPGEN_RETURN(false); |
23543 | break; |
23544 | case 3: |
23545 | switch (args[0].kind()) { |
23546 | case Arg::StatusCond: |
23547 | switch (args[1].kind()) { |
23548 | case Arg::Tmp: |
23549 | switch (args[2].kind()) { |
23550 | case Arg::Tmp: |
23551 | switch (Arg::Addr) { |
23552 | case Arg::Addr: |
23553 | case Arg::Stack: |
23554 | case Arg::CallArg: |
23555 | #if CPU(X86) || CPU(X86_64) |
23556 | OPGEN_RETURN(true); |
23557 | #endif |
23558 | break; |
23559 | break; |
23560 | case Arg::Index: |
23561 | break; |
23562 | default: |
23563 | break; |
23564 | } |
23565 | break; |
23566 | default: |
23567 | break; |
23568 | } |
23569 | break; |
23570 | default: |
23571 | break; |
23572 | } |
23573 | break; |
23574 | default: |
23575 | break; |
23576 | } |
23577 | break; |
23578 | default: |
23579 | break; |
23580 | } |
23581 | break; |
23582 | case Opcode::BranchAtomicStrongCAS64: |
23583 | switch (argIndex) { |
23584 | case 0: |
23585 | OPGEN_RETURN(false); |
23586 | break; |
23587 | case 1: |
23588 | OPGEN_RETURN(false); |
23589 | break; |
23590 | case 2: |
23591 | OPGEN_RETURN(false); |
23592 | break; |
23593 | case 3: |
23594 | switch (args[0].kind()) { |
23595 | case Arg::StatusCond: |
23596 | switch (args[1].kind()) { |
23597 | case Arg::Tmp: |
23598 | switch (args[2].kind()) { |
23599 | case Arg::Tmp: |
23600 | switch (Arg::Addr) { |
23601 | case Arg::Addr: |
23602 | case Arg::Stack: |
23603 | case Arg::CallArg: |
23604 | #if CPU(X86_64) |
23605 | OPGEN_RETURN(true); |
23606 | #endif |
23607 | break; |
23608 | break; |
23609 | case Arg::Index: |
23610 | break; |
23611 | default: |
23612 | break; |
23613 | } |
23614 | break; |
23615 | default: |
23616 | break; |
23617 | } |
23618 | break; |
23619 | default: |
23620 | break; |
23621 | } |
23622 | break; |
23623 | default: |
23624 | break; |
23625 | } |
23626 | break; |
23627 | default: |
23628 | break; |
23629 | } |
23630 | break; |
23631 | case Opcode::AtomicAdd8: |
23632 | switch (argIndex) { |
23633 | case 0: |
23634 | OPGEN_RETURN(false); |
23635 | break; |
23636 | case 1: |
23637 | switch (args[0].kind()) { |
23638 | case Arg::Imm: |
23639 | switch (Arg::Addr) { |
23640 | case Arg::Addr: |
23641 | case Arg::Stack: |
23642 | case Arg::CallArg: |
23643 | #if CPU(X86) || CPU(X86_64) |
23644 | OPGEN_RETURN(true); |
23645 | #endif |
23646 | break; |
23647 | break; |
23648 | case Arg::Index: |
23649 | break; |
23650 | default: |
23651 | break; |
23652 | } |
23653 | break; |
23654 | case Arg::Tmp: |
23655 | switch (Arg::Addr) { |
23656 | case Arg::Addr: |
23657 | case Arg::Stack: |
23658 | case Arg::CallArg: |
23659 | #if CPU(X86) || CPU(X86_64) |
23660 | OPGEN_RETURN(true); |
23661 | #endif |
23662 | break; |
23663 | break; |
23664 | case Arg::Index: |
23665 | break; |
23666 | default: |
23667 | break; |
23668 | } |
23669 | break; |
23670 | default: |
23671 | break; |
23672 | } |
23673 | break; |
23674 | default: |
23675 | break; |
23676 | } |
23677 | break; |
23678 | case Opcode::AtomicAdd16: |
23679 | switch (argIndex) { |
23680 | case 0: |
23681 | OPGEN_RETURN(false); |
23682 | break; |
23683 | case 1: |
23684 | switch (args[0].kind()) { |
23685 | case Arg::Imm: |
23686 | switch (Arg::Addr) { |
23687 | case Arg::Addr: |
23688 | case Arg::Stack: |
23689 | case Arg::CallArg: |
23690 | #if CPU(X86) || CPU(X86_64) |
23691 | OPGEN_RETURN(true); |
23692 | #endif |
23693 | break; |
23694 | break; |
23695 | case Arg::Index: |
23696 | break; |
23697 | default: |
23698 | break; |
23699 | } |
23700 | break; |
23701 | case Arg::Tmp: |
23702 | switch (Arg::Addr) { |
23703 | case Arg::Addr: |
23704 | case Arg::Stack: |
23705 | case Arg::CallArg: |
23706 | #if CPU(X86) || CPU(X86_64) |
23707 | OPGEN_RETURN(true); |
23708 | #endif |
23709 | break; |
23710 | break; |
23711 | case Arg::Index: |
23712 | break; |
23713 | default: |
23714 | break; |
23715 | } |
23716 | break; |
23717 | default: |
23718 | break; |
23719 | } |
23720 | break; |
23721 | default: |
23722 | break; |
23723 | } |
23724 | break; |
23725 | case Opcode::AtomicAdd32: |
23726 | switch (argIndex) { |
23727 | case 0: |
23728 | OPGEN_RETURN(false); |
23729 | break; |
23730 | case 1: |
23731 | switch (args[0].kind()) { |
23732 | case Arg::Imm: |
23733 | switch (Arg::Addr) { |
23734 | case Arg::Addr: |
23735 | case Arg::Stack: |
23736 | case Arg::CallArg: |
23737 | #if CPU(X86) || CPU(X86_64) |
23738 | OPGEN_RETURN(true); |
23739 | #endif |
23740 | break; |
23741 | break; |
23742 | case Arg::Index: |
23743 | break; |
23744 | default: |
23745 | break; |
23746 | } |
23747 | break; |
23748 | case Arg::Tmp: |
23749 | switch (Arg::Addr) { |
23750 | case Arg::Addr: |
23751 | case Arg::Stack: |
23752 | case Arg::CallArg: |
23753 | #if CPU(X86) || CPU(X86_64) |
23754 | OPGEN_RETURN(true); |
23755 | #endif |
23756 | break; |
23757 | break; |
23758 | case Arg::Index: |
23759 | break; |
23760 | default: |
23761 | break; |
23762 | } |
23763 | break; |
23764 | default: |
23765 | break; |
23766 | } |
23767 | break; |
23768 | default: |
23769 | break; |
23770 | } |
23771 | break; |
23772 | case Opcode::AtomicAdd64: |
23773 | switch (argIndex) { |
23774 | case 0: |
23775 | OPGEN_RETURN(false); |
23776 | break; |
23777 | case 1: |
23778 | switch (args[0].kind()) { |
23779 | case Arg::Imm: |
23780 | switch (Arg::Addr) { |
23781 | case Arg::Addr: |
23782 | case Arg::Stack: |
23783 | case Arg::CallArg: |
23784 | #if CPU(X86_64) |
23785 | OPGEN_RETURN(true); |
23786 | #endif |
23787 | break; |
23788 | break; |
23789 | case Arg::Index: |
23790 | break; |
23791 | default: |
23792 | break; |
23793 | } |
23794 | break; |
23795 | case Arg::Tmp: |
23796 | switch (Arg::Addr) { |
23797 | case Arg::Addr: |
23798 | case Arg::Stack: |
23799 | case Arg::CallArg: |
23800 | #if CPU(X86_64) |
23801 | OPGEN_RETURN(true); |
23802 | #endif |
23803 | break; |
23804 | break; |
23805 | case Arg::Index: |
23806 | break; |
23807 | default: |
23808 | break; |
23809 | } |
23810 | break; |
23811 | default: |
23812 | break; |
23813 | } |
23814 | break; |
23815 | default: |
23816 | break; |
23817 | } |
23818 | break; |
23819 | case Opcode::AtomicSub8: |
23820 | switch (argIndex) { |
23821 | case 0: |
23822 | OPGEN_RETURN(false); |
23823 | break; |
23824 | case 1: |
23825 | switch (args[0].kind()) { |
23826 | case Arg::Imm: |
23827 | switch (Arg::Addr) { |
23828 | case Arg::Addr: |
23829 | case Arg::Stack: |
23830 | case Arg::CallArg: |
23831 | #if CPU(X86) || CPU(X86_64) |
23832 | OPGEN_RETURN(true); |
23833 | #endif |
23834 | break; |
23835 | break; |
23836 | case Arg::Index: |
23837 | break; |
23838 | default: |
23839 | break; |
23840 | } |
23841 | break; |
23842 | case Arg::Tmp: |
23843 | switch (Arg::Addr) { |
23844 | case Arg::Addr: |
23845 | case Arg::Stack: |
23846 | case Arg::CallArg: |
23847 | #if CPU(X86) || CPU(X86_64) |
23848 | OPGEN_RETURN(true); |
23849 | #endif |
23850 | break; |
23851 | break; |
23852 | case Arg::Index: |
23853 | break; |
23854 | default: |
23855 | break; |
23856 | } |
23857 | break; |
23858 | default: |
23859 | break; |
23860 | } |
23861 | break; |
23862 | default: |
23863 | break; |
23864 | } |
23865 | break; |
23866 | case Opcode::AtomicSub16: |
23867 | switch (argIndex) { |
23868 | case 0: |
23869 | OPGEN_RETURN(false); |
23870 | break; |
23871 | case 1: |
23872 | switch (args[0].kind()) { |
23873 | case Arg::Imm: |
23874 | switch (Arg::Addr) { |
23875 | case Arg::Addr: |
23876 | case Arg::Stack: |
23877 | case Arg::CallArg: |
23878 | #if CPU(X86) || CPU(X86_64) |
23879 | OPGEN_RETURN(true); |
23880 | #endif |
23881 | break; |
23882 | break; |
23883 | case Arg::Index: |
23884 | break; |
23885 | default: |
23886 | break; |
23887 | } |
23888 | break; |
23889 | case Arg::Tmp: |
23890 | switch (Arg::Addr) { |
23891 | case Arg::Addr: |
23892 | case Arg::Stack: |
23893 | case Arg::CallArg: |
23894 | #if CPU(X86) || CPU(X86_64) |
23895 | OPGEN_RETURN(true); |
23896 | #endif |
23897 | break; |
23898 | break; |
23899 | case Arg::Index: |
23900 | break; |
23901 | default: |
23902 | break; |
23903 | } |
23904 | break; |
23905 | default: |
23906 | break; |
23907 | } |
23908 | break; |
23909 | default: |
23910 | break; |
23911 | } |
23912 | break; |
23913 | case Opcode::AtomicSub32: |
23914 | switch (argIndex) { |
23915 | case 0: |
23916 | OPGEN_RETURN(false); |
23917 | break; |
23918 | case 1: |
23919 | switch (args[0].kind()) { |
23920 | case Arg::Imm: |
23921 | switch (Arg::Addr) { |
23922 | case Arg::Addr: |
23923 | case Arg::Stack: |
23924 | case Arg::CallArg: |
23925 | #if CPU(X86) || CPU(X86_64) |
23926 | OPGEN_RETURN(true); |
23927 | #endif |
23928 | break; |
23929 | break; |
23930 | case Arg::Index: |
23931 | break; |
23932 | default: |
23933 | break; |
23934 | } |
23935 | break; |
23936 | case Arg::Tmp: |
23937 | switch (Arg::Addr) { |
23938 | case Arg::Addr: |
23939 | case Arg::Stack: |
23940 | case Arg::CallArg: |
23941 | #if CPU(X86) || CPU(X86_64) |
23942 | OPGEN_RETURN(true); |
23943 | #endif |
23944 | break; |
23945 | break; |
23946 | case Arg::Index: |
23947 | break; |
23948 | default: |
23949 | break; |
23950 | } |
23951 | break; |
23952 | default: |
23953 | break; |
23954 | } |
23955 | break; |
23956 | default: |
23957 | break; |
23958 | } |
23959 | break; |
23960 | case Opcode::AtomicSub64: |
23961 | switch (argIndex) { |
23962 | case 0: |
23963 | OPGEN_RETURN(false); |
23964 | break; |
23965 | case 1: |
23966 | switch (args[0].kind()) { |
23967 | case Arg::Imm: |
23968 | switch (Arg::Addr) { |
23969 | case Arg::Addr: |
23970 | case Arg::Stack: |
23971 | case Arg::CallArg: |
23972 | #if CPU(X86_64) |
23973 | OPGEN_RETURN(true); |
23974 | #endif |
23975 | break; |
23976 | break; |
23977 | case Arg::Index: |
23978 | break; |
23979 | default: |
23980 | break; |
23981 | } |
23982 | break; |
23983 | case Arg::Tmp: |
23984 | switch (Arg::Addr) { |
23985 | case Arg::Addr: |
23986 | case Arg::Stack: |
23987 | case Arg::CallArg: |
23988 | #if CPU(X86_64) |
23989 | OPGEN_RETURN(true); |
23990 | #endif |
23991 | break; |
23992 | break; |
23993 | case Arg::Index: |
23994 | break; |
23995 | default: |
23996 | break; |
23997 | } |
23998 | break; |
23999 | default: |
24000 | break; |
24001 | } |
24002 | break; |
24003 | default: |
24004 | break; |
24005 | } |
24006 | break; |
24007 | case Opcode::AtomicAnd8: |
24008 | switch (argIndex) { |
24009 | case 0: |
24010 | OPGEN_RETURN(false); |
24011 | break; |
24012 | case 1: |
24013 | switch (args[0].kind()) { |
24014 | case Arg::Imm: |
24015 | switch (Arg::Addr) { |
24016 | case Arg::Addr: |
24017 | case Arg::Stack: |
24018 | case Arg::CallArg: |
24019 | #if CPU(X86) || CPU(X86_64) |
24020 | OPGEN_RETURN(true); |
24021 | #endif |
24022 | break; |
24023 | break; |
24024 | case Arg::Index: |
24025 | break; |
24026 | default: |
24027 | break; |
24028 | } |
24029 | break; |
24030 | case Arg::Tmp: |
24031 | switch (Arg::Addr) { |
24032 | case Arg::Addr: |
24033 | case Arg::Stack: |
24034 | case Arg::CallArg: |
24035 | #if CPU(X86) || CPU(X86_64) |
24036 | OPGEN_RETURN(true); |
24037 | #endif |
24038 | break; |
24039 | break; |
24040 | case Arg::Index: |
24041 | break; |
24042 | default: |
24043 | break; |
24044 | } |
24045 | break; |
24046 | default: |
24047 | break; |
24048 | } |
24049 | break; |
24050 | default: |
24051 | break; |
24052 | } |
24053 | break; |
24054 | case Opcode::AtomicAnd16: |
24055 | switch (argIndex) { |
24056 | case 0: |
24057 | OPGEN_RETURN(false); |
24058 | break; |
24059 | case 1: |
24060 | switch (args[0].kind()) { |
24061 | case Arg::Imm: |
24062 | switch (Arg::Addr) { |
24063 | case Arg::Addr: |
24064 | case Arg::Stack: |
24065 | case Arg::CallArg: |
24066 | #if CPU(X86) || CPU(X86_64) |
24067 | OPGEN_RETURN(true); |
24068 | #endif |
24069 | break; |
24070 | break; |
24071 | case Arg::Index: |
24072 | break; |
24073 | default: |
24074 | break; |
24075 | } |
24076 | break; |
24077 | case Arg::Tmp: |
24078 | switch (Arg::Addr) { |
24079 | case Arg::Addr: |
24080 | case Arg::Stack: |
24081 | case Arg::CallArg: |
24082 | #if CPU(X86) || CPU(X86_64) |
24083 | OPGEN_RETURN(true); |
24084 | #endif |
24085 | break; |
24086 | break; |
24087 | case Arg::Index: |
24088 | break; |
24089 | default: |
24090 | break; |
24091 | } |
24092 | break; |
24093 | default: |
24094 | break; |
24095 | } |
24096 | break; |
24097 | default: |
24098 | break; |
24099 | } |
24100 | break; |
24101 | case Opcode::AtomicAnd32: |
24102 | switch (argIndex) { |
24103 | case 0: |
24104 | OPGEN_RETURN(false); |
24105 | break; |
24106 | case 1: |
24107 | switch (args[0].kind()) { |
24108 | case Arg::Imm: |
24109 | switch (Arg::Addr) { |
24110 | case Arg::Addr: |
24111 | case Arg::Stack: |
24112 | case Arg::CallArg: |
24113 | #if CPU(X86) || CPU(X86_64) |
24114 | OPGEN_RETURN(true); |
24115 | #endif |
24116 | break; |
24117 | break; |
24118 | case Arg::Index: |
24119 | break; |
24120 | default: |
24121 | break; |
24122 | } |
24123 | break; |
24124 | case Arg::Tmp: |
24125 | switch (Arg::Addr) { |
24126 | case Arg::Addr: |
24127 | case Arg::Stack: |
24128 | case Arg::CallArg: |
24129 | #if CPU(X86) || CPU(X86_64) |
24130 | OPGEN_RETURN(true); |
24131 | #endif |
24132 | break; |
24133 | break; |
24134 | case Arg::Index: |
24135 | break; |
24136 | default: |
24137 | break; |
24138 | } |
24139 | break; |
24140 | default: |
24141 | break; |
24142 | } |
24143 | break; |
24144 | default: |
24145 | break; |
24146 | } |
24147 | break; |
24148 | case Opcode::AtomicAnd64: |
24149 | switch (argIndex) { |
24150 | case 0: |
24151 | OPGEN_RETURN(false); |
24152 | break; |
24153 | case 1: |
24154 | switch (args[0].kind()) { |
24155 | case Arg::Imm: |
24156 | switch (Arg::Addr) { |
24157 | case Arg::Addr: |
24158 | case Arg::Stack: |
24159 | case Arg::CallArg: |
24160 | #if CPU(X86_64) |
24161 | OPGEN_RETURN(true); |
24162 | #endif |
24163 | break; |
24164 | break; |
24165 | case Arg::Index: |
24166 | break; |
24167 | default: |
24168 | break; |
24169 | } |
24170 | break; |
24171 | case Arg::Tmp: |
24172 | switch (Arg::Addr) { |
24173 | case Arg::Addr: |
24174 | case Arg::Stack: |
24175 | case Arg::CallArg: |
24176 | #if CPU(X86_64) |
24177 | OPGEN_RETURN(true); |
24178 | #endif |
24179 | break; |
24180 | break; |
24181 | case Arg::Index: |
24182 | break; |
24183 | default: |
24184 | break; |
24185 | } |
24186 | break; |
24187 | default: |
24188 | break; |
24189 | } |
24190 | break; |
24191 | default: |
24192 | break; |
24193 | } |
24194 | break; |
24195 | case Opcode::AtomicOr8: |
24196 | switch (argIndex) { |
24197 | case 0: |
24198 | OPGEN_RETURN(false); |
24199 | break; |
24200 | case 1: |
24201 | switch (args[0].kind()) { |
24202 | case Arg::Imm: |
24203 | switch (Arg::Addr) { |
24204 | case Arg::Addr: |
24205 | case Arg::Stack: |
24206 | case Arg::CallArg: |
24207 | #if CPU(X86) || CPU(X86_64) |
24208 | OPGEN_RETURN(true); |
24209 | #endif |
24210 | break; |
24211 | break; |
24212 | case Arg::Index: |
24213 | break; |
24214 | default: |
24215 | break; |
24216 | } |
24217 | break; |
24218 | case Arg::Tmp: |
24219 | switch (Arg::Addr) { |
24220 | case Arg::Addr: |
24221 | case Arg::Stack: |
24222 | case Arg::CallArg: |
24223 | #if CPU(X86) || CPU(X86_64) |
24224 | OPGEN_RETURN(true); |
24225 | #endif |
24226 | break; |
24227 | break; |
24228 | case Arg::Index: |
24229 | break; |
24230 | default: |
24231 | break; |
24232 | } |
24233 | break; |
24234 | default: |
24235 | break; |
24236 | } |
24237 | break; |
24238 | default: |
24239 | break; |
24240 | } |
24241 | break; |
24242 | case Opcode::AtomicOr16: |
24243 | switch (argIndex) { |
24244 | case 0: |
24245 | OPGEN_RETURN(false); |
24246 | break; |
24247 | case 1: |
24248 | switch (args[0].kind()) { |
24249 | case Arg::Imm: |
24250 | switch (Arg::Addr) { |
24251 | case Arg::Addr: |
24252 | case Arg::Stack: |
24253 | case Arg::CallArg: |
24254 | #if CPU(X86) || CPU(X86_64) |
24255 | OPGEN_RETURN(true); |
24256 | #endif |
24257 | break; |
24258 | break; |
24259 | case Arg::Index: |
24260 | break; |
24261 | default: |
24262 | break; |
24263 | } |
24264 | break; |
24265 | case Arg::Tmp: |
24266 | switch (Arg::Addr) { |
24267 | case Arg::Addr: |
24268 | case Arg::Stack: |
24269 | case Arg::CallArg: |
24270 | #if CPU(X86) || CPU(X86_64) |
24271 | OPGEN_RETURN(true); |
24272 | #endif |
24273 | break; |
24274 | break; |
24275 | case Arg::Index: |
24276 | break; |
24277 | default: |
24278 | break; |
24279 | } |
24280 | break; |
24281 | default: |
24282 | break; |
24283 | } |
24284 | break; |
24285 | default: |
24286 | break; |
24287 | } |
24288 | break; |
24289 | case Opcode::AtomicOr32: |
24290 | switch (argIndex) { |
24291 | case 0: |
24292 | OPGEN_RETURN(false); |
24293 | break; |
24294 | case 1: |
24295 | switch (args[0].kind()) { |
24296 | case Arg::Imm: |
24297 | switch (Arg::Addr) { |
24298 | case Arg::Addr: |
24299 | case Arg::Stack: |
24300 | case Arg::CallArg: |
24301 | #if CPU(X86) || CPU(X86_64) |
24302 | OPGEN_RETURN(true); |
24303 | #endif |
24304 | break; |
24305 | break; |
24306 | case Arg::Index: |
24307 | break; |
24308 | default: |
24309 | break; |
24310 | } |
24311 | break; |
24312 | case Arg::Tmp: |
24313 | switch (Arg::Addr) { |
24314 | case Arg::Addr: |
24315 | case Arg::Stack: |
24316 | case Arg::CallArg: |
24317 | #if CPU(X86) || CPU(X86_64) |
24318 | OPGEN_RETURN(true); |
24319 | #endif |
24320 | break; |
24321 | break; |
24322 | case Arg::Index: |
24323 | break; |
24324 | default: |
24325 | break; |
24326 | } |
24327 | break; |
24328 | default: |
24329 | break; |
24330 | } |
24331 | break; |
24332 | default: |
24333 | break; |
24334 | } |
24335 | break; |
24336 | case Opcode::AtomicOr64: |
24337 | switch (argIndex) { |
24338 | case 0: |
24339 | OPGEN_RETURN(false); |
24340 | break; |
24341 | case 1: |
24342 | switch (args[0].kind()) { |
24343 | case Arg::Imm: |
24344 | switch (Arg::Addr) { |
24345 | case Arg::Addr: |
24346 | case Arg::Stack: |
24347 | case Arg::CallArg: |
24348 | #if CPU(X86_64) |
24349 | OPGEN_RETURN(true); |
24350 | #endif |
24351 | break; |
24352 | break; |
24353 | case Arg::Index: |
24354 | break; |
24355 | default: |
24356 | break; |
24357 | } |
24358 | break; |
24359 | case Arg::Tmp: |
24360 | switch (Arg::Addr) { |
24361 | case Arg::Addr: |
24362 | case Arg::Stack: |
24363 | case Arg::CallArg: |
24364 | #if CPU(X86_64) |
24365 | OPGEN_RETURN(true); |
24366 | #endif |
24367 | break; |
24368 | break; |
24369 | case Arg::Index: |
24370 | break; |
24371 | default: |
24372 | break; |
24373 | } |
24374 | break; |
24375 | default: |
24376 | break; |
24377 | } |
24378 | break; |
24379 | default: |
24380 | break; |
24381 | } |
24382 | break; |
24383 | case Opcode::AtomicXor8: |
24384 | switch (argIndex) { |
24385 | case 0: |
24386 | OPGEN_RETURN(false); |
24387 | break; |
24388 | case 1: |
24389 | switch (args[0].kind()) { |
24390 | case Arg::Imm: |
24391 | switch (Arg::Addr) { |
24392 | case Arg::Addr: |
24393 | case Arg::Stack: |
24394 | case Arg::CallArg: |
24395 | #if CPU(X86) || CPU(X86_64) |
24396 | OPGEN_RETURN(true); |
24397 | #endif |
24398 | break; |
24399 | break; |
24400 | case Arg::Index: |
24401 | break; |
24402 | default: |
24403 | break; |
24404 | } |
24405 | break; |
24406 | case Arg::Tmp: |
24407 | switch (Arg::Addr) { |
24408 | case Arg::Addr: |
24409 | case Arg::Stack: |
24410 | case Arg::CallArg: |
24411 | #if CPU(X86) || CPU(X86_64) |
24412 | OPGEN_RETURN(true); |
24413 | #endif |
24414 | break; |
24415 | break; |
24416 | case Arg::Index: |
24417 | break; |
24418 | default: |
24419 | break; |
24420 | } |
24421 | break; |
24422 | default: |
24423 | break; |
24424 | } |
24425 | break; |
24426 | default: |
24427 | break; |
24428 | } |
24429 | break; |
24430 | case Opcode::AtomicXor16: |
24431 | switch (argIndex) { |
24432 | case 0: |
24433 | OPGEN_RETURN(false); |
24434 | break; |
24435 | case 1: |
24436 | switch (args[0].kind()) { |
24437 | case Arg::Imm: |
24438 | switch (Arg::Addr) { |
24439 | case Arg::Addr: |
24440 | case Arg::Stack: |
24441 | case Arg::CallArg: |
24442 | #if CPU(X86) || CPU(X86_64) |
24443 | OPGEN_RETURN(true); |
24444 | #endif |
24445 | break; |
24446 | break; |
24447 | case Arg::Index: |
24448 | break; |
24449 | default: |
24450 | break; |
24451 | } |
24452 | break; |
24453 | case Arg::Tmp: |
24454 | switch (Arg::Addr) { |
24455 | case Arg::Addr: |
24456 | case Arg::Stack: |
24457 | case Arg::CallArg: |
24458 | #if CPU(X86) || CPU(X86_64) |
24459 | OPGEN_RETURN(true); |
24460 | #endif |
24461 | break; |
24462 | break; |
24463 | case Arg::Index: |
24464 | break; |
24465 | default: |
24466 | break; |
24467 | } |
24468 | break; |
24469 | default: |
24470 | break; |
24471 | } |
24472 | break; |
24473 | default: |
24474 | break; |
24475 | } |
24476 | break; |
24477 | case Opcode::AtomicXor32: |
24478 | switch (argIndex) { |
24479 | case 0: |
24480 | OPGEN_RETURN(false); |
24481 | break; |
24482 | case 1: |
24483 | switch (args[0].kind()) { |
24484 | case Arg::Imm: |
24485 | switch (Arg::Addr) { |
24486 | case Arg::Addr: |
24487 | case Arg::Stack: |
24488 | case Arg::CallArg: |
24489 | #if CPU(X86) || CPU(X86_64) |
24490 | OPGEN_RETURN(true); |
24491 | #endif |
24492 | break; |
24493 | break; |
24494 | case Arg::Index: |
24495 | break; |
24496 | default: |
24497 | break; |
24498 | } |
24499 | break; |
24500 | case Arg::Tmp: |
24501 | switch (Arg::Addr) { |
24502 | case Arg::Addr: |
24503 | case Arg::Stack: |
24504 | case Arg::CallArg: |
24505 | #if CPU(X86) || CPU(X86_64) |
24506 | OPGEN_RETURN(true); |
24507 | #endif |
24508 | break; |
24509 | break; |
24510 | case Arg::Index: |
24511 | break; |
24512 | default: |
24513 | break; |
24514 | } |
24515 | break; |
24516 | default: |
24517 | break; |
24518 | } |
24519 | break; |
24520 | default: |
24521 | break; |
24522 | } |
24523 | break; |
24524 | case Opcode::AtomicXor64: |
24525 | switch (argIndex) { |
24526 | case 0: |
24527 | OPGEN_RETURN(false); |
24528 | break; |
24529 | case 1: |
24530 | switch (args[0].kind()) { |
24531 | case Arg::Imm: |
24532 | switch (Arg::Addr) { |
24533 | case Arg::Addr: |
24534 | case Arg::Stack: |
24535 | case Arg::CallArg: |
24536 | #if CPU(X86_64) |
24537 | OPGEN_RETURN(true); |
24538 | #endif |
24539 | break; |
24540 | break; |
24541 | case Arg::Index: |
24542 | break; |
24543 | default: |
24544 | break; |
24545 | } |
24546 | break; |
24547 | case Arg::Tmp: |
24548 | switch (Arg::Addr) { |
24549 | case Arg::Addr: |
24550 | case Arg::Stack: |
24551 | case Arg::CallArg: |
24552 | #if CPU(X86_64) |
24553 | OPGEN_RETURN(true); |
24554 | #endif |
24555 | break; |
24556 | break; |
24557 | case Arg::Index: |
24558 | break; |
24559 | default: |
24560 | break; |
24561 | } |
24562 | break; |
24563 | default: |
24564 | break; |
24565 | } |
24566 | break; |
24567 | default: |
24568 | break; |
24569 | } |
24570 | break; |
24571 | case Opcode::AtomicNeg8: |
24572 | switch (argIndex) { |
24573 | case 0: |
24574 | switch (Arg::Addr) { |
24575 | case Arg::Addr: |
24576 | case Arg::Stack: |
24577 | case Arg::CallArg: |
24578 | #if CPU(X86) || CPU(X86_64) |
24579 | OPGEN_RETURN(true); |
24580 | #endif |
24581 | break; |
24582 | break; |
24583 | case Arg::Index: |
24584 | break; |
24585 | default: |
24586 | break; |
24587 | } |
24588 | break; |
24589 | default: |
24590 | break; |
24591 | } |
24592 | break; |
24593 | case Opcode::AtomicNeg16: |
24594 | switch (argIndex) { |
24595 | case 0: |
24596 | switch (Arg::Addr) { |
24597 | case Arg::Addr: |
24598 | case Arg::Stack: |
24599 | case Arg::CallArg: |
24600 | #if CPU(X86) || CPU(X86_64) |
24601 | OPGEN_RETURN(true); |
24602 | #endif |
24603 | break; |
24604 | break; |
24605 | case Arg::Index: |
24606 | break; |
24607 | default: |
24608 | break; |
24609 | } |
24610 | break; |
24611 | default: |
24612 | break; |
24613 | } |
24614 | break; |
24615 | case Opcode::AtomicNeg32: |
24616 | switch (argIndex) { |
24617 | case 0: |
24618 | switch (Arg::Addr) { |
24619 | case Arg::Addr: |
24620 | case Arg::Stack: |
24621 | case Arg::CallArg: |
24622 | #if CPU(X86) || CPU(X86_64) |
24623 | OPGEN_RETURN(true); |
24624 | #endif |
24625 | break; |
24626 | break; |
24627 | case Arg::Index: |
24628 | break; |
24629 | default: |
24630 | break; |
24631 | } |
24632 | break; |
24633 | default: |
24634 | break; |
24635 | } |
24636 | break; |
24637 | case Opcode::AtomicNeg64: |
24638 | switch (argIndex) { |
24639 | case 0: |
24640 | switch (Arg::Addr) { |
24641 | case Arg::Addr: |
24642 | case Arg::Stack: |
24643 | case Arg::CallArg: |
24644 | #if CPU(X86_64) |
24645 | OPGEN_RETURN(true); |
24646 | #endif |
24647 | break; |
24648 | break; |
24649 | case Arg::Index: |
24650 | break; |
24651 | default: |
24652 | break; |
24653 | } |
24654 | break; |
24655 | default: |
24656 | break; |
24657 | } |
24658 | break; |
24659 | case Opcode::AtomicNot8: |
24660 | switch (argIndex) { |
24661 | case 0: |
24662 | switch (Arg::Addr) { |
24663 | case Arg::Addr: |
24664 | case Arg::Stack: |
24665 | case Arg::CallArg: |
24666 | #if CPU(X86) || CPU(X86_64) |
24667 | OPGEN_RETURN(true); |
24668 | #endif |
24669 | break; |
24670 | break; |
24671 | case Arg::Index: |
24672 | break; |
24673 | default: |
24674 | break; |
24675 | } |
24676 | break; |
24677 | default: |
24678 | break; |
24679 | } |
24680 | break; |
24681 | case Opcode::AtomicNot16: |
24682 | switch (argIndex) { |
24683 | case 0: |
24684 | switch (Arg::Addr) { |
24685 | case Arg::Addr: |
24686 | case Arg::Stack: |
24687 | case Arg::CallArg: |
24688 | #if CPU(X86) || CPU(X86_64) |
24689 | OPGEN_RETURN(true); |
24690 | #endif |
24691 | break; |
24692 | break; |
24693 | case Arg::Index: |
24694 | break; |
24695 | default: |
24696 | break; |
24697 | } |
24698 | break; |
24699 | default: |
24700 | break; |
24701 | } |
24702 | break; |
24703 | case Opcode::AtomicNot32: |
24704 | switch (argIndex) { |
24705 | case 0: |
24706 | switch (Arg::Addr) { |
24707 | case Arg::Addr: |
24708 | case Arg::Stack: |
24709 | case Arg::CallArg: |
24710 | #if CPU(X86) || CPU(X86_64) |
24711 | OPGEN_RETURN(true); |
24712 | #endif |
24713 | break; |
24714 | break; |
24715 | case Arg::Index: |
24716 | break; |
24717 | default: |
24718 | break; |
24719 | } |
24720 | break; |
24721 | default: |
24722 | break; |
24723 | } |
24724 | break; |
24725 | case Opcode::AtomicNot64: |
24726 | switch (argIndex) { |
24727 | case 0: |
24728 | switch (Arg::Addr) { |
24729 | case Arg::Addr: |
24730 | case Arg::Stack: |
24731 | case Arg::CallArg: |
24732 | #if CPU(X86_64) |
24733 | OPGEN_RETURN(true); |
24734 | #endif |
24735 | break; |
24736 | break; |
24737 | case Arg::Index: |
24738 | break; |
24739 | default: |
24740 | break; |
24741 | } |
24742 | break; |
24743 | default: |
24744 | break; |
24745 | } |
24746 | break; |
24747 | case Opcode::AtomicXchgAdd8: |
24748 | switch (argIndex) { |
24749 | case 0: |
24750 | OPGEN_RETURN(false); |
24751 | break; |
24752 | case 1: |
24753 | switch (args[0].kind()) { |
24754 | case Arg::Tmp: |
24755 | switch (Arg::Addr) { |
24756 | case Arg::Addr: |
24757 | case Arg::Stack: |
24758 | case Arg::CallArg: |
24759 | #if CPU(X86) || CPU(X86_64) |
24760 | OPGEN_RETURN(true); |
24761 | #endif |
24762 | break; |
24763 | break; |
24764 | case Arg::Index: |
24765 | break; |
24766 | default: |
24767 | break; |
24768 | } |
24769 | break; |
24770 | default: |
24771 | break; |
24772 | } |
24773 | break; |
24774 | default: |
24775 | break; |
24776 | } |
24777 | break; |
24778 | case Opcode::AtomicXchgAdd16: |
24779 | switch (argIndex) { |
24780 | case 0: |
24781 | OPGEN_RETURN(false); |
24782 | break; |
24783 | case 1: |
24784 | switch (args[0].kind()) { |
24785 | case Arg::Tmp: |
24786 | switch (Arg::Addr) { |
24787 | case Arg::Addr: |
24788 | case Arg::Stack: |
24789 | case Arg::CallArg: |
24790 | #if CPU(X86) || CPU(X86_64) |
24791 | OPGEN_RETURN(true); |
24792 | #endif |
24793 | break; |
24794 | break; |
24795 | case Arg::Index: |
24796 | break; |
24797 | default: |
24798 | break; |
24799 | } |
24800 | break; |
24801 | default: |
24802 | break; |
24803 | } |
24804 | break; |
24805 | default: |
24806 | break; |
24807 | } |
24808 | break; |
24809 | case Opcode::AtomicXchgAdd32: |
24810 | switch (argIndex) { |
24811 | case 0: |
24812 | OPGEN_RETURN(false); |
24813 | break; |
24814 | case 1: |
24815 | switch (args[0].kind()) { |
24816 | case Arg::Tmp: |
24817 | switch (Arg::Addr) { |
24818 | case Arg::Addr: |
24819 | case Arg::Stack: |
24820 | case Arg::CallArg: |
24821 | #if CPU(X86) || CPU(X86_64) |
24822 | OPGEN_RETURN(true); |
24823 | #endif |
24824 | break; |
24825 | break; |
24826 | case Arg::Index: |
24827 | break; |
24828 | default: |
24829 | break; |
24830 | } |
24831 | break; |
24832 | default: |
24833 | break; |
24834 | } |
24835 | break; |
24836 | default: |
24837 | break; |
24838 | } |
24839 | break; |
24840 | case Opcode::AtomicXchgAdd64: |
24841 | switch (argIndex) { |
24842 | case 0: |
24843 | OPGEN_RETURN(false); |
24844 | break; |
24845 | case 1: |
24846 | switch (args[0].kind()) { |
24847 | case Arg::Tmp: |
24848 | switch (Arg::Addr) { |
24849 | case Arg::Addr: |
24850 | case Arg::Stack: |
24851 | case Arg::CallArg: |
24852 | #if CPU(X86_64) |
24853 | OPGEN_RETURN(true); |
24854 | #endif |
24855 | break; |
24856 | break; |
24857 | case Arg::Index: |
24858 | break; |
24859 | default: |
24860 | break; |
24861 | } |
24862 | break; |
24863 | default: |
24864 | break; |
24865 | } |
24866 | break; |
24867 | default: |
24868 | break; |
24869 | } |
24870 | break; |
24871 | case Opcode::AtomicXchg8: |
24872 | switch (argIndex) { |
24873 | case 0: |
24874 | OPGEN_RETURN(false); |
24875 | break; |
24876 | case 1: |
24877 | switch (args[0].kind()) { |
24878 | case Arg::Tmp: |
24879 | switch (Arg::Addr) { |
24880 | case Arg::Addr: |
24881 | case Arg::Stack: |
24882 | case Arg::CallArg: |
24883 | #if CPU(X86) || CPU(X86_64) |
24884 | OPGEN_RETURN(true); |
24885 | #endif |
24886 | break; |
24887 | break; |
24888 | case Arg::Index: |
24889 | break; |
24890 | default: |
24891 | break; |
24892 | } |
24893 | break; |
24894 | default: |
24895 | break; |
24896 | } |
24897 | break; |
24898 | default: |
24899 | break; |
24900 | } |
24901 | break; |
24902 | case Opcode::AtomicXchg16: |
24903 | switch (argIndex) { |
24904 | case 0: |
24905 | OPGEN_RETURN(false); |
24906 | break; |
24907 | case 1: |
24908 | switch (args[0].kind()) { |
24909 | case Arg::Tmp: |
24910 | switch (Arg::Addr) { |
24911 | case Arg::Addr: |
24912 | case Arg::Stack: |
24913 | case Arg::CallArg: |
24914 | #if CPU(X86) || CPU(X86_64) |
24915 | OPGEN_RETURN(true); |
24916 | #endif |
24917 | break; |
24918 | break; |
24919 | case Arg::Index: |
24920 | break; |
24921 | default: |
24922 | break; |
24923 | } |
24924 | break; |
24925 | default: |
24926 | break; |
24927 | } |
24928 | break; |
24929 | default: |
24930 | break; |
24931 | } |
24932 | break; |
24933 | case Opcode::AtomicXchg32: |
24934 | switch (argIndex) { |
24935 | case 0: |
24936 | OPGEN_RETURN(false); |
24937 | break; |
24938 | case 1: |
24939 | switch (args[0].kind()) { |
24940 | case Arg::Tmp: |
24941 | switch (Arg::Addr) { |
24942 | case Arg::Addr: |
24943 | case Arg::Stack: |
24944 | case Arg::CallArg: |
24945 | #if CPU(X86) || CPU(X86_64) |
24946 | OPGEN_RETURN(true); |
24947 | #endif |
24948 | break; |
24949 | break; |
24950 | case Arg::Index: |
24951 | break; |
24952 | default: |
24953 | break; |
24954 | } |
24955 | break; |
24956 | default: |
24957 | break; |
24958 | } |
24959 | break; |
24960 | default: |
24961 | break; |
24962 | } |
24963 | break; |
24964 | case Opcode::AtomicXchg64: |
24965 | switch (argIndex) { |
24966 | case 0: |
24967 | OPGEN_RETURN(false); |
24968 | break; |
24969 | case 1: |
24970 | switch (args[0].kind()) { |
24971 | case Arg::Tmp: |
24972 | switch (Arg::Addr) { |
24973 | case Arg::Addr: |
24974 | case Arg::Stack: |
24975 | case Arg::CallArg: |
24976 | #if CPU(X86_64) |
24977 | OPGEN_RETURN(true); |
24978 | #endif |
24979 | break; |
24980 | break; |
24981 | case Arg::Index: |
24982 | break; |
24983 | default: |
24984 | break; |
24985 | } |
24986 | break; |
24987 | default: |
24988 | break; |
24989 | } |
24990 | break; |
24991 | default: |
24992 | break; |
24993 | } |
24994 | break; |
24995 | case Opcode::LoadLink8: |
24996 | switch (argIndex) { |
24997 | case 0: |
24998 | OPGEN_RETURN(false); |
24999 | break; |
25000 | case 1: |
25001 | OPGEN_RETURN(false); |
25002 | break; |
25003 | default: |
25004 | break; |
25005 | } |
25006 | break; |
25007 | case Opcode::LoadLinkAcq8: |
25008 | switch (argIndex) { |
25009 | case 0: |
25010 | OPGEN_RETURN(false); |
25011 | break; |
25012 | case 1: |
25013 | OPGEN_RETURN(false); |
25014 | break; |
25015 | default: |
25016 | break; |
25017 | } |
25018 | break; |
25019 | case Opcode::StoreCond8: |
25020 | switch (argIndex) { |
25021 | case 0: |
25022 | OPGEN_RETURN(false); |
25023 | break; |
25024 | case 1: |
25025 | OPGEN_RETURN(false); |
25026 | break; |
25027 | case 2: |
25028 | OPGEN_RETURN(false); |
25029 | break; |
25030 | default: |
25031 | break; |
25032 | } |
25033 | break; |
25034 | case Opcode::StoreCondRel8: |
25035 | switch (argIndex) { |
25036 | case 0: |
25037 | OPGEN_RETURN(false); |
25038 | break; |
25039 | case 1: |
25040 | OPGEN_RETURN(false); |
25041 | break; |
25042 | case 2: |
25043 | OPGEN_RETURN(false); |
25044 | break; |
25045 | default: |
25046 | break; |
25047 | } |
25048 | break; |
25049 | case Opcode::LoadLink16: |
25050 | switch (argIndex) { |
25051 | case 0: |
25052 | OPGEN_RETURN(false); |
25053 | break; |
25054 | case 1: |
25055 | OPGEN_RETURN(false); |
25056 | break; |
25057 | default: |
25058 | break; |
25059 | } |
25060 | break; |
25061 | case Opcode::LoadLinkAcq16: |
25062 | switch (argIndex) { |
25063 | case 0: |
25064 | OPGEN_RETURN(false); |
25065 | break; |
25066 | case 1: |
25067 | OPGEN_RETURN(false); |
25068 | break; |
25069 | default: |
25070 | break; |
25071 | } |
25072 | break; |
25073 | case Opcode::StoreCond16: |
25074 | switch (argIndex) { |
25075 | case 0: |
25076 | OPGEN_RETURN(false); |
25077 | break; |
25078 | case 1: |
25079 | OPGEN_RETURN(false); |
25080 | break; |
25081 | case 2: |
25082 | OPGEN_RETURN(false); |
25083 | break; |
25084 | default: |
25085 | break; |
25086 | } |
25087 | break; |
25088 | case Opcode::StoreCondRel16: |
25089 | switch (argIndex) { |
25090 | case 0: |
25091 | OPGEN_RETURN(false); |
25092 | break; |
25093 | case 1: |
25094 | OPGEN_RETURN(false); |
25095 | break; |
25096 | case 2: |
25097 | OPGEN_RETURN(false); |
25098 | break; |
25099 | default: |
25100 | break; |
25101 | } |
25102 | break; |
25103 | case Opcode::LoadLink32: |
25104 | switch (argIndex) { |
25105 | case 0: |
25106 | OPGEN_RETURN(false); |
25107 | break; |
25108 | case 1: |
25109 | OPGEN_RETURN(false); |
25110 | break; |
25111 | default: |
25112 | break; |
25113 | } |
25114 | break; |
25115 | case Opcode::LoadLinkAcq32: |
25116 | switch (argIndex) { |
25117 | case 0: |
25118 | OPGEN_RETURN(false); |
25119 | break; |
25120 | case 1: |
25121 | OPGEN_RETURN(false); |
25122 | break; |
25123 | default: |
25124 | break; |
25125 | } |
25126 | break; |
25127 | case Opcode::StoreCond32: |
25128 | switch (argIndex) { |
25129 | case 0: |
25130 | OPGEN_RETURN(false); |
25131 | break; |
25132 | case 1: |
25133 | OPGEN_RETURN(false); |
25134 | break; |
25135 | case 2: |
25136 | OPGEN_RETURN(false); |
25137 | break; |
25138 | default: |
25139 | break; |
25140 | } |
25141 | break; |
25142 | case Opcode::StoreCondRel32: |
25143 | switch (argIndex) { |
25144 | case 0: |
25145 | OPGEN_RETURN(false); |
25146 | break; |
25147 | case 1: |
25148 | OPGEN_RETURN(false); |
25149 | break; |
25150 | case 2: |
25151 | OPGEN_RETURN(false); |
25152 | break; |
25153 | default: |
25154 | break; |
25155 | } |
25156 | break; |
25157 | case Opcode::LoadLink64: |
25158 | switch (argIndex) { |
25159 | case 0: |
25160 | OPGEN_RETURN(false); |
25161 | break; |
25162 | case 1: |
25163 | OPGEN_RETURN(false); |
25164 | break; |
25165 | default: |
25166 | break; |
25167 | } |
25168 | break; |
25169 | case Opcode::LoadLinkAcq64: |
25170 | switch (argIndex) { |
25171 | case 0: |
25172 | OPGEN_RETURN(false); |
25173 | break; |
25174 | case 1: |
25175 | OPGEN_RETURN(false); |
25176 | break; |
25177 | default: |
25178 | break; |
25179 | } |
25180 | break; |
25181 | case Opcode::StoreCond64: |
25182 | switch (argIndex) { |
25183 | case 0: |
25184 | OPGEN_RETURN(false); |
25185 | break; |
25186 | case 1: |
25187 | OPGEN_RETURN(false); |
25188 | break; |
25189 | case 2: |
25190 | OPGEN_RETURN(false); |
25191 | break; |
25192 | default: |
25193 | break; |
25194 | } |
25195 | break; |
25196 | case Opcode::StoreCondRel64: |
25197 | switch (argIndex) { |
25198 | case 0: |
25199 | OPGEN_RETURN(false); |
25200 | break; |
25201 | case 1: |
25202 | OPGEN_RETURN(false); |
25203 | break; |
25204 | case 2: |
25205 | OPGEN_RETURN(false); |
25206 | break; |
25207 | default: |
25208 | break; |
25209 | } |
25210 | break; |
25211 | case Opcode::Depend32: |
25212 | switch (argIndex) { |
25213 | case 0: |
25214 | OPGEN_RETURN(false); |
25215 | break; |
25216 | case 1: |
25217 | OPGEN_RETURN(false); |
25218 | break; |
25219 | default: |
25220 | break; |
25221 | } |
25222 | break; |
25223 | case Opcode::Depend64: |
25224 | switch (argIndex) { |
25225 | case 0: |
25226 | OPGEN_RETURN(false); |
25227 | break; |
25228 | case 1: |
25229 | OPGEN_RETURN(false); |
25230 | break; |
25231 | default: |
25232 | break; |
25233 | } |
25234 | break; |
25235 | case Opcode::Compare32: |
25236 | switch (argIndex) { |
25237 | case 0: |
25238 | OPGEN_RETURN(false); |
25239 | break; |
25240 | case 1: |
25241 | OPGEN_RETURN(false); |
25242 | break; |
25243 | case 2: |
25244 | OPGEN_RETURN(false); |
25245 | break; |
25246 | case 3: |
25247 | OPGEN_RETURN(false); |
25248 | break; |
25249 | default: |
25250 | break; |
25251 | } |
25252 | break; |
25253 | case Opcode::Compare64: |
25254 | switch (argIndex) { |
25255 | case 0: |
25256 | OPGEN_RETURN(false); |
25257 | break; |
25258 | case 1: |
25259 | OPGEN_RETURN(false); |
25260 | break; |
25261 | case 2: |
25262 | OPGEN_RETURN(false); |
25263 | break; |
25264 | case 3: |
25265 | OPGEN_RETURN(false); |
25266 | break; |
25267 | default: |
25268 | break; |
25269 | } |
25270 | break; |
25271 | case Opcode::Test32: |
25272 | switch (argIndex) { |
25273 | case 0: |
25274 | OPGEN_RETURN(false); |
25275 | break; |
25276 | case 1: |
25277 | switch (args[0].kind()) { |
25278 | case Arg::ResCond: |
25279 | switch (Arg::Addr) { |
25280 | case Arg::Addr: |
25281 | case Arg::Stack: |
25282 | case Arg::CallArg: |
25283 | switch (args[2].kind()) { |
25284 | case Arg::Imm: |
25285 | switch (args[3].kind()) { |
25286 | case Arg::Tmp: |
25287 | #if CPU(X86) || CPU(X86_64) |
25288 | OPGEN_RETURN(true); |
25289 | #endif |
25290 | break; |
25291 | break; |
25292 | default: |
25293 | break; |
25294 | } |
25295 | break; |
25296 | default: |
25297 | break; |
25298 | } |
25299 | break; |
25300 | case Arg::Tmp: |
25301 | break; |
25302 | default: |
25303 | break; |
25304 | } |
25305 | break; |
25306 | default: |
25307 | break; |
25308 | } |
25309 | break; |
25310 | case 2: |
25311 | OPGEN_RETURN(false); |
25312 | break; |
25313 | case 3: |
25314 | OPGEN_RETURN(false); |
25315 | break; |
25316 | default: |
25317 | break; |
25318 | } |
25319 | break; |
25320 | case Opcode::Test64: |
25321 | switch (argIndex) { |
25322 | case 0: |
25323 | OPGEN_RETURN(false); |
25324 | break; |
25325 | case 1: |
25326 | OPGEN_RETURN(false); |
25327 | break; |
25328 | case 2: |
25329 | OPGEN_RETURN(false); |
25330 | break; |
25331 | case 3: |
25332 | OPGEN_RETURN(false); |
25333 | break; |
25334 | default: |
25335 | break; |
25336 | } |
25337 | break; |
25338 | case Opcode::CompareDouble: |
25339 | switch (argIndex) { |
25340 | case 0: |
25341 | OPGEN_RETURN(false); |
25342 | break; |
25343 | case 1: |
25344 | OPGEN_RETURN(false); |
25345 | break; |
25346 | case 2: |
25347 | OPGEN_RETURN(false); |
25348 | break; |
25349 | case 3: |
25350 | OPGEN_RETURN(false); |
25351 | break; |
25352 | default: |
25353 | break; |
25354 | } |
25355 | break; |
25356 | case Opcode::CompareFloat: |
25357 | switch (argIndex) { |
25358 | case 0: |
25359 | OPGEN_RETURN(false); |
25360 | break; |
25361 | case 1: |
25362 | OPGEN_RETURN(false); |
25363 | break; |
25364 | case 2: |
25365 | OPGEN_RETURN(false); |
25366 | break; |
25367 | case 3: |
25368 | OPGEN_RETURN(false); |
25369 | break; |
25370 | default: |
25371 | break; |
25372 | } |
25373 | break; |
25374 | case Opcode::Branch8: |
25375 | switch (argIndex) { |
25376 | case 0: |
25377 | OPGEN_RETURN(false); |
25378 | break; |
25379 | case 1: |
25380 | switch (args[0].kind()) { |
25381 | case Arg::RelCond: |
25382 | switch (Arg::Addr) { |
25383 | case Arg::Addr: |
25384 | case Arg::Stack: |
25385 | case Arg::CallArg: |
25386 | switch (args[2].kind()) { |
25387 | case Arg::Imm: |
25388 | #if CPU(X86) || CPU(X86_64) |
25389 | OPGEN_RETURN(true); |
25390 | #endif |
25391 | break; |
25392 | break; |
25393 | default: |
25394 | break; |
25395 | } |
25396 | break; |
25397 | case Arg::Index: |
25398 | break; |
25399 | default: |
25400 | break; |
25401 | } |
25402 | break; |
25403 | default: |
25404 | break; |
25405 | } |
25406 | break; |
25407 | case 2: |
25408 | OPGEN_RETURN(false); |
25409 | break; |
25410 | default: |
25411 | break; |
25412 | } |
25413 | break; |
25414 | case Opcode::Branch32: |
25415 | switch (argIndex) { |
25416 | case 0: |
25417 | OPGEN_RETURN(false); |
25418 | break; |
25419 | case 1: |
25420 | switch (args[0].kind()) { |
25421 | case Arg::RelCond: |
25422 | switch (Arg::Addr) { |
25423 | case Arg::Addr: |
25424 | case Arg::Stack: |
25425 | case Arg::CallArg: |
25426 | switch (args[2].kind()) { |
25427 | case Arg::Imm: |
25428 | #if CPU(X86) || CPU(X86_64) |
25429 | OPGEN_RETURN(true); |
25430 | #endif |
25431 | break; |
25432 | break; |
25433 | case Arg::Tmp: |
25434 | #if CPU(X86) || CPU(X86_64) |
25435 | OPGEN_RETURN(true); |
25436 | #endif |
25437 | break; |
25438 | break; |
25439 | default: |
25440 | break; |
25441 | } |
25442 | break; |
25443 | case Arg::Tmp: |
25444 | break; |
25445 | case Arg::Index: |
25446 | break; |
25447 | default: |
25448 | break; |
25449 | } |
25450 | break; |
25451 | default: |
25452 | break; |
25453 | } |
25454 | break; |
25455 | case 2: |
25456 | switch (args[0].kind()) { |
25457 | case Arg::RelCond: |
25458 | switch (args[1].kind()) { |
25459 | case Arg::Addr: |
25460 | case Arg::Stack: |
25461 | case Arg::CallArg: |
25462 | break; |
25463 | case Arg::Tmp: |
25464 | switch (Arg::Addr) { |
25465 | case Arg::Tmp: |
25466 | break; |
25467 | case Arg::Imm: |
25468 | break; |
25469 | case Arg::Addr: |
25470 | case Arg::Stack: |
25471 | case Arg::CallArg: |
25472 | #if CPU(X86) || CPU(X86_64) |
25473 | OPGEN_RETURN(true); |
25474 | #endif |
25475 | break; |
25476 | break; |
25477 | default: |
25478 | break; |
25479 | } |
25480 | break; |
25481 | case Arg::Index: |
25482 | break; |
25483 | default: |
25484 | break; |
25485 | } |
25486 | break; |
25487 | default: |
25488 | break; |
25489 | } |
25490 | break; |
25491 | default: |
25492 | break; |
25493 | } |
25494 | break; |
25495 | case Opcode::Branch64: |
25496 | switch (argIndex) { |
25497 | case 0: |
25498 | OPGEN_RETURN(false); |
25499 | break; |
25500 | case 1: |
25501 | switch (args[0].kind()) { |
25502 | case Arg::RelCond: |
25503 | switch (Arg::Addr) { |
25504 | case Arg::Tmp: |
25505 | break; |
25506 | case Arg::Addr: |
25507 | case Arg::Stack: |
25508 | case Arg::CallArg: |
25509 | switch (args[2].kind()) { |
25510 | case Arg::Tmp: |
25511 | #if CPU(X86_64) |
25512 | OPGEN_RETURN(true); |
25513 | #endif |
25514 | break; |
25515 | break; |
25516 | case Arg::Imm: |
25517 | #if CPU(X86_64) |
25518 | OPGEN_RETURN(true); |
25519 | #endif |
25520 | break; |
25521 | break; |
25522 | default: |
25523 | break; |
25524 | } |
25525 | break; |
25526 | case Arg::Index: |
25527 | break; |
25528 | default: |
25529 | break; |
25530 | } |
25531 | break; |
25532 | default: |
25533 | break; |
25534 | } |
25535 | break; |
25536 | case 2: |
25537 | switch (args[0].kind()) { |
25538 | case Arg::RelCond: |
25539 | switch (args[1].kind()) { |
25540 | case Arg::Tmp: |
25541 | switch (Arg::Addr) { |
25542 | case Arg::Tmp: |
25543 | break; |
25544 | case Arg::Imm: |
25545 | break; |
25546 | case Arg::Addr: |
25547 | case Arg::Stack: |
25548 | case Arg::CallArg: |
25549 | #if CPU(X86_64) |
25550 | OPGEN_RETURN(true); |
25551 | #endif |
25552 | break; |
25553 | break; |
25554 | default: |
25555 | break; |
25556 | } |
25557 | break; |
25558 | case Arg::Addr: |
25559 | case Arg::Stack: |
25560 | case Arg::CallArg: |
25561 | break; |
25562 | case Arg::Index: |
25563 | break; |
25564 | default: |
25565 | break; |
25566 | } |
25567 | break; |
25568 | default: |
25569 | break; |
25570 | } |
25571 | break; |
25572 | default: |
25573 | break; |
25574 | } |
25575 | break; |
25576 | case Opcode::BranchTest8: |
25577 | switch (argIndex) { |
25578 | case 0: |
25579 | OPGEN_RETURN(false); |
25580 | break; |
25581 | case 1: |
25582 | switch (args[0].kind()) { |
25583 | case Arg::ResCond: |
25584 | switch (Arg::Addr) { |
25585 | case Arg::Addr: |
25586 | case Arg::Stack: |
25587 | case Arg::CallArg: |
25588 | switch (args[2].kind()) { |
25589 | case Arg::BitImm: |
25590 | #if CPU(X86) || CPU(X86_64) |
25591 | OPGEN_RETURN(true); |
25592 | #endif |
25593 | break; |
25594 | break; |
25595 | default: |
25596 | break; |
25597 | } |
25598 | break; |
25599 | case Arg::Index: |
25600 | break; |
25601 | default: |
25602 | break; |
25603 | } |
25604 | break; |
25605 | default: |
25606 | break; |
25607 | } |
25608 | break; |
25609 | case 2: |
25610 | OPGEN_RETURN(false); |
25611 | break; |
25612 | default: |
25613 | break; |
25614 | } |
25615 | break; |
25616 | case Opcode::BranchTest32: |
25617 | switch (argIndex) { |
25618 | case 0: |
25619 | OPGEN_RETURN(false); |
25620 | break; |
25621 | case 1: |
25622 | switch (args[0].kind()) { |
25623 | case Arg::ResCond: |
25624 | switch (Arg::Addr) { |
25625 | case Arg::Tmp: |
25626 | break; |
25627 | case Arg::Addr: |
25628 | case Arg::Stack: |
25629 | case Arg::CallArg: |
25630 | switch (args[2].kind()) { |
25631 | case Arg::BitImm: |
25632 | #if CPU(X86) || CPU(X86_64) |
25633 | OPGEN_RETURN(true); |
25634 | #endif |
25635 | break; |
25636 | break; |
25637 | default: |
25638 | break; |
25639 | } |
25640 | break; |
25641 | case Arg::Index: |
25642 | break; |
25643 | default: |
25644 | break; |
25645 | } |
25646 | break; |
25647 | default: |
25648 | break; |
25649 | } |
25650 | break; |
25651 | case 2: |
25652 | OPGEN_RETURN(false); |
25653 | break; |
25654 | default: |
25655 | break; |
25656 | } |
25657 | break; |
25658 | case Opcode::BranchTest64: |
25659 | switch (argIndex) { |
25660 | case 0: |
25661 | OPGEN_RETURN(false); |
25662 | break; |
25663 | case 1: |
25664 | switch (args[0].kind()) { |
25665 | case Arg::ResCond: |
25666 | switch (Arg::Addr) { |
25667 | case Arg::Tmp: |
25668 | break; |
25669 | case Arg::Addr: |
25670 | case Arg::Stack: |
25671 | case Arg::CallArg: |
25672 | switch (args[2].kind()) { |
25673 | case Arg::BitImm: |
25674 | #if CPU(X86_64) |
25675 | OPGEN_RETURN(true); |
25676 | #endif |
25677 | break; |
25678 | break; |
25679 | case Arg::Tmp: |
25680 | #if CPU(X86_64) |
25681 | OPGEN_RETURN(true); |
25682 | #endif |
25683 | break; |
25684 | break; |
25685 | default: |
25686 | break; |
25687 | } |
25688 | break; |
25689 | case Arg::Index: |
25690 | break; |
25691 | default: |
25692 | break; |
25693 | } |
25694 | break; |
25695 | default: |
25696 | break; |
25697 | } |
25698 | break; |
25699 | case 2: |
25700 | OPGEN_RETURN(false); |
25701 | break; |
25702 | default: |
25703 | break; |
25704 | } |
25705 | break; |
25706 | case Opcode::BranchTestBit64: |
25707 | switch (argIndex) { |
25708 | case 0: |
25709 | OPGEN_RETURN(false); |
25710 | break; |
25711 | case 1: |
25712 | switch (args[0].kind()) { |
25713 | case Arg::ResCond: |
25714 | switch (Arg::Addr) { |
25715 | case Arg::Tmp: |
25716 | break; |
25717 | case Arg::Addr: |
25718 | case Arg::Stack: |
25719 | case Arg::CallArg: |
25720 | switch (args[2].kind()) { |
25721 | case Arg::Imm: |
25722 | #if CPU(X86_64) |
25723 | OPGEN_RETURN(true); |
25724 | #endif |
25725 | break; |
25726 | break; |
25727 | default: |
25728 | break; |
25729 | } |
25730 | break; |
25731 | default: |
25732 | break; |
25733 | } |
25734 | break; |
25735 | default: |
25736 | break; |
25737 | } |
25738 | break; |
25739 | case 2: |
25740 | OPGEN_RETURN(false); |
25741 | break; |
25742 | default: |
25743 | break; |
25744 | } |
25745 | break; |
25746 | case Opcode::BranchTestBit32: |
25747 | switch (argIndex) { |
25748 | case 0: |
25749 | OPGEN_RETURN(false); |
25750 | break; |
25751 | case 1: |
25752 | switch (args[0].kind()) { |
25753 | case Arg::ResCond: |
25754 | switch (Arg::Addr) { |
25755 | case Arg::Tmp: |
25756 | break; |
25757 | case Arg::Addr: |
25758 | case Arg::Stack: |
25759 | case Arg::CallArg: |
25760 | switch (args[2].kind()) { |
25761 | case Arg::Imm: |
25762 | #if CPU(X86) || CPU(X86_64) |
25763 | OPGEN_RETURN(true); |
25764 | #endif |
25765 | break; |
25766 | break; |
25767 | default: |
25768 | break; |
25769 | } |
25770 | break; |
25771 | default: |
25772 | break; |
25773 | } |
25774 | break; |
25775 | default: |
25776 | break; |
25777 | } |
25778 | break; |
25779 | case 2: |
25780 | OPGEN_RETURN(false); |
25781 | break; |
25782 | default: |
25783 | break; |
25784 | } |
25785 | break; |
25786 | case Opcode::BranchDouble: |
25787 | switch (argIndex) { |
25788 | case 0: |
25789 | OPGEN_RETURN(false); |
25790 | break; |
25791 | case 1: |
25792 | OPGEN_RETURN(false); |
25793 | break; |
25794 | case 2: |
25795 | OPGEN_RETURN(false); |
25796 | break; |
25797 | default: |
25798 | break; |
25799 | } |
25800 | break; |
25801 | case Opcode::BranchFloat: |
25802 | switch (argIndex) { |
25803 | case 0: |
25804 | OPGEN_RETURN(false); |
25805 | break; |
25806 | case 1: |
25807 | OPGEN_RETURN(false); |
25808 | break; |
25809 | case 2: |
25810 | OPGEN_RETURN(false); |
25811 | break; |
25812 | default: |
25813 | break; |
25814 | } |
25815 | break; |
25816 | case Opcode::BranchAdd32: |
25817 | switch (argIndex) { |
25818 | case 0: |
25819 | OPGEN_RETURN(false); |
25820 | break; |
25821 | case 1: |
25822 | switch (args.size()) { |
25823 | case 4: |
25824 | switch (args[0].kind()) { |
25825 | case Arg::ResCond: |
25826 | switch (Arg::Addr) { |
25827 | case Arg::Tmp: |
25828 | break; |
25829 | case Arg::Addr: |
25830 | case Arg::Stack: |
25831 | case Arg::CallArg: |
25832 | switch (args[2].kind()) { |
25833 | case Arg::Tmp: |
25834 | switch (args[3].kind()) { |
25835 | case Arg::Tmp: |
25836 | #if CPU(X86) || CPU(X86_64) |
25837 | OPGEN_RETURN(true); |
25838 | #endif |
25839 | break; |
25840 | break; |
25841 | default: |
25842 | break; |
25843 | } |
25844 | break; |
25845 | default: |
25846 | break; |
25847 | } |
25848 | break; |
25849 | default: |
25850 | break; |
25851 | } |
25852 | break; |
25853 | default: |
25854 | break; |
25855 | } |
25856 | break; |
25857 | case 3: |
25858 | switch (args[0].kind()) { |
25859 | case Arg::ResCond: |
25860 | switch (Arg::Addr) { |
25861 | case Arg::Tmp: |
25862 | break; |
25863 | case Arg::Imm: |
25864 | break; |
25865 | case Arg::Addr: |
25866 | case Arg::Stack: |
25867 | case Arg::CallArg: |
25868 | switch (args[2].kind()) { |
25869 | case Arg::Tmp: |
25870 | #if CPU(X86) || CPU(X86_64) |
25871 | OPGEN_RETURN(true); |
25872 | #endif |
25873 | break; |
25874 | break; |
25875 | default: |
25876 | break; |
25877 | } |
25878 | break; |
25879 | default: |
25880 | break; |
25881 | } |
25882 | break; |
25883 | default: |
25884 | break; |
25885 | } |
25886 | break; |
25887 | default: |
25888 | break; |
25889 | } |
25890 | break; |
25891 | case 2: |
25892 | switch (args.size()) { |
25893 | case 4: |
25894 | switch (args[0].kind()) { |
25895 | case Arg::ResCond: |
25896 | switch (args[1].kind()) { |
25897 | case Arg::Tmp: |
25898 | switch (Arg::Addr) { |
25899 | case Arg::Tmp: |
25900 | break; |
25901 | case Arg::Addr: |
25902 | case Arg::Stack: |
25903 | case Arg::CallArg: |
25904 | switch (args[3].kind()) { |
25905 | case Arg::Tmp: |
25906 | #if CPU(X86) || CPU(X86_64) |
25907 | OPGEN_RETURN(true); |
25908 | #endif |
25909 | break; |
25910 | break; |
25911 | default: |
25912 | break; |
25913 | } |
25914 | break; |
25915 | default: |
25916 | break; |
25917 | } |
25918 | break; |
25919 | case Arg::Addr: |
25920 | case Arg::Stack: |
25921 | case Arg::CallArg: |
25922 | break; |
25923 | default: |
25924 | break; |
25925 | } |
25926 | break; |
25927 | default: |
25928 | break; |
25929 | } |
25930 | break; |
25931 | case 3: |
25932 | switch (args[0].kind()) { |
25933 | case Arg::ResCond: |
25934 | switch (args[1].kind()) { |
25935 | case Arg::Tmp: |
25936 | switch (Arg::Addr) { |
25937 | case Arg::Tmp: |
25938 | break; |
25939 | case Arg::Addr: |
25940 | case Arg::Stack: |
25941 | case Arg::CallArg: |
25942 | #if CPU(X86) || CPU(X86_64) |
25943 | OPGEN_RETURN(true); |
25944 | #endif |
25945 | break; |
25946 | break; |
25947 | default: |
25948 | break; |
25949 | } |
25950 | break; |
25951 | case Arg::Imm: |
25952 | switch (Arg::Addr) { |
25953 | case Arg::Tmp: |
25954 | break; |
25955 | case Arg::Addr: |
25956 | case Arg::Stack: |
25957 | case Arg::CallArg: |
25958 | #if CPU(X86) || CPU(X86_64) |
25959 | OPGEN_RETURN(true); |
25960 | #endif |
25961 | break; |
25962 | break; |
25963 | default: |
25964 | break; |
25965 | } |
25966 | break; |
25967 | case Arg::Addr: |
25968 | case Arg::Stack: |
25969 | case Arg::CallArg: |
25970 | break; |
25971 | default: |
25972 | break; |
25973 | } |
25974 | break; |
25975 | default: |
25976 | break; |
25977 | } |
25978 | break; |
25979 | default: |
25980 | break; |
25981 | } |
25982 | break; |
25983 | case 3: |
25984 | OPGEN_RETURN(false); |
25985 | break; |
25986 | default: |
25987 | break; |
25988 | } |
25989 | break; |
25990 | case Opcode::BranchAdd64: |
25991 | switch (argIndex) { |
25992 | case 0: |
25993 | OPGEN_RETURN(false); |
25994 | break; |
25995 | case 1: |
25996 | switch (args.size()) { |
25997 | case 4: |
25998 | switch (args[0].kind()) { |
25999 | case Arg::ResCond: |
26000 | switch (Arg::Addr) { |
26001 | case Arg::Tmp: |
26002 | break; |
26003 | case Arg::Addr: |
26004 | case Arg::Stack: |
26005 | case Arg::CallArg: |
26006 | switch (args[2].kind()) { |
26007 | case Arg::Tmp: |
26008 | switch (args[3].kind()) { |
26009 | case Arg::Tmp: |
26010 | #if CPU(X86) || CPU(X86_64) |
26011 | OPGEN_RETURN(true); |
26012 | #endif |
26013 | break; |
26014 | break; |
26015 | default: |
26016 | break; |
26017 | } |
26018 | break; |
26019 | default: |
26020 | break; |
26021 | } |
26022 | break; |
26023 | default: |
26024 | break; |
26025 | } |
26026 | break; |
26027 | default: |
26028 | break; |
26029 | } |
26030 | break; |
26031 | case 3: |
26032 | switch (args[0].kind()) { |
26033 | case Arg::ResCond: |
26034 | switch (Arg::Addr) { |
26035 | case Arg::Imm: |
26036 | break; |
26037 | case Arg::Tmp: |
26038 | break; |
26039 | case Arg::Addr: |
26040 | case Arg::Stack: |
26041 | case Arg::CallArg: |
26042 | switch (args[2].kind()) { |
26043 | case Arg::Tmp: |
26044 | #if CPU(X86_64) |
26045 | OPGEN_RETURN(true); |
26046 | #endif |
26047 | break; |
26048 | break; |
26049 | default: |
26050 | break; |
26051 | } |
26052 | break; |
26053 | default: |
26054 | break; |
26055 | } |
26056 | break; |
26057 | default: |
26058 | break; |
26059 | } |
26060 | break; |
26061 | default: |
26062 | break; |
26063 | } |
26064 | break; |
26065 | case 2: |
26066 | switch (args.size()) { |
26067 | case 4: |
26068 | switch (args[0].kind()) { |
26069 | case Arg::ResCond: |
26070 | switch (args[1].kind()) { |
26071 | case Arg::Tmp: |
26072 | switch (Arg::Addr) { |
26073 | case Arg::Tmp: |
26074 | break; |
26075 | case Arg::Addr: |
26076 | case Arg::Stack: |
26077 | case Arg::CallArg: |
26078 | switch (args[3].kind()) { |
26079 | case Arg::Tmp: |
26080 | #if CPU(X86) || CPU(X86_64) |
26081 | OPGEN_RETURN(true); |
26082 | #endif |
26083 | break; |
26084 | break; |
26085 | default: |
26086 | break; |
26087 | } |
26088 | break; |
26089 | default: |
26090 | break; |
26091 | } |
26092 | break; |
26093 | case Arg::Addr: |
26094 | case Arg::Stack: |
26095 | case Arg::CallArg: |
26096 | break; |
26097 | default: |
26098 | break; |
26099 | } |
26100 | break; |
26101 | default: |
26102 | break; |
26103 | } |
26104 | break; |
26105 | default: |
26106 | break; |
26107 | } |
26108 | break; |
26109 | case 3: |
26110 | OPGEN_RETURN(false); |
26111 | break; |
26112 | default: |
26113 | break; |
26114 | } |
26115 | break; |
26116 | case Opcode::BranchMul32: |
26117 | switch (argIndex) { |
26118 | case 0: |
26119 | OPGEN_RETURN(false); |
26120 | break; |
26121 | case 1: |
26122 | switch (args.size()) { |
26123 | case 3: |
26124 | switch (args[0].kind()) { |
26125 | case Arg::ResCond: |
26126 | switch (Arg::Addr) { |
26127 | case Arg::Tmp: |
26128 | break; |
26129 | case Arg::Addr: |
26130 | case Arg::Stack: |
26131 | case Arg::CallArg: |
26132 | switch (args[2].kind()) { |
26133 | case Arg::Tmp: |
26134 | #if CPU(X86) || CPU(X86_64) |
26135 | OPGEN_RETURN(true); |
26136 | #endif |
26137 | break; |
26138 | break; |
26139 | default: |
26140 | break; |
26141 | } |
26142 | break; |
26143 | default: |
26144 | break; |
26145 | } |
26146 | break; |
26147 | default: |
26148 | break; |
26149 | } |
26150 | break; |
26151 | default: |
26152 | break; |
26153 | } |
26154 | break; |
26155 | case 2: |
26156 | OPGEN_RETURN(false); |
26157 | break; |
26158 | case 3: |
26159 | OPGEN_RETURN(false); |
26160 | break; |
26161 | case 4: |
26162 | OPGEN_RETURN(false); |
26163 | break; |
26164 | case 5: |
26165 | OPGEN_RETURN(false); |
26166 | break; |
26167 | default: |
26168 | break; |
26169 | } |
26170 | break; |
26171 | case Opcode::BranchMul64: |
26172 | switch (argIndex) { |
26173 | case 0: |
26174 | OPGEN_RETURN(false); |
26175 | break; |
26176 | case 1: |
26177 | OPGEN_RETURN(false); |
26178 | break; |
26179 | case 2: |
26180 | OPGEN_RETURN(false); |
26181 | break; |
26182 | case 3: |
26183 | OPGEN_RETURN(false); |
26184 | break; |
26185 | case 4: |
26186 | OPGEN_RETURN(false); |
26187 | break; |
26188 | case 5: |
26189 | OPGEN_RETURN(false); |
26190 | break; |
26191 | default: |
26192 | break; |
26193 | } |
26194 | break; |
26195 | case Opcode::BranchSub32: |
26196 | switch (argIndex) { |
26197 | case 0: |
26198 | OPGEN_RETURN(false); |
26199 | break; |
26200 | case 1: |
26201 | switch (args[0].kind()) { |
26202 | case Arg::ResCond: |
26203 | switch (Arg::Addr) { |
26204 | case Arg::Tmp: |
26205 | break; |
26206 | case Arg::Imm: |
26207 | break; |
26208 | case Arg::Addr: |
26209 | case Arg::Stack: |
26210 | case Arg::CallArg: |
26211 | switch (args[2].kind()) { |
26212 | case Arg::Tmp: |
26213 | #if CPU(X86) || CPU(X86_64) |
26214 | OPGEN_RETURN(true); |
26215 | #endif |
26216 | break; |
26217 | break; |
26218 | default: |
26219 | break; |
26220 | } |
26221 | break; |
26222 | default: |
26223 | break; |
26224 | } |
26225 | break; |
26226 | default: |
26227 | break; |
26228 | } |
26229 | break; |
26230 | case 2: |
26231 | switch (args[0].kind()) { |
26232 | case Arg::ResCond: |
26233 | switch (args[1].kind()) { |
26234 | case Arg::Tmp: |
26235 | switch (Arg::Addr) { |
26236 | case Arg::Tmp: |
26237 | break; |
26238 | case Arg::Addr: |
26239 | case Arg::Stack: |
26240 | case Arg::CallArg: |
26241 | #if CPU(X86) || CPU(X86_64) |
26242 | OPGEN_RETURN(true); |
26243 | #endif |
26244 | break; |
26245 | break; |
26246 | default: |
26247 | break; |
26248 | } |
26249 | break; |
26250 | case Arg::Imm: |
26251 | switch (Arg::Addr) { |
26252 | case Arg::Tmp: |
26253 | break; |
26254 | case Arg::Addr: |
26255 | case Arg::Stack: |
26256 | case Arg::CallArg: |
26257 | #if CPU(X86) || CPU(X86_64) |
26258 | OPGEN_RETURN(true); |
26259 | #endif |
26260 | break; |
26261 | break; |
26262 | default: |
26263 | break; |
26264 | } |
26265 | break; |
26266 | case Arg::Addr: |
26267 | case Arg::Stack: |
26268 | case Arg::CallArg: |
26269 | break; |
26270 | default: |
26271 | break; |
26272 | } |
26273 | break; |
26274 | default: |
26275 | break; |
26276 | } |
26277 | break; |
26278 | default: |
26279 | break; |
26280 | } |
26281 | break; |
26282 | case Opcode::BranchSub64: |
26283 | switch (argIndex) { |
26284 | case 0: |
26285 | OPGEN_RETURN(false); |
26286 | break; |
26287 | case 1: |
26288 | OPGEN_RETURN(false); |
26289 | break; |
26290 | case 2: |
26291 | OPGEN_RETURN(false); |
26292 | break; |
26293 | default: |
26294 | break; |
26295 | } |
26296 | break; |
26297 | case Opcode::BranchNeg32: |
26298 | switch (argIndex) { |
26299 | case 0: |
26300 | OPGEN_RETURN(false); |
26301 | break; |
26302 | case 1: |
26303 | OPGEN_RETURN(false); |
26304 | break; |
26305 | default: |
26306 | break; |
26307 | } |
26308 | break; |
26309 | case Opcode::BranchNeg64: |
26310 | switch (argIndex) { |
26311 | case 0: |
26312 | OPGEN_RETURN(false); |
26313 | break; |
26314 | case 1: |
26315 | OPGEN_RETURN(false); |
26316 | break; |
26317 | default: |
26318 | break; |
26319 | } |
26320 | break; |
26321 | case Opcode::MoveConditionally32: |
26322 | switch (argIndex) { |
26323 | case 0: |
26324 | OPGEN_RETURN(false); |
26325 | break; |
26326 | case 1: |
26327 | OPGEN_RETURN(false); |
26328 | break; |
26329 | case 2: |
26330 | OPGEN_RETURN(false); |
26331 | break; |
26332 | case 3: |
26333 | OPGEN_RETURN(false); |
26334 | break; |
26335 | case 4: |
26336 | OPGEN_RETURN(false); |
26337 | break; |
26338 | case 5: |
26339 | OPGEN_RETURN(false); |
26340 | break; |
26341 | default: |
26342 | break; |
26343 | } |
26344 | break; |
26345 | case Opcode::MoveConditionally64: |
26346 | switch (argIndex) { |
26347 | case 0: |
26348 | OPGEN_RETURN(false); |
26349 | break; |
26350 | case 1: |
26351 | OPGEN_RETURN(false); |
26352 | break; |
26353 | case 2: |
26354 | OPGEN_RETURN(false); |
26355 | break; |
26356 | case 3: |
26357 | OPGEN_RETURN(false); |
26358 | break; |
26359 | case 4: |
26360 | OPGEN_RETURN(false); |
26361 | break; |
26362 | case 5: |
26363 | OPGEN_RETURN(false); |
26364 | break; |
26365 | default: |
26366 | break; |
26367 | } |
26368 | break; |
26369 | case Opcode::MoveConditionallyTest32: |
26370 | switch (argIndex) { |
26371 | case 0: |
26372 | OPGEN_RETURN(false); |
26373 | break; |
26374 | case 1: |
26375 | OPGEN_RETURN(false); |
26376 | break; |
26377 | case 2: |
26378 | OPGEN_RETURN(false); |
26379 | break; |
26380 | case 3: |
26381 | OPGEN_RETURN(false); |
26382 | break; |
26383 | case 4: |
26384 | OPGEN_RETURN(false); |
26385 | break; |
26386 | case 5: |
26387 | OPGEN_RETURN(false); |
26388 | break; |
26389 | default: |
26390 | break; |
26391 | } |
26392 | break; |
26393 | case Opcode::MoveConditionallyTest64: |
26394 | switch (argIndex) { |
26395 | case 0: |
26396 | OPGEN_RETURN(false); |
26397 | break; |
26398 | case 1: |
26399 | OPGEN_RETURN(false); |
26400 | break; |
26401 | case 2: |
26402 | OPGEN_RETURN(false); |
26403 | break; |
26404 | case 3: |
26405 | OPGEN_RETURN(false); |
26406 | break; |
26407 | case 4: |
26408 | OPGEN_RETURN(false); |
26409 | break; |
26410 | case 5: |
26411 | OPGEN_RETURN(false); |
26412 | break; |
26413 | default: |
26414 | break; |
26415 | } |
26416 | break; |
26417 | case Opcode::MoveConditionallyDouble: |
26418 | switch (argIndex) { |
26419 | case 0: |
26420 | OPGEN_RETURN(false); |
26421 | break; |
26422 | case 1: |
26423 | OPGEN_RETURN(false); |
26424 | break; |
26425 | case 2: |
26426 | OPGEN_RETURN(false); |
26427 | break; |
26428 | case 3: |
26429 | OPGEN_RETURN(false); |
26430 | break; |
26431 | case 4: |
26432 | OPGEN_RETURN(false); |
26433 | break; |
26434 | case 5: |
26435 | OPGEN_RETURN(false); |
26436 | break; |
26437 | default: |
26438 | break; |
26439 | } |
26440 | break; |
26441 | case Opcode::MoveConditionallyFloat: |
26442 | switch (argIndex) { |
26443 | case 0: |
26444 | OPGEN_RETURN(false); |
26445 | break; |
26446 | case 1: |
26447 | OPGEN_RETURN(false); |
26448 | break; |
26449 | case 2: |
26450 | OPGEN_RETURN(false); |
26451 | break; |
26452 | case 3: |
26453 | OPGEN_RETURN(false); |
26454 | break; |
26455 | case 4: |
26456 | OPGEN_RETURN(false); |
26457 | break; |
26458 | case 5: |
26459 | OPGEN_RETURN(false); |
26460 | break; |
26461 | default: |
26462 | break; |
26463 | } |
26464 | break; |
26465 | case Opcode::MoveDoubleConditionally32: |
26466 | switch (argIndex) { |
26467 | case 0: |
26468 | OPGEN_RETURN(false); |
26469 | break; |
26470 | case 1: |
26471 | switch (args[0].kind()) { |
26472 | case Arg::RelCond: |
26473 | switch (Arg::Addr) { |
26474 | case Arg::Tmp: |
26475 | break; |
26476 | case Arg::Addr: |
26477 | case Arg::Stack: |
26478 | case Arg::CallArg: |
26479 | switch (args[2].kind()) { |
26480 | case Arg::Imm: |
26481 | switch (args[3].kind()) { |
26482 | case Arg::Tmp: |
26483 | switch (args[4].kind()) { |
26484 | case Arg::Tmp: |
26485 | switch (args[5].kind()) { |
26486 | case Arg::Tmp: |
26487 | #if CPU(X86) || CPU(X86_64) |
26488 | OPGEN_RETURN(true); |
26489 | #endif |
26490 | break; |
26491 | break; |
26492 | default: |
26493 | break; |
26494 | } |
26495 | break; |
26496 | default: |
26497 | break; |
26498 | } |
26499 | break; |
26500 | default: |
26501 | break; |
26502 | } |
26503 | break; |
26504 | case Arg::Tmp: |
26505 | switch (args[3].kind()) { |
26506 | case Arg::Tmp: |
26507 | switch (args[4].kind()) { |
26508 | case Arg::Tmp: |
26509 | switch (args[5].kind()) { |
26510 | case Arg::Tmp: |
26511 | #if CPU(X86) || CPU(X86_64) |
26512 | OPGEN_RETURN(true); |
26513 | #endif |
26514 | break; |
26515 | break; |
26516 | default: |
26517 | break; |
26518 | } |
26519 | break; |
26520 | default: |
26521 | break; |
26522 | } |
26523 | break; |
26524 | default: |
26525 | break; |
26526 | } |
26527 | break; |
26528 | default: |
26529 | break; |
26530 | } |
26531 | break; |
26532 | case Arg::Index: |
26533 | break; |
26534 | default: |
26535 | break; |
26536 | } |
26537 | break; |
26538 | default: |
26539 | break; |
26540 | } |
26541 | break; |
26542 | case 2: |
26543 | switch (args[0].kind()) { |
26544 | case Arg::RelCond: |
26545 | switch (args[1].kind()) { |
26546 | case Arg::Tmp: |
26547 | switch (Arg::Addr) { |
26548 | case Arg::Tmp: |
26549 | break; |
26550 | case Arg::Imm: |
26551 | break; |
26552 | case Arg::Addr: |
26553 | case Arg::Stack: |
26554 | case Arg::CallArg: |
26555 | switch (args[3].kind()) { |
26556 | case Arg::Tmp: |
26557 | switch (args[4].kind()) { |
26558 | case Arg::Tmp: |
26559 | switch (args[5].kind()) { |
26560 | case Arg::Tmp: |
26561 | #if CPU(X86) || CPU(X86_64) |
26562 | OPGEN_RETURN(true); |
26563 | #endif |
26564 | break; |
26565 | break; |
26566 | default: |
26567 | break; |
26568 | } |
26569 | break; |
26570 | default: |
26571 | break; |
26572 | } |
26573 | break; |
26574 | default: |
26575 | break; |
26576 | } |
26577 | break; |
26578 | default: |
26579 | break; |
26580 | } |
26581 | break; |
26582 | case Arg::Addr: |
26583 | case Arg::Stack: |
26584 | case Arg::CallArg: |
26585 | break; |
26586 | case Arg::Index: |
26587 | break; |
26588 | default: |
26589 | break; |
26590 | } |
26591 | break; |
26592 | default: |
26593 | break; |
26594 | } |
26595 | break; |
26596 | case 3: |
26597 | OPGEN_RETURN(false); |
26598 | break; |
26599 | case 4: |
26600 | OPGEN_RETURN(false); |
26601 | break; |
26602 | case 5: |
26603 | OPGEN_RETURN(false); |
26604 | break; |
26605 | default: |
26606 | break; |
26607 | } |
26608 | break; |
26609 | case Opcode::MoveDoubleConditionally64: |
26610 | switch (argIndex) { |
26611 | case 0: |
26612 | OPGEN_RETURN(false); |
26613 | break; |
26614 | case 1: |
26615 | switch (args[0].kind()) { |
26616 | case Arg::RelCond: |
26617 | switch (Arg::Addr) { |
26618 | case Arg::Tmp: |
26619 | break; |
26620 | case Arg::Addr: |
26621 | case Arg::Stack: |
26622 | case Arg::CallArg: |
26623 | switch (args[2].kind()) { |
26624 | case Arg::Tmp: |
26625 | switch (args[3].kind()) { |
26626 | case Arg::Tmp: |
26627 | switch (args[4].kind()) { |
26628 | case Arg::Tmp: |
26629 | switch (args[5].kind()) { |
26630 | case Arg::Tmp: |
26631 | #if CPU(X86_64) |
26632 | OPGEN_RETURN(true); |
26633 | #endif |
26634 | break; |
26635 | break; |
26636 | default: |
26637 | break; |
26638 | } |
26639 | break; |
26640 | default: |
26641 | break; |
26642 | } |
26643 | break; |
26644 | default: |
26645 | break; |
26646 | } |
26647 | break; |
26648 | case Arg::Imm: |
26649 | switch (args[3].kind()) { |
26650 | case Arg::Tmp: |
26651 | switch (args[4].kind()) { |
26652 | case Arg::Tmp: |
26653 | switch (args[5].kind()) { |
26654 | case Arg::Tmp: |
26655 | #if CPU(X86_64) |
26656 | OPGEN_RETURN(true); |
26657 | #endif |
26658 | break; |
26659 | break; |
26660 | default: |
26661 | break; |
26662 | } |
26663 | break; |
26664 | default: |
26665 | break; |
26666 | } |
26667 | break; |
26668 | default: |
26669 | break; |
26670 | } |
26671 | break; |
26672 | default: |
26673 | break; |
26674 | } |
26675 | break; |
26676 | case Arg::Index: |
26677 | break; |
26678 | default: |
26679 | break; |
26680 | } |
26681 | break; |
26682 | default: |
26683 | break; |
26684 | } |
26685 | break; |
26686 | case 2: |
26687 | switch (args[0].kind()) { |
26688 | case Arg::RelCond: |
26689 | switch (args[1].kind()) { |
26690 | case Arg::Tmp: |
26691 | switch (Arg::Addr) { |
26692 | case Arg::Tmp: |
26693 | break; |
26694 | case Arg::Imm: |
26695 | break; |
26696 | case Arg::Addr: |
26697 | case Arg::Stack: |
26698 | case Arg::CallArg: |
26699 | switch (args[3].kind()) { |
26700 | case Arg::Tmp: |
26701 | switch (args[4].kind()) { |
26702 | case Arg::Tmp: |
26703 | switch (args[5].kind()) { |
26704 | case Arg::Tmp: |
26705 | #if CPU(X86_64) |
26706 | OPGEN_RETURN(true); |
26707 | #endif |
26708 | break; |
26709 | break; |
26710 | default: |
26711 | break; |
26712 | } |
26713 | break; |
26714 | default: |
26715 | break; |
26716 | } |
26717 | break; |
26718 | default: |
26719 | break; |
26720 | } |
26721 | break; |
26722 | default: |
26723 | break; |
26724 | } |
26725 | break; |
26726 | case Arg::Addr: |
26727 | case Arg::Stack: |
26728 | case Arg::CallArg: |
26729 | break; |
26730 | case Arg::Index: |
26731 | break; |
26732 | default: |
26733 | break; |
26734 | } |
26735 | break; |
26736 | default: |
26737 | break; |
26738 | } |
26739 | break; |
26740 | case 3: |
26741 | OPGEN_RETURN(false); |
26742 | break; |
26743 | case 4: |
26744 | OPGEN_RETURN(false); |
26745 | break; |
26746 | case 5: |
26747 | OPGEN_RETURN(false); |
26748 | break; |
26749 | default: |
26750 | break; |
26751 | } |
26752 | break; |
26753 | case Opcode::MoveDoubleConditionallyTest32: |
26754 | switch (argIndex) { |
26755 | case 0: |
26756 | OPGEN_RETURN(false); |
26757 | break; |
26758 | case 1: |
26759 | switch (args[0].kind()) { |
26760 | case Arg::ResCond: |
26761 | switch (Arg::Addr) { |
26762 | case Arg::Tmp: |
26763 | break; |
26764 | case Arg::Addr: |
26765 | case Arg::Stack: |
26766 | case Arg::CallArg: |
26767 | switch (args[2].kind()) { |
26768 | case Arg::Imm: |
26769 | switch (args[3].kind()) { |
26770 | case Arg::Tmp: |
26771 | switch (args[4].kind()) { |
26772 | case Arg::Tmp: |
26773 | switch (args[5].kind()) { |
26774 | case Arg::Tmp: |
26775 | #if CPU(X86) || CPU(X86_64) |
26776 | OPGEN_RETURN(true); |
26777 | #endif |
26778 | break; |
26779 | break; |
26780 | default: |
26781 | break; |
26782 | } |
26783 | break; |
26784 | default: |
26785 | break; |
26786 | } |
26787 | break; |
26788 | default: |
26789 | break; |
26790 | } |
26791 | break; |
26792 | default: |
26793 | break; |
26794 | } |
26795 | break; |
26796 | case Arg::Index: |
26797 | break; |
26798 | default: |
26799 | break; |
26800 | } |
26801 | break; |
26802 | default: |
26803 | break; |
26804 | } |
26805 | break; |
26806 | case 2: |
26807 | OPGEN_RETURN(false); |
26808 | break; |
26809 | case 3: |
26810 | OPGEN_RETURN(false); |
26811 | break; |
26812 | case 4: |
26813 | OPGEN_RETURN(false); |
26814 | break; |
26815 | case 5: |
26816 | OPGEN_RETURN(false); |
26817 | break; |
26818 | default: |
26819 | break; |
26820 | } |
26821 | break; |
26822 | case Opcode::MoveDoubleConditionallyTest64: |
26823 | switch (argIndex) { |
26824 | case 0: |
26825 | OPGEN_RETURN(false); |
26826 | break; |
26827 | case 1: |
26828 | switch (args[0].kind()) { |
26829 | case Arg::ResCond: |
26830 | switch (Arg::Addr) { |
26831 | case Arg::Tmp: |
26832 | break; |
26833 | case Arg::Addr: |
26834 | case Arg::Stack: |
26835 | case Arg::CallArg: |
26836 | switch (args[2].kind()) { |
26837 | case Arg::Imm: |
26838 | switch (args[3].kind()) { |
26839 | case Arg::Tmp: |
26840 | switch (args[4].kind()) { |
26841 | case Arg::Tmp: |
26842 | switch (args[5].kind()) { |
26843 | case Arg::Tmp: |
26844 | #if CPU(X86_64) |
26845 | OPGEN_RETURN(true); |
26846 | #endif |
26847 | break; |
26848 | break; |
26849 | default: |
26850 | break; |
26851 | } |
26852 | break; |
26853 | default: |
26854 | break; |
26855 | } |
26856 | break; |
26857 | default: |
26858 | break; |
26859 | } |
26860 | break; |
26861 | case Arg::Tmp: |
26862 | switch (args[3].kind()) { |
26863 | case Arg::Tmp: |
26864 | switch (args[4].kind()) { |
26865 | case Arg::Tmp: |
26866 | switch (args[5].kind()) { |
26867 | case Arg::Tmp: |
26868 | #if CPU(X86_64) |
26869 | OPGEN_RETURN(true); |
26870 | #endif |
26871 | break; |
26872 | break; |
26873 | default: |
26874 | break; |
26875 | } |
26876 | break; |
26877 | default: |
26878 | break; |
26879 | } |
26880 | break; |
26881 | default: |
26882 | break; |
26883 | } |
26884 | break; |
26885 | default: |
26886 | break; |
26887 | } |
26888 | break; |
26889 | case Arg::Index: |
26890 | break; |
26891 | default: |
26892 | break; |
26893 | } |
26894 | break; |
26895 | default: |
26896 | break; |
26897 | } |
26898 | break; |
26899 | case 2: |
26900 | OPGEN_RETURN(false); |
26901 | break; |
26902 | case 3: |
26903 | OPGEN_RETURN(false); |
26904 | break; |
26905 | case 4: |
26906 | OPGEN_RETURN(false); |
26907 | break; |
26908 | case 5: |
26909 | OPGEN_RETURN(false); |
26910 | break; |
26911 | default: |
26912 | break; |
26913 | } |
26914 | break; |
26915 | case Opcode::MoveDoubleConditionallyDouble: |
26916 | switch (argIndex) { |
26917 | case 0: |
26918 | OPGEN_RETURN(false); |
26919 | break; |
26920 | case 1: |
26921 | OPGEN_RETURN(false); |
26922 | break; |
26923 | case 2: |
26924 | OPGEN_RETURN(false); |
26925 | break; |
26926 | case 3: |
26927 | OPGEN_RETURN(false); |
26928 | break; |
26929 | case 4: |
26930 | OPGEN_RETURN(false); |
26931 | break; |
26932 | case 5: |
26933 | OPGEN_RETURN(false); |
26934 | break; |
26935 | default: |
26936 | break; |
26937 | } |
26938 | break; |
26939 | case Opcode::MoveDoubleConditionallyFloat: |
26940 | switch (argIndex) { |
26941 | case 0: |
26942 | OPGEN_RETURN(false); |
26943 | break; |
26944 | case 1: |
26945 | OPGEN_RETURN(false); |
26946 | break; |
26947 | case 2: |
26948 | OPGEN_RETURN(false); |
26949 | break; |
26950 | case 3: |
26951 | OPGEN_RETURN(false); |
26952 | break; |
26953 | case 4: |
26954 | OPGEN_RETURN(false); |
26955 | break; |
26956 | case 5: |
26957 | OPGEN_RETURN(false); |
26958 | break; |
26959 | default: |
26960 | break; |
26961 | } |
26962 | break; |
26963 | case Opcode::MemoryFence: |
26964 | switch (argIndex) { |
26965 | default: |
26966 | break; |
26967 | } |
26968 | break; |
26969 | case Opcode::StoreFence: |
26970 | switch (argIndex) { |
26971 | default: |
26972 | break; |
26973 | } |
26974 | break; |
26975 | case Opcode::LoadFence: |
26976 | switch (argIndex) { |
26977 | default: |
26978 | break; |
26979 | } |
26980 | break; |
26981 | case Opcode::Jump: |
26982 | switch (argIndex) { |
26983 | default: |
26984 | break; |
26985 | } |
26986 | break; |
26987 | case Opcode::RetVoid: |
26988 | switch (argIndex) { |
26989 | default: |
26990 | break; |
26991 | } |
26992 | break; |
26993 | case Opcode::Ret32: |
26994 | switch (argIndex) { |
26995 | case 0: |
26996 | OPGEN_RETURN(false); |
26997 | break; |
26998 | default: |
26999 | break; |
27000 | } |
27001 | break; |
27002 | case Opcode::Ret64: |
27003 | switch (argIndex) { |
27004 | case 0: |
27005 | OPGEN_RETURN(false); |
27006 | break; |
27007 | default: |
27008 | break; |
27009 | } |
27010 | break; |
27011 | case Opcode::RetFloat: |
27012 | switch (argIndex) { |
27013 | case 0: |
27014 | OPGEN_RETURN(false); |
27015 | break; |
27016 | default: |
27017 | break; |
27018 | } |
27019 | break; |
27020 | case Opcode::RetDouble: |
27021 | switch (argIndex) { |
27022 | case 0: |
27023 | OPGEN_RETURN(false); |
27024 | break; |
27025 | default: |
27026 | break; |
27027 | } |
27028 | break; |
27029 | case Opcode::Oops: |
27030 | switch (argIndex) { |
27031 | default: |
27032 | break; |
27033 | } |
27034 | break; |
27035 | case Opcode::EntrySwitch: |
27036 | OPGEN_RETURN(EntrySwitchCustom::admitsStack(*this, argIndex)); |
27037 | break; |
27038 | case Opcode::Shuffle: |
27039 | OPGEN_RETURN(ShuffleCustom::admitsStack(*this, argIndex)); |
27040 | break; |
27041 | case Opcode::Patch: |
27042 | OPGEN_RETURN(PatchCustom::admitsStack(*this, argIndex)); |
27043 | break; |
27044 | case Opcode::CCall: |
27045 | OPGEN_RETURN(CCallCustom::admitsStack(*this, argIndex)); |
27046 | break; |
27047 | case Opcode::ColdCCall: |
27048 | OPGEN_RETURN(ColdCCallCustom::admitsStack(*this, argIndex)); |
27049 | break; |
27050 | case Opcode::WasmBoundsCheck: |
27051 | OPGEN_RETURN(WasmBoundsCheckCustom::admitsStack(*this, argIndex)); |
27052 | break; |
27053 | default: |
27054 | break; |
27055 | } |
27056 | return false; |
27057 | } |
27058 | bool Inst::admitsExtendedOffsetAddr(unsigned argIndex) |
27059 | { |
27060 | switch (kind.opcode) { |
27061 | case Opcode::EntrySwitch: |
27062 | OPGEN_RETURN(EntrySwitchCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27063 | break; |
27064 | case Opcode::Shuffle: |
27065 | OPGEN_RETURN(ShuffleCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27066 | break; |
27067 | case Opcode::Patch: |
27068 | OPGEN_RETURN(PatchCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27069 | break; |
27070 | case Opcode::CCall: |
27071 | OPGEN_RETURN(CCallCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27072 | break; |
27073 | case Opcode::ColdCCall: |
27074 | OPGEN_RETURN(ColdCCallCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27075 | break; |
27076 | case Opcode::WasmBoundsCheck: |
27077 | OPGEN_RETURN(WasmBoundsCheckCustom::admitsExtendedOffsetAddr(*this, argIndex)); |
27078 | break; |
27079 | default: |
27080 | break; |
27081 | } |
27082 | return false; |
27083 | } |
27084 | bool Inst::isTerminal() |
27085 | { |
27086 | switch (kind.opcode) { |
27087 | case Opcode::BranchAtomicStrongCAS8: |
27088 | case Opcode::BranchAtomicStrongCAS16: |
27089 | case Opcode::BranchAtomicStrongCAS32: |
27090 | case Opcode::BranchAtomicStrongCAS64: |
27091 | case Opcode::Branch8: |
27092 | case Opcode::Branch32: |
27093 | case Opcode::Branch64: |
27094 | case Opcode::BranchTest8: |
27095 | case Opcode::BranchTest32: |
27096 | case Opcode::BranchTest64: |
27097 | case Opcode::BranchTestBit64: |
27098 | case Opcode::BranchTestBit32: |
27099 | case Opcode::BranchDouble: |
27100 | case Opcode::BranchFloat: |
27101 | case Opcode::BranchAdd32: |
27102 | case Opcode::BranchAdd64: |
27103 | case Opcode::BranchMul32: |
27104 | case Opcode::BranchMul64: |
27105 | case Opcode::BranchSub32: |
27106 | case Opcode::BranchSub64: |
27107 | case Opcode::BranchNeg32: |
27108 | case Opcode::BranchNeg64: |
27109 | case Opcode::Jump: |
27110 | case Opcode::RetVoid: |
27111 | case Opcode::Ret32: |
27112 | case Opcode::Ret64: |
27113 | case Opcode::RetFloat: |
27114 | case Opcode::RetDouble: |
27115 | case Opcode::Oops: |
27116 | return true; |
27117 | case Opcode::EntrySwitch: |
27118 | return EntrySwitchCustom::isTerminal(*this); |
27119 | case Opcode::Shuffle: |
27120 | return ShuffleCustom::isTerminal(*this); |
27121 | case Opcode::Patch: |
27122 | return PatchCustom::isTerminal(*this); |
27123 | case Opcode::CCall: |
27124 | return CCallCustom::isTerminal(*this); |
27125 | case Opcode::ColdCCall: |
27126 | return ColdCCallCustom::isTerminal(*this); |
27127 | case Opcode::WasmBoundsCheck: |
27128 | return WasmBoundsCheckCustom::isTerminal(*this); |
27129 | default: |
27130 | return false; |
27131 | } |
27132 | } |
27133 | bool Inst::hasNonArgNonControlEffects() |
27134 | { |
27135 | if (kind.effects) |
27136 | return true; |
27137 | switch (kind.opcode) { |
27138 | case Opcode::LoadAcq8: |
27139 | case Opcode::StoreRel8: |
27140 | case Opcode::LoadAcq8SignedExtendTo32: |
27141 | case Opcode::LoadAcq16: |
27142 | case Opcode::LoadAcq16SignedExtendTo32: |
27143 | case Opcode::StoreRel16: |
27144 | case Opcode::LoadAcq32: |
27145 | case Opcode::StoreRel32: |
27146 | case Opcode::LoadAcq64: |
27147 | case Opcode::StoreRel64: |
27148 | case Opcode::Xchg8: |
27149 | case Opcode::Xchg16: |
27150 | case Opcode::Xchg32: |
27151 | case Opcode::Xchg64: |
27152 | case Opcode::AtomicStrongCAS8: |
27153 | case Opcode::AtomicStrongCAS16: |
27154 | case Opcode::AtomicStrongCAS32: |
27155 | case Opcode::AtomicStrongCAS64: |
27156 | case Opcode::BranchAtomicStrongCAS8: |
27157 | case Opcode::BranchAtomicStrongCAS16: |
27158 | case Opcode::BranchAtomicStrongCAS32: |
27159 | case Opcode::BranchAtomicStrongCAS64: |
27160 | case Opcode::AtomicAdd8: |
27161 | case Opcode::AtomicAdd16: |
27162 | case Opcode::AtomicAdd32: |
27163 | case Opcode::AtomicAdd64: |
27164 | case Opcode::AtomicSub8: |
27165 | case Opcode::AtomicSub16: |
27166 | case Opcode::AtomicSub32: |
27167 | case Opcode::AtomicSub64: |
27168 | case Opcode::AtomicAnd8: |
27169 | case Opcode::AtomicAnd16: |
27170 | case Opcode::AtomicAnd32: |
27171 | case Opcode::AtomicAnd64: |
27172 | case Opcode::AtomicOr8: |
27173 | case Opcode::AtomicOr16: |
27174 | case Opcode::AtomicOr32: |
27175 | case Opcode::AtomicOr64: |
27176 | case Opcode::AtomicXor8: |
27177 | case Opcode::AtomicXor16: |
27178 | case Opcode::AtomicXor32: |
27179 | case Opcode::AtomicXor64: |
27180 | case Opcode::AtomicNeg8: |
27181 | case Opcode::AtomicNeg16: |
27182 | case Opcode::AtomicNeg32: |
27183 | case Opcode::AtomicNeg64: |
27184 | case Opcode::AtomicNot8: |
27185 | case Opcode::AtomicNot16: |
27186 | case Opcode::AtomicNot32: |
27187 | case Opcode::AtomicNot64: |
27188 | case Opcode::AtomicXchgAdd8: |
27189 | case Opcode::AtomicXchgAdd16: |
27190 | case Opcode::AtomicXchgAdd32: |
27191 | case Opcode::AtomicXchgAdd64: |
27192 | case Opcode::AtomicXchg8: |
27193 | case Opcode::AtomicXchg16: |
27194 | case Opcode::AtomicXchg32: |
27195 | case Opcode::AtomicXchg64: |
27196 | case Opcode::LoadLink8: |
27197 | case Opcode::LoadLinkAcq8: |
27198 | case Opcode::StoreCond8: |
27199 | case Opcode::StoreCondRel8: |
27200 | case Opcode::LoadLink16: |
27201 | case Opcode::LoadLinkAcq16: |
27202 | case Opcode::StoreCond16: |
27203 | case Opcode::StoreCondRel16: |
27204 | case Opcode::LoadLink32: |
27205 | case Opcode::LoadLinkAcq32: |
27206 | case Opcode::StoreCond32: |
27207 | case Opcode::StoreCondRel32: |
27208 | case Opcode::LoadLink64: |
27209 | case Opcode::LoadLinkAcq64: |
27210 | case Opcode::StoreCond64: |
27211 | case Opcode::StoreCondRel64: |
27212 | case Opcode::MemoryFence: |
27213 | case Opcode::StoreFence: |
27214 | case Opcode::LoadFence: |
27215 | return true; |
27216 | case Opcode::EntrySwitch: |
27217 | return EntrySwitchCustom::hasNonArgNonControlEffects(*this); |
27218 | case Opcode::Shuffle: |
27219 | return ShuffleCustom::hasNonArgNonControlEffects(*this); |
27220 | case Opcode::Patch: |
27221 | return PatchCustom::hasNonArgNonControlEffects(*this); |
27222 | case Opcode::CCall: |
27223 | return CCallCustom::hasNonArgNonControlEffects(*this); |
27224 | case Opcode::ColdCCall: |
27225 | return ColdCCallCustom::hasNonArgNonControlEffects(*this); |
27226 | case Opcode::WasmBoundsCheck: |
27227 | return WasmBoundsCheckCustom::hasNonArgNonControlEffects(*this); |
27228 | default: |
27229 | return false; |
27230 | } |
27231 | } |
27232 | bool Inst::hasNonArgEffects() |
27233 | { |
27234 | if (kind.effects) |
27235 | return true; |
27236 | switch (kind.opcode) { |
27237 | case Opcode::LoadAcq8: |
27238 | case Opcode::StoreRel8: |
27239 | case Opcode::LoadAcq8SignedExtendTo32: |
27240 | case Opcode::LoadAcq16: |
27241 | case Opcode::LoadAcq16SignedExtendTo32: |
27242 | case Opcode::StoreRel16: |
27243 | case Opcode::LoadAcq32: |
27244 | case Opcode::StoreRel32: |
27245 | case Opcode::LoadAcq64: |
27246 | case Opcode::StoreRel64: |
27247 | case Opcode::Xchg8: |
27248 | case Opcode::Xchg16: |
27249 | case Opcode::Xchg32: |
27250 | case Opcode::Xchg64: |
27251 | case Opcode::AtomicStrongCAS8: |
27252 | case Opcode::AtomicStrongCAS16: |
27253 | case Opcode::AtomicStrongCAS32: |
27254 | case Opcode::AtomicStrongCAS64: |
27255 | case Opcode::BranchAtomicStrongCAS8: |
27256 | case Opcode::BranchAtomicStrongCAS16: |
27257 | case Opcode::BranchAtomicStrongCAS32: |
27258 | case Opcode::BranchAtomicStrongCAS64: |
27259 | case Opcode::AtomicAdd8: |
27260 | case Opcode::AtomicAdd16: |
27261 | case Opcode::AtomicAdd32: |
27262 | case Opcode::AtomicAdd64: |
27263 | case Opcode::AtomicSub8: |
27264 | case Opcode::AtomicSub16: |
27265 | case Opcode::AtomicSub32: |
27266 | case Opcode::AtomicSub64: |
27267 | case Opcode::AtomicAnd8: |
27268 | case Opcode::AtomicAnd16: |
27269 | case Opcode::AtomicAnd32: |
27270 | case Opcode::AtomicAnd64: |
27271 | case Opcode::AtomicOr8: |
27272 | case Opcode::AtomicOr16: |
27273 | case Opcode::AtomicOr32: |
27274 | case Opcode::AtomicOr64: |
27275 | case Opcode::AtomicXor8: |
27276 | case Opcode::AtomicXor16: |
27277 | case Opcode::AtomicXor32: |
27278 | case Opcode::AtomicXor64: |
27279 | case Opcode::AtomicNeg8: |
27280 | case Opcode::AtomicNeg16: |
27281 | case Opcode::AtomicNeg32: |
27282 | case Opcode::AtomicNeg64: |
27283 | case Opcode::AtomicNot8: |
27284 | case Opcode::AtomicNot16: |
27285 | case Opcode::AtomicNot32: |
27286 | case Opcode::AtomicNot64: |
27287 | case Opcode::AtomicXchgAdd8: |
27288 | case Opcode::AtomicXchgAdd16: |
27289 | case Opcode::AtomicXchgAdd32: |
27290 | case Opcode::AtomicXchgAdd64: |
27291 | case Opcode::AtomicXchg8: |
27292 | case Opcode::AtomicXchg16: |
27293 | case Opcode::AtomicXchg32: |
27294 | case Opcode::AtomicXchg64: |
27295 | case Opcode::LoadLink8: |
27296 | case Opcode::LoadLinkAcq8: |
27297 | case Opcode::StoreCond8: |
27298 | case Opcode::StoreCondRel8: |
27299 | case Opcode::LoadLink16: |
27300 | case Opcode::LoadLinkAcq16: |
27301 | case Opcode::StoreCond16: |
27302 | case Opcode::StoreCondRel16: |
27303 | case Opcode::LoadLink32: |
27304 | case Opcode::LoadLinkAcq32: |
27305 | case Opcode::StoreCond32: |
27306 | case Opcode::StoreCondRel32: |
27307 | case Opcode::LoadLink64: |
27308 | case Opcode::LoadLinkAcq64: |
27309 | case Opcode::StoreCond64: |
27310 | case Opcode::StoreCondRel64: |
27311 | case Opcode::Branch8: |
27312 | case Opcode::Branch32: |
27313 | case Opcode::Branch64: |
27314 | case Opcode::BranchTest8: |
27315 | case Opcode::BranchTest32: |
27316 | case Opcode::BranchTest64: |
27317 | case Opcode::BranchTestBit64: |
27318 | case Opcode::BranchTestBit32: |
27319 | case Opcode::BranchDouble: |
27320 | case Opcode::BranchFloat: |
27321 | case Opcode::BranchAdd32: |
27322 | case Opcode::BranchAdd64: |
27323 | case Opcode::BranchMul32: |
27324 | case Opcode::BranchMul64: |
27325 | case Opcode::BranchSub32: |
27326 | case Opcode::BranchSub64: |
27327 | case Opcode::BranchNeg32: |
27328 | case Opcode::BranchNeg64: |
27329 | case Opcode::MemoryFence: |
27330 | case Opcode::StoreFence: |
27331 | case Opcode::LoadFence: |
27332 | case Opcode::Jump: |
27333 | case Opcode::RetVoid: |
27334 | case Opcode::Ret32: |
27335 | case Opcode::Ret64: |
27336 | case Opcode::RetFloat: |
27337 | case Opcode::RetDouble: |
27338 | case Opcode::Oops: |
27339 | return true; |
27340 | case Opcode::EntrySwitch: |
27341 | return EntrySwitchCustom::hasNonArgEffects(*this); |
27342 | case Opcode::Shuffle: |
27343 | return ShuffleCustom::hasNonArgEffects(*this); |
27344 | case Opcode::Patch: |
27345 | return PatchCustom::hasNonArgEffects(*this); |
27346 | case Opcode::CCall: |
27347 | return CCallCustom::hasNonArgEffects(*this); |
27348 | case Opcode::ColdCCall: |
27349 | return ColdCCallCustom::hasNonArgEffects(*this); |
27350 | case Opcode::WasmBoundsCheck: |
27351 | return WasmBoundsCheckCustom::hasNonArgEffects(*this); |
27352 | default: |
27353 | return false; |
27354 | } |
27355 | } |
27356 | CCallHelpers::Jump Inst::generate(CCallHelpers& jit, GenerationContext& context) |
27357 | { |
27358 | UNUSED_PARAM(jit); |
27359 | UNUSED_PARAM(context); |
27360 | CCallHelpers::Jump result; |
27361 | switch (this->kind.opcode) { |
27362 | case Opcode::Nop: |
27363 | jit.nop(); |
27364 | OPGEN_RETURN(result); |
27365 | break; |
27366 | break; |
27367 | case Opcode::Add32: |
27368 | switch (this->args.size()) { |
27369 | case 3: |
27370 | switch (this->args[0].kind()) { |
27371 | case Arg::Imm: |
27372 | jit.add32(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
27373 | OPGEN_RETURN(result); |
27374 | break; |
27375 | break; |
27376 | case Arg::Tmp: |
27377 | jit.add32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
27378 | OPGEN_RETURN(result); |
27379 | break; |
27380 | break; |
27381 | default: |
27382 | break; |
27383 | } |
27384 | break; |
27385 | case 2: |
27386 | switch (this->args[0].kind()) { |
27387 | case Arg::Tmp: |
27388 | switch (this->args[1].kind()) { |
27389 | case Arg::Tmp: |
27390 | jit.add32(args[0].gpr(), args[1].gpr()); |
27391 | OPGEN_RETURN(result); |
27392 | break; |
27393 | break; |
27394 | case Arg::Addr: |
27395 | case Arg::Stack: |
27396 | case Arg::CallArg: |
27397 | #if CPU(X86) || CPU(X86_64) |
27398 | jit.add32(args[0].gpr(), args[1].asAddress()); |
27399 | OPGEN_RETURN(result); |
27400 | #endif |
27401 | break; |
27402 | break; |
27403 | case Arg::Index: |
27404 | #if CPU(X86) || CPU(X86_64) |
27405 | jit.add32(args[0].gpr(), args[1].asBaseIndex()); |
27406 | OPGEN_RETURN(result); |
27407 | #endif |
27408 | break; |
27409 | break; |
27410 | default: |
27411 | break; |
27412 | } |
27413 | break; |
27414 | case Arg::Imm: |
27415 | switch (this->args[1].kind()) { |
27416 | case Arg::Addr: |
27417 | case Arg::Stack: |
27418 | case Arg::CallArg: |
27419 | #if CPU(X86) || CPU(X86_64) |
27420 | jit.add32(args[0].asTrustedImm32(), args[1].asAddress()); |
27421 | OPGEN_RETURN(result); |
27422 | #endif |
27423 | break; |
27424 | break; |
27425 | case Arg::Index: |
27426 | #if CPU(X86) || CPU(X86_64) |
27427 | jit.add32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27428 | OPGEN_RETURN(result); |
27429 | #endif |
27430 | break; |
27431 | break; |
27432 | case Arg::Tmp: |
27433 | jit.add32(args[0].asTrustedImm32(), args[1].gpr()); |
27434 | OPGEN_RETURN(result); |
27435 | break; |
27436 | break; |
27437 | default: |
27438 | break; |
27439 | } |
27440 | break; |
27441 | case Arg::Addr: |
27442 | case Arg::Stack: |
27443 | case Arg::CallArg: |
27444 | #if CPU(X86) || CPU(X86_64) |
27445 | jit.add32(args[0].asAddress(), args[1].gpr()); |
27446 | OPGEN_RETURN(result); |
27447 | #endif |
27448 | break; |
27449 | break; |
27450 | case Arg::Index: |
27451 | #if CPU(X86) || CPU(X86_64) |
27452 | jit.add32(args[0].asBaseIndex(), args[1].gpr()); |
27453 | OPGEN_RETURN(result); |
27454 | #endif |
27455 | break; |
27456 | break; |
27457 | default: |
27458 | break; |
27459 | } |
27460 | break; |
27461 | default: |
27462 | break; |
27463 | } |
27464 | break; |
27465 | case Opcode::Add8: |
27466 | switch (this->args[0].kind()) { |
27467 | case Arg::Imm: |
27468 | switch (this->args[1].kind()) { |
27469 | case Arg::Addr: |
27470 | case Arg::Stack: |
27471 | case Arg::CallArg: |
27472 | #if CPU(X86) || CPU(X86_64) |
27473 | jit.add8(args[0].asTrustedImm32(), args[1].asAddress()); |
27474 | OPGEN_RETURN(result); |
27475 | #endif |
27476 | break; |
27477 | break; |
27478 | case Arg::Index: |
27479 | #if CPU(X86) || CPU(X86_64) |
27480 | jit.add8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27481 | OPGEN_RETURN(result); |
27482 | #endif |
27483 | break; |
27484 | break; |
27485 | default: |
27486 | break; |
27487 | } |
27488 | break; |
27489 | case Arg::Tmp: |
27490 | switch (this->args[1].kind()) { |
27491 | case Arg::Addr: |
27492 | case Arg::Stack: |
27493 | case Arg::CallArg: |
27494 | #if CPU(X86) || CPU(X86_64) |
27495 | jit.add8(args[0].gpr(), args[1].asAddress()); |
27496 | OPGEN_RETURN(result); |
27497 | #endif |
27498 | break; |
27499 | break; |
27500 | case Arg::Index: |
27501 | #if CPU(X86) || CPU(X86_64) |
27502 | jit.add8(args[0].gpr(), args[1].asBaseIndex()); |
27503 | OPGEN_RETURN(result); |
27504 | #endif |
27505 | break; |
27506 | break; |
27507 | default: |
27508 | break; |
27509 | } |
27510 | break; |
27511 | default: |
27512 | break; |
27513 | } |
27514 | break; |
27515 | case Opcode::Add16: |
27516 | switch (this->args[0].kind()) { |
27517 | case Arg::Imm: |
27518 | switch (this->args[1].kind()) { |
27519 | case Arg::Addr: |
27520 | case Arg::Stack: |
27521 | case Arg::CallArg: |
27522 | #if CPU(X86) || CPU(X86_64) |
27523 | jit.add16(args[0].asTrustedImm32(), args[1].asAddress()); |
27524 | OPGEN_RETURN(result); |
27525 | #endif |
27526 | break; |
27527 | break; |
27528 | case Arg::Index: |
27529 | #if CPU(X86) || CPU(X86_64) |
27530 | jit.add16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27531 | OPGEN_RETURN(result); |
27532 | #endif |
27533 | break; |
27534 | break; |
27535 | default: |
27536 | break; |
27537 | } |
27538 | break; |
27539 | case Arg::Tmp: |
27540 | switch (this->args[1].kind()) { |
27541 | case Arg::Addr: |
27542 | case Arg::Stack: |
27543 | case Arg::CallArg: |
27544 | #if CPU(X86) || CPU(X86_64) |
27545 | jit.add16(args[0].gpr(), args[1].asAddress()); |
27546 | OPGEN_RETURN(result); |
27547 | #endif |
27548 | break; |
27549 | break; |
27550 | case Arg::Index: |
27551 | #if CPU(X86) || CPU(X86_64) |
27552 | jit.add16(args[0].gpr(), args[1].asBaseIndex()); |
27553 | OPGEN_RETURN(result); |
27554 | #endif |
27555 | break; |
27556 | break; |
27557 | default: |
27558 | break; |
27559 | } |
27560 | break; |
27561 | default: |
27562 | break; |
27563 | } |
27564 | break; |
27565 | case Opcode::Add64: |
27566 | switch (this->args.size()) { |
27567 | case 2: |
27568 | switch (this->args[0].kind()) { |
27569 | case Arg::Tmp: |
27570 | switch (this->args[1].kind()) { |
27571 | case Arg::Tmp: |
27572 | #if CPU(X86_64) || CPU(ARM64) |
27573 | jit.add64(args[0].gpr(), args[1].gpr()); |
27574 | OPGEN_RETURN(result); |
27575 | #endif |
27576 | break; |
27577 | break; |
27578 | case Arg::Addr: |
27579 | case Arg::Stack: |
27580 | case Arg::CallArg: |
27581 | #if CPU(X86_64) |
27582 | jit.add64(args[0].gpr(), args[1].asAddress()); |
27583 | OPGEN_RETURN(result); |
27584 | #endif |
27585 | break; |
27586 | break; |
27587 | case Arg::Index: |
27588 | #if CPU(X86_64) |
27589 | jit.add64(args[0].gpr(), args[1].asBaseIndex()); |
27590 | OPGEN_RETURN(result); |
27591 | #endif |
27592 | break; |
27593 | break; |
27594 | default: |
27595 | break; |
27596 | } |
27597 | break; |
27598 | case Arg::Imm: |
27599 | switch (this->args[1].kind()) { |
27600 | case Arg::Addr: |
27601 | case Arg::Stack: |
27602 | case Arg::CallArg: |
27603 | #if CPU(X86_64) |
27604 | jit.add64(args[0].asTrustedImm32(), args[1].asAddress()); |
27605 | OPGEN_RETURN(result); |
27606 | #endif |
27607 | break; |
27608 | break; |
27609 | case Arg::Index: |
27610 | #if CPU(X86_64) |
27611 | jit.add64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27612 | OPGEN_RETURN(result); |
27613 | #endif |
27614 | break; |
27615 | break; |
27616 | case Arg::Tmp: |
27617 | #if CPU(X86_64) || CPU(ARM64) |
27618 | jit.add64(args[0].asTrustedImm32(), args[1].gpr()); |
27619 | OPGEN_RETURN(result); |
27620 | #endif |
27621 | break; |
27622 | break; |
27623 | default: |
27624 | break; |
27625 | } |
27626 | break; |
27627 | case Arg::Addr: |
27628 | case Arg::Stack: |
27629 | case Arg::CallArg: |
27630 | #if CPU(X86_64) |
27631 | jit.add64(args[0].asAddress(), args[1].gpr()); |
27632 | OPGEN_RETURN(result); |
27633 | #endif |
27634 | break; |
27635 | break; |
27636 | case Arg::Index: |
27637 | #if CPU(X86_64) |
27638 | jit.add64(args[0].asBaseIndex(), args[1].gpr()); |
27639 | OPGEN_RETURN(result); |
27640 | #endif |
27641 | break; |
27642 | break; |
27643 | default: |
27644 | break; |
27645 | } |
27646 | break; |
27647 | case 3: |
27648 | switch (this->args[0].kind()) { |
27649 | case Arg::Imm: |
27650 | #if CPU(X86_64) || CPU(ARM64) |
27651 | jit.add64(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
27652 | OPGEN_RETURN(result); |
27653 | #endif |
27654 | break; |
27655 | break; |
27656 | case Arg::Tmp: |
27657 | #if CPU(X86_64) || CPU(ARM64) |
27658 | jit.add64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
27659 | OPGEN_RETURN(result); |
27660 | #endif |
27661 | break; |
27662 | break; |
27663 | default: |
27664 | break; |
27665 | } |
27666 | break; |
27667 | default: |
27668 | break; |
27669 | } |
27670 | break; |
27671 | case Opcode::AddDouble: |
27672 | switch (this->args.size()) { |
27673 | case 3: |
27674 | switch (this->args[0].kind()) { |
27675 | case Arg::Tmp: |
27676 | switch (this->args[1].kind()) { |
27677 | case Arg::Tmp: |
27678 | jit.addDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
27679 | OPGEN_RETURN(result); |
27680 | break; |
27681 | break; |
27682 | case Arg::Addr: |
27683 | case Arg::Stack: |
27684 | case Arg::CallArg: |
27685 | #if CPU(X86) || CPU(X86_64) |
27686 | jit.addDouble(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
27687 | OPGEN_RETURN(result); |
27688 | #endif |
27689 | break; |
27690 | break; |
27691 | default: |
27692 | break; |
27693 | } |
27694 | break; |
27695 | case Arg::Addr: |
27696 | case Arg::Stack: |
27697 | case Arg::CallArg: |
27698 | #if CPU(X86) || CPU(X86_64) |
27699 | jit.addDouble(args[0].asAddress(), args[1].fpr(), args[2].fpr()); |
27700 | OPGEN_RETURN(result); |
27701 | #endif |
27702 | break; |
27703 | break; |
27704 | case Arg::Index: |
27705 | #if CPU(X86) || CPU(X86_64) |
27706 | jit.addDouble(args[0].asBaseIndex(), args[1].fpr(), args[2].fpr()); |
27707 | OPGEN_RETURN(result); |
27708 | #endif |
27709 | break; |
27710 | break; |
27711 | default: |
27712 | break; |
27713 | } |
27714 | break; |
27715 | case 2: |
27716 | switch (this->args[0].kind()) { |
27717 | case Arg::Tmp: |
27718 | #if CPU(X86) || CPU(X86_64) |
27719 | jit.addDouble(args[0].fpr(), args[1].fpr()); |
27720 | OPGEN_RETURN(result); |
27721 | #endif |
27722 | break; |
27723 | break; |
27724 | case Arg::Addr: |
27725 | case Arg::Stack: |
27726 | case Arg::CallArg: |
27727 | #if CPU(X86) || CPU(X86_64) |
27728 | jit.addDouble(args[0].asAddress(), args[1].fpr()); |
27729 | OPGEN_RETURN(result); |
27730 | #endif |
27731 | break; |
27732 | break; |
27733 | default: |
27734 | break; |
27735 | } |
27736 | break; |
27737 | default: |
27738 | break; |
27739 | } |
27740 | break; |
27741 | case Opcode::AddFloat: |
27742 | switch (this->args.size()) { |
27743 | case 3: |
27744 | switch (this->args[0].kind()) { |
27745 | case Arg::Tmp: |
27746 | switch (this->args[1].kind()) { |
27747 | case Arg::Tmp: |
27748 | jit.addFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
27749 | OPGEN_RETURN(result); |
27750 | break; |
27751 | break; |
27752 | case Arg::Addr: |
27753 | case Arg::Stack: |
27754 | case Arg::CallArg: |
27755 | #if CPU(X86) || CPU(X86_64) |
27756 | jit.addFloat(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
27757 | OPGEN_RETURN(result); |
27758 | #endif |
27759 | break; |
27760 | break; |
27761 | default: |
27762 | break; |
27763 | } |
27764 | break; |
27765 | case Arg::Addr: |
27766 | case Arg::Stack: |
27767 | case Arg::CallArg: |
27768 | #if CPU(X86) || CPU(X86_64) |
27769 | jit.addFloat(args[0].asAddress(), args[1].fpr(), args[2].fpr()); |
27770 | OPGEN_RETURN(result); |
27771 | #endif |
27772 | break; |
27773 | break; |
27774 | case Arg::Index: |
27775 | #if CPU(X86) || CPU(X86_64) |
27776 | jit.addFloat(args[0].asBaseIndex(), args[1].fpr(), args[2].fpr()); |
27777 | OPGEN_RETURN(result); |
27778 | #endif |
27779 | break; |
27780 | break; |
27781 | default: |
27782 | break; |
27783 | } |
27784 | break; |
27785 | case 2: |
27786 | switch (this->args[0].kind()) { |
27787 | case Arg::Tmp: |
27788 | #if CPU(X86) || CPU(X86_64) |
27789 | jit.addFloat(args[0].fpr(), args[1].fpr()); |
27790 | OPGEN_RETURN(result); |
27791 | #endif |
27792 | break; |
27793 | break; |
27794 | case Arg::Addr: |
27795 | case Arg::Stack: |
27796 | case Arg::CallArg: |
27797 | #if CPU(X86) || CPU(X86_64) |
27798 | jit.addFloat(args[0].asAddress(), args[1].fpr()); |
27799 | OPGEN_RETURN(result); |
27800 | #endif |
27801 | break; |
27802 | break; |
27803 | default: |
27804 | break; |
27805 | } |
27806 | break; |
27807 | default: |
27808 | break; |
27809 | } |
27810 | break; |
27811 | case Opcode::Sub32: |
27812 | switch (this->args.size()) { |
27813 | case 2: |
27814 | switch (this->args[0].kind()) { |
27815 | case Arg::Tmp: |
27816 | switch (this->args[1].kind()) { |
27817 | case Arg::Tmp: |
27818 | jit.sub32(args[0].gpr(), args[1].gpr()); |
27819 | OPGEN_RETURN(result); |
27820 | break; |
27821 | break; |
27822 | case Arg::Addr: |
27823 | case Arg::Stack: |
27824 | case Arg::CallArg: |
27825 | #if CPU(X86) || CPU(X86_64) |
27826 | jit.sub32(args[0].gpr(), args[1].asAddress()); |
27827 | OPGEN_RETURN(result); |
27828 | #endif |
27829 | break; |
27830 | break; |
27831 | case Arg::Index: |
27832 | #if CPU(X86) || CPU(X86_64) |
27833 | jit.sub32(args[0].gpr(), args[1].asBaseIndex()); |
27834 | OPGEN_RETURN(result); |
27835 | #endif |
27836 | break; |
27837 | break; |
27838 | default: |
27839 | break; |
27840 | } |
27841 | break; |
27842 | case Arg::Imm: |
27843 | switch (this->args[1].kind()) { |
27844 | case Arg::Addr: |
27845 | case Arg::Stack: |
27846 | case Arg::CallArg: |
27847 | #if CPU(X86) || CPU(X86_64) |
27848 | jit.sub32(args[0].asTrustedImm32(), args[1].asAddress()); |
27849 | OPGEN_RETURN(result); |
27850 | #endif |
27851 | break; |
27852 | break; |
27853 | case Arg::Index: |
27854 | #if CPU(X86) || CPU(X86_64) |
27855 | jit.sub32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27856 | OPGEN_RETURN(result); |
27857 | #endif |
27858 | break; |
27859 | break; |
27860 | case Arg::Tmp: |
27861 | jit.sub32(args[0].asTrustedImm32(), args[1].gpr()); |
27862 | OPGEN_RETURN(result); |
27863 | break; |
27864 | break; |
27865 | default: |
27866 | break; |
27867 | } |
27868 | break; |
27869 | case Arg::Addr: |
27870 | case Arg::Stack: |
27871 | case Arg::CallArg: |
27872 | #if CPU(X86) || CPU(X86_64) |
27873 | jit.sub32(args[0].asAddress(), args[1].gpr()); |
27874 | OPGEN_RETURN(result); |
27875 | #endif |
27876 | break; |
27877 | break; |
27878 | case Arg::Index: |
27879 | #if CPU(X86) || CPU(X86_64) |
27880 | jit.sub32(args[0].asBaseIndex(), args[1].gpr()); |
27881 | OPGEN_RETURN(result); |
27882 | #endif |
27883 | break; |
27884 | break; |
27885 | default: |
27886 | break; |
27887 | } |
27888 | break; |
27889 | case 3: |
27890 | #if CPU(ARM64) |
27891 | jit.sub32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
27892 | OPGEN_RETURN(result); |
27893 | #endif |
27894 | break; |
27895 | break; |
27896 | default: |
27897 | break; |
27898 | } |
27899 | break; |
27900 | case Opcode::Sub64: |
27901 | switch (this->args.size()) { |
27902 | case 2: |
27903 | switch (this->args[0].kind()) { |
27904 | case Arg::Tmp: |
27905 | switch (this->args[1].kind()) { |
27906 | case Arg::Tmp: |
27907 | #if CPU(X86_64) || CPU(ARM64) |
27908 | jit.sub64(args[0].gpr(), args[1].gpr()); |
27909 | OPGEN_RETURN(result); |
27910 | #endif |
27911 | break; |
27912 | break; |
27913 | case Arg::Addr: |
27914 | case Arg::Stack: |
27915 | case Arg::CallArg: |
27916 | #if CPU(X86_64) |
27917 | jit.sub64(args[0].gpr(), args[1].asAddress()); |
27918 | OPGEN_RETURN(result); |
27919 | #endif |
27920 | break; |
27921 | break; |
27922 | case Arg::Index: |
27923 | #if CPU(X86_64) |
27924 | jit.sub64(args[0].gpr(), args[1].asBaseIndex()); |
27925 | OPGEN_RETURN(result); |
27926 | #endif |
27927 | break; |
27928 | break; |
27929 | default: |
27930 | break; |
27931 | } |
27932 | break; |
27933 | case Arg::Imm: |
27934 | switch (this->args[1].kind()) { |
27935 | case Arg::Addr: |
27936 | case Arg::Stack: |
27937 | case Arg::CallArg: |
27938 | #if CPU(X86_64) |
27939 | jit.sub64(args[0].asTrustedImm32(), args[1].asAddress()); |
27940 | OPGEN_RETURN(result); |
27941 | #endif |
27942 | break; |
27943 | break; |
27944 | case Arg::Index: |
27945 | #if CPU(X86_64) |
27946 | jit.sub64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
27947 | OPGEN_RETURN(result); |
27948 | #endif |
27949 | break; |
27950 | break; |
27951 | case Arg::Tmp: |
27952 | #if CPU(X86_64) || CPU(ARM64) |
27953 | jit.sub64(args[0].asTrustedImm32(), args[1].gpr()); |
27954 | OPGEN_RETURN(result); |
27955 | #endif |
27956 | break; |
27957 | break; |
27958 | default: |
27959 | break; |
27960 | } |
27961 | break; |
27962 | case Arg::Addr: |
27963 | case Arg::Stack: |
27964 | case Arg::CallArg: |
27965 | #if CPU(X86_64) |
27966 | jit.sub64(args[0].asAddress(), args[1].gpr()); |
27967 | OPGEN_RETURN(result); |
27968 | #endif |
27969 | break; |
27970 | break; |
27971 | case Arg::Index: |
27972 | #if CPU(X86_64) |
27973 | jit.sub64(args[0].asBaseIndex(), args[1].gpr()); |
27974 | OPGEN_RETURN(result); |
27975 | #endif |
27976 | break; |
27977 | break; |
27978 | default: |
27979 | break; |
27980 | } |
27981 | break; |
27982 | case 3: |
27983 | #if CPU(ARM64) |
27984 | jit.sub64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
27985 | OPGEN_RETURN(result); |
27986 | #endif |
27987 | break; |
27988 | break; |
27989 | default: |
27990 | break; |
27991 | } |
27992 | break; |
27993 | case Opcode::SubDouble: |
27994 | switch (this->args.size()) { |
27995 | case 3: |
27996 | switch (this->args[1].kind()) { |
27997 | case Arg::Tmp: |
27998 | #if CPU(ARM64) |
27999 | jit.subDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28000 | OPGEN_RETURN(result); |
28001 | #endif |
28002 | break; |
28003 | break; |
28004 | case Arg::Addr: |
28005 | case Arg::Stack: |
28006 | case Arg::CallArg: |
28007 | #if CPU(X86) || CPU(X86_64) |
28008 | jit.subDouble(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
28009 | OPGEN_RETURN(result); |
28010 | #endif |
28011 | break; |
28012 | break; |
28013 | case Arg::Index: |
28014 | #if CPU(X86) || CPU(X86_64) |
28015 | jit.subDouble(args[0].fpr(), args[1].asBaseIndex(), args[2].fpr()); |
28016 | OPGEN_RETURN(result); |
28017 | #endif |
28018 | break; |
28019 | break; |
28020 | default: |
28021 | break; |
28022 | } |
28023 | break; |
28024 | case 2: |
28025 | switch (this->args[0].kind()) { |
28026 | case Arg::Tmp: |
28027 | #if CPU(X86) || CPU(X86_64) |
28028 | jit.subDouble(args[0].fpr(), args[1].fpr()); |
28029 | OPGEN_RETURN(result); |
28030 | #endif |
28031 | break; |
28032 | break; |
28033 | case Arg::Addr: |
28034 | case Arg::Stack: |
28035 | case Arg::CallArg: |
28036 | #if CPU(X86) || CPU(X86_64) |
28037 | jit.subDouble(args[0].asAddress(), args[1].fpr()); |
28038 | OPGEN_RETURN(result); |
28039 | #endif |
28040 | break; |
28041 | break; |
28042 | default: |
28043 | break; |
28044 | } |
28045 | break; |
28046 | default: |
28047 | break; |
28048 | } |
28049 | break; |
28050 | case Opcode::SubFloat: |
28051 | switch (this->args.size()) { |
28052 | case 3: |
28053 | switch (this->args[1].kind()) { |
28054 | case Arg::Tmp: |
28055 | #if CPU(ARM64) |
28056 | jit.subFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28057 | OPGEN_RETURN(result); |
28058 | #endif |
28059 | break; |
28060 | break; |
28061 | case Arg::Addr: |
28062 | case Arg::Stack: |
28063 | case Arg::CallArg: |
28064 | #if CPU(X86) || CPU(X86_64) |
28065 | jit.subFloat(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
28066 | OPGEN_RETURN(result); |
28067 | #endif |
28068 | break; |
28069 | break; |
28070 | case Arg::Index: |
28071 | #if CPU(X86) || CPU(X86_64) |
28072 | jit.subFloat(args[0].fpr(), args[1].asBaseIndex(), args[2].fpr()); |
28073 | OPGEN_RETURN(result); |
28074 | #endif |
28075 | break; |
28076 | break; |
28077 | default: |
28078 | break; |
28079 | } |
28080 | break; |
28081 | case 2: |
28082 | switch (this->args[0].kind()) { |
28083 | case Arg::Tmp: |
28084 | #if CPU(X86) || CPU(X86_64) |
28085 | jit.subFloat(args[0].fpr(), args[1].fpr()); |
28086 | OPGEN_RETURN(result); |
28087 | #endif |
28088 | break; |
28089 | break; |
28090 | case Arg::Addr: |
28091 | case Arg::Stack: |
28092 | case Arg::CallArg: |
28093 | #if CPU(X86) || CPU(X86_64) |
28094 | jit.subFloat(args[0].asAddress(), args[1].fpr()); |
28095 | OPGEN_RETURN(result); |
28096 | #endif |
28097 | break; |
28098 | break; |
28099 | default: |
28100 | break; |
28101 | } |
28102 | break; |
28103 | default: |
28104 | break; |
28105 | } |
28106 | break; |
28107 | case Opcode::Neg32: |
28108 | switch (this->args[0].kind()) { |
28109 | case Arg::Tmp: |
28110 | jit.neg32(args[0].gpr()); |
28111 | OPGEN_RETURN(result); |
28112 | break; |
28113 | break; |
28114 | case Arg::Addr: |
28115 | case Arg::Stack: |
28116 | case Arg::CallArg: |
28117 | #if CPU(X86) || CPU(X86_64) |
28118 | jit.neg32(args[0].asAddress()); |
28119 | OPGEN_RETURN(result); |
28120 | #endif |
28121 | break; |
28122 | break; |
28123 | case Arg::Index: |
28124 | #if CPU(X86) || CPU(X86_64) |
28125 | jit.neg32(args[0].asBaseIndex()); |
28126 | OPGEN_RETURN(result); |
28127 | #endif |
28128 | break; |
28129 | break; |
28130 | default: |
28131 | break; |
28132 | } |
28133 | break; |
28134 | case Opcode::Neg64: |
28135 | switch (this->args[0].kind()) { |
28136 | case Arg::Tmp: |
28137 | #if CPU(X86_64) || CPU(ARM64) |
28138 | jit.neg64(args[0].gpr()); |
28139 | OPGEN_RETURN(result); |
28140 | #endif |
28141 | break; |
28142 | break; |
28143 | case Arg::Addr: |
28144 | case Arg::Stack: |
28145 | case Arg::CallArg: |
28146 | #if CPU(X86_64) |
28147 | jit.neg64(args[0].asAddress()); |
28148 | OPGEN_RETURN(result); |
28149 | #endif |
28150 | break; |
28151 | break; |
28152 | case Arg::Index: |
28153 | #if CPU(X86_64) |
28154 | jit.neg64(args[0].asBaseIndex()); |
28155 | OPGEN_RETURN(result); |
28156 | #endif |
28157 | break; |
28158 | break; |
28159 | default: |
28160 | break; |
28161 | } |
28162 | break; |
28163 | case Opcode::NegateDouble: |
28164 | #if CPU(ARM64) |
28165 | jit.negateDouble(args[0].fpr(), args[1].fpr()); |
28166 | OPGEN_RETURN(result); |
28167 | #endif |
28168 | break; |
28169 | break; |
28170 | case Opcode::NegateFloat: |
28171 | #if CPU(ARM64) |
28172 | jit.negateFloat(args[0].fpr(), args[1].fpr()); |
28173 | OPGEN_RETURN(result); |
28174 | #endif |
28175 | break; |
28176 | break; |
28177 | case Opcode::Mul32: |
28178 | switch (this->args.size()) { |
28179 | case 2: |
28180 | switch (this->args[0].kind()) { |
28181 | case Arg::Tmp: |
28182 | jit.mul32(args[0].gpr(), args[1].gpr()); |
28183 | OPGEN_RETURN(result); |
28184 | break; |
28185 | break; |
28186 | case Arg::Addr: |
28187 | case Arg::Stack: |
28188 | case Arg::CallArg: |
28189 | #if CPU(X86) || CPU(X86_64) |
28190 | jit.mul32(args[0].asAddress(), args[1].gpr()); |
28191 | OPGEN_RETURN(result); |
28192 | #endif |
28193 | break; |
28194 | break; |
28195 | default: |
28196 | break; |
28197 | } |
28198 | break; |
28199 | case 3: |
28200 | switch (this->args[0].kind()) { |
28201 | case Arg::Tmp: |
28202 | switch (this->args[1].kind()) { |
28203 | case Arg::Tmp: |
28204 | jit.mul32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28205 | OPGEN_RETURN(result); |
28206 | break; |
28207 | break; |
28208 | case Arg::Addr: |
28209 | case Arg::Stack: |
28210 | case Arg::CallArg: |
28211 | #if CPU(X86) || CPU(X86_64) |
28212 | jit.mul32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
28213 | OPGEN_RETURN(result); |
28214 | #endif |
28215 | break; |
28216 | break; |
28217 | default: |
28218 | break; |
28219 | } |
28220 | break; |
28221 | case Arg::Addr: |
28222 | case Arg::Stack: |
28223 | case Arg::CallArg: |
28224 | #if CPU(X86) || CPU(X86_64) |
28225 | jit.mul32(args[0].asAddress(), args[1].gpr(), args[2].gpr()); |
28226 | OPGEN_RETURN(result); |
28227 | #endif |
28228 | break; |
28229 | break; |
28230 | case Arg::Imm: |
28231 | #if CPU(X86) || CPU(X86_64) |
28232 | jit.mul32(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
28233 | OPGEN_RETURN(result); |
28234 | #endif |
28235 | break; |
28236 | break; |
28237 | default: |
28238 | break; |
28239 | } |
28240 | break; |
28241 | default: |
28242 | break; |
28243 | } |
28244 | break; |
28245 | case Opcode::Mul64: |
28246 | switch (this->args.size()) { |
28247 | case 2: |
28248 | #if CPU(X86_64) || CPU(ARM64) |
28249 | jit.mul64(args[0].gpr(), args[1].gpr()); |
28250 | OPGEN_RETURN(result); |
28251 | #endif |
28252 | break; |
28253 | break; |
28254 | case 3: |
28255 | jit.mul64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28256 | OPGEN_RETURN(result); |
28257 | break; |
28258 | break; |
28259 | default: |
28260 | break; |
28261 | } |
28262 | break; |
28263 | case Opcode::MultiplyAdd32: |
28264 | #if CPU(ARM64) |
28265 | jit.multiplyAdd32(args[0].gpr(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
28266 | OPGEN_RETURN(result); |
28267 | #endif |
28268 | break; |
28269 | break; |
28270 | case Opcode::MultiplyAdd64: |
28271 | #if CPU(ARM64) |
28272 | jit.multiplyAdd64(args[0].gpr(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
28273 | OPGEN_RETURN(result); |
28274 | #endif |
28275 | break; |
28276 | break; |
28277 | case Opcode::MultiplySub32: |
28278 | #if CPU(ARM64) |
28279 | jit.multiplySub32(args[0].gpr(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
28280 | OPGEN_RETURN(result); |
28281 | #endif |
28282 | break; |
28283 | break; |
28284 | case Opcode::MultiplySub64: |
28285 | #if CPU(ARM64) |
28286 | jit.multiplySub64(args[0].gpr(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
28287 | OPGEN_RETURN(result); |
28288 | #endif |
28289 | break; |
28290 | break; |
28291 | case Opcode::MultiplyNeg32: |
28292 | #if CPU(ARM64) |
28293 | jit.multiplyNeg32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28294 | OPGEN_RETURN(result); |
28295 | #endif |
28296 | break; |
28297 | break; |
28298 | case Opcode::MultiplyNeg64: |
28299 | #if CPU(ARM64) |
28300 | jit.multiplyNeg64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28301 | OPGEN_RETURN(result); |
28302 | #endif |
28303 | break; |
28304 | break; |
28305 | case Opcode::MultiplySignExtend32: |
28306 | #if CPU(ARM64) |
28307 | jit.multiplySignExtend32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28308 | OPGEN_RETURN(result); |
28309 | #endif |
28310 | break; |
28311 | break; |
28312 | case Opcode::Div32: |
28313 | #if CPU(ARM64) |
28314 | jit.div32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28315 | OPGEN_RETURN(result); |
28316 | #endif |
28317 | break; |
28318 | break; |
28319 | case Opcode::UDiv32: |
28320 | #if CPU(ARM64) |
28321 | jit.uDiv32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28322 | OPGEN_RETURN(result); |
28323 | #endif |
28324 | break; |
28325 | break; |
28326 | case Opcode::Div64: |
28327 | #if CPU(ARM64) |
28328 | jit.div64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28329 | OPGEN_RETURN(result); |
28330 | #endif |
28331 | break; |
28332 | break; |
28333 | case Opcode::UDiv64: |
28334 | #if CPU(ARM64) |
28335 | jit.uDiv64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28336 | OPGEN_RETURN(result); |
28337 | #endif |
28338 | break; |
28339 | break; |
28340 | case Opcode::MulDouble: |
28341 | switch (this->args.size()) { |
28342 | case 3: |
28343 | switch (this->args[0].kind()) { |
28344 | case Arg::Tmp: |
28345 | switch (this->args[1].kind()) { |
28346 | case Arg::Tmp: |
28347 | jit.mulDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28348 | OPGEN_RETURN(result); |
28349 | break; |
28350 | break; |
28351 | case Arg::Addr: |
28352 | case Arg::Stack: |
28353 | case Arg::CallArg: |
28354 | #if CPU(X86) || CPU(X86_64) |
28355 | jit.mulDouble(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
28356 | OPGEN_RETURN(result); |
28357 | #endif |
28358 | break; |
28359 | break; |
28360 | default: |
28361 | break; |
28362 | } |
28363 | break; |
28364 | case Arg::Addr: |
28365 | case Arg::Stack: |
28366 | case Arg::CallArg: |
28367 | #if CPU(X86) || CPU(X86_64) |
28368 | jit.mulDouble(args[0].asAddress(), args[1].fpr(), args[2].fpr()); |
28369 | OPGEN_RETURN(result); |
28370 | #endif |
28371 | break; |
28372 | break; |
28373 | case Arg::Index: |
28374 | #if CPU(X86) || CPU(X86_64) |
28375 | jit.mulDouble(args[0].asBaseIndex(), args[1].fpr(), args[2].fpr()); |
28376 | OPGEN_RETURN(result); |
28377 | #endif |
28378 | break; |
28379 | break; |
28380 | default: |
28381 | break; |
28382 | } |
28383 | break; |
28384 | case 2: |
28385 | switch (this->args[0].kind()) { |
28386 | case Arg::Tmp: |
28387 | #if CPU(X86) || CPU(X86_64) |
28388 | jit.mulDouble(args[0].fpr(), args[1].fpr()); |
28389 | OPGEN_RETURN(result); |
28390 | #endif |
28391 | break; |
28392 | break; |
28393 | case Arg::Addr: |
28394 | case Arg::Stack: |
28395 | case Arg::CallArg: |
28396 | #if CPU(X86) || CPU(X86_64) |
28397 | jit.mulDouble(args[0].asAddress(), args[1].fpr()); |
28398 | OPGEN_RETURN(result); |
28399 | #endif |
28400 | break; |
28401 | break; |
28402 | default: |
28403 | break; |
28404 | } |
28405 | break; |
28406 | default: |
28407 | break; |
28408 | } |
28409 | break; |
28410 | case Opcode::MulFloat: |
28411 | switch (this->args.size()) { |
28412 | case 3: |
28413 | switch (this->args[0].kind()) { |
28414 | case Arg::Tmp: |
28415 | switch (this->args[1].kind()) { |
28416 | case Arg::Tmp: |
28417 | jit.mulFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28418 | OPGEN_RETURN(result); |
28419 | break; |
28420 | break; |
28421 | case Arg::Addr: |
28422 | case Arg::Stack: |
28423 | case Arg::CallArg: |
28424 | #if CPU(X86) || CPU(X86_64) |
28425 | jit.mulFloat(args[0].fpr(), args[1].asAddress(), args[2].fpr()); |
28426 | OPGEN_RETURN(result); |
28427 | #endif |
28428 | break; |
28429 | break; |
28430 | default: |
28431 | break; |
28432 | } |
28433 | break; |
28434 | case Arg::Addr: |
28435 | case Arg::Stack: |
28436 | case Arg::CallArg: |
28437 | #if CPU(X86) || CPU(X86_64) |
28438 | jit.mulFloat(args[0].asAddress(), args[1].fpr(), args[2].fpr()); |
28439 | OPGEN_RETURN(result); |
28440 | #endif |
28441 | break; |
28442 | break; |
28443 | case Arg::Index: |
28444 | #if CPU(X86) || CPU(X86_64) |
28445 | jit.mulFloat(args[0].asBaseIndex(), args[1].fpr(), args[2].fpr()); |
28446 | OPGEN_RETURN(result); |
28447 | #endif |
28448 | break; |
28449 | break; |
28450 | default: |
28451 | break; |
28452 | } |
28453 | break; |
28454 | case 2: |
28455 | switch (this->args[0].kind()) { |
28456 | case Arg::Tmp: |
28457 | #if CPU(X86) || CPU(X86_64) |
28458 | jit.mulFloat(args[0].fpr(), args[1].fpr()); |
28459 | OPGEN_RETURN(result); |
28460 | #endif |
28461 | break; |
28462 | break; |
28463 | case Arg::Addr: |
28464 | case Arg::Stack: |
28465 | case Arg::CallArg: |
28466 | #if CPU(X86) || CPU(X86_64) |
28467 | jit.mulFloat(args[0].asAddress(), args[1].fpr()); |
28468 | OPGEN_RETURN(result); |
28469 | #endif |
28470 | break; |
28471 | break; |
28472 | default: |
28473 | break; |
28474 | } |
28475 | break; |
28476 | default: |
28477 | break; |
28478 | } |
28479 | break; |
28480 | case Opcode::DivDouble: |
28481 | switch (this->args.size()) { |
28482 | case 3: |
28483 | #if CPU(ARM64) |
28484 | jit.divDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28485 | OPGEN_RETURN(result); |
28486 | #endif |
28487 | break; |
28488 | break; |
28489 | case 2: |
28490 | switch (this->args[0].kind()) { |
28491 | case Arg::Tmp: |
28492 | #if CPU(X86) || CPU(X86_64) |
28493 | jit.divDouble(args[0].fpr(), args[1].fpr()); |
28494 | OPGEN_RETURN(result); |
28495 | #endif |
28496 | break; |
28497 | break; |
28498 | case Arg::Addr: |
28499 | case Arg::Stack: |
28500 | case Arg::CallArg: |
28501 | #if CPU(X86) || CPU(X86_64) |
28502 | jit.divDouble(args[0].asAddress(), args[1].fpr()); |
28503 | OPGEN_RETURN(result); |
28504 | #endif |
28505 | break; |
28506 | break; |
28507 | default: |
28508 | break; |
28509 | } |
28510 | break; |
28511 | default: |
28512 | break; |
28513 | } |
28514 | break; |
28515 | case Opcode::DivFloat: |
28516 | switch (this->args.size()) { |
28517 | case 3: |
28518 | #if CPU(ARM64) |
28519 | jit.divFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28520 | OPGEN_RETURN(result); |
28521 | #endif |
28522 | break; |
28523 | break; |
28524 | case 2: |
28525 | switch (this->args[0].kind()) { |
28526 | case Arg::Tmp: |
28527 | #if CPU(X86) || CPU(X86_64) |
28528 | jit.divFloat(args[0].fpr(), args[1].fpr()); |
28529 | OPGEN_RETURN(result); |
28530 | #endif |
28531 | break; |
28532 | break; |
28533 | case Arg::Addr: |
28534 | case Arg::Stack: |
28535 | case Arg::CallArg: |
28536 | #if CPU(X86) || CPU(X86_64) |
28537 | jit.divFloat(args[0].asAddress(), args[1].fpr()); |
28538 | OPGEN_RETURN(result); |
28539 | #endif |
28540 | break; |
28541 | break; |
28542 | default: |
28543 | break; |
28544 | } |
28545 | break; |
28546 | default: |
28547 | break; |
28548 | } |
28549 | break; |
28550 | case Opcode::X86ConvertToDoubleWord32: |
28551 | #if CPU(X86) || CPU(X86_64) |
28552 | jit.x86ConvertToDoubleWord32(args[0].gpr(), args[1].gpr()); |
28553 | OPGEN_RETURN(result); |
28554 | #endif |
28555 | break; |
28556 | break; |
28557 | case Opcode::X86ConvertToQuadWord64: |
28558 | #if CPU(X86_64) |
28559 | jit.x86ConvertToQuadWord64(args[0].gpr(), args[1].gpr()); |
28560 | OPGEN_RETURN(result); |
28561 | #endif |
28562 | break; |
28563 | break; |
28564 | case Opcode::X86Div32: |
28565 | #if CPU(X86) || CPU(X86_64) |
28566 | jit.x86Div32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28567 | OPGEN_RETURN(result); |
28568 | #endif |
28569 | break; |
28570 | break; |
28571 | case Opcode::X86UDiv32: |
28572 | #if CPU(X86) || CPU(X86_64) |
28573 | jit.x86UDiv32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28574 | OPGEN_RETURN(result); |
28575 | #endif |
28576 | break; |
28577 | break; |
28578 | case Opcode::X86Div64: |
28579 | #if CPU(X86_64) |
28580 | jit.x86Div64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28581 | OPGEN_RETURN(result); |
28582 | #endif |
28583 | break; |
28584 | break; |
28585 | case Opcode::X86UDiv64: |
28586 | #if CPU(X86_64) |
28587 | jit.x86UDiv64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28588 | OPGEN_RETURN(result); |
28589 | #endif |
28590 | break; |
28591 | break; |
28592 | case Opcode::Lea32: |
28593 | switch (this->args[0].kind()) { |
28594 | case Arg::Addr: |
28595 | case Arg::Stack: |
28596 | case Arg::CallArg: |
28597 | jit.lea32(args[0].asAddress(), args[1].gpr()); |
28598 | OPGEN_RETURN(result); |
28599 | break; |
28600 | break; |
28601 | case Arg::Index: |
28602 | #if CPU(X86) || CPU(X86_64) |
28603 | jit.x86Lea32(args[0].asBaseIndex(), args[1].gpr()); |
28604 | OPGEN_RETURN(result); |
28605 | #endif |
28606 | break; |
28607 | break; |
28608 | default: |
28609 | break; |
28610 | } |
28611 | break; |
28612 | case Opcode::Lea64: |
28613 | switch (this->args[0].kind()) { |
28614 | case Arg::Addr: |
28615 | case Arg::Stack: |
28616 | case Arg::CallArg: |
28617 | jit.lea64(args[0].asAddress(), args[1].gpr()); |
28618 | OPGEN_RETURN(result); |
28619 | break; |
28620 | break; |
28621 | case Arg::Index: |
28622 | #if CPU(X86) || CPU(X86_64) |
28623 | jit.x86Lea64(args[0].asBaseIndex(), args[1].gpr()); |
28624 | OPGEN_RETURN(result); |
28625 | #endif |
28626 | break; |
28627 | break; |
28628 | default: |
28629 | break; |
28630 | } |
28631 | break; |
28632 | case Opcode::And32: |
28633 | switch (this->args.size()) { |
28634 | case 3: |
28635 | switch (this->args[0].kind()) { |
28636 | case Arg::Tmp: |
28637 | switch (this->args[1].kind()) { |
28638 | case Arg::Tmp: |
28639 | jit.and32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28640 | OPGEN_RETURN(result); |
28641 | break; |
28642 | break; |
28643 | case Arg::Addr: |
28644 | case Arg::Stack: |
28645 | case Arg::CallArg: |
28646 | #if CPU(X86) || CPU(X86_64) |
28647 | jit.and32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
28648 | OPGEN_RETURN(result); |
28649 | #endif |
28650 | break; |
28651 | break; |
28652 | default: |
28653 | break; |
28654 | } |
28655 | break; |
28656 | case Arg::BitImm: |
28657 | #if CPU(ARM64) |
28658 | jit.and32(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
28659 | OPGEN_RETURN(result); |
28660 | #endif |
28661 | break; |
28662 | break; |
28663 | case Arg::Addr: |
28664 | case Arg::Stack: |
28665 | case Arg::CallArg: |
28666 | #if CPU(X86) || CPU(X86_64) |
28667 | jit.and32(args[0].asAddress(), args[1].gpr(), args[2].gpr()); |
28668 | OPGEN_RETURN(result); |
28669 | #endif |
28670 | break; |
28671 | break; |
28672 | default: |
28673 | break; |
28674 | } |
28675 | break; |
28676 | case 2: |
28677 | switch (this->args[0].kind()) { |
28678 | case Arg::Tmp: |
28679 | switch (this->args[1].kind()) { |
28680 | case Arg::Tmp: |
28681 | jit.and32(args[0].gpr(), args[1].gpr()); |
28682 | OPGEN_RETURN(result); |
28683 | break; |
28684 | break; |
28685 | case Arg::Addr: |
28686 | case Arg::Stack: |
28687 | case Arg::CallArg: |
28688 | #if CPU(X86) || CPU(X86_64) |
28689 | jit.and32(args[0].gpr(), args[1].asAddress()); |
28690 | OPGEN_RETURN(result); |
28691 | #endif |
28692 | break; |
28693 | break; |
28694 | case Arg::Index: |
28695 | #if CPU(X86) || CPU(X86_64) |
28696 | jit.and32(args[0].gpr(), args[1].asBaseIndex()); |
28697 | OPGEN_RETURN(result); |
28698 | #endif |
28699 | break; |
28700 | break; |
28701 | default: |
28702 | break; |
28703 | } |
28704 | break; |
28705 | case Arg::Imm: |
28706 | switch (this->args[1].kind()) { |
28707 | case Arg::Tmp: |
28708 | #if CPU(X86) || CPU(X86_64) |
28709 | jit.and32(args[0].asTrustedImm32(), args[1].gpr()); |
28710 | OPGEN_RETURN(result); |
28711 | #endif |
28712 | break; |
28713 | break; |
28714 | case Arg::Addr: |
28715 | case Arg::Stack: |
28716 | case Arg::CallArg: |
28717 | #if CPU(X86) || CPU(X86_64) |
28718 | jit.and32(args[0].asTrustedImm32(), args[1].asAddress()); |
28719 | OPGEN_RETURN(result); |
28720 | #endif |
28721 | break; |
28722 | break; |
28723 | case Arg::Index: |
28724 | #if CPU(X86) || CPU(X86_64) |
28725 | jit.and32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
28726 | OPGEN_RETURN(result); |
28727 | #endif |
28728 | break; |
28729 | break; |
28730 | default: |
28731 | break; |
28732 | } |
28733 | break; |
28734 | case Arg::Addr: |
28735 | case Arg::Stack: |
28736 | case Arg::CallArg: |
28737 | #if CPU(X86) || CPU(X86_64) |
28738 | jit.and32(args[0].asAddress(), args[1].gpr()); |
28739 | OPGEN_RETURN(result); |
28740 | #endif |
28741 | break; |
28742 | break; |
28743 | case Arg::Index: |
28744 | #if CPU(X86) || CPU(X86_64) |
28745 | jit.and32(args[0].asBaseIndex(), args[1].gpr()); |
28746 | OPGEN_RETURN(result); |
28747 | #endif |
28748 | break; |
28749 | break; |
28750 | default: |
28751 | break; |
28752 | } |
28753 | break; |
28754 | default: |
28755 | break; |
28756 | } |
28757 | break; |
28758 | case Opcode::And64: |
28759 | switch (this->args.size()) { |
28760 | case 3: |
28761 | switch (this->args[0].kind()) { |
28762 | case Arg::Tmp: |
28763 | #if CPU(X86_64) || CPU(ARM64) |
28764 | jit.and64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28765 | OPGEN_RETURN(result); |
28766 | #endif |
28767 | break; |
28768 | break; |
28769 | #if USE(JSVALUE64) |
28770 | case Arg::BitImm64: |
28771 | #if CPU(ARM64) |
28772 | jit.and64(args[0].asTrustedImm64(), args[1].gpr(), args[2].gpr()); |
28773 | OPGEN_RETURN(result); |
28774 | #endif |
28775 | break; |
28776 | break; |
28777 | #endif // USE(JSVALUE64) |
28778 | default: |
28779 | break; |
28780 | } |
28781 | break; |
28782 | case 2: |
28783 | switch (this->args[0].kind()) { |
28784 | case Arg::Tmp: |
28785 | switch (this->args[1].kind()) { |
28786 | case Arg::Tmp: |
28787 | #if CPU(X86_64) |
28788 | jit.and64(args[0].gpr(), args[1].gpr()); |
28789 | OPGEN_RETURN(result); |
28790 | #endif |
28791 | break; |
28792 | break; |
28793 | case Arg::Addr: |
28794 | case Arg::Stack: |
28795 | case Arg::CallArg: |
28796 | #if CPU(X86_64) |
28797 | jit.and64(args[0].gpr(), args[1].asAddress()); |
28798 | OPGEN_RETURN(result); |
28799 | #endif |
28800 | break; |
28801 | break; |
28802 | case Arg::Index: |
28803 | #if CPU(X86_64) |
28804 | jit.and64(args[0].gpr(), args[1].asBaseIndex()); |
28805 | OPGEN_RETURN(result); |
28806 | #endif |
28807 | break; |
28808 | break; |
28809 | default: |
28810 | break; |
28811 | } |
28812 | break; |
28813 | case Arg::Imm: |
28814 | switch (this->args[1].kind()) { |
28815 | case Arg::Tmp: |
28816 | #if CPU(X86_64) |
28817 | jit.and64(args[0].asTrustedImm32(), args[1].gpr()); |
28818 | OPGEN_RETURN(result); |
28819 | #endif |
28820 | break; |
28821 | break; |
28822 | case Arg::Addr: |
28823 | case Arg::Stack: |
28824 | case Arg::CallArg: |
28825 | #if CPU(X86_64) |
28826 | jit.and64(args[0].asTrustedImm32(), args[1].asAddress()); |
28827 | OPGEN_RETURN(result); |
28828 | #endif |
28829 | break; |
28830 | break; |
28831 | case Arg::Index: |
28832 | #if CPU(X86_64) |
28833 | jit.and64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
28834 | OPGEN_RETURN(result); |
28835 | #endif |
28836 | break; |
28837 | break; |
28838 | default: |
28839 | break; |
28840 | } |
28841 | break; |
28842 | case Arg::Addr: |
28843 | case Arg::Stack: |
28844 | case Arg::CallArg: |
28845 | #if CPU(X86_64) |
28846 | jit.and64(args[0].asAddress(), args[1].gpr()); |
28847 | OPGEN_RETURN(result); |
28848 | #endif |
28849 | break; |
28850 | break; |
28851 | case Arg::Index: |
28852 | #if CPU(X86_64) |
28853 | jit.and64(args[0].asBaseIndex(), args[1].gpr()); |
28854 | OPGEN_RETURN(result); |
28855 | #endif |
28856 | break; |
28857 | break; |
28858 | default: |
28859 | break; |
28860 | } |
28861 | break; |
28862 | default: |
28863 | break; |
28864 | } |
28865 | break; |
28866 | case Opcode::AndDouble: |
28867 | switch (this->args.size()) { |
28868 | case 3: |
28869 | jit.andDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28870 | OPGEN_RETURN(result); |
28871 | break; |
28872 | break; |
28873 | case 2: |
28874 | #if CPU(X86) || CPU(X86_64) |
28875 | jit.andDouble(args[0].fpr(), args[1].fpr()); |
28876 | OPGEN_RETURN(result); |
28877 | #endif |
28878 | break; |
28879 | break; |
28880 | default: |
28881 | break; |
28882 | } |
28883 | break; |
28884 | case Opcode::AndFloat: |
28885 | switch (this->args.size()) { |
28886 | case 3: |
28887 | jit.andFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28888 | OPGEN_RETURN(result); |
28889 | break; |
28890 | break; |
28891 | case 2: |
28892 | #if CPU(X86) || CPU(X86_64) |
28893 | jit.andFloat(args[0].fpr(), args[1].fpr()); |
28894 | OPGEN_RETURN(result); |
28895 | #endif |
28896 | break; |
28897 | break; |
28898 | default: |
28899 | break; |
28900 | } |
28901 | break; |
28902 | case Opcode::OrDouble: |
28903 | switch (this->args.size()) { |
28904 | case 3: |
28905 | jit.orDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28906 | OPGEN_RETURN(result); |
28907 | break; |
28908 | break; |
28909 | case 2: |
28910 | #if CPU(X86) || CPU(X86_64) |
28911 | jit.orDouble(args[0].fpr(), args[1].fpr()); |
28912 | OPGEN_RETURN(result); |
28913 | #endif |
28914 | break; |
28915 | break; |
28916 | default: |
28917 | break; |
28918 | } |
28919 | break; |
28920 | case Opcode::OrFloat: |
28921 | switch (this->args.size()) { |
28922 | case 3: |
28923 | jit.orFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28924 | OPGEN_RETURN(result); |
28925 | break; |
28926 | break; |
28927 | case 2: |
28928 | #if CPU(X86) || CPU(X86_64) |
28929 | jit.orFloat(args[0].fpr(), args[1].fpr()); |
28930 | OPGEN_RETURN(result); |
28931 | #endif |
28932 | break; |
28933 | break; |
28934 | default: |
28935 | break; |
28936 | } |
28937 | break; |
28938 | case Opcode::XorDouble: |
28939 | switch (this->args.size()) { |
28940 | case 3: |
28941 | #if CPU(X86) || CPU(X86_64) |
28942 | jit.xorDouble(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28943 | OPGEN_RETURN(result); |
28944 | #endif |
28945 | break; |
28946 | break; |
28947 | case 2: |
28948 | #if CPU(X86) || CPU(X86_64) |
28949 | jit.xorDouble(args[0].fpr(), args[1].fpr()); |
28950 | OPGEN_RETURN(result); |
28951 | #endif |
28952 | break; |
28953 | break; |
28954 | default: |
28955 | break; |
28956 | } |
28957 | break; |
28958 | case Opcode::XorFloat: |
28959 | switch (this->args.size()) { |
28960 | case 3: |
28961 | #if CPU(X86) || CPU(X86_64) |
28962 | jit.xorFloat(args[0].fpr(), args[1].fpr(), args[2].fpr()); |
28963 | OPGEN_RETURN(result); |
28964 | #endif |
28965 | break; |
28966 | break; |
28967 | case 2: |
28968 | #if CPU(X86) || CPU(X86_64) |
28969 | jit.xorFloat(args[0].fpr(), args[1].fpr()); |
28970 | OPGEN_RETURN(result); |
28971 | #endif |
28972 | break; |
28973 | break; |
28974 | default: |
28975 | break; |
28976 | } |
28977 | break; |
28978 | case Opcode::Lshift32: |
28979 | switch (this->args.size()) { |
28980 | case 3: |
28981 | switch (this->args[1].kind()) { |
28982 | case Arg::Tmp: |
28983 | #if CPU(ARM64) |
28984 | jit.lshift32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
28985 | OPGEN_RETURN(result); |
28986 | #endif |
28987 | break; |
28988 | break; |
28989 | case Arg::Imm: |
28990 | #if CPU(ARM64) |
28991 | jit.lshift32(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
28992 | OPGEN_RETURN(result); |
28993 | #endif |
28994 | break; |
28995 | break; |
28996 | default: |
28997 | break; |
28998 | } |
28999 | break; |
29000 | case 2: |
29001 | switch (this->args[0].kind()) { |
29002 | case Arg::Tmp: |
29003 | #if CPU(X86) || CPU(X86_64) |
29004 | jit.lshift32(args[0].gpr(), args[1].gpr()); |
29005 | OPGEN_RETURN(result); |
29006 | #endif |
29007 | break; |
29008 | break; |
29009 | case Arg::Imm: |
29010 | #if CPU(X86) || CPU(X86_64) |
29011 | jit.lshift32(args[0].asTrustedImm32(), args[1].gpr()); |
29012 | OPGEN_RETURN(result); |
29013 | #endif |
29014 | break; |
29015 | break; |
29016 | default: |
29017 | break; |
29018 | } |
29019 | break; |
29020 | default: |
29021 | break; |
29022 | } |
29023 | break; |
29024 | case Opcode::Lshift64: |
29025 | switch (this->args.size()) { |
29026 | case 3: |
29027 | switch (this->args[1].kind()) { |
29028 | case Arg::Tmp: |
29029 | #if CPU(ARM64) |
29030 | jit.lshift64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29031 | OPGEN_RETURN(result); |
29032 | #endif |
29033 | break; |
29034 | break; |
29035 | case Arg::Imm: |
29036 | #if CPU(ARM64) |
29037 | jit.lshift64(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29038 | OPGEN_RETURN(result); |
29039 | #endif |
29040 | break; |
29041 | break; |
29042 | default: |
29043 | break; |
29044 | } |
29045 | break; |
29046 | case 2: |
29047 | switch (this->args[0].kind()) { |
29048 | case Arg::Tmp: |
29049 | #if CPU(X86_64) |
29050 | jit.lshift64(args[0].gpr(), args[1].gpr()); |
29051 | OPGEN_RETURN(result); |
29052 | #endif |
29053 | break; |
29054 | break; |
29055 | case Arg::Imm: |
29056 | #if CPU(X86_64) |
29057 | jit.lshift64(args[0].asTrustedImm32(), args[1].gpr()); |
29058 | OPGEN_RETURN(result); |
29059 | #endif |
29060 | break; |
29061 | break; |
29062 | default: |
29063 | break; |
29064 | } |
29065 | break; |
29066 | default: |
29067 | break; |
29068 | } |
29069 | break; |
29070 | case Opcode::Rshift32: |
29071 | switch (this->args.size()) { |
29072 | case 3: |
29073 | switch (this->args[1].kind()) { |
29074 | case Arg::Tmp: |
29075 | #if CPU(ARM64) |
29076 | jit.rshift32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29077 | OPGEN_RETURN(result); |
29078 | #endif |
29079 | break; |
29080 | break; |
29081 | case Arg::Imm: |
29082 | #if CPU(ARM64) |
29083 | jit.rshift32(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29084 | OPGEN_RETURN(result); |
29085 | #endif |
29086 | break; |
29087 | break; |
29088 | default: |
29089 | break; |
29090 | } |
29091 | break; |
29092 | case 2: |
29093 | switch (this->args[0].kind()) { |
29094 | case Arg::Tmp: |
29095 | #if CPU(X86) || CPU(X86_64) |
29096 | jit.rshift32(args[0].gpr(), args[1].gpr()); |
29097 | OPGEN_RETURN(result); |
29098 | #endif |
29099 | break; |
29100 | break; |
29101 | case Arg::Imm: |
29102 | #if CPU(X86) || CPU(X86_64) |
29103 | jit.rshift32(args[0].asTrustedImm32(), args[1].gpr()); |
29104 | OPGEN_RETURN(result); |
29105 | #endif |
29106 | break; |
29107 | break; |
29108 | default: |
29109 | break; |
29110 | } |
29111 | break; |
29112 | default: |
29113 | break; |
29114 | } |
29115 | break; |
29116 | case Opcode::Rshift64: |
29117 | switch (this->args.size()) { |
29118 | case 3: |
29119 | switch (this->args[1].kind()) { |
29120 | case Arg::Tmp: |
29121 | #if CPU(ARM64) |
29122 | jit.rshift64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29123 | OPGEN_RETURN(result); |
29124 | #endif |
29125 | break; |
29126 | break; |
29127 | case Arg::Imm: |
29128 | #if CPU(ARM64) |
29129 | jit.rshift64(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29130 | OPGEN_RETURN(result); |
29131 | #endif |
29132 | break; |
29133 | break; |
29134 | default: |
29135 | break; |
29136 | } |
29137 | break; |
29138 | case 2: |
29139 | switch (this->args[0].kind()) { |
29140 | case Arg::Tmp: |
29141 | #if CPU(X86_64) |
29142 | jit.rshift64(args[0].gpr(), args[1].gpr()); |
29143 | OPGEN_RETURN(result); |
29144 | #endif |
29145 | break; |
29146 | break; |
29147 | case Arg::Imm: |
29148 | #if CPU(X86_64) |
29149 | jit.rshift64(args[0].asTrustedImm32(), args[1].gpr()); |
29150 | OPGEN_RETURN(result); |
29151 | #endif |
29152 | break; |
29153 | break; |
29154 | default: |
29155 | break; |
29156 | } |
29157 | break; |
29158 | default: |
29159 | break; |
29160 | } |
29161 | break; |
29162 | case Opcode::Urshift32: |
29163 | switch (this->args.size()) { |
29164 | case 3: |
29165 | switch (this->args[1].kind()) { |
29166 | case Arg::Tmp: |
29167 | #if CPU(ARM64) |
29168 | jit.urshift32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29169 | OPGEN_RETURN(result); |
29170 | #endif |
29171 | break; |
29172 | break; |
29173 | case Arg::Imm: |
29174 | #if CPU(ARM64) |
29175 | jit.urshift32(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29176 | OPGEN_RETURN(result); |
29177 | #endif |
29178 | break; |
29179 | break; |
29180 | default: |
29181 | break; |
29182 | } |
29183 | break; |
29184 | case 2: |
29185 | switch (this->args[0].kind()) { |
29186 | case Arg::Tmp: |
29187 | #if CPU(X86) || CPU(X86_64) |
29188 | jit.urshift32(args[0].gpr(), args[1].gpr()); |
29189 | OPGEN_RETURN(result); |
29190 | #endif |
29191 | break; |
29192 | break; |
29193 | case Arg::Imm: |
29194 | #if CPU(X86) || CPU(X86_64) |
29195 | jit.urshift32(args[0].asTrustedImm32(), args[1].gpr()); |
29196 | OPGEN_RETURN(result); |
29197 | #endif |
29198 | break; |
29199 | break; |
29200 | default: |
29201 | break; |
29202 | } |
29203 | break; |
29204 | default: |
29205 | break; |
29206 | } |
29207 | break; |
29208 | case Opcode::Urshift64: |
29209 | switch (this->args.size()) { |
29210 | case 3: |
29211 | switch (this->args[1].kind()) { |
29212 | case Arg::Tmp: |
29213 | #if CPU(ARM64) |
29214 | jit.urshift64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29215 | OPGEN_RETURN(result); |
29216 | #endif |
29217 | break; |
29218 | break; |
29219 | case Arg::Imm: |
29220 | #if CPU(ARM64) |
29221 | jit.urshift64(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29222 | OPGEN_RETURN(result); |
29223 | #endif |
29224 | break; |
29225 | break; |
29226 | default: |
29227 | break; |
29228 | } |
29229 | break; |
29230 | case 2: |
29231 | switch (this->args[0].kind()) { |
29232 | case Arg::Tmp: |
29233 | #if CPU(X86_64) |
29234 | jit.urshift64(args[0].gpr(), args[1].gpr()); |
29235 | OPGEN_RETURN(result); |
29236 | #endif |
29237 | break; |
29238 | break; |
29239 | case Arg::Imm: |
29240 | #if CPU(X86_64) |
29241 | jit.urshift64(args[0].asTrustedImm32(), args[1].gpr()); |
29242 | OPGEN_RETURN(result); |
29243 | #endif |
29244 | break; |
29245 | break; |
29246 | default: |
29247 | break; |
29248 | } |
29249 | break; |
29250 | default: |
29251 | break; |
29252 | } |
29253 | break; |
29254 | case Opcode::RotateRight32: |
29255 | switch (this->args.size()) { |
29256 | case 2: |
29257 | switch (this->args[0].kind()) { |
29258 | case Arg::Tmp: |
29259 | #if CPU(X86_64) |
29260 | jit.rotateRight32(args[0].gpr(), args[1].gpr()); |
29261 | OPGEN_RETURN(result); |
29262 | #endif |
29263 | break; |
29264 | break; |
29265 | case Arg::Imm: |
29266 | #if CPU(X86_64) |
29267 | jit.rotateRight32(args[0].asTrustedImm32(), args[1].gpr()); |
29268 | OPGEN_RETURN(result); |
29269 | #endif |
29270 | break; |
29271 | break; |
29272 | default: |
29273 | break; |
29274 | } |
29275 | break; |
29276 | case 3: |
29277 | switch (this->args[1].kind()) { |
29278 | case Arg::Tmp: |
29279 | #if CPU(ARM64) |
29280 | jit.rotateRight32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29281 | OPGEN_RETURN(result); |
29282 | #endif |
29283 | break; |
29284 | break; |
29285 | case Arg::Imm: |
29286 | #if CPU(ARM64) |
29287 | jit.rotateRight32(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29288 | OPGEN_RETURN(result); |
29289 | #endif |
29290 | break; |
29291 | break; |
29292 | default: |
29293 | break; |
29294 | } |
29295 | break; |
29296 | default: |
29297 | break; |
29298 | } |
29299 | break; |
29300 | case Opcode::RotateRight64: |
29301 | switch (this->args.size()) { |
29302 | case 2: |
29303 | switch (this->args[0].kind()) { |
29304 | case Arg::Tmp: |
29305 | #if CPU(X86_64) |
29306 | jit.rotateRight64(args[0].gpr(), args[1].gpr()); |
29307 | OPGEN_RETURN(result); |
29308 | #endif |
29309 | break; |
29310 | break; |
29311 | case Arg::Imm: |
29312 | #if CPU(X86_64) |
29313 | jit.rotateRight64(args[0].asTrustedImm32(), args[1].gpr()); |
29314 | OPGEN_RETURN(result); |
29315 | #endif |
29316 | break; |
29317 | break; |
29318 | default: |
29319 | break; |
29320 | } |
29321 | break; |
29322 | case 3: |
29323 | switch (this->args[1].kind()) { |
29324 | case Arg::Tmp: |
29325 | #if CPU(ARM64) |
29326 | jit.rotateRight64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29327 | OPGEN_RETURN(result); |
29328 | #endif |
29329 | break; |
29330 | break; |
29331 | case Arg::Imm: |
29332 | #if CPU(ARM64) |
29333 | jit.rotateRight64(args[0].gpr(), args[1].asTrustedImm32(), args[2].gpr()); |
29334 | OPGEN_RETURN(result); |
29335 | #endif |
29336 | break; |
29337 | break; |
29338 | default: |
29339 | break; |
29340 | } |
29341 | break; |
29342 | default: |
29343 | break; |
29344 | } |
29345 | break; |
29346 | case Opcode::RotateLeft32: |
29347 | switch (this->args[0].kind()) { |
29348 | case Arg::Tmp: |
29349 | #if CPU(X86_64) |
29350 | jit.rotateLeft32(args[0].gpr(), args[1].gpr()); |
29351 | OPGEN_RETURN(result); |
29352 | #endif |
29353 | break; |
29354 | break; |
29355 | case Arg::Imm: |
29356 | #if CPU(X86_64) |
29357 | jit.rotateLeft32(args[0].asTrustedImm32(), args[1].gpr()); |
29358 | OPGEN_RETURN(result); |
29359 | #endif |
29360 | break; |
29361 | break; |
29362 | default: |
29363 | break; |
29364 | } |
29365 | break; |
29366 | case Opcode::RotateLeft64: |
29367 | switch (this->args[0].kind()) { |
29368 | case Arg::Tmp: |
29369 | #if CPU(X86_64) |
29370 | jit.rotateLeft64(args[0].gpr(), args[1].gpr()); |
29371 | OPGEN_RETURN(result); |
29372 | #endif |
29373 | break; |
29374 | break; |
29375 | case Arg::Imm: |
29376 | #if CPU(X86_64) |
29377 | jit.rotateLeft64(args[0].asTrustedImm32(), args[1].gpr()); |
29378 | OPGEN_RETURN(result); |
29379 | #endif |
29380 | break; |
29381 | break; |
29382 | default: |
29383 | break; |
29384 | } |
29385 | break; |
29386 | case Opcode::Or32: |
29387 | switch (this->args.size()) { |
29388 | case 3: |
29389 | switch (this->args[0].kind()) { |
29390 | case Arg::Tmp: |
29391 | switch (this->args[1].kind()) { |
29392 | case Arg::Tmp: |
29393 | jit.or32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29394 | OPGEN_RETURN(result); |
29395 | break; |
29396 | break; |
29397 | case Arg::Addr: |
29398 | case Arg::Stack: |
29399 | case Arg::CallArg: |
29400 | #if CPU(X86) || CPU(X86_64) |
29401 | jit.or32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
29402 | OPGEN_RETURN(result); |
29403 | #endif |
29404 | break; |
29405 | break; |
29406 | default: |
29407 | break; |
29408 | } |
29409 | break; |
29410 | case Arg::BitImm: |
29411 | #if CPU(ARM64) |
29412 | jit.or32(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
29413 | OPGEN_RETURN(result); |
29414 | #endif |
29415 | break; |
29416 | break; |
29417 | case Arg::Addr: |
29418 | case Arg::Stack: |
29419 | case Arg::CallArg: |
29420 | #if CPU(X86) || CPU(X86_64) |
29421 | jit.or32(args[0].asAddress(), args[1].gpr(), args[2].gpr()); |
29422 | OPGEN_RETURN(result); |
29423 | #endif |
29424 | break; |
29425 | break; |
29426 | default: |
29427 | break; |
29428 | } |
29429 | break; |
29430 | case 2: |
29431 | switch (this->args[0].kind()) { |
29432 | case Arg::Tmp: |
29433 | switch (this->args[1].kind()) { |
29434 | case Arg::Tmp: |
29435 | jit.or32(args[0].gpr(), args[1].gpr()); |
29436 | OPGEN_RETURN(result); |
29437 | break; |
29438 | break; |
29439 | case Arg::Addr: |
29440 | case Arg::Stack: |
29441 | case Arg::CallArg: |
29442 | #if CPU(X86) || CPU(X86_64) |
29443 | jit.or32(args[0].gpr(), args[1].asAddress()); |
29444 | OPGEN_RETURN(result); |
29445 | #endif |
29446 | break; |
29447 | break; |
29448 | case Arg::Index: |
29449 | #if CPU(X86) || CPU(X86_64) |
29450 | jit.or32(args[0].gpr(), args[1].asBaseIndex()); |
29451 | OPGEN_RETURN(result); |
29452 | #endif |
29453 | break; |
29454 | break; |
29455 | default: |
29456 | break; |
29457 | } |
29458 | break; |
29459 | case Arg::Imm: |
29460 | switch (this->args[1].kind()) { |
29461 | case Arg::Tmp: |
29462 | #if CPU(X86) || CPU(X86_64) |
29463 | jit.or32(args[0].asTrustedImm32(), args[1].gpr()); |
29464 | OPGEN_RETURN(result); |
29465 | #endif |
29466 | break; |
29467 | break; |
29468 | case Arg::Addr: |
29469 | case Arg::Stack: |
29470 | case Arg::CallArg: |
29471 | #if CPU(X86) || CPU(X86_64) |
29472 | jit.or32(args[0].asTrustedImm32(), args[1].asAddress()); |
29473 | OPGEN_RETURN(result); |
29474 | #endif |
29475 | break; |
29476 | break; |
29477 | case Arg::Index: |
29478 | #if CPU(X86) || CPU(X86_64) |
29479 | jit.or32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
29480 | OPGEN_RETURN(result); |
29481 | #endif |
29482 | break; |
29483 | break; |
29484 | default: |
29485 | break; |
29486 | } |
29487 | break; |
29488 | case Arg::Addr: |
29489 | case Arg::Stack: |
29490 | case Arg::CallArg: |
29491 | #if CPU(X86) || CPU(X86_64) |
29492 | jit.or32(args[0].asAddress(), args[1].gpr()); |
29493 | OPGEN_RETURN(result); |
29494 | #endif |
29495 | break; |
29496 | break; |
29497 | case Arg::Index: |
29498 | #if CPU(X86) || CPU(X86_64) |
29499 | jit.or32(args[0].asBaseIndex(), args[1].gpr()); |
29500 | OPGEN_RETURN(result); |
29501 | #endif |
29502 | break; |
29503 | break; |
29504 | default: |
29505 | break; |
29506 | } |
29507 | break; |
29508 | default: |
29509 | break; |
29510 | } |
29511 | break; |
29512 | case Opcode::Or64: |
29513 | switch (this->args.size()) { |
29514 | case 3: |
29515 | switch (this->args[0].kind()) { |
29516 | case Arg::Tmp: |
29517 | #if CPU(X86_64) || CPU(ARM64) |
29518 | jit.or64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29519 | OPGEN_RETURN(result); |
29520 | #endif |
29521 | break; |
29522 | break; |
29523 | #if USE(JSVALUE64) |
29524 | case Arg::BitImm64: |
29525 | #if CPU(ARM64) |
29526 | jit.or64(args[0].asTrustedImm64(), args[1].gpr(), args[2].gpr()); |
29527 | OPGEN_RETURN(result); |
29528 | #endif |
29529 | break; |
29530 | break; |
29531 | #endif // USE(JSVALUE64) |
29532 | default: |
29533 | break; |
29534 | } |
29535 | break; |
29536 | case 2: |
29537 | switch (this->args[0].kind()) { |
29538 | case Arg::Tmp: |
29539 | switch (this->args[1].kind()) { |
29540 | case Arg::Tmp: |
29541 | #if CPU(X86_64) || CPU(ARM64) |
29542 | jit.or64(args[0].gpr(), args[1].gpr()); |
29543 | OPGEN_RETURN(result); |
29544 | #endif |
29545 | break; |
29546 | break; |
29547 | case Arg::Addr: |
29548 | case Arg::Stack: |
29549 | case Arg::CallArg: |
29550 | #if CPU(X86_64) |
29551 | jit.or64(args[0].gpr(), args[1].asAddress()); |
29552 | OPGEN_RETURN(result); |
29553 | #endif |
29554 | break; |
29555 | break; |
29556 | case Arg::Index: |
29557 | #if CPU(X86_64) |
29558 | jit.or64(args[0].gpr(), args[1].asBaseIndex()); |
29559 | OPGEN_RETURN(result); |
29560 | #endif |
29561 | break; |
29562 | break; |
29563 | default: |
29564 | break; |
29565 | } |
29566 | break; |
29567 | case Arg::Imm: |
29568 | switch (this->args[1].kind()) { |
29569 | case Arg::Tmp: |
29570 | #if CPU(X86_64) |
29571 | jit.or64(args[0].asTrustedImm32(), args[1].gpr()); |
29572 | OPGEN_RETURN(result); |
29573 | #endif |
29574 | break; |
29575 | break; |
29576 | case Arg::Addr: |
29577 | case Arg::Stack: |
29578 | case Arg::CallArg: |
29579 | #if CPU(X86_64) |
29580 | jit.or64(args[0].asTrustedImm32(), args[1].asAddress()); |
29581 | OPGEN_RETURN(result); |
29582 | #endif |
29583 | break; |
29584 | break; |
29585 | case Arg::Index: |
29586 | #if CPU(X86_64) |
29587 | jit.or64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
29588 | OPGEN_RETURN(result); |
29589 | #endif |
29590 | break; |
29591 | break; |
29592 | default: |
29593 | break; |
29594 | } |
29595 | break; |
29596 | case Arg::Addr: |
29597 | case Arg::Stack: |
29598 | case Arg::CallArg: |
29599 | #if CPU(X86_64) |
29600 | jit.or64(args[0].asAddress(), args[1].gpr()); |
29601 | OPGEN_RETURN(result); |
29602 | #endif |
29603 | break; |
29604 | break; |
29605 | case Arg::Index: |
29606 | #if CPU(X86_64) |
29607 | jit.or64(args[0].asBaseIndex(), args[1].gpr()); |
29608 | OPGEN_RETURN(result); |
29609 | #endif |
29610 | break; |
29611 | break; |
29612 | default: |
29613 | break; |
29614 | } |
29615 | break; |
29616 | default: |
29617 | break; |
29618 | } |
29619 | break; |
29620 | case Opcode::Xor32: |
29621 | switch (this->args.size()) { |
29622 | case 3: |
29623 | switch (this->args[0].kind()) { |
29624 | case Arg::Tmp: |
29625 | switch (this->args[1].kind()) { |
29626 | case Arg::Tmp: |
29627 | jit.xor32(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29628 | OPGEN_RETURN(result); |
29629 | break; |
29630 | break; |
29631 | case Arg::Addr: |
29632 | case Arg::Stack: |
29633 | case Arg::CallArg: |
29634 | #if CPU(X86) || CPU(X86_64) |
29635 | jit.xor32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
29636 | OPGEN_RETURN(result); |
29637 | #endif |
29638 | break; |
29639 | break; |
29640 | default: |
29641 | break; |
29642 | } |
29643 | break; |
29644 | case Arg::BitImm: |
29645 | #if CPU(ARM64) |
29646 | jit.xor32(args[0].asTrustedImm32(), args[1].gpr(), args[2].gpr()); |
29647 | OPGEN_RETURN(result); |
29648 | #endif |
29649 | break; |
29650 | break; |
29651 | case Arg::Addr: |
29652 | case Arg::Stack: |
29653 | case Arg::CallArg: |
29654 | #if CPU(X86) || CPU(X86_64) |
29655 | jit.xor32(args[0].asAddress(), args[1].gpr(), args[2].gpr()); |
29656 | OPGEN_RETURN(result); |
29657 | #endif |
29658 | break; |
29659 | break; |
29660 | default: |
29661 | break; |
29662 | } |
29663 | break; |
29664 | case 2: |
29665 | switch (this->args[0].kind()) { |
29666 | case Arg::Tmp: |
29667 | switch (this->args[1].kind()) { |
29668 | case Arg::Tmp: |
29669 | jit.xor32(args[0].gpr(), args[1].gpr()); |
29670 | OPGEN_RETURN(result); |
29671 | break; |
29672 | break; |
29673 | case Arg::Addr: |
29674 | case Arg::Stack: |
29675 | case Arg::CallArg: |
29676 | #if CPU(X86) || CPU(X86_64) |
29677 | jit.xor32(args[0].gpr(), args[1].asAddress()); |
29678 | OPGEN_RETURN(result); |
29679 | #endif |
29680 | break; |
29681 | break; |
29682 | case Arg::Index: |
29683 | #if CPU(X86) || CPU(X86_64) |
29684 | jit.xor32(args[0].gpr(), args[1].asBaseIndex()); |
29685 | OPGEN_RETURN(result); |
29686 | #endif |
29687 | break; |
29688 | break; |
29689 | default: |
29690 | break; |
29691 | } |
29692 | break; |
29693 | case Arg::Imm: |
29694 | switch (this->args[1].kind()) { |
29695 | case Arg::Tmp: |
29696 | #if CPU(X86) || CPU(X86_64) |
29697 | jit.xor32(args[0].asTrustedImm32(), args[1].gpr()); |
29698 | OPGEN_RETURN(result); |
29699 | #endif |
29700 | break; |
29701 | break; |
29702 | case Arg::Addr: |
29703 | case Arg::Stack: |
29704 | case Arg::CallArg: |
29705 | #if CPU(X86) || CPU(X86_64) |
29706 | jit.xor32(args[0].asTrustedImm32(), args[1].asAddress()); |
29707 | OPGEN_RETURN(result); |
29708 | #endif |
29709 | break; |
29710 | break; |
29711 | case Arg::Index: |
29712 | #if CPU(X86) || CPU(X86_64) |
29713 | jit.xor32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
29714 | OPGEN_RETURN(result); |
29715 | #endif |
29716 | break; |
29717 | break; |
29718 | default: |
29719 | break; |
29720 | } |
29721 | break; |
29722 | case Arg::Addr: |
29723 | case Arg::Stack: |
29724 | case Arg::CallArg: |
29725 | #if CPU(X86) || CPU(X86_64) |
29726 | jit.xor32(args[0].asAddress(), args[1].gpr()); |
29727 | OPGEN_RETURN(result); |
29728 | #endif |
29729 | break; |
29730 | break; |
29731 | case Arg::Index: |
29732 | #if CPU(X86) || CPU(X86_64) |
29733 | jit.xor32(args[0].asBaseIndex(), args[1].gpr()); |
29734 | OPGEN_RETURN(result); |
29735 | #endif |
29736 | break; |
29737 | break; |
29738 | default: |
29739 | break; |
29740 | } |
29741 | break; |
29742 | default: |
29743 | break; |
29744 | } |
29745 | break; |
29746 | case Opcode::Xor64: |
29747 | switch (this->args.size()) { |
29748 | case 3: |
29749 | switch (this->args[0].kind()) { |
29750 | case Arg::Tmp: |
29751 | #if CPU(X86_64) || CPU(ARM64) |
29752 | jit.xor64(args[0].gpr(), args[1].gpr(), args[2].gpr()); |
29753 | OPGEN_RETURN(result); |
29754 | #endif |
29755 | break; |
29756 | break; |
29757 | #if USE(JSVALUE64) |
29758 | case Arg::BitImm64: |
29759 | #if CPU(ARM64) |
29760 | jit.xor64(args[0].asTrustedImm64(), args[1].gpr(), args[2].gpr()); |
29761 | OPGEN_RETURN(result); |
29762 | #endif |
29763 | break; |
29764 | break; |
29765 | #endif // USE(JSVALUE64) |
29766 | default: |
29767 | break; |
29768 | } |
29769 | break; |
29770 | case 2: |
29771 | switch (this->args[0].kind()) { |
29772 | case Arg::Tmp: |
29773 | switch (this->args[1].kind()) { |
29774 | case Arg::Tmp: |
29775 | #if CPU(X86_64) || CPU(ARM64) |
29776 | jit.xor64(args[0].gpr(), args[1].gpr()); |
29777 | OPGEN_RETURN(result); |
29778 | #endif |
29779 | break; |
29780 | break; |
29781 | case Arg::Addr: |
29782 | case Arg::Stack: |
29783 | case Arg::CallArg: |
29784 | #if CPU(X86_64) |
29785 | jit.xor64(args[0].gpr(), args[1].asAddress()); |
29786 | OPGEN_RETURN(result); |
29787 | #endif |
29788 | break; |
29789 | break; |
29790 | case Arg::Index: |
29791 | #if CPU(X86_64) |
29792 | jit.xor64(args[0].gpr(), args[1].asBaseIndex()); |
29793 | OPGEN_RETURN(result); |
29794 | #endif |
29795 | break; |
29796 | break; |
29797 | default: |
29798 | break; |
29799 | } |
29800 | break; |
29801 | case Arg::Addr: |
29802 | case Arg::Stack: |
29803 | case Arg::CallArg: |
29804 | #if CPU(X86_64) |
29805 | jit.xor64(args[0].asAddress(), args[1].gpr()); |
29806 | OPGEN_RETURN(result); |
29807 | #endif |
29808 | break; |
29809 | break; |
29810 | case Arg::Index: |
29811 | #if CPU(X86_64) |
29812 | jit.xor64(args[0].asBaseIndex(), args[1].gpr()); |
29813 | OPGEN_RETURN(result); |
29814 | #endif |
29815 | break; |
29816 | break; |
29817 | case Arg::Imm: |
29818 | switch (this->args[1].kind()) { |
29819 | case Arg::Addr: |
29820 | case Arg::Stack: |
29821 | case Arg::CallArg: |
29822 | #if CPU(X86_64) |
29823 | jit.xor64(args[0].asTrustedImm32(), args[1].asAddress()); |
29824 | OPGEN_RETURN(result); |
29825 | #endif |
29826 | break; |
29827 | break; |
29828 | case Arg::Index: |
29829 | #if CPU(X86_64) |
29830 | jit.xor64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
29831 | OPGEN_RETURN(result); |
29832 | #endif |
29833 | break; |
29834 | break; |
29835 | case Arg::Tmp: |
29836 | #if CPU(X86_64) |
29837 | jit.xor64(args[0].asTrustedImm32(), args[1].gpr()); |
29838 | OPGEN_RETURN(result); |
29839 | #endif |
29840 | break; |
29841 | break; |
29842 | default: |
29843 | break; |
29844 | } |
29845 | break; |
29846 | default: |
29847 | break; |
29848 | } |
29849 | break; |
29850 | default: |
29851 | break; |
29852 | } |
29853 | break; |
29854 | case Opcode::Not32: |
29855 | switch (this->args.size()) { |
29856 | case 2: |
29857 | #if CPU(ARM64) |
29858 | jit.not32(args[0].gpr(), args[1].gpr()); |
29859 | OPGEN_RETURN(result); |
29860 | #endif |
29861 | break; |
29862 | break; |
29863 | case 1: |
29864 | switch (this->args[0].kind()) { |
29865 | case Arg::Tmp: |
29866 | #if CPU(X86) || CPU(X86_64) |
29867 | jit.not32(args[0].gpr()); |
29868 | OPGEN_RETURN(result); |
29869 | #endif |
29870 | break; |
29871 | break; |
29872 | case Arg::Addr: |
29873 | case Arg::Stack: |
29874 | case Arg::CallArg: |
29875 | #if CPU(X86) || CPU(X86_64) |
29876 | jit.not32(args[0].asAddress()); |
29877 | OPGEN_RETURN(result); |
29878 | #endif |
29879 | break; |
29880 | break; |
29881 | case Arg::Index: |
29882 | #if CPU(X86) || CPU(X86_64) |
29883 | jit.not32(args[0].asBaseIndex()); |
29884 | OPGEN_RETURN(result); |
29885 | #endif |
29886 | break; |
29887 | break; |
29888 | default: |
29889 | break; |
29890 | } |
29891 | break; |
29892 | default: |
29893 | break; |
29894 | } |
29895 | break; |
29896 | case Opcode::Not64: |
29897 | switch (this->args.size()) { |
29898 | case 2: |
29899 | #if CPU(ARM64) |
29900 | jit.not64(args[0].gpr(), args[1].gpr()); |
29901 | OPGEN_RETURN(result); |
29902 | #endif |
29903 | break; |
29904 | break; |
29905 | case 1: |
29906 | switch (this->args[0].kind()) { |
29907 | case Arg::Tmp: |
29908 | #if CPU(X86_64) |
29909 | jit.not64(args[0].gpr()); |
29910 | OPGEN_RETURN(result); |
29911 | #endif |
29912 | break; |
29913 | break; |
29914 | case Arg::Addr: |
29915 | case Arg::Stack: |
29916 | case Arg::CallArg: |
29917 | #if CPU(X86_64) |
29918 | jit.not64(args[0].asAddress()); |
29919 | OPGEN_RETURN(result); |
29920 | #endif |
29921 | break; |
29922 | break; |
29923 | case Arg::Index: |
29924 | #if CPU(X86_64) |
29925 | jit.not64(args[0].asBaseIndex()); |
29926 | OPGEN_RETURN(result); |
29927 | #endif |
29928 | break; |
29929 | break; |
29930 | default: |
29931 | break; |
29932 | } |
29933 | break; |
29934 | default: |
29935 | break; |
29936 | } |
29937 | break; |
29938 | case Opcode::AbsDouble: |
29939 | #if CPU(ARM64) |
29940 | jit.absDouble(args[0].fpr(), args[1].fpr()); |
29941 | OPGEN_RETURN(result); |
29942 | #endif |
29943 | break; |
29944 | break; |
29945 | case Opcode::AbsFloat: |
29946 | #if CPU(ARM64) |
29947 | jit.absFloat(args[0].fpr(), args[1].fpr()); |
29948 | OPGEN_RETURN(result); |
29949 | #endif |
29950 | break; |
29951 | break; |
29952 | case Opcode::CeilDouble: |
29953 | switch (this->args[0].kind()) { |
29954 | case Arg::Tmp: |
29955 | jit.ceilDouble(args[0].fpr(), args[1].fpr()); |
29956 | OPGEN_RETURN(result); |
29957 | break; |
29958 | break; |
29959 | case Arg::Addr: |
29960 | case Arg::Stack: |
29961 | case Arg::CallArg: |
29962 | #if CPU(X86) || CPU(X86_64) |
29963 | jit.ceilDouble(args[0].asAddress(), args[1].fpr()); |
29964 | OPGEN_RETURN(result); |
29965 | #endif |
29966 | break; |
29967 | break; |
29968 | default: |
29969 | break; |
29970 | } |
29971 | break; |
29972 | case Opcode::CeilFloat: |
29973 | switch (this->args[0].kind()) { |
29974 | case Arg::Tmp: |
29975 | jit.ceilFloat(args[0].fpr(), args[1].fpr()); |
29976 | OPGEN_RETURN(result); |
29977 | break; |
29978 | break; |
29979 | case Arg::Addr: |
29980 | case Arg::Stack: |
29981 | case Arg::CallArg: |
29982 | #if CPU(X86) || CPU(X86_64) |
29983 | jit.ceilFloat(args[0].asAddress(), args[1].fpr()); |
29984 | OPGEN_RETURN(result); |
29985 | #endif |
29986 | break; |
29987 | break; |
29988 | default: |
29989 | break; |
29990 | } |
29991 | break; |
29992 | case Opcode::FloorDouble: |
29993 | switch (this->args[0].kind()) { |
29994 | case Arg::Tmp: |
29995 | jit.floorDouble(args[0].fpr(), args[1].fpr()); |
29996 | OPGEN_RETURN(result); |
29997 | break; |
29998 | break; |
29999 | case Arg::Addr: |
30000 | case Arg::Stack: |
30001 | case Arg::CallArg: |
30002 | #if CPU(X86) || CPU(X86_64) |
30003 | jit.floorDouble(args[0].asAddress(), args[1].fpr()); |
30004 | OPGEN_RETURN(result); |
30005 | #endif |
30006 | break; |
30007 | break; |
30008 | default: |
30009 | break; |
30010 | } |
30011 | break; |
30012 | case Opcode::FloorFloat: |
30013 | switch (this->args[0].kind()) { |
30014 | case Arg::Tmp: |
30015 | jit.floorFloat(args[0].fpr(), args[1].fpr()); |
30016 | OPGEN_RETURN(result); |
30017 | break; |
30018 | break; |
30019 | case Arg::Addr: |
30020 | case Arg::Stack: |
30021 | case Arg::CallArg: |
30022 | #if CPU(X86) || CPU(X86_64) |
30023 | jit.floorFloat(args[0].asAddress(), args[1].fpr()); |
30024 | OPGEN_RETURN(result); |
30025 | #endif |
30026 | break; |
30027 | break; |
30028 | default: |
30029 | break; |
30030 | } |
30031 | break; |
30032 | case Opcode::SqrtDouble: |
30033 | switch (this->args[0].kind()) { |
30034 | case Arg::Tmp: |
30035 | jit.sqrtDouble(args[0].fpr(), args[1].fpr()); |
30036 | OPGEN_RETURN(result); |
30037 | break; |
30038 | break; |
30039 | case Arg::Addr: |
30040 | case Arg::Stack: |
30041 | case Arg::CallArg: |
30042 | #if CPU(X86) || CPU(X86_64) |
30043 | jit.sqrtDouble(args[0].asAddress(), args[1].fpr()); |
30044 | OPGEN_RETURN(result); |
30045 | #endif |
30046 | break; |
30047 | break; |
30048 | default: |
30049 | break; |
30050 | } |
30051 | break; |
30052 | case Opcode::SqrtFloat: |
30053 | switch (this->args[0].kind()) { |
30054 | case Arg::Tmp: |
30055 | jit.sqrtFloat(args[0].fpr(), args[1].fpr()); |
30056 | OPGEN_RETURN(result); |
30057 | break; |
30058 | break; |
30059 | case Arg::Addr: |
30060 | case Arg::Stack: |
30061 | case Arg::CallArg: |
30062 | #if CPU(X86) || CPU(X86_64) |
30063 | jit.sqrtFloat(args[0].asAddress(), args[1].fpr()); |
30064 | OPGEN_RETURN(result); |
30065 | #endif |
30066 | break; |
30067 | break; |
30068 | default: |
30069 | break; |
30070 | } |
30071 | break; |
30072 | case Opcode::ConvertInt32ToDouble: |
30073 | switch (this->args[0].kind()) { |
30074 | case Arg::Tmp: |
30075 | jit.convertInt32ToDouble(args[0].gpr(), args[1].fpr()); |
30076 | OPGEN_RETURN(result); |
30077 | break; |
30078 | break; |
30079 | case Arg::Addr: |
30080 | case Arg::Stack: |
30081 | case Arg::CallArg: |
30082 | #if CPU(X86) || CPU(X86_64) |
30083 | jit.convertInt32ToDouble(args[0].asAddress(), args[1].fpr()); |
30084 | OPGEN_RETURN(result); |
30085 | #endif |
30086 | break; |
30087 | break; |
30088 | default: |
30089 | break; |
30090 | } |
30091 | break; |
30092 | case Opcode::ConvertInt64ToDouble: |
30093 | switch (this->args[0].kind()) { |
30094 | case Arg::Tmp: |
30095 | #if CPU(X86_64) || CPU(ARM64) |
30096 | jit.convertInt64ToDouble(args[0].gpr(), args[1].fpr()); |
30097 | OPGEN_RETURN(result); |
30098 | #endif |
30099 | break; |
30100 | break; |
30101 | case Arg::Addr: |
30102 | case Arg::Stack: |
30103 | case Arg::CallArg: |
30104 | #if CPU(X86_64) |
30105 | jit.convertInt64ToDouble(args[0].asAddress(), args[1].fpr()); |
30106 | OPGEN_RETURN(result); |
30107 | #endif |
30108 | break; |
30109 | break; |
30110 | default: |
30111 | break; |
30112 | } |
30113 | break; |
30114 | case Opcode::ConvertInt32ToFloat: |
30115 | switch (this->args[0].kind()) { |
30116 | case Arg::Tmp: |
30117 | jit.convertInt32ToFloat(args[0].gpr(), args[1].fpr()); |
30118 | OPGEN_RETURN(result); |
30119 | break; |
30120 | break; |
30121 | case Arg::Addr: |
30122 | case Arg::Stack: |
30123 | case Arg::CallArg: |
30124 | #if CPU(X86) || CPU(X86_64) |
30125 | jit.convertInt32ToFloat(args[0].asAddress(), args[1].fpr()); |
30126 | OPGEN_RETURN(result); |
30127 | #endif |
30128 | break; |
30129 | break; |
30130 | default: |
30131 | break; |
30132 | } |
30133 | break; |
30134 | case Opcode::ConvertInt64ToFloat: |
30135 | switch (this->args[0].kind()) { |
30136 | case Arg::Tmp: |
30137 | #if CPU(X86_64) || CPU(ARM64) |
30138 | jit.convertInt64ToFloat(args[0].gpr(), args[1].fpr()); |
30139 | OPGEN_RETURN(result); |
30140 | #endif |
30141 | break; |
30142 | break; |
30143 | case Arg::Addr: |
30144 | case Arg::Stack: |
30145 | case Arg::CallArg: |
30146 | #if CPU(X86_64) |
30147 | jit.convertInt64ToFloat(args[0].asAddress(), args[1].fpr()); |
30148 | OPGEN_RETURN(result); |
30149 | #endif |
30150 | break; |
30151 | break; |
30152 | default: |
30153 | break; |
30154 | } |
30155 | break; |
30156 | case Opcode::CountLeadingZeros32: |
30157 | switch (this->args[0].kind()) { |
30158 | case Arg::Tmp: |
30159 | jit.countLeadingZeros32(args[0].gpr(), args[1].gpr()); |
30160 | OPGEN_RETURN(result); |
30161 | break; |
30162 | break; |
30163 | case Arg::Addr: |
30164 | case Arg::Stack: |
30165 | case Arg::CallArg: |
30166 | #if CPU(X86) || CPU(X86_64) |
30167 | jit.countLeadingZeros32(args[0].asAddress(), args[1].gpr()); |
30168 | OPGEN_RETURN(result); |
30169 | #endif |
30170 | break; |
30171 | break; |
30172 | default: |
30173 | break; |
30174 | } |
30175 | break; |
30176 | case Opcode::CountLeadingZeros64: |
30177 | switch (this->args[0].kind()) { |
30178 | case Arg::Tmp: |
30179 | #if CPU(X86_64) || CPU(ARM64) |
30180 | jit.countLeadingZeros64(args[0].gpr(), args[1].gpr()); |
30181 | OPGEN_RETURN(result); |
30182 | #endif |
30183 | break; |
30184 | break; |
30185 | case Arg::Addr: |
30186 | case Arg::Stack: |
30187 | case Arg::CallArg: |
30188 | #if CPU(X86_64) |
30189 | jit.countLeadingZeros64(args[0].asAddress(), args[1].gpr()); |
30190 | OPGEN_RETURN(result); |
30191 | #endif |
30192 | break; |
30193 | break; |
30194 | default: |
30195 | break; |
30196 | } |
30197 | break; |
30198 | case Opcode::ConvertDoubleToFloat: |
30199 | switch (this->args[0].kind()) { |
30200 | case Arg::Tmp: |
30201 | jit.convertDoubleToFloat(args[0].fpr(), args[1].fpr()); |
30202 | OPGEN_RETURN(result); |
30203 | break; |
30204 | break; |
30205 | case Arg::Addr: |
30206 | case Arg::Stack: |
30207 | case Arg::CallArg: |
30208 | #if CPU(X86) || CPU(X86_64) |
30209 | jit.convertDoubleToFloat(args[0].asAddress(), args[1].fpr()); |
30210 | OPGEN_RETURN(result); |
30211 | #endif |
30212 | break; |
30213 | break; |
30214 | default: |
30215 | break; |
30216 | } |
30217 | break; |
30218 | case Opcode::ConvertFloatToDouble: |
30219 | switch (this->args[0].kind()) { |
30220 | case Arg::Tmp: |
30221 | jit.convertFloatToDouble(args[0].fpr(), args[1].fpr()); |
30222 | OPGEN_RETURN(result); |
30223 | break; |
30224 | break; |
30225 | case Arg::Addr: |
30226 | case Arg::Stack: |
30227 | case Arg::CallArg: |
30228 | #if CPU(X86) || CPU(X86_64) |
30229 | jit.convertFloatToDouble(args[0].asAddress(), args[1].fpr()); |
30230 | OPGEN_RETURN(result); |
30231 | #endif |
30232 | break; |
30233 | break; |
30234 | default: |
30235 | break; |
30236 | } |
30237 | break; |
30238 | case Opcode::Move: |
30239 | switch (this->args.size()) { |
30240 | case 2: |
30241 | switch (this->args[0].kind()) { |
30242 | case Arg::Tmp: |
30243 | switch (this->args[1].kind()) { |
30244 | case Arg::Tmp: |
30245 | jit.move(args[0].gpr(), args[1].gpr()); |
30246 | OPGEN_RETURN(result); |
30247 | break; |
30248 | break; |
30249 | case Arg::Addr: |
30250 | case Arg::Stack: |
30251 | case Arg::CallArg: |
30252 | jit.storePtr(args[0].gpr(), args[1].asAddress()); |
30253 | OPGEN_RETURN(result); |
30254 | break; |
30255 | break; |
30256 | case Arg::Index: |
30257 | jit.storePtr(args[0].gpr(), args[1].asBaseIndex()); |
30258 | OPGEN_RETURN(result); |
30259 | break; |
30260 | break; |
30261 | default: |
30262 | break; |
30263 | } |
30264 | break; |
30265 | case Arg::Imm: |
30266 | switch (this->args[1].kind()) { |
30267 | case Arg::Tmp: |
30268 | jit.signExtend32ToPtr(args[0].asTrustedImm32(), args[1].gpr()); |
30269 | OPGEN_RETURN(result); |
30270 | break; |
30271 | break; |
30272 | case Arg::Addr: |
30273 | case Arg::Stack: |
30274 | case Arg::CallArg: |
30275 | #if CPU(X86) || CPU(X86_64) |
30276 | jit.storePtr(args[0].asTrustedImm32(), args[1].asAddress()); |
30277 | OPGEN_RETURN(result); |
30278 | #endif |
30279 | break; |
30280 | break; |
30281 | default: |
30282 | break; |
30283 | } |
30284 | break; |
30285 | #if USE(JSVALUE64) |
30286 | case Arg::BigImm: |
30287 | jit.move(args[0].asTrustedImm64(), args[1].gpr()); |
30288 | OPGEN_RETURN(result); |
30289 | break; |
30290 | break; |
30291 | #endif // USE(JSVALUE64) |
30292 | case Arg::Addr: |
30293 | case Arg::Stack: |
30294 | case Arg::CallArg: |
30295 | jit.loadPtr(args[0].asAddress(), args[1].gpr()); |
30296 | OPGEN_RETURN(result); |
30297 | break; |
30298 | break; |
30299 | case Arg::Index: |
30300 | jit.loadPtr(args[0].asBaseIndex(), args[1].gpr()); |
30301 | OPGEN_RETURN(result); |
30302 | break; |
30303 | break; |
30304 | default: |
30305 | break; |
30306 | } |
30307 | break; |
30308 | case 3: |
30309 | jit.move(args[0].asAddress(), args[1].asAddress(), args[2].gpr()); |
30310 | OPGEN_RETURN(result); |
30311 | break; |
30312 | break; |
30313 | default: |
30314 | break; |
30315 | } |
30316 | break; |
30317 | case Opcode::Swap32: |
30318 | switch (this->args[1].kind()) { |
30319 | case Arg::Tmp: |
30320 | #if CPU(X86) || CPU(X86_64) |
30321 | jit.swap32(args[0].gpr(), args[1].gpr()); |
30322 | OPGEN_RETURN(result); |
30323 | #endif |
30324 | break; |
30325 | break; |
30326 | case Arg::Addr: |
30327 | case Arg::Stack: |
30328 | case Arg::CallArg: |
30329 | #if CPU(X86) || CPU(X86_64) |
30330 | jit.swap32(args[0].gpr(), args[1].asAddress()); |
30331 | OPGEN_RETURN(result); |
30332 | #endif |
30333 | break; |
30334 | break; |
30335 | default: |
30336 | break; |
30337 | } |
30338 | break; |
30339 | case Opcode::Swap64: |
30340 | switch (this->args[1].kind()) { |
30341 | case Arg::Tmp: |
30342 | #if CPU(X86_64) |
30343 | jit.swap64(args[0].gpr(), args[1].gpr()); |
30344 | OPGEN_RETURN(result); |
30345 | #endif |
30346 | break; |
30347 | break; |
30348 | case Arg::Addr: |
30349 | case Arg::Stack: |
30350 | case Arg::CallArg: |
30351 | #if CPU(X86_64) |
30352 | jit.swap64(args[0].gpr(), args[1].asAddress()); |
30353 | OPGEN_RETURN(result); |
30354 | #endif |
30355 | break; |
30356 | break; |
30357 | default: |
30358 | break; |
30359 | } |
30360 | break; |
30361 | case Opcode::Move32: |
30362 | switch (this->args.size()) { |
30363 | case 2: |
30364 | switch (this->args[0].kind()) { |
30365 | case Arg::Tmp: |
30366 | switch (this->args[1].kind()) { |
30367 | case Arg::Tmp: |
30368 | jit.zeroExtend32ToPtr(args[0].gpr(), args[1].gpr()); |
30369 | OPGEN_RETURN(result); |
30370 | break; |
30371 | break; |
30372 | case Arg::Addr: |
30373 | case Arg::Stack: |
30374 | case Arg::CallArg: |
30375 | jit.store32(args[0].gpr(), args[1].asAddress()); |
30376 | OPGEN_RETURN(result); |
30377 | break; |
30378 | break; |
30379 | case Arg::Index: |
30380 | jit.store32(args[0].gpr(), args[1].asBaseIndex()); |
30381 | OPGEN_RETURN(result); |
30382 | break; |
30383 | break; |
30384 | default: |
30385 | break; |
30386 | } |
30387 | break; |
30388 | case Arg::Addr: |
30389 | case Arg::Stack: |
30390 | case Arg::CallArg: |
30391 | jit.load32(args[0].asAddress(), args[1].gpr()); |
30392 | OPGEN_RETURN(result); |
30393 | break; |
30394 | break; |
30395 | case Arg::Index: |
30396 | jit.load32(args[0].asBaseIndex(), args[1].gpr()); |
30397 | OPGEN_RETURN(result); |
30398 | break; |
30399 | break; |
30400 | case Arg::Imm: |
30401 | switch (this->args[1].kind()) { |
30402 | case Arg::Tmp: |
30403 | #if CPU(X86) || CPU(X86_64) |
30404 | jit.zeroExtend32ToPtr(args[0].asTrustedImm32(), args[1].gpr()); |
30405 | OPGEN_RETURN(result); |
30406 | #endif |
30407 | break; |
30408 | break; |
30409 | case Arg::Addr: |
30410 | case Arg::Stack: |
30411 | case Arg::CallArg: |
30412 | #if CPU(X86) || CPU(X86_64) |
30413 | jit.store32(args[0].asTrustedImm32(), args[1].asAddress()); |
30414 | OPGEN_RETURN(result); |
30415 | #endif |
30416 | break; |
30417 | break; |
30418 | case Arg::Index: |
30419 | #if CPU(X86) || CPU(X86_64) |
30420 | jit.store32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
30421 | OPGEN_RETURN(result); |
30422 | #endif |
30423 | break; |
30424 | break; |
30425 | default: |
30426 | break; |
30427 | } |
30428 | break; |
30429 | default: |
30430 | break; |
30431 | } |
30432 | break; |
30433 | case 3: |
30434 | jit.move32(args[0].asAddress(), args[1].asAddress(), args[2].gpr()); |
30435 | OPGEN_RETURN(result); |
30436 | break; |
30437 | break; |
30438 | default: |
30439 | break; |
30440 | } |
30441 | break; |
30442 | case Opcode::StoreZero32: |
30443 | switch (this->args[0].kind()) { |
30444 | case Arg::Addr: |
30445 | case Arg::Stack: |
30446 | case Arg::CallArg: |
30447 | jit.storeZero32(args[0].asAddress()); |
30448 | OPGEN_RETURN(result); |
30449 | break; |
30450 | break; |
30451 | case Arg::Index: |
30452 | jit.storeZero32(args[0].asBaseIndex()); |
30453 | OPGEN_RETURN(result); |
30454 | break; |
30455 | break; |
30456 | default: |
30457 | break; |
30458 | } |
30459 | break; |
30460 | case Opcode::StoreZero64: |
30461 | switch (this->args[0].kind()) { |
30462 | case Arg::Addr: |
30463 | case Arg::Stack: |
30464 | case Arg::CallArg: |
30465 | #if CPU(X86_64) || CPU(ARM64) |
30466 | jit.storeZero64(args[0].asAddress()); |
30467 | OPGEN_RETURN(result); |
30468 | #endif |
30469 | break; |
30470 | break; |
30471 | case Arg::Index: |
30472 | #if CPU(X86_64) || CPU(ARM64) |
30473 | jit.storeZero64(args[0].asBaseIndex()); |
30474 | OPGEN_RETURN(result); |
30475 | #endif |
30476 | break; |
30477 | break; |
30478 | default: |
30479 | break; |
30480 | } |
30481 | break; |
30482 | case Opcode::SignExtend32ToPtr: |
30483 | jit.signExtend32ToPtr(args[0].gpr(), args[1].gpr()); |
30484 | OPGEN_RETURN(result); |
30485 | break; |
30486 | break; |
30487 | case Opcode::ZeroExtend8To32: |
30488 | switch (this->args[0].kind()) { |
30489 | case Arg::Tmp: |
30490 | jit.zeroExtend8To32(args[0].gpr(), args[1].gpr()); |
30491 | OPGEN_RETURN(result); |
30492 | break; |
30493 | break; |
30494 | case Arg::Addr: |
30495 | case Arg::Stack: |
30496 | case Arg::CallArg: |
30497 | #if CPU(X86) || CPU(X86_64) |
30498 | jit.load8(args[0].asAddress(), args[1].gpr()); |
30499 | OPGEN_RETURN(result); |
30500 | #endif |
30501 | break; |
30502 | break; |
30503 | case Arg::Index: |
30504 | #if CPU(X86) || CPU(X86_64) |
30505 | jit.load8(args[0].asBaseIndex(), args[1].gpr()); |
30506 | OPGEN_RETURN(result); |
30507 | #endif |
30508 | break; |
30509 | break; |
30510 | default: |
30511 | break; |
30512 | } |
30513 | break; |
30514 | case Opcode::SignExtend8To32: |
30515 | switch (this->args[0].kind()) { |
30516 | case Arg::Tmp: |
30517 | jit.signExtend8To32(args[0].gpr(), args[1].gpr()); |
30518 | OPGEN_RETURN(result); |
30519 | break; |
30520 | break; |
30521 | case Arg::Addr: |
30522 | case Arg::Stack: |
30523 | case Arg::CallArg: |
30524 | #if CPU(X86) || CPU(X86_64) |
30525 | jit.load8SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30526 | OPGEN_RETURN(result); |
30527 | #endif |
30528 | break; |
30529 | break; |
30530 | case Arg::Index: |
30531 | #if CPU(X86) || CPU(X86_64) |
30532 | jit.load8SignedExtendTo32(args[0].asBaseIndex(), args[1].gpr()); |
30533 | OPGEN_RETURN(result); |
30534 | #endif |
30535 | break; |
30536 | break; |
30537 | default: |
30538 | break; |
30539 | } |
30540 | break; |
30541 | case Opcode::ZeroExtend16To32: |
30542 | switch (this->args[0].kind()) { |
30543 | case Arg::Tmp: |
30544 | jit.zeroExtend16To32(args[0].gpr(), args[1].gpr()); |
30545 | OPGEN_RETURN(result); |
30546 | break; |
30547 | break; |
30548 | case Arg::Addr: |
30549 | case Arg::Stack: |
30550 | case Arg::CallArg: |
30551 | #if CPU(X86) || CPU(X86_64) |
30552 | jit.load16(args[0].asAddress(), args[1].gpr()); |
30553 | OPGEN_RETURN(result); |
30554 | #endif |
30555 | break; |
30556 | break; |
30557 | case Arg::Index: |
30558 | #if CPU(X86) || CPU(X86_64) |
30559 | jit.load16(args[0].asBaseIndex(), args[1].gpr()); |
30560 | OPGEN_RETURN(result); |
30561 | #endif |
30562 | break; |
30563 | break; |
30564 | default: |
30565 | break; |
30566 | } |
30567 | break; |
30568 | case Opcode::SignExtend16To32: |
30569 | switch (this->args[0].kind()) { |
30570 | case Arg::Tmp: |
30571 | jit.signExtend16To32(args[0].gpr(), args[1].gpr()); |
30572 | OPGEN_RETURN(result); |
30573 | break; |
30574 | break; |
30575 | case Arg::Addr: |
30576 | case Arg::Stack: |
30577 | case Arg::CallArg: |
30578 | #if CPU(X86) || CPU(X86_64) |
30579 | jit.load16SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30580 | OPGEN_RETURN(result); |
30581 | #endif |
30582 | break; |
30583 | break; |
30584 | case Arg::Index: |
30585 | #if CPU(X86) || CPU(X86_64) |
30586 | jit.load16SignedExtendTo32(args[0].asBaseIndex(), args[1].gpr()); |
30587 | OPGEN_RETURN(result); |
30588 | #endif |
30589 | break; |
30590 | break; |
30591 | default: |
30592 | break; |
30593 | } |
30594 | break; |
30595 | case Opcode::MoveFloat: |
30596 | switch (this->args.size()) { |
30597 | case 2: |
30598 | switch (this->args[0].kind()) { |
30599 | case Arg::Tmp: |
30600 | switch (this->args[1].kind()) { |
30601 | case Arg::Tmp: |
30602 | jit.moveDouble(args[0].fpr(), args[1].fpr()); |
30603 | OPGEN_RETURN(result); |
30604 | break; |
30605 | break; |
30606 | case Arg::Addr: |
30607 | case Arg::Stack: |
30608 | case Arg::CallArg: |
30609 | jit.storeFloat(args[0].fpr(), args[1].asAddress()); |
30610 | OPGEN_RETURN(result); |
30611 | break; |
30612 | break; |
30613 | case Arg::Index: |
30614 | jit.storeFloat(args[0].fpr(), args[1].asBaseIndex()); |
30615 | OPGEN_RETURN(result); |
30616 | break; |
30617 | break; |
30618 | default: |
30619 | break; |
30620 | } |
30621 | break; |
30622 | case Arg::Addr: |
30623 | case Arg::Stack: |
30624 | case Arg::CallArg: |
30625 | jit.loadFloat(args[0].asAddress(), args[1].fpr()); |
30626 | OPGEN_RETURN(result); |
30627 | break; |
30628 | break; |
30629 | case Arg::Index: |
30630 | jit.loadFloat(args[0].asBaseIndex(), args[1].fpr()); |
30631 | OPGEN_RETURN(result); |
30632 | break; |
30633 | break; |
30634 | default: |
30635 | break; |
30636 | } |
30637 | break; |
30638 | case 3: |
30639 | jit.moveFloat(args[0].asAddress(), args[1].asAddress(), args[2].fpr()); |
30640 | OPGEN_RETURN(result); |
30641 | break; |
30642 | break; |
30643 | default: |
30644 | break; |
30645 | } |
30646 | break; |
30647 | case Opcode::MoveDouble: |
30648 | switch (this->args.size()) { |
30649 | case 2: |
30650 | switch (this->args[0].kind()) { |
30651 | case Arg::Tmp: |
30652 | switch (this->args[1].kind()) { |
30653 | case Arg::Tmp: |
30654 | jit.moveDouble(args[0].fpr(), args[1].fpr()); |
30655 | OPGEN_RETURN(result); |
30656 | break; |
30657 | break; |
30658 | case Arg::Addr: |
30659 | case Arg::Stack: |
30660 | case Arg::CallArg: |
30661 | jit.storeDouble(args[0].fpr(), args[1].asAddress()); |
30662 | OPGEN_RETURN(result); |
30663 | break; |
30664 | break; |
30665 | case Arg::Index: |
30666 | jit.storeDouble(args[0].fpr(), args[1].asBaseIndex()); |
30667 | OPGEN_RETURN(result); |
30668 | break; |
30669 | break; |
30670 | default: |
30671 | break; |
30672 | } |
30673 | break; |
30674 | case Arg::Addr: |
30675 | case Arg::Stack: |
30676 | case Arg::CallArg: |
30677 | jit.loadDouble(args[0].asAddress(), args[1].fpr()); |
30678 | OPGEN_RETURN(result); |
30679 | break; |
30680 | break; |
30681 | case Arg::Index: |
30682 | jit.loadDouble(args[0].asBaseIndex(), args[1].fpr()); |
30683 | OPGEN_RETURN(result); |
30684 | break; |
30685 | break; |
30686 | default: |
30687 | break; |
30688 | } |
30689 | break; |
30690 | case 3: |
30691 | jit.moveDouble(args[0].asAddress(), args[1].asAddress(), args[2].fpr()); |
30692 | OPGEN_RETURN(result); |
30693 | break; |
30694 | break; |
30695 | default: |
30696 | break; |
30697 | } |
30698 | break; |
30699 | case Opcode::MoveZeroToDouble: |
30700 | jit.moveZeroToDouble(args[0].fpr()); |
30701 | OPGEN_RETURN(result); |
30702 | break; |
30703 | break; |
30704 | case Opcode::Move64ToDouble: |
30705 | switch (this->args[0].kind()) { |
30706 | case Arg::Tmp: |
30707 | #if CPU(X86_64) || CPU(ARM64) |
30708 | jit.move64ToDouble(args[0].gpr(), args[1].fpr()); |
30709 | OPGEN_RETURN(result); |
30710 | #endif |
30711 | break; |
30712 | break; |
30713 | case Arg::Addr: |
30714 | case Arg::Stack: |
30715 | case Arg::CallArg: |
30716 | #if CPU(X86_64) |
30717 | jit.loadDouble(args[0].asAddress(), args[1].fpr()); |
30718 | OPGEN_RETURN(result); |
30719 | #endif |
30720 | break; |
30721 | break; |
30722 | case Arg::Index: |
30723 | #if CPU(X86_64) || CPU(ARM64) |
30724 | jit.loadDouble(args[0].asBaseIndex(), args[1].fpr()); |
30725 | OPGEN_RETURN(result); |
30726 | #endif |
30727 | break; |
30728 | break; |
30729 | default: |
30730 | break; |
30731 | } |
30732 | break; |
30733 | case Opcode::Move32ToFloat: |
30734 | switch (this->args[0].kind()) { |
30735 | case Arg::Tmp: |
30736 | jit.move32ToFloat(args[0].gpr(), args[1].fpr()); |
30737 | OPGEN_RETURN(result); |
30738 | break; |
30739 | break; |
30740 | case Arg::Addr: |
30741 | case Arg::Stack: |
30742 | case Arg::CallArg: |
30743 | #if CPU(X86) || CPU(X86_64) |
30744 | jit.loadFloat(args[0].asAddress(), args[1].fpr()); |
30745 | OPGEN_RETURN(result); |
30746 | #endif |
30747 | break; |
30748 | break; |
30749 | case Arg::Index: |
30750 | jit.loadFloat(args[0].asBaseIndex(), args[1].fpr()); |
30751 | OPGEN_RETURN(result); |
30752 | break; |
30753 | break; |
30754 | default: |
30755 | break; |
30756 | } |
30757 | break; |
30758 | case Opcode::MoveDoubleTo64: |
30759 | switch (this->args[0].kind()) { |
30760 | case Arg::Tmp: |
30761 | #if CPU(X86_64) || CPU(ARM64) |
30762 | jit.moveDoubleTo64(args[0].fpr(), args[1].gpr()); |
30763 | OPGEN_RETURN(result); |
30764 | #endif |
30765 | break; |
30766 | break; |
30767 | case Arg::Addr: |
30768 | case Arg::Stack: |
30769 | case Arg::CallArg: |
30770 | #if CPU(X86_64) || CPU(ARM64) |
30771 | jit.load64(args[0].asAddress(), args[1].gpr()); |
30772 | OPGEN_RETURN(result); |
30773 | #endif |
30774 | break; |
30775 | break; |
30776 | case Arg::Index: |
30777 | #if CPU(X86_64) || CPU(ARM64) |
30778 | jit.load64(args[0].asBaseIndex(), args[1].gpr()); |
30779 | OPGEN_RETURN(result); |
30780 | #endif |
30781 | break; |
30782 | break; |
30783 | default: |
30784 | break; |
30785 | } |
30786 | break; |
30787 | case Opcode::MoveFloatTo32: |
30788 | switch (this->args[0].kind()) { |
30789 | case Arg::Tmp: |
30790 | jit.moveFloatTo32(args[0].fpr(), args[1].gpr()); |
30791 | OPGEN_RETURN(result); |
30792 | break; |
30793 | break; |
30794 | case Arg::Addr: |
30795 | case Arg::Stack: |
30796 | case Arg::CallArg: |
30797 | jit.load32(args[0].asAddress(), args[1].gpr()); |
30798 | OPGEN_RETURN(result); |
30799 | break; |
30800 | break; |
30801 | case Arg::Index: |
30802 | jit.load32(args[0].asBaseIndex(), args[1].gpr()); |
30803 | OPGEN_RETURN(result); |
30804 | break; |
30805 | break; |
30806 | default: |
30807 | break; |
30808 | } |
30809 | break; |
30810 | case Opcode::Load8: |
30811 | switch (this->args[0].kind()) { |
30812 | case Arg::Addr: |
30813 | case Arg::Stack: |
30814 | case Arg::CallArg: |
30815 | jit.load8(args[0].asAddress(), args[1].gpr()); |
30816 | OPGEN_RETURN(result); |
30817 | break; |
30818 | break; |
30819 | case Arg::Index: |
30820 | jit.load8(args[0].asBaseIndex(), args[1].gpr()); |
30821 | OPGEN_RETURN(result); |
30822 | break; |
30823 | break; |
30824 | default: |
30825 | break; |
30826 | } |
30827 | break; |
30828 | case Opcode::LoadAcq8: |
30829 | #if CPU(ARMv7) || CPU(ARM64) |
30830 | jit.loadAcq8(args[0].asAddress(), args[1].gpr()); |
30831 | OPGEN_RETURN(result); |
30832 | #endif |
30833 | break; |
30834 | break; |
30835 | case Opcode::Store8: |
30836 | switch (this->args[0].kind()) { |
30837 | case Arg::Tmp: |
30838 | switch (this->args[1].kind()) { |
30839 | case Arg::Index: |
30840 | jit.store8(args[0].gpr(), args[1].asBaseIndex()); |
30841 | OPGEN_RETURN(result); |
30842 | break; |
30843 | break; |
30844 | case Arg::Addr: |
30845 | case Arg::Stack: |
30846 | case Arg::CallArg: |
30847 | jit.store8(args[0].gpr(), args[1].asAddress()); |
30848 | OPGEN_RETURN(result); |
30849 | break; |
30850 | break; |
30851 | default: |
30852 | break; |
30853 | } |
30854 | break; |
30855 | case Arg::Imm: |
30856 | switch (this->args[1].kind()) { |
30857 | case Arg::Index: |
30858 | #if CPU(X86) || CPU(X86_64) |
30859 | jit.store8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
30860 | OPGEN_RETURN(result); |
30861 | #endif |
30862 | break; |
30863 | break; |
30864 | case Arg::Addr: |
30865 | case Arg::Stack: |
30866 | case Arg::CallArg: |
30867 | #if CPU(X86) || CPU(X86_64) |
30868 | jit.store8(args[0].asTrustedImm32(), args[1].asAddress()); |
30869 | OPGEN_RETURN(result); |
30870 | #endif |
30871 | break; |
30872 | break; |
30873 | default: |
30874 | break; |
30875 | } |
30876 | break; |
30877 | default: |
30878 | break; |
30879 | } |
30880 | break; |
30881 | case Opcode::StoreRel8: |
30882 | #if CPU(ARMv7) || CPU(ARM64) |
30883 | jit.storeRel8(args[0].gpr(), args[1].asAddress()); |
30884 | OPGEN_RETURN(result); |
30885 | #endif |
30886 | break; |
30887 | break; |
30888 | case Opcode::Load8SignedExtendTo32: |
30889 | switch (this->args[0].kind()) { |
30890 | case Arg::Addr: |
30891 | case Arg::Stack: |
30892 | case Arg::CallArg: |
30893 | jit.load8SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30894 | OPGEN_RETURN(result); |
30895 | break; |
30896 | break; |
30897 | case Arg::Index: |
30898 | jit.load8SignedExtendTo32(args[0].asBaseIndex(), args[1].gpr()); |
30899 | OPGEN_RETURN(result); |
30900 | break; |
30901 | break; |
30902 | default: |
30903 | break; |
30904 | } |
30905 | break; |
30906 | case Opcode::LoadAcq8SignedExtendTo32: |
30907 | #if CPU(ARMv7) || CPU(ARM64) |
30908 | jit.loadAcq8SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30909 | OPGEN_RETURN(result); |
30910 | #endif |
30911 | break; |
30912 | break; |
30913 | case Opcode::Load16: |
30914 | switch (this->args[0].kind()) { |
30915 | case Arg::Addr: |
30916 | case Arg::Stack: |
30917 | case Arg::CallArg: |
30918 | jit.load16(args[0].asAddress(), args[1].gpr()); |
30919 | OPGEN_RETURN(result); |
30920 | break; |
30921 | break; |
30922 | case Arg::Index: |
30923 | jit.load16(args[0].asBaseIndex(), args[1].gpr()); |
30924 | OPGEN_RETURN(result); |
30925 | break; |
30926 | break; |
30927 | default: |
30928 | break; |
30929 | } |
30930 | break; |
30931 | case Opcode::LoadAcq16: |
30932 | #if CPU(ARMv7) || CPU(ARM64) |
30933 | jit.loadAcq16(args[0].asAddress(), args[1].gpr()); |
30934 | OPGEN_RETURN(result); |
30935 | #endif |
30936 | break; |
30937 | break; |
30938 | case Opcode::Load16SignedExtendTo32: |
30939 | switch (this->args[0].kind()) { |
30940 | case Arg::Addr: |
30941 | case Arg::Stack: |
30942 | case Arg::CallArg: |
30943 | jit.load16SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30944 | OPGEN_RETURN(result); |
30945 | break; |
30946 | break; |
30947 | case Arg::Index: |
30948 | jit.load16SignedExtendTo32(args[0].asBaseIndex(), args[1].gpr()); |
30949 | OPGEN_RETURN(result); |
30950 | break; |
30951 | break; |
30952 | default: |
30953 | break; |
30954 | } |
30955 | break; |
30956 | case Opcode::LoadAcq16SignedExtendTo32: |
30957 | #if CPU(ARMv7) || CPU(ARM64) |
30958 | jit.loadAcq16SignedExtendTo32(args[0].asAddress(), args[1].gpr()); |
30959 | OPGEN_RETURN(result); |
30960 | #endif |
30961 | break; |
30962 | break; |
30963 | case Opcode::Store16: |
30964 | switch (this->args[0].kind()) { |
30965 | case Arg::Tmp: |
30966 | switch (this->args[1].kind()) { |
30967 | case Arg::Index: |
30968 | jit.store16(args[0].gpr(), args[1].asBaseIndex()); |
30969 | OPGEN_RETURN(result); |
30970 | break; |
30971 | break; |
30972 | case Arg::Addr: |
30973 | case Arg::Stack: |
30974 | case Arg::CallArg: |
30975 | jit.store16(args[0].gpr(), args[1].asAddress()); |
30976 | OPGEN_RETURN(result); |
30977 | break; |
30978 | break; |
30979 | default: |
30980 | break; |
30981 | } |
30982 | break; |
30983 | case Arg::Imm: |
30984 | switch (this->args[1].kind()) { |
30985 | case Arg::Index: |
30986 | #if CPU(X86) || CPU(X86_64) |
30987 | jit.store16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
30988 | OPGEN_RETURN(result); |
30989 | #endif |
30990 | break; |
30991 | break; |
30992 | case Arg::Addr: |
30993 | case Arg::Stack: |
30994 | case Arg::CallArg: |
30995 | #if CPU(X86) || CPU(X86_64) |
30996 | jit.store16(args[0].asTrustedImm32(), args[1].asAddress()); |
30997 | OPGEN_RETURN(result); |
30998 | #endif |
30999 | break; |
31000 | break; |
31001 | default: |
31002 | break; |
31003 | } |
31004 | break; |
31005 | default: |
31006 | break; |
31007 | } |
31008 | break; |
31009 | case Opcode::StoreRel16: |
31010 | #if CPU(ARMv7) || CPU(ARM64) |
31011 | jit.storeRel16(args[0].gpr(), args[1].asAddress()); |
31012 | OPGEN_RETURN(result); |
31013 | #endif |
31014 | break; |
31015 | break; |
31016 | case Opcode::LoadAcq32: |
31017 | #if CPU(ARMv7) || CPU(ARM64) |
31018 | jit.loadAcq32(args[0].asAddress(), args[1].gpr()); |
31019 | OPGEN_RETURN(result); |
31020 | #endif |
31021 | break; |
31022 | break; |
31023 | case Opcode::StoreRel32: |
31024 | #if CPU(ARMv7) || CPU(ARM64) |
31025 | jit.storeRel32(args[0].gpr(), args[1].asAddress()); |
31026 | OPGEN_RETURN(result); |
31027 | #endif |
31028 | break; |
31029 | break; |
31030 | case Opcode::LoadAcq64: |
31031 | #if CPU(ARM64) |
31032 | jit.loadAcq64(args[0].asAddress(), args[1].gpr()); |
31033 | OPGEN_RETURN(result); |
31034 | #endif |
31035 | break; |
31036 | break; |
31037 | case Opcode::StoreRel64: |
31038 | #if CPU(ARM64) |
31039 | jit.storeRel64(args[0].gpr(), args[1].asAddress()); |
31040 | OPGEN_RETURN(result); |
31041 | #endif |
31042 | break; |
31043 | break; |
31044 | case Opcode::Xchg8: |
31045 | switch (this->args[1].kind()) { |
31046 | case Arg::Addr: |
31047 | case Arg::Stack: |
31048 | case Arg::CallArg: |
31049 | #if CPU(X86) || CPU(X86_64) |
31050 | jit.xchg8(args[0].gpr(), args[1].asAddress()); |
31051 | OPGEN_RETURN(result); |
31052 | #endif |
31053 | break; |
31054 | break; |
31055 | case Arg::Index: |
31056 | #if CPU(X86) || CPU(X86_64) |
31057 | jit.xchg8(args[0].gpr(), args[1].asBaseIndex()); |
31058 | OPGEN_RETURN(result); |
31059 | #endif |
31060 | break; |
31061 | break; |
31062 | default: |
31063 | break; |
31064 | } |
31065 | break; |
31066 | case Opcode::Xchg16: |
31067 | switch (this->args[1].kind()) { |
31068 | case Arg::Addr: |
31069 | case Arg::Stack: |
31070 | case Arg::CallArg: |
31071 | #if CPU(X86) || CPU(X86_64) |
31072 | jit.xchg16(args[0].gpr(), args[1].asAddress()); |
31073 | OPGEN_RETURN(result); |
31074 | #endif |
31075 | break; |
31076 | break; |
31077 | case Arg::Index: |
31078 | #if CPU(X86) || CPU(X86_64) |
31079 | jit.xchg16(args[0].gpr(), args[1].asBaseIndex()); |
31080 | OPGEN_RETURN(result); |
31081 | #endif |
31082 | break; |
31083 | break; |
31084 | default: |
31085 | break; |
31086 | } |
31087 | break; |
31088 | case Opcode::Xchg32: |
31089 | switch (this->args[1].kind()) { |
31090 | case Arg::Addr: |
31091 | case Arg::Stack: |
31092 | case Arg::CallArg: |
31093 | #if CPU(X86) || CPU(X86_64) |
31094 | jit.xchg32(args[0].gpr(), args[1].asAddress()); |
31095 | OPGEN_RETURN(result); |
31096 | #endif |
31097 | break; |
31098 | break; |
31099 | case Arg::Index: |
31100 | #if CPU(X86) || CPU(X86_64) |
31101 | jit.xchg32(args[0].gpr(), args[1].asBaseIndex()); |
31102 | OPGEN_RETURN(result); |
31103 | #endif |
31104 | break; |
31105 | break; |
31106 | default: |
31107 | break; |
31108 | } |
31109 | break; |
31110 | case Opcode::Xchg64: |
31111 | switch (this->args[1].kind()) { |
31112 | case Arg::Addr: |
31113 | case Arg::Stack: |
31114 | case Arg::CallArg: |
31115 | #if CPU(X86_64) |
31116 | jit.xchg64(args[0].gpr(), args[1].asAddress()); |
31117 | OPGEN_RETURN(result); |
31118 | #endif |
31119 | break; |
31120 | break; |
31121 | case Arg::Index: |
31122 | #if CPU(X86_64) |
31123 | jit.xchg64(args[0].gpr(), args[1].asBaseIndex()); |
31124 | OPGEN_RETURN(result); |
31125 | #endif |
31126 | break; |
31127 | break; |
31128 | default: |
31129 | break; |
31130 | } |
31131 | break; |
31132 | case Opcode::AtomicStrongCAS8: |
31133 | switch (this->args.size()) { |
31134 | case 5: |
31135 | switch (this->args[3].kind()) { |
31136 | case Arg::Addr: |
31137 | case Arg::Stack: |
31138 | case Arg::CallArg: |
31139 | #if CPU(X86) || CPU(X86_64) |
31140 | jit.atomicStrongCAS8(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress(), args[4].gpr()); |
31141 | OPGEN_RETURN(result); |
31142 | #endif |
31143 | break; |
31144 | break; |
31145 | case Arg::Index: |
31146 | #if CPU(X86) || CPU(X86_64) |
31147 | jit.atomicStrongCAS8(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex(), args[4].gpr()); |
31148 | OPGEN_RETURN(result); |
31149 | #endif |
31150 | break; |
31151 | break; |
31152 | default: |
31153 | break; |
31154 | } |
31155 | break; |
31156 | case 3: |
31157 | switch (this->args[2].kind()) { |
31158 | case Arg::Addr: |
31159 | case Arg::Stack: |
31160 | case Arg::CallArg: |
31161 | #if CPU(X86) || CPU(X86_64) |
31162 | jit.atomicStrongCAS8(args[0].gpr(), args[1].gpr(), args[2].asAddress()); |
31163 | OPGEN_RETURN(result); |
31164 | #endif |
31165 | break; |
31166 | break; |
31167 | case Arg::Index: |
31168 | #if CPU(X86) || CPU(X86_64) |
31169 | jit.atomicStrongCAS8(args[0].gpr(), args[1].gpr(), args[2].asBaseIndex()); |
31170 | OPGEN_RETURN(result); |
31171 | #endif |
31172 | break; |
31173 | break; |
31174 | default: |
31175 | break; |
31176 | } |
31177 | break; |
31178 | default: |
31179 | break; |
31180 | } |
31181 | break; |
31182 | case Opcode::AtomicStrongCAS16: |
31183 | switch (this->args.size()) { |
31184 | case 5: |
31185 | switch (this->args[3].kind()) { |
31186 | case Arg::Addr: |
31187 | case Arg::Stack: |
31188 | case Arg::CallArg: |
31189 | #if CPU(X86) || CPU(X86_64) |
31190 | jit.atomicStrongCAS16(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress(), args[4].gpr()); |
31191 | OPGEN_RETURN(result); |
31192 | #endif |
31193 | break; |
31194 | break; |
31195 | case Arg::Index: |
31196 | #if CPU(X86) || CPU(X86_64) |
31197 | jit.atomicStrongCAS16(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex(), args[4].gpr()); |
31198 | OPGEN_RETURN(result); |
31199 | #endif |
31200 | break; |
31201 | break; |
31202 | default: |
31203 | break; |
31204 | } |
31205 | break; |
31206 | case 3: |
31207 | switch (this->args[2].kind()) { |
31208 | case Arg::Addr: |
31209 | case Arg::Stack: |
31210 | case Arg::CallArg: |
31211 | #if CPU(X86) || CPU(X86_64) |
31212 | jit.atomicStrongCAS16(args[0].gpr(), args[1].gpr(), args[2].asAddress()); |
31213 | OPGEN_RETURN(result); |
31214 | #endif |
31215 | break; |
31216 | break; |
31217 | case Arg::Index: |
31218 | #if CPU(X86) || CPU(X86_64) |
31219 | jit.atomicStrongCAS16(args[0].gpr(), args[1].gpr(), args[2].asBaseIndex()); |
31220 | OPGEN_RETURN(result); |
31221 | #endif |
31222 | break; |
31223 | break; |
31224 | default: |
31225 | break; |
31226 | } |
31227 | break; |
31228 | default: |
31229 | break; |
31230 | } |
31231 | break; |
31232 | case Opcode::AtomicStrongCAS32: |
31233 | switch (this->args.size()) { |
31234 | case 5: |
31235 | switch (this->args[3].kind()) { |
31236 | case Arg::Addr: |
31237 | case Arg::Stack: |
31238 | case Arg::CallArg: |
31239 | #if CPU(X86) || CPU(X86_64) |
31240 | jit.atomicStrongCAS32(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress(), args[4].gpr()); |
31241 | OPGEN_RETURN(result); |
31242 | #endif |
31243 | break; |
31244 | break; |
31245 | case Arg::Index: |
31246 | #if CPU(X86) || CPU(X86_64) |
31247 | jit.atomicStrongCAS32(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex(), args[4].gpr()); |
31248 | OPGEN_RETURN(result); |
31249 | #endif |
31250 | break; |
31251 | break; |
31252 | default: |
31253 | break; |
31254 | } |
31255 | break; |
31256 | case 3: |
31257 | switch (this->args[2].kind()) { |
31258 | case Arg::Addr: |
31259 | case Arg::Stack: |
31260 | case Arg::CallArg: |
31261 | #if CPU(X86) || CPU(X86_64) |
31262 | jit.atomicStrongCAS32(args[0].gpr(), args[1].gpr(), args[2].asAddress()); |
31263 | OPGEN_RETURN(result); |
31264 | #endif |
31265 | break; |
31266 | break; |
31267 | case Arg::Index: |
31268 | #if CPU(X86) || CPU(X86_64) |
31269 | jit.atomicStrongCAS32(args[0].gpr(), args[1].gpr(), args[2].asBaseIndex()); |
31270 | OPGEN_RETURN(result); |
31271 | #endif |
31272 | break; |
31273 | break; |
31274 | default: |
31275 | break; |
31276 | } |
31277 | break; |
31278 | default: |
31279 | break; |
31280 | } |
31281 | break; |
31282 | case Opcode::AtomicStrongCAS64: |
31283 | switch (this->args.size()) { |
31284 | case 5: |
31285 | switch (this->args[3].kind()) { |
31286 | case Arg::Addr: |
31287 | case Arg::Stack: |
31288 | case Arg::CallArg: |
31289 | #if CPU(X86_64) |
31290 | jit.atomicStrongCAS64(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress(), args[4].gpr()); |
31291 | OPGEN_RETURN(result); |
31292 | #endif |
31293 | break; |
31294 | break; |
31295 | case Arg::Index: |
31296 | #if CPU(X86_64) |
31297 | jit.atomicStrongCAS64(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex(), args[4].gpr()); |
31298 | OPGEN_RETURN(result); |
31299 | #endif |
31300 | break; |
31301 | break; |
31302 | default: |
31303 | break; |
31304 | } |
31305 | break; |
31306 | case 3: |
31307 | switch (this->args[2].kind()) { |
31308 | case Arg::Addr: |
31309 | case Arg::Stack: |
31310 | case Arg::CallArg: |
31311 | #if CPU(X86_64) |
31312 | jit.atomicStrongCAS64(args[0].gpr(), args[1].gpr(), args[2].asAddress()); |
31313 | OPGEN_RETURN(result); |
31314 | #endif |
31315 | break; |
31316 | break; |
31317 | case Arg::Index: |
31318 | #if CPU(X86_64) |
31319 | jit.atomicStrongCAS64(args[0].gpr(), args[1].gpr(), args[2].asBaseIndex()); |
31320 | OPGEN_RETURN(result); |
31321 | #endif |
31322 | break; |
31323 | break; |
31324 | default: |
31325 | break; |
31326 | } |
31327 | break; |
31328 | default: |
31329 | break; |
31330 | } |
31331 | break; |
31332 | case Opcode::BranchAtomicStrongCAS8: |
31333 | switch (this->args[3].kind()) { |
31334 | case Arg::Addr: |
31335 | case Arg::Stack: |
31336 | case Arg::CallArg: |
31337 | #if CPU(X86) || CPU(X86_64) |
31338 | result = jit.branchAtomicStrongCAS8(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress()); |
31339 | OPGEN_RETURN(result); |
31340 | #endif |
31341 | break; |
31342 | break; |
31343 | case Arg::Index: |
31344 | #if CPU(X86) || CPU(X86_64) |
31345 | result = jit.branchAtomicStrongCAS8(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex()); |
31346 | OPGEN_RETURN(result); |
31347 | #endif |
31348 | break; |
31349 | break; |
31350 | default: |
31351 | break; |
31352 | } |
31353 | break; |
31354 | case Opcode::BranchAtomicStrongCAS16: |
31355 | switch (this->args[3].kind()) { |
31356 | case Arg::Addr: |
31357 | case Arg::Stack: |
31358 | case Arg::CallArg: |
31359 | #if CPU(X86) || CPU(X86_64) |
31360 | result = jit.branchAtomicStrongCAS16(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress()); |
31361 | OPGEN_RETURN(result); |
31362 | #endif |
31363 | break; |
31364 | break; |
31365 | case Arg::Index: |
31366 | #if CPU(X86) || CPU(X86_64) |
31367 | result = jit.branchAtomicStrongCAS16(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex()); |
31368 | OPGEN_RETURN(result); |
31369 | #endif |
31370 | break; |
31371 | break; |
31372 | default: |
31373 | break; |
31374 | } |
31375 | break; |
31376 | case Opcode::BranchAtomicStrongCAS32: |
31377 | switch (this->args[3].kind()) { |
31378 | case Arg::Addr: |
31379 | case Arg::Stack: |
31380 | case Arg::CallArg: |
31381 | #if CPU(X86) || CPU(X86_64) |
31382 | result = jit.branchAtomicStrongCAS32(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress()); |
31383 | OPGEN_RETURN(result); |
31384 | #endif |
31385 | break; |
31386 | break; |
31387 | case Arg::Index: |
31388 | #if CPU(X86) || CPU(X86_64) |
31389 | result = jit.branchAtomicStrongCAS32(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex()); |
31390 | OPGEN_RETURN(result); |
31391 | #endif |
31392 | break; |
31393 | break; |
31394 | default: |
31395 | break; |
31396 | } |
31397 | break; |
31398 | case Opcode::BranchAtomicStrongCAS64: |
31399 | switch (this->args[3].kind()) { |
31400 | case Arg::Addr: |
31401 | case Arg::Stack: |
31402 | case Arg::CallArg: |
31403 | #if CPU(X86_64) |
31404 | result = jit.branchAtomicStrongCAS64(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asAddress()); |
31405 | OPGEN_RETURN(result); |
31406 | #endif |
31407 | break; |
31408 | break; |
31409 | case Arg::Index: |
31410 | #if CPU(X86_64) |
31411 | result = jit.branchAtomicStrongCAS64(args[0].asStatusCondition(), args[1].gpr(), args[2].gpr(), args[3].asBaseIndex()); |
31412 | OPGEN_RETURN(result); |
31413 | #endif |
31414 | break; |
31415 | break; |
31416 | default: |
31417 | break; |
31418 | } |
31419 | break; |
31420 | case Opcode::AtomicAdd8: |
31421 | switch (this->args[0].kind()) { |
31422 | case Arg::Imm: |
31423 | switch (this->args[1].kind()) { |
31424 | case Arg::Addr: |
31425 | case Arg::Stack: |
31426 | case Arg::CallArg: |
31427 | #if CPU(X86) || CPU(X86_64) |
31428 | jit.atomicAdd8(args[0].asTrustedImm32(), args[1].asAddress()); |
31429 | OPGEN_RETURN(result); |
31430 | #endif |
31431 | break; |
31432 | break; |
31433 | case Arg::Index: |
31434 | #if CPU(X86) || CPU(X86_64) |
31435 | jit.atomicAdd8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31436 | OPGEN_RETURN(result); |
31437 | #endif |
31438 | break; |
31439 | break; |
31440 | default: |
31441 | break; |
31442 | } |
31443 | break; |
31444 | case Arg::Tmp: |
31445 | switch (this->args[1].kind()) { |
31446 | case Arg::Addr: |
31447 | case Arg::Stack: |
31448 | case Arg::CallArg: |
31449 | #if CPU(X86) || CPU(X86_64) |
31450 | jit.atomicAdd8(args[0].gpr(), args[1].asAddress()); |
31451 | OPGEN_RETURN(result); |
31452 | #endif |
31453 | break; |
31454 | break; |
31455 | case Arg::Index: |
31456 | #if CPU(X86) || CPU(X86_64) |
31457 | jit.atomicAdd8(args[0].gpr(), args[1].asBaseIndex()); |
31458 | OPGEN_RETURN(result); |
31459 | #endif |
31460 | break; |
31461 | break; |
31462 | default: |
31463 | break; |
31464 | } |
31465 | break; |
31466 | default: |
31467 | break; |
31468 | } |
31469 | break; |
31470 | case Opcode::AtomicAdd16: |
31471 | switch (this->args[0].kind()) { |
31472 | case Arg::Imm: |
31473 | switch (this->args[1].kind()) { |
31474 | case Arg::Addr: |
31475 | case Arg::Stack: |
31476 | case Arg::CallArg: |
31477 | #if CPU(X86) || CPU(X86_64) |
31478 | jit.atomicAdd16(args[0].asTrustedImm32(), args[1].asAddress()); |
31479 | OPGEN_RETURN(result); |
31480 | #endif |
31481 | break; |
31482 | break; |
31483 | case Arg::Index: |
31484 | #if CPU(X86) || CPU(X86_64) |
31485 | jit.atomicAdd16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31486 | OPGEN_RETURN(result); |
31487 | #endif |
31488 | break; |
31489 | break; |
31490 | default: |
31491 | break; |
31492 | } |
31493 | break; |
31494 | case Arg::Tmp: |
31495 | switch (this->args[1].kind()) { |
31496 | case Arg::Addr: |
31497 | case Arg::Stack: |
31498 | case Arg::CallArg: |
31499 | #if CPU(X86) || CPU(X86_64) |
31500 | jit.atomicAdd16(args[0].gpr(), args[1].asAddress()); |
31501 | OPGEN_RETURN(result); |
31502 | #endif |
31503 | break; |
31504 | break; |
31505 | case Arg::Index: |
31506 | #if CPU(X86) || CPU(X86_64) |
31507 | jit.atomicAdd16(args[0].gpr(), args[1].asBaseIndex()); |
31508 | OPGEN_RETURN(result); |
31509 | #endif |
31510 | break; |
31511 | break; |
31512 | default: |
31513 | break; |
31514 | } |
31515 | break; |
31516 | default: |
31517 | break; |
31518 | } |
31519 | break; |
31520 | case Opcode::AtomicAdd32: |
31521 | switch (this->args[0].kind()) { |
31522 | case Arg::Imm: |
31523 | switch (this->args[1].kind()) { |
31524 | case Arg::Addr: |
31525 | case Arg::Stack: |
31526 | case Arg::CallArg: |
31527 | #if CPU(X86) || CPU(X86_64) |
31528 | jit.atomicAdd32(args[0].asTrustedImm32(), args[1].asAddress()); |
31529 | OPGEN_RETURN(result); |
31530 | #endif |
31531 | break; |
31532 | break; |
31533 | case Arg::Index: |
31534 | #if CPU(X86) || CPU(X86_64) |
31535 | jit.atomicAdd32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31536 | OPGEN_RETURN(result); |
31537 | #endif |
31538 | break; |
31539 | break; |
31540 | default: |
31541 | break; |
31542 | } |
31543 | break; |
31544 | case Arg::Tmp: |
31545 | switch (this->args[1].kind()) { |
31546 | case Arg::Addr: |
31547 | case Arg::Stack: |
31548 | case Arg::CallArg: |
31549 | #if CPU(X86) || CPU(X86_64) |
31550 | jit.atomicAdd32(args[0].gpr(), args[1].asAddress()); |
31551 | OPGEN_RETURN(result); |
31552 | #endif |
31553 | break; |
31554 | break; |
31555 | case Arg::Index: |
31556 | #if CPU(X86) || CPU(X86_64) |
31557 | jit.atomicAdd32(args[0].gpr(), args[1].asBaseIndex()); |
31558 | OPGEN_RETURN(result); |
31559 | #endif |
31560 | break; |
31561 | break; |
31562 | default: |
31563 | break; |
31564 | } |
31565 | break; |
31566 | default: |
31567 | break; |
31568 | } |
31569 | break; |
31570 | case Opcode::AtomicAdd64: |
31571 | switch (this->args[0].kind()) { |
31572 | case Arg::Imm: |
31573 | switch (this->args[1].kind()) { |
31574 | case Arg::Addr: |
31575 | case Arg::Stack: |
31576 | case Arg::CallArg: |
31577 | #if CPU(X86_64) |
31578 | jit.atomicAdd64(args[0].asTrustedImm32(), args[1].asAddress()); |
31579 | OPGEN_RETURN(result); |
31580 | #endif |
31581 | break; |
31582 | break; |
31583 | case Arg::Index: |
31584 | #if CPU(X86_64) |
31585 | jit.atomicAdd64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31586 | OPGEN_RETURN(result); |
31587 | #endif |
31588 | break; |
31589 | break; |
31590 | default: |
31591 | break; |
31592 | } |
31593 | break; |
31594 | case Arg::Tmp: |
31595 | switch (this->args[1].kind()) { |
31596 | case Arg::Addr: |
31597 | case Arg::Stack: |
31598 | case Arg::CallArg: |
31599 | #if CPU(X86_64) |
31600 | jit.atomicAdd64(args[0].gpr(), args[1].asAddress()); |
31601 | OPGEN_RETURN(result); |
31602 | #endif |
31603 | break; |
31604 | break; |
31605 | case Arg::Index: |
31606 | #if CPU(X86_64) |
31607 | jit.atomicAdd64(args[0].gpr(), args[1].asBaseIndex()); |
31608 | OPGEN_RETURN(result); |
31609 | #endif |
31610 | break; |
31611 | break; |
31612 | default: |
31613 | break; |
31614 | } |
31615 | break; |
31616 | default: |
31617 | break; |
31618 | } |
31619 | break; |
31620 | case Opcode::AtomicSub8: |
31621 | switch (this->args[0].kind()) { |
31622 | case Arg::Imm: |
31623 | switch (this->args[1].kind()) { |
31624 | case Arg::Addr: |
31625 | case Arg::Stack: |
31626 | case Arg::CallArg: |
31627 | #if CPU(X86) || CPU(X86_64) |
31628 | jit.atomicSub8(args[0].asTrustedImm32(), args[1].asAddress()); |
31629 | OPGEN_RETURN(result); |
31630 | #endif |
31631 | break; |
31632 | break; |
31633 | case Arg::Index: |
31634 | #if CPU(X86) || CPU(X86_64) |
31635 | jit.atomicSub8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31636 | OPGEN_RETURN(result); |
31637 | #endif |
31638 | break; |
31639 | break; |
31640 | default: |
31641 | break; |
31642 | } |
31643 | break; |
31644 | case Arg::Tmp: |
31645 | switch (this->args[1].kind()) { |
31646 | case Arg::Addr: |
31647 | case Arg::Stack: |
31648 | case Arg::CallArg: |
31649 | #if CPU(X86) || CPU(X86_64) |
31650 | jit.atomicSub8(args[0].gpr(), args[1].asAddress()); |
31651 | OPGEN_RETURN(result); |
31652 | #endif |
31653 | break; |
31654 | break; |
31655 | case Arg::Index: |
31656 | #if CPU(X86) || CPU(X86_64) |
31657 | jit.atomicSub8(args[0].gpr(), args[1].asBaseIndex()); |
31658 | OPGEN_RETURN(result); |
31659 | #endif |
31660 | break; |
31661 | break; |
31662 | default: |
31663 | break; |
31664 | } |
31665 | break; |
31666 | default: |
31667 | break; |
31668 | } |
31669 | break; |
31670 | case Opcode::AtomicSub16: |
31671 | switch (this->args[0].kind()) { |
31672 | case Arg::Imm: |
31673 | switch (this->args[1].kind()) { |
31674 | case Arg::Addr: |
31675 | case Arg::Stack: |
31676 | case Arg::CallArg: |
31677 | #if CPU(X86) || CPU(X86_64) |
31678 | jit.atomicSub16(args[0].asTrustedImm32(), args[1].asAddress()); |
31679 | OPGEN_RETURN(result); |
31680 | #endif |
31681 | break; |
31682 | break; |
31683 | case Arg::Index: |
31684 | #if CPU(X86) || CPU(X86_64) |
31685 | jit.atomicSub16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31686 | OPGEN_RETURN(result); |
31687 | #endif |
31688 | break; |
31689 | break; |
31690 | default: |
31691 | break; |
31692 | } |
31693 | break; |
31694 | case Arg::Tmp: |
31695 | switch (this->args[1].kind()) { |
31696 | case Arg::Addr: |
31697 | case Arg::Stack: |
31698 | case Arg::CallArg: |
31699 | #if CPU(X86) || CPU(X86_64) |
31700 | jit.atomicSub16(args[0].gpr(), args[1].asAddress()); |
31701 | OPGEN_RETURN(result); |
31702 | #endif |
31703 | break; |
31704 | break; |
31705 | case Arg::Index: |
31706 | #if CPU(X86) || CPU(X86_64) |
31707 | jit.atomicSub16(args[0].gpr(), args[1].asBaseIndex()); |
31708 | OPGEN_RETURN(result); |
31709 | #endif |
31710 | break; |
31711 | break; |
31712 | default: |
31713 | break; |
31714 | } |
31715 | break; |
31716 | default: |
31717 | break; |
31718 | } |
31719 | break; |
31720 | case Opcode::AtomicSub32: |
31721 | switch (this->args[0].kind()) { |
31722 | case Arg::Imm: |
31723 | switch (this->args[1].kind()) { |
31724 | case Arg::Addr: |
31725 | case Arg::Stack: |
31726 | case Arg::CallArg: |
31727 | #if CPU(X86) || CPU(X86_64) |
31728 | jit.atomicSub32(args[0].asTrustedImm32(), args[1].asAddress()); |
31729 | OPGEN_RETURN(result); |
31730 | #endif |
31731 | break; |
31732 | break; |
31733 | case Arg::Index: |
31734 | #if CPU(X86) || CPU(X86_64) |
31735 | jit.atomicSub32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31736 | OPGEN_RETURN(result); |
31737 | #endif |
31738 | break; |
31739 | break; |
31740 | default: |
31741 | break; |
31742 | } |
31743 | break; |
31744 | case Arg::Tmp: |
31745 | switch (this->args[1].kind()) { |
31746 | case Arg::Addr: |
31747 | case Arg::Stack: |
31748 | case Arg::CallArg: |
31749 | #if CPU(X86) || CPU(X86_64) |
31750 | jit.atomicSub32(args[0].gpr(), args[1].asAddress()); |
31751 | OPGEN_RETURN(result); |
31752 | #endif |
31753 | break; |
31754 | break; |
31755 | case Arg::Index: |
31756 | #if CPU(X86) || CPU(X86_64) |
31757 | jit.atomicSub32(args[0].gpr(), args[1].asBaseIndex()); |
31758 | OPGEN_RETURN(result); |
31759 | #endif |
31760 | break; |
31761 | break; |
31762 | default: |
31763 | break; |
31764 | } |
31765 | break; |
31766 | default: |
31767 | break; |
31768 | } |
31769 | break; |
31770 | case Opcode::AtomicSub64: |
31771 | switch (this->args[0].kind()) { |
31772 | case Arg::Imm: |
31773 | switch (this->args[1].kind()) { |
31774 | case Arg::Addr: |
31775 | case Arg::Stack: |
31776 | case Arg::CallArg: |
31777 | #if CPU(X86_64) |
31778 | jit.atomicSub64(args[0].asTrustedImm32(), args[1].asAddress()); |
31779 | OPGEN_RETURN(result); |
31780 | #endif |
31781 | break; |
31782 | break; |
31783 | case Arg::Index: |
31784 | #if CPU(X86_64) |
31785 | jit.atomicSub64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31786 | OPGEN_RETURN(result); |
31787 | #endif |
31788 | break; |
31789 | break; |
31790 | default: |
31791 | break; |
31792 | } |
31793 | break; |
31794 | case Arg::Tmp: |
31795 | switch (this->args[1].kind()) { |
31796 | case Arg::Addr: |
31797 | case Arg::Stack: |
31798 | case Arg::CallArg: |
31799 | #if CPU(X86_64) |
31800 | jit.atomicSub64(args[0].gpr(), args[1].asAddress()); |
31801 | OPGEN_RETURN(result); |
31802 | #endif |
31803 | break; |
31804 | break; |
31805 | case Arg::Index: |
31806 | #if CPU(X86_64) |
31807 | jit.atomicSub64(args[0].gpr(), args[1].asBaseIndex()); |
31808 | OPGEN_RETURN(result); |
31809 | #endif |
31810 | break; |
31811 | break; |
31812 | default: |
31813 | break; |
31814 | } |
31815 | break; |
31816 | default: |
31817 | break; |
31818 | } |
31819 | break; |
31820 | case Opcode::AtomicAnd8: |
31821 | switch (this->args[0].kind()) { |
31822 | case Arg::Imm: |
31823 | switch (this->args[1].kind()) { |
31824 | case Arg::Addr: |
31825 | case Arg::Stack: |
31826 | case Arg::CallArg: |
31827 | #if CPU(X86) || CPU(X86_64) |
31828 | jit.atomicAnd8(args[0].asTrustedImm32(), args[1].asAddress()); |
31829 | OPGEN_RETURN(result); |
31830 | #endif |
31831 | break; |
31832 | break; |
31833 | case Arg::Index: |
31834 | #if CPU(X86) || CPU(X86_64) |
31835 | jit.atomicAnd8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31836 | OPGEN_RETURN(result); |
31837 | #endif |
31838 | break; |
31839 | break; |
31840 | default: |
31841 | break; |
31842 | } |
31843 | break; |
31844 | case Arg::Tmp: |
31845 | switch (this->args[1].kind()) { |
31846 | case Arg::Addr: |
31847 | case Arg::Stack: |
31848 | case Arg::CallArg: |
31849 | #if CPU(X86) || CPU(X86_64) |
31850 | jit.atomicAnd8(args[0].gpr(), args[1].asAddress()); |
31851 | OPGEN_RETURN(result); |
31852 | #endif |
31853 | break; |
31854 | break; |
31855 | case Arg::Index: |
31856 | #if CPU(X86) || CPU(X86_64) |
31857 | jit.atomicAnd8(args[0].gpr(), args[1].asBaseIndex()); |
31858 | OPGEN_RETURN(result); |
31859 | #endif |
31860 | break; |
31861 | break; |
31862 | default: |
31863 | break; |
31864 | } |
31865 | break; |
31866 | default: |
31867 | break; |
31868 | } |
31869 | break; |
31870 | case Opcode::AtomicAnd16: |
31871 | switch (this->args[0].kind()) { |
31872 | case Arg::Imm: |
31873 | switch (this->args[1].kind()) { |
31874 | case Arg::Addr: |
31875 | case Arg::Stack: |
31876 | case Arg::CallArg: |
31877 | #if CPU(X86) || CPU(X86_64) |
31878 | jit.atomicAnd16(args[0].asTrustedImm32(), args[1].asAddress()); |
31879 | OPGEN_RETURN(result); |
31880 | #endif |
31881 | break; |
31882 | break; |
31883 | case Arg::Index: |
31884 | #if CPU(X86) || CPU(X86_64) |
31885 | jit.atomicAnd16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31886 | OPGEN_RETURN(result); |
31887 | #endif |
31888 | break; |
31889 | break; |
31890 | default: |
31891 | break; |
31892 | } |
31893 | break; |
31894 | case Arg::Tmp: |
31895 | switch (this->args[1].kind()) { |
31896 | case Arg::Addr: |
31897 | case Arg::Stack: |
31898 | case Arg::CallArg: |
31899 | #if CPU(X86) || CPU(X86_64) |
31900 | jit.atomicAnd16(args[0].gpr(), args[1].asAddress()); |
31901 | OPGEN_RETURN(result); |
31902 | #endif |
31903 | break; |
31904 | break; |
31905 | case Arg::Index: |
31906 | #if CPU(X86) || CPU(X86_64) |
31907 | jit.atomicAnd16(args[0].gpr(), args[1].asBaseIndex()); |
31908 | OPGEN_RETURN(result); |
31909 | #endif |
31910 | break; |
31911 | break; |
31912 | default: |
31913 | break; |
31914 | } |
31915 | break; |
31916 | default: |
31917 | break; |
31918 | } |
31919 | break; |
31920 | case Opcode::AtomicAnd32: |
31921 | switch (this->args[0].kind()) { |
31922 | case Arg::Imm: |
31923 | switch (this->args[1].kind()) { |
31924 | case Arg::Addr: |
31925 | case Arg::Stack: |
31926 | case Arg::CallArg: |
31927 | #if CPU(X86) || CPU(X86_64) |
31928 | jit.atomicAnd32(args[0].asTrustedImm32(), args[1].asAddress()); |
31929 | OPGEN_RETURN(result); |
31930 | #endif |
31931 | break; |
31932 | break; |
31933 | case Arg::Index: |
31934 | #if CPU(X86) || CPU(X86_64) |
31935 | jit.atomicAnd32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31936 | OPGEN_RETURN(result); |
31937 | #endif |
31938 | break; |
31939 | break; |
31940 | default: |
31941 | break; |
31942 | } |
31943 | break; |
31944 | case Arg::Tmp: |
31945 | switch (this->args[1].kind()) { |
31946 | case Arg::Addr: |
31947 | case Arg::Stack: |
31948 | case Arg::CallArg: |
31949 | #if CPU(X86) || CPU(X86_64) |
31950 | jit.atomicAnd32(args[0].gpr(), args[1].asAddress()); |
31951 | OPGEN_RETURN(result); |
31952 | #endif |
31953 | break; |
31954 | break; |
31955 | case Arg::Index: |
31956 | #if CPU(X86) || CPU(X86_64) |
31957 | jit.atomicAnd32(args[0].gpr(), args[1].asBaseIndex()); |
31958 | OPGEN_RETURN(result); |
31959 | #endif |
31960 | break; |
31961 | break; |
31962 | default: |
31963 | break; |
31964 | } |
31965 | break; |
31966 | default: |
31967 | break; |
31968 | } |
31969 | break; |
31970 | case Opcode::AtomicAnd64: |
31971 | switch (this->args[0].kind()) { |
31972 | case Arg::Imm: |
31973 | switch (this->args[1].kind()) { |
31974 | case Arg::Addr: |
31975 | case Arg::Stack: |
31976 | case Arg::CallArg: |
31977 | #if CPU(X86_64) |
31978 | jit.atomicAnd64(args[0].asTrustedImm32(), args[1].asAddress()); |
31979 | OPGEN_RETURN(result); |
31980 | #endif |
31981 | break; |
31982 | break; |
31983 | case Arg::Index: |
31984 | #if CPU(X86_64) |
31985 | jit.atomicAnd64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
31986 | OPGEN_RETURN(result); |
31987 | #endif |
31988 | break; |
31989 | break; |
31990 | default: |
31991 | break; |
31992 | } |
31993 | break; |
31994 | case Arg::Tmp: |
31995 | switch (this->args[1].kind()) { |
31996 | case Arg::Addr: |
31997 | case Arg::Stack: |
31998 | case Arg::CallArg: |
31999 | #if CPU(X86_64) |
32000 | jit.atomicAnd64(args[0].gpr(), args[1].asAddress()); |
32001 | OPGEN_RETURN(result); |
32002 | #endif |
32003 | break; |
32004 | break; |
32005 | case Arg::Index: |
32006 | #if CPU(X86_64) |
32007 | jit.atomicAnd64(args[0].gpr(), args[1].asBaseIndex()); |
32008 | OPGEN_RETURN(result); |
32009 | #endif |
32010 | break; |
32011 | break; |
32012 | default: |
32013 | break; |
32014 | } |
32015 | break; |
32016 | default: |
32017 | break; |
32018 | } |
32019 | break; |
32020 | case Opcode::AtomicOr8: |
32021 | switch (this->args[0].kind()) { |
32022 | case Arg::Imm: |
32023 | switch (this->args[1].kind()) { |
32024 | case Arg::Addr: |
32025 | case Arg::Stack: |
32026 | case Arg::CallArg: |
32027 | #if CPU(X86) || CPU(X86_64) |
32028 | jit.atomicOr8(args[0].asTrustedImm32(), args[1].asAddress()); |
32029 | OPGEN_RETURN(result); |
32030 | #endif |
32031 | break; |
32032 | break; |
32033 | case Arg::Index: |
32034 | #if CPU(X86) || CPU(X86_64) |
32035 | jit.atomicOr8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32036 | OPGEN_RETURN(result); |
32037 | #endif |
32038 | break; |
32039 | break; |
32040 | default: |
32041 | break; |
32042 | } |
32043 | break; |
32044 | case Arg::Tmp: |
32045 | switch (this->args[1].kind()) { |
32046 | case Arg::Addr: |
32047 | case Arg::Stack: |
32048 | case Arg::CallArg: |
32049 | #if CPU(X86) || CPU(X86_64) |
32050 | jit.atomicOr8(args[0].gpr(), args[1].asAddress()); |
32051 | OPGEN_RETURN(result); |
32052 | #endif |
32053 | break; |
32054 | break; |
32055 | case Arg::Index: |
32056 | #if CPU(X86) || CPU(X86_64) |
32057 | jit.atomicOr8(args[0].gpr(), args[1].asBaseIndex()); |
32058 | OPGEN_RETURN(result); |
32059 | #endif |
32060 | break; |
32061 | break; |
32062 | default: |
32063 | break; |
32064 | } |
32065 | break; |
32066 | default: |
32067 | break; |
32068 | } |
32069 | break; |
32070 | case Opcode::AtomicOr16: |
32071 | switch (this->args[0].kind()) { |
32072 | case Arg::Imm: |
32073 | switch (this->args[1].kind()) { |
32074 | case Arg::Addr: |
32075 | case Arg::Stack: |
32076 | case Arg::CallArg: |
32077 | #if CPU(X86) || CPU(X86_64) |
32078 | jit.atomicOr16(args[0].asTrustedImm32(), args[1].asAddress()); |
32079 | OPGEN_RETURN(result); |
32080 | #endif |
32081 | break; |
32082 | break; |
32083 | case Arg::Index: |
32084 | #if CPU(X86) || CPU(X86_64) |
32085 | jit.atomicOr16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32086 | OPGEN_RETURN(result); |
32087 | #endif |
32088 | break; |
32089 | break; |
32090 | default: |
32091 | break; |
32092 | } |
32093 | break; |
32094 | case Arg::Tmp: |
32095 | switch (this->args[1].kind()) { |
32096 | case Arg::Addr: |
32097 | case Arg::Stack: |
32098 | case Arg::CallArg: |
32099 | #if CPU(X86) || CPU(X86_64) |
32100 | jit.atomicOr16(args[0].gpr(), args[1].asAddress()); |
32101 | OPGEN_RETURN(result); |
32102 | #endif |
32103 | break; |
32104 | break; |
32105 | case Arg::Index: |
32106 | #if CPU(X86) || CPU(X86_64) |
32107 | jit.atomicOr16(args[0].gpr(), args[1].asBaseIndex()); |
32108 | OPGEN_RETURN(result); |
32109 | #endif |
32110 | break; |
32111 | break; |
32112 | default: |
32113 | break; |
32114 | } |
32115 | break; |
32116 | default: |
32117 | break; |
32118 | } |
32119 | break; |
32120 | case Opcode::AtomicOr32: |
32121 | switch (this->args[0].kind()) { |
32122 | case Arg::Imm: |
32123 | switch (this->args[1].kind()) { |
32124 | case Arg::Addr: |
32125 | case Arg::Stack: |
32126 | case Arg::CallArg: |
32127 | #if CPU(X86) || CPU(X86_64) |
32128 | jit.atomicOr32(args[0].asTrustedImm32(), args[1].asAddress()); |
32129 | OPGEN_RETURN(result); |
32130 | #endif |
32131 | break; |
32132 | break; |
32133 | case Arg::Index: |
32134 | #if CPU(X86) || CPU(X86_64) |
32135 | jit.atomicOr32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32136 | OPGEN_RETURN(result); |
32137 | #endif |
32138 | break; |
32139 | break; |
32140 | default: |
32141 | break; |
32142 | } |
32143 | break; |
32144 | case Arg::Tmp: |
32145 | switch (this->args[1].kind()) { |
32146 | case Arg::Addr: |
32147 | case Arg::Stack: |
32148 | case Arg::CallArg: |
32149 | #if CPU(X86) || CPU(X86_64) |
32150 | jit.atomicOr32(args[0].gpr(), args[1].asAddress()); |
32151 | OPGEN_RETURN(result); |
32152 | #endif |
32153 | break; |
32154 | break; |
32155 | case Arg::Index: |
32156 | #if CPU(X86) || CPU(X86_64) |
32157 | jit.atomicOr32(args[0].gpr(), args[1].asBaseIndex()); |
32158 | OPGEN_RETURN(result); |
32159 | #endif |
32160 | break; |
32161 | break; |
32162 | default: |
32163 | break; |
32164 | } |
32165 | break; |
32166 | default: |
32167 | break; |
32168 | } |
32169 | break; |
32170 | case Opcode::AtomicOr64: |
32171 | switch (this->args[0].kind()) { |
32172 | case Arg::Imm: |
32173 | switch (this->args[1].kind()) { |
32174 | case Arg::Addr: |
32175 | case Arg::Stack: |
32176 | case Arg::CallArg: |
32177 | #if CPU(X86_64) |
32178 | jit.atomicOr64(args[0].asTrustedImm32(), args[1].asAddress()); |
32179 | OPGEN_RETURN(result); |
32180 | #endif |
32181 | break; |
32182 | break; |
32183 | case Arg::Index: |
32184 | #if CPU(X86_64) |
32185 | jit.atomicOr64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32186 | OPGEN_RETURN(result); |
32187 | #endif |
32188 | break; |
32189 | break; |
32190 | default: |
32191 | break; |
32192 | } |
32193 | break; |
32194 | case Arg::Tmp: |
32195 | switch (this->args[1].kind()) { |
32196 | case Arg::Addr: |
32197 | case Arg::Stack: |
32198 | case Arg::CallArg: |
32199 | #if CPU(X86_64) |
32200 | jit.atomicOr64(args[0].gpr(), args[1].asAddress()); |
32201 | OPGEN_RETURN(result); |
32202 | #endif |
32203 | break; |
32204 | break; |
32205 | case Arg::Index: |
32206 | #if CPU(X86_64) |
32207 | jit.atomicOr64(args[0].gpr(), args[1].asBaseIndex()); |
32208 | OPGEN_RETURN(result); |
32209 | #endif |
32210 | break; |
32211 | break; |
32212 | default: |
32213 | break; |
32214 | } |
32215 | break; |
32216 | default: |
32217 | break; |
32218 | } |
32219 | break; |
32220 | case Opcode::AtomicXor8: |
32221 | switch (this->args[0].kind()) { |
32222 | case Arg::Imm: |
32223 | switch (this->args[1].kind()) { |
32224 | case Arg::Addr: |
32225 | case Arg::Stack: |
32226 | case Arg::CallArg: |
32227 | #if CPU(X86) || CPU(X86_64) |
32228 | jit.atomicXor8(args[0].asTrustedImm32(), args[1].asAddress()); |
32229 | OPGEN_RETURN(result); |
32230 | #endif |
32231 | break; |
32232 | break; |
32233 | case Arg::Index: |
32234 | #if CPU(X86) || CPU(X86_64) |
32235 | jit.atomicXor8(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32236 | OPGEN_RETURN(result); |
32237 | #endif |
32238 | break; |
32239 | break; |
32240 | default: |
32241 | break; |
32242 | } |
32243 | break; |
32244 | case Arg::Tmp: |
32245 | switch (this->args[1].kind()) { |
32246 | case Arg::Addr: |
32247 | case Arg::Stack: |
32248 | case Arg::CallArg: |
32249 | #if CPU(X86) || CPU(X86_64) |
32250 | jit.atomicXor8(args[0].gpr(), args[1].asAddress()); |
32251 | OPGEN_RETURN(result); |
32252 | #endif |
32253 | break; |
32254 | break; |
32255 | case Arg::Index: |
32256 | #if CPU(X86) || CPU(X86_64) |
32257 | jit.atomicXor8(args[0].gpr(), args[1].asBaseIndex()); |
32258 | OPGEN_RETURN(result); |
32259 | #endif |
32260 | break; |
32261 | break; |
32262 | default: |
32263 | break; |
32264 | } |
32265 | break; |
32266 | default: |
32267 | break; |
32268 | } |
32269 | break; |
32270 | case Opcode::AtomicXor16: |
32271 | switch (this->args[0].kind()) { |
32272 | case Arg::Imm: |
32273 | switch (this->args[1].kind()) { |
32274 | case Arg::Addr: |
32275 | case Arg::Stack: |
32276 | case Arg::CallArg: |
32277 | #if CPU(X86) || CPU(X86_64) |
32278 | jit.atomicXor16(args[0].asTrustedImm32(), args[1].asAddress()); |
32279 | OPGEN_RETURN(result); |
32280 | #endif |
32281 | break; |
32282 | break; |
32283 | case Arg::Index: |
32284 | #if CPU(X86) || CPU(X86_64) |
32285 | jit.atomicXor16(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32286 | OPGEN_RETURN(result); |
32287 | #endif |
32288 | break; |
32289 | break; |
32290 | default: |
32291 | break; |
32292 | } |
32293 | break; |
32294 | case Arg::Tmp: |
32295 | switch (this->args[1].kind()) { |
32296 | case Arg::Addr: |
32297 | case Arg::Stack: |
32298 | case Arg::CallArg: |
32299 | #if CPU(X86) || CPU(X86_64) |
32300 | jit.atomicXor16(args[0].gpr(), args[1].asAddress()); |
32301 | OPGEN_RETURN(result); |
32302 | #endif |
32303 | break; |
32304 | break; |
32305 | case Arg::Index: |
32306 | #if CPU(X86) || CPU(X86_64) |
32307 | jit.atomicXor16(args[0].gpr(), args[1].asBaseIndex()); |
32308 | OPGEN_RETURN(result); |
32309 | #endif |
32310 | break; |
32311 | break; |
32312 | default: |
32313 | break; |
32314 | } |
32315 | break; |
32316 | default: |
32317 | break; |
32318 | } |
32319 | break; |
32320 | case Opcode::AtomicXor32: |
32321 | switch (this->args[0].kind()) { |
32322 | case Arg::Imm: |
32323 | switch (this->args[1].kind()) { |
32324 | case Arg::Addr: |
32325 | case Arg::Stack: |
32326 | case Arg::CallArg: |
32327 | #if CPU(X86) || CPU(X86_64) |
32328 | jit.atomicXor32(args[0].asTrustedImm32(), args[1].asAddress()); |
32329 | OPGEN_RETURN(result); |
32330 | #endif |
32331 | break; |
32332 | break; |
32333 | case Arg::Index: |
32334 | #if CPU(X86) || CPU(X86_64) |
32335 | jit.atomicXor32(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32336 | OPGEN_RETURN(result); |
32337 | #endif |
32338 | break; |
32339 | break; |
32340 | default: |
32341 | break; |
32342 | } |
32343 | break; |
32344 | case Arg::Tmp: |
32345 | switch (this->args[1].kind()) { |
32346 | case Arg::Addr: |
32347 | case Arg::Stack: |
32348 | case Arg::CallArg: |
32349 | #if CPU(X86) || CPU(X86_64) |
32350 | jit.atomicXor32(args[0].gpr(), args[1].asAddress()); |
32351 | OPGEN_RETURN(result); |
32352 | #endif |
32353 | break; |
32354 | break; |
32355 | case Arg::Index: |
32356 | #if CPU(X86) || CPU(X86_64) |
32357 | jit.atomicXor32(args[0].gpr(), args[1].asBaseIndex()); |
32358 | OPGEN_RETURN(result); |
32359 | #endif |
32360 | break; |
32361 | break; |
32362 | default: |
32363 | break; |
32364 | } |
32365 | break; |
32366 | default: |
32367 | break; |
32368 | } |
32369 | break; |
32370 | case Opcode::AtomicXor64: |
32371 | switch (this->args[0].kind()) { |
32372 | case Arg::Imm: |
32373 | switch (this->args[1].kind()) { |
32374 | case Arg::Addr: |
32375 | case Arg::Stack: |
32376 | case Arg::CallArg: |
32377 | #if CPU(X86_64) |
32378 | jit.atomicXor64(args[0].asTrustedImm32(), args[1].asAddress()); |
32379 | OPGEN_RETURN(result); |
32380 | #endif |
32381 | break; |
32382 | break; |
32383 | case Arg::Index: |
32384 | #if CPU(X86_64) |
32385 | jit.atomicXor64(args[0].asTrustedImm32(), args[1].asBaseIndex()); |
32386 | OPGEN_RETURN(result); |
32387 | #endif |
32388 | break; |
32389 | break; |
32390 | default: |
32391 | break; |
32392 | } |
32393 | break; |
32394 | case Arg::Tmp: |
32395 | switch (this->args[1].kind()) { |
32396 | case Arg::Addr: |
32397 | case Arg::Stack: |
32398 | case Arg::CallArg: |
32399 | #if CPU(X86_64) |
32400 | jit.atomicXor64(args[0].gpr(), args[1].asAddress()); |
32401 | OPGEN_RETURN(result); |
32402 | #endif |
32403 | break; |
32404 | break; |
32405 | case Arg::Index: |
32406 | #if CPU(X86_64) |
32407 | jit.atomicXor64(args[0].gpr(), args[1].asBaseIndex()); |
32408 | OPGEN_RETURN(result); |
32409 | #endif |
32410 | break; |
32411 | break; |
32412 | default: |
32413 | break; |
32414 | } |
32415 | break; |
32416 | default: |
32417 | break; |
32418 | } |
32419 | break; |
32420 | case Opcode::AtomicNeg8: |
32421 | switch (this->args[0].kind()) { |
32422 | case Arg::Addr: |
32423 | case Arg::Stack: |
32424 | case Arg::CallArg: |
32425 | #if CPU(X86) || CPU(X86_64) |
32426 | jit.atomicNeg8(args[0].asAddress()); |
32427 | OPGEN_RETURN(result); |
32428 | #endif |
32429 | break; |
32430 | break; |
32431 | case Arg::Index: |
32432 | #if CPU(X86) || CPU(X86_64) |
32433 | jit.atomicNeg8(args[0].asBaseIndex()); |
32434 | OPGEN_RETURN(result); |
32435 | #endif |
32436 | break; |
32437 | break; |
32438 | default: |
32439 | break; |
32440 | } |
32441 | break; |
32442 | case Opcode::AtomicNeg16: |
32443 | switch (this->args[0].kind()) { |
32444 | case Arg::Addr: |
32445 | case Arg::Stack: |
32446 | case Arg::CallArg: |
32447 | #if CPU(X86) || CPU(X86_64) |
32448 | jit.atomicNeg16(args[0].asAddress()); |
32449 | OPGEN_RETURN(result); |
32450 | #endif |
32451 | break; |
32452 | break; |
32453 | case Arg::Index: |
32454 | #if CPU(X86) || CPU(X86_64) |
32455 | jit.atomicNeg16(args[0].asBaseIndex()); |
32456 | OPGEN_RETURN(result); |
32457 | #endif |
32458 | break; |
32459 | break; |
32460 | default: |
32461 | break; |
32462 | } |
32463 | break; |
32464 | case Opcode::AtomicNeg32: |
32465 | switch (this->args[0].kind()) { |
32466 | case Arg::Addr: |
32467 | case Arg::Stack: |
32468 | case Arg::CallArg: |
32469 | #if CPU(X86) || CPU(X86_64) |
32470 | jit.atomicNeg32(args[0].asAddress()); |
32471 | OPGEN_RETURN(result); |
32472 | #endif |
32473 | break; |
32474 | break; |
32475 | case Arg::Index: |
32476 | #if CPU(X86) || CPU(X86_64) |
32477 | jit.atomicNeg32(args[0].asBaseIndex()); |
32478 | OPGEN_RETURN(result); |
32479 | #endif |
32480 | break; |
32481 | break; |
32482 | default: |
32483 | break; |
32484 | } |
32485 | break; |
32486 | case Opcode::AtomicNeg64: |
32487 | switch (this->args[0].kind()) { |
32488 | case Arg::Addr: |
32489 | case Arg::Stack: |
32490 | case Arg::CallArg: |
32491 | #if CPU(X86_64) |
32492 | jit.atomicNeg64(args[0].asAddress()); |
32493 | OPGEN_RETURN(result); |
32494 | #endif |
32495 | break; |
32496 | break; |
32497 | case Arg::Index: |
32498 | #if CPU(X86_64) |
32499 | jit.atomicNeg64(args[0].asBaseIndex()); |
32500 | OPGEN_RETURN(result); |
32501 | #endif |
32502 | break; |
32503 | break; |
32504 | default: |
32505 | break; |
32506 | } |
32507 | break; |
32508 | case Opcode::AtomicNot8: |
32509 | switch (this->args[0].kind()) { |
32510 | case Arg::Addr: |
32511 | case Arg::Stack: |
32512 | case Arg::CallArg: |
32513 | #if CPU(X86) || CPU(X86_64) |
32514 | jit.atomicNot8(args[0].asAddress()); |
32515 | OPGEN_RETURN(result); |
32516 | #endif |
32517 | break; |
32518 | break; |
32519 | case Arg::Index: |
32520 | #if CPU(X86) || CPU(X86_64) |
32521 | jit.atomicNot8(args[0].asBaseIndex()); |
32522 | OPGEN_RETURN(result); |
32523 | #endif |
32524 | break; |
32525 | break; |
32526 | default: |
32527 | break; |
32528 | } |
32529 | break; |
32530 | case Opcode::AtomicNot16: |
32531 | switch (this->args[0].kind()) { |
32532 | case Arg::Addr: |
32533 | case Arg::Stack: |
32534 | case Arg::CallArg: |
32535 | #if CPU(X86) || CPU(X86_64) |
32536 | jit.atomicNot16(args[0].asAddress()); |
32537 | OPGEN_RETURN(result); |
32538 | #endif |
32539 | break; |
32540 | break; |
32541 | case Arg::Index: |
32542 | #if CPU(X86) || CPU(X86_64) |
32543 | jit.atomicNot16(args[0].asBaseIndex()); |
32544 | OPGEN_RETURN(result); |
32545 | #endif |
32546 | break; |
32547 | break; |
32548 | default: |
32549 | break; |
32550 | } |
32551 | break; |
32552 | case Opcode::AtomicNot32: |
32553 | switch (this->args[0].kind()) { |
32554 | case Arg::Addr: |
32555 | case Arg::Stack: |
32556 | case Arg::CallArg: |
32557 | #if CPU(X86) || CPU(X86_64) |
32558 | jit.atomicNot32(args[0].asAddress()); |
32559 | OPGEN_RETURN(result); |
32560 | #endif |
32561 | break; |
32562 | break; |
32563 | case Arg::Index: |
32564 | #if CPU(X86) || CPU(X86_64) |
32565 | jit.atomicNot32(args[0].asBaseIndex()); |
32566 | OPGEN_RETURN(result); |
32567 | #endif |
32568 | break; |
32569 | break; |
32570 | default: |
32571 | break; |
32572 | } |
32573 | break; |
32574 | case Opcode::AtomicNot64: |
32575 | switch (this->args[0].kind()) { |
32576 | case Arg::Addr: |
32577 | case Arg::Stack: |
32578 | case Arg::CallArg: |
32579 | #if CPU(X86_64) |
32580 | jit.atomicNot64(args[0].asAddress()); |
32581 | OPGEN_RETURN(result); |
32582 | #endif |
32583 | break; |
32584 | break; |
32585 | case Arg::Index: |
32586 | #if CPU(X86_64) |
32587 | jit.atomicNot64(args[0].asBaseIndex()); |
32588 | OPGEN_RETURN(result); |
32589 | #endif |
32590 | break; |
32591 | break; |
32592 | default: |
32593 | break; |
32594 | } |
32595 | break; |
32596 | case Opcode::AtomicXchgAdd8: |
32597 | switch (this->args[1].kind()) { |
32598 | case Arg::Addr: |
32599 | case Arg::Stack: |
32600 | case Arg::CallArg: |
32601 | #if CPU(X86) || CPU(X86_64) |
32602 | jit.atomicXchgAdd8(args[0].gpr(), args[1].asAddress()); |
32603 | OPGEN_RETURN(result); |
32604 | #endif |
32605 | break; |
32606 | break; |
32607 | case Arg::Index: |
32608 | #if CPU(X86) || CPU(X86_64) |
32609 | jit.atomicXchgAdd8(args[0].gpr(), args[1].asBaseIndex()); |
32610 | OPGEN_RETURN(result); |
32611 | #endif |
32612 | break; |
32613 | break; |
32614 | default: |
32615 | break; |
32616 | } |
32617 | break; |
32618 | case Opcode::AtomicXchgAdd16: |
32619 | switch (this->args[1].kind()) { |
32620 | case Arg::Addr: |
32621 | case Arg::Stack: |
32622 | case Arg::CallArg: |
32623 | #if CPU(X86) || CPU(X86_64) |
32624 | jit.atomicXchgAdd16(args[0].gpr(), args[1].asAddress()); |
32625 | OPGEN_RETURN(result); |
32626 | #endif |
32627 | break; |
32628 | break; |
32629 | case Arg::Index: |
32630 | #if CPU(X86) || CPU(X86_64) |
32631 | jit.atomicXchgAdd16(args[0].gpr(), args[1].asBaseIndex()); |
32632 | OPGEN_RETURN(result); |
32633 | #endif |
32634 | break; |
32635 | break; |
32636 | default: |
32637 | break; |
32638 | } |
32639 | break; |
32640 | case Opcode::AtomicXchgAdd32: |
32641 | switch (this->args[1].kind()) { |
32642 | case Arg::Addr: |
32643 | case Arg::Stack: |
32644 | case Arg::CallArg: |
32645 | #if CPU(X86) || CPU(X86_64) |
32646 | jit.atomicXchgAdd32(args[0].gpr(), args[1].asAddress()); |
32647 | OPGEN_RETURN(result); |
32648 | #endif |
32649 | break; |
32650 | break; |
32651 | case Arg::Index: |
32652 | #if CPU(X86) || CPU(X86_64) |
32653 | jit.atomicXchgAdd32(args[0].gpr(), args[1].asBaseIndex()); |
32654 | OPGEN_RETURN(result); |
32655 | #endif |
32656 | break; |
32657 | break; |
32658 | default: |
32659 | break; |
32660 | } |
32661 | break; |
32662 | case Opcode::AtomicXchgAdd64: |
32663 | switch (this->args[1].kind()) { |
32664 | case Arg::Addr: |
32665 | case Arg::Stack: |
32666 | case Arg::CallArg: |
32667 | #if CPU(X86_64) |
32668 | jit.atomicXchgAdd64(args[0].gpr(), args[1].asAddress()); |
32669 | OPGEN_RETURN(result); |
32670 | #endif |
32671 | break; |
32672 | break; |
32673 | case Arg::Index: |
32674 | #if CPU(X86_64) |
32675 | jit.atomicXchgAdd64(args[0].gpr(), args[1].asBaseIndex()); |
32676 | OPGEN_RETURN(result); |
32677 | #endif |
32678 | break; |
32679 | break; |
32680 | default: |
32681 | break; |
32682 | } |
32683 | break; |
32684 | case Opcode::AtomicXchg8: |
32685 | switch (this->args[1].kind()) { |
32686 | case Arg::Addr: |
32687 | case Arg::Stack: |
32688 | case Arg::CallArg: |
32689 | #if CPU(X86) || CPU(X86_64) |
32690 | jit.atomicXchg8(args[0].gpr(), args[1].asAddress()); |
32691 | OPGEN_RETURN(result); |
32692 | #endif |
32693 | break; |
32694 | break; |
32695 | case Arg::Index: |
32696 | #if CPU(X86) || CPU(X86_64) |
32697 | jit.atomicXchg8(args[0].gpr(), args[1].asBaseIndex()); |
32698 | OPGEN_RETURN(result); |
32699 | #endif |
32700 | break; |
32701 | break; |
32702 | default: |
32703 | break; |
32704 | } |
32705 | break; |
32706 | case Opcode::AtomicXchg16: |
32707 | switch (this->args[1].kind()) { |
32708 | case Arg::Addr: |
32709 | case Arg::Stack: |
32710 | case Arg::CallArg: |
32711 | #if CPU(X86) || CPU(X86_64) |
32712 | jit.atomicXchg16(args[0].gpr(), args[1].asAddress()); |
32713 | OPGEN_RETURN(result); |
32714 | #endif |
32715 | break; |
32716 | break; |
32717 | case Arg::Index: |
32718 | #if CPU(X86) || CPU(X86_64) |
32719 | jit.atomicXchg16(args[0].gpr(), args[1].asBaseIndex()); |
32720 | OPGEN_RETURN(result); |
32721 | #endif |
32722 | break; |
32723 | break; |
32724 | default: |
32725 | break; |
32726 | } |
32727 | break; |
32728 | case Opcode::AtomicXchg32: |
32729 | switch (this->args[1].kind()) { |
32730 | case Arg::Addr: |
32731 | case Arg::Stack: |
32732 | case Arg::CallArg: |
32733 | #if CPU(X86) || CPU(X86_64) |
32734 | jit.atomicXchg32(args[0].gpr(), args[1].asAddress()); |
32735 | OPGEN_RETURN(result); |
32736 | #endif |
32737 | break; |
32738 | break; |
32739 | case Arg::Index: |
32740 | #if CPU(X86) || CPU(X86_64) |
32741 | jit.atomicXchg32(args[0].gpr(), args[1].asBaseIndex()); |
32742 | OPGEN_RETURN(result); |
32743 | #endif |
32744 | break; |
32745 | break; |
32746 | default: |
32747 | break; |
32748 | } |
32749 | break; |
32750 | case Opcode::AtomicXchg64: |
32751 | switch (this->args[1].kind()) { |
32752 | case Arg::Addr: |
32753 | case Arg::Stack: |
32754 | case Arg::CallArg: |
32755 | #if CPU(X86_64) |
32756 | jit.atomicXchg64(args[0].gpr(), args[1].asAddress()); |
32757 | OPGEN_RETURN(result); |
32758 | #endif |
32759 | break; |
32760 | break; |
32761 | case Arg::Index: |
32762 | #if CPU(X86_64) |
32763 | jit.atomicXchg64(args[0].gpr(), args[1].asBaseIndex()); |
32764 | OPGEN_RETURN(result); |
32765 | #endif |
32766 | break; |
32767 | break; |
32768 | default: |
32769 | break; |
32770 | } |
32771 | break; |
32772 | case Opcode::LoadLink8: |
32773 | #if CPU(ARM64) |
32774 | jit.loadLink8(args[0].asAddress(), args[1].gpr()); |
32775 | OPGEN_RETURN(result); |
32776 | #endif |
32777 | break; |
32778 | break; |
32779 | case Opcode::LoadLinkAcq8: |
32780 | #if CPU(ARM64) |
32781 | jit.loadLinkAcq8(args[0].asAddress(), args[1].gpr()); |
32782 | OPGEN_RETURN(result); |
32783 | #endif |
32784 | break; |
32785 | break; |
32786 | case Opcode::StoreCond8: |
32787 | #if CPU(ARM64) |
32788 | jit.storeCond8(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32789 | OPGEN_RETURN(result); |
32790 | #endif |
32791 | break; |
32792 | break; |
32793 | case Opcode::StoreCondRel8: |
32794 | #if CPU(ARM64) |
32795 | jit.storeCondRel8(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32796 | OPGEN_RETURN(result); |
32797 | #endif |
32798 | break; |
32799 | break; |
32800 | case Opcode::LoadLink16: |
32801 | #if CPU(ARM64) |
32802 | jit.loadLink16(args[0].asAddress(), args[1].gpr()); |
32803 | OPGEN_RETURN(result); |
32804 | #endif |
32805 | break; |
32806 | break; |
32807 | case Opcode::LoadLinkAcq16: |
32808 | #if CPU(ARM64) |
32809 | jit.loadLinkAcq16(args[0].asAddress(), args[1].gpr()); |
32810 | OPGEN_RETURN(result); |
32811 | #endif |
32812 | break; |
32813 | break; |
32814 | case Opcode::StoreCond16: |
32815 | #if CPU(ARM64) |
32816 | jit.storeCond16(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32817 | OPGEN_RETURN(result); |
32818 | #endif |
32819 | break; |
32820 | break; |
32821 | case Opcode::StoreCondRel16: |
32822 | #if CPU(ARM64) |
32823 | jit.storeCondRel16(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32824 | OPGEN_RETURN(result); |
32825 | #endif |
32826 | break; |
32827 | break; |
32828 | case Opcode::LoadLink32: |
32829 | #if CPU(ARM64) |
32830 | jit.loadLink32(args[0].asAddress(), args[1].gpr()); |
32831 | OPGEN_RETURN(result); |
32832 | #endif |
32833 | break; |
32834 | break; |
32835 | case Opcode::LoadLinkAcq32: |
32836 | #if CPU(ARM64) |
32837 | jit.loadLinkAcq32(args[0].asAddress(), args[1].gpr()); |
32838 | OPGEN_RETURN(result); |
32839 | #endif |
32840 | break; |
32841 | break; |
32842 | case Opcode::StoreCond32: |
32843 | #if CPU(ARM64) |
32844 | jit.storeCond32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32845 | OPGEN_RETURN(result); |
32846 | #endif |
32847 | break; |
32848 | break; |
32849 | case Opcode::StoreCondRel32: |
32850 | #if CPU(ARM64) |
32851 | jit.storeCondRel32(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32852 | OPGEN_RETURN(result); |
32853 | #endif |
32854 | break; |
32855 | break; |
32856 | case Opcode::LoadLink64: |
32857 | #if CPU(ARM64) |
32858 | jit.loadLink64(args[0].asAddress(), args[1].gpr()); |
32859 | OPGEN_RETURN(result); |
32860 | #endif |
32861 | break; |
32862 | break; |
32863 | case Opcode::LoadLinkAcq64: |
32864 | #if CPU(ARM64) |
32865 | jit.loadLinkAcq64(args[0].asAddress(), args[1].gpr()); |
32866 | OPGEN_RETURN(result); |
32867 | #endif |
32868 | break; |
32869 | break; |
32870 | case Opcode::StoreCond64: |
32871 | #if CPU(ARM64) |
32872 | jit.storeCond64(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32873 | OPGEN_RETURN(result); |
32874 | #endif |
32875 | break; |
32876 | break; |
32877 | case Opcode::StoreCondRel64: |
32878 | #if CPU(ARM64) |
32879 | jit.storeCondRel64(args[0].gpr(), args[1].asAddress(), args[2].gpr()); |
32880 | OPGEN_RETURN(result); |
32881 | #endif |
32882 | break; |
32883 | break; |
32884 | case Opcode::Depend32: |
32885 | #if CPU(ARM64) |
32886 | jit.depend32(args[0].gpr(), args[1].gpr()); |
32887 | OPGEN_RETURN(result); |
32888 | #endif |
32889 | break; |
32890 | break; |
32891 | case Opcode::Depend64: |
32892 | #if CPU(ARM64) |
32893 | jit.depend64(args[0].gpr(), args[1].gpr()); |
32894 | OPGEN_RETURN(result); |
32895 | #endif |
32896 | break; |
32897 | break; |
32898 | case Opcode::Compare32: |
32899 | switch (this->args[2].kind()) { |
32900 | case Arg::Tmp: |
32901 | jit.compare32(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
32902 | OPGEN_RETURN(result); |
32903 | break; |
32904 | break; |
32905 | case Arg::Imm: |
32906 | jit.compare32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr()); |
32907 | OPGEN_RETURN(result); |
32908 | break; |
32909 | break; |
32910 | default: |
32911 | break; |
32912 | } |
32913 | break; |
32914 | case Opcode::Compare64: |
32915 | switch (this->args[2].kind()) { |
32916 | case Arg::Tmp: |
32917 | #if CPU(X86_64) || CPU(ARM64) |
32918 | jit.compare64(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
32919 | OPGEN_RETURN(result); |
32920 | #endif |
32921 | break; |
32922 | break; |
32923 | case Arg::Imm: |
32924 | #if CPU(X86_64) |
32925 | jit.compare64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr()); |
32926 | OPGEN_RETURN(result); |
32927 | #endif |
32928 | break; |
32929 | break; |
32930 | default: |
32931 | break; |
32932 | } |
32933 | break; |
32934 | case Opcode::Test32: |
32935 | switch (this->args[1].kind()) { |
32936 | case Arg::Addr: |
32937 | case Arg::Stack: |
32938 | case Arg::CallArg: |
32939 | #if CPU(X86) || CPU(X86_64) |
32940 | jit.test32(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32(), args[3].gpr()); |
32941 | OPGEN_RETURN(result); |
32942 | #endif |
32943 | break; |
32944 | break; |
32945 | case Arg::Tmp: |
32946 | switch (this->args[2].kind()) { |
32947 | case Arg::Tmp: |
32948 | jit.test32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
32949 | OPGEN_RETURN(result); |
32950 | break; |
32951 | break; |
32952 | case Arg::BitImm: |
32953 | jit.test32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr()); |
32954 | OPGEN_RETURN(result); |
32955 | break; |
32956 | break; |
32957 | default: |
32958 | break; |
32959 | } |
32960 | break; |
32961 | default: |
32962 | break; |
32963 | } |
32964 | break; |
32965 | case Opcode::Test64: |
32966 | switch (this->args[2].kind()) { |
32967 | case Arg::Imm: |
32968 | #if CPU(X86_64) |
32969 | jit.test64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr()); |
32970 | OPGEN_RETURN(result); |
32971 | #endif |
32972 | break; |
32973 | break; |
32974 | case Arg::Tmp: |
32975 | #if CPU(X86_64) || CPU(ARM64) |
32976 | jit.test64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
32977 | OPGEN_RETURN(result); |
32978 | #endif |
32979 | break; |
32980 | break; |
32981 | default: |
32982 | break; |
32983 | } |
32984 | break; |
32985 | case Opcode::CompareDouble: |
32986 | jit.compareDouble(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr()); |
32987 | OPGEN_RETURN(result); |
32988 | break; |
32989 | break; |
32990 | case Opcode::CompareFloat: |
32991 | jit.compareFloat(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr()); |
32992 | OPGEN_RETURN(result); |
32993 | break; |
32994 | break; |
32995 | case Opcode::Branch8: |
32996 | switch (this->args[1].kind()) { |
32997 | case Arg::Addr: |
32998 | case Arg::Stack: |
32999 | case Arg::CallArg: |
33000 | #if CPU(X86) || CPU(X86_64) |
33001 | result = jit.branch8(args[0].asRelationalCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33002 | OPGEN_RETURN(result); |
33003 | #endif |
33004 | break; |
33005 | break; |
33006 | case Arg::Index: |
33007 | #if CPU(X86) || CPU(X86_64) |
33008 | result = jit.branch8(args[0].asRelationalCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32()); |
33009 | OPGEN_RETURN(result); |
33010 | #endif |
33011 | break; |
33012 | break; |
33013 | default: |
33014 | break; |
33015 | } |
33016 | break; |
33017 | case Opcode::Branch32: |
33018 | switch (this->args[1].kind()) { |
33019 | case Arg::Addr: |
33020 | case Arg::Stack: |
33021 | case Arg::CallArg: |
33022 | switch (this->args[2].kind()) { |
33023 | case Arg::Imm: |
33024 | #if CPU(X86) || CPU(X86_64) |
33025 | result = jit.branch32(args[0].asRelationalCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33026 | OPGEN_RETURN(result); |
33027 | #endif |
33028 | break; |
33029 | break; |
33030 | case Arg::Tmp: |
33031 | #if CPU(X86) || CPU(X86_64) |
33032 | result = jit.branch32(args[0].asRelationalCondition(), args[1].asAddress(), args[2].gpr()); |
33033 | OPGEN_RETURN(result); |
33034 | #endif |
33035 | break; |
33036 | break; |
33037 | default: |
33038 | break; |
33039 | } |
33040 | break; |
33041 | case Arg::Tmp: |
33042 | switch (this->args[2].kind()) { |
33043 | case Arg::Tmp: |
33044 | result = jit.branch32(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr()); |
33045 | OPGEN_RETURN(result); |
33046 | break; |
33047 | break; |
33048 | case Arg::Imm: |
33049 | result = jit.branch32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33050 | OPGEN_RETURN(result); |
33051 | break; |
33052 | break; |
33053 | case Arg::Addr: |
33054 | case Arg::Stack: |
33055 | case Arg::CallArg: |
33056 | #if CPU(X86) || CPU(X86_64) |
33057 | result = jit.branch32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asAddress()); |
33058 | OPGEN_RETURN(result); |
33059 | #endif |
33060 | break; |
33061 | break; |
33062 | default: |
33063 | break; |
33064 | } |
33065 | break; |
33066 | case Arg::Index: |
33067 | #if CPU(X86) || CPU(X86_64) |
33068 | result = jit.branch32(args[0].asRelationalCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32()); |
33069 | OPGEN_RETURN(result); |
33070 | #endif |
33071 | break; |
33072 | break; |
33073 | default: |
33074 | break; |
33075 | } |
33076 | break; |
33077 | case Opcode::Branch64: |
33078 | switch (this->args[1].kind()) { |
33079 | case Arg::Tmp: |
33080 | switch (this->args[2].kind()) { |
33081 | case Arg::Tmp: |
33082 | #if CPU(X86_64) || CPU(ARM64) |
33083 | result = jit.branch64(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr()); |
33084 | OPGEN_RETURN(result); |
33085 | #endif |
33086 | break; |
33087 | break; |
33088 | case Arg::Imm: |
33089 | #if CPU(X86_64) || CPU(ARM64) |
33090 | result = jit.branch64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33091 | OPGEN_RETURN(result); |
33092 | #endif |
33093 | break; |
33094 | break; |
33095 | case Arg::Addr: |
33096 | case Arg::Stack: |
33097 | case Arg::CallArg: |
33098 | #if CPU(X86_64) |
33099 | result = jit.branch64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asAddress()); |
33100 | OPGEN_RETURN(result); |
33101 | #endif |
33102 | break; |
33103 | break; |
33104 | default: |
33105 | break; |
33106 | } |
33107 | break; |
33108 | case Arg::Addr: |
33109 | case Arg::Stack: |
33110 | case Arg::CallArg: |
33111 | switch (this->args[2].kind()) { |
33112 | case Arg::Tmp: |
33113 | #if CPU(X86_64) |
33114 | result = jit.branch64(args[0].asRelationalCondition(), args[1].asAddress(), args[2].gpr()); |
33115 | OPGEN_RETURN(result); |
33116 | #endif |
33117 | break; |
33118 | break; |
33119 | case Arg::Imm: |
33120 | #if CPU(X86_64) |
33121 | result = jit.branch64(args[0].asRelationalCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33122 | OPGEN_RETURN(result); |
33123 | #endif |
33124 | break; |
33125 | break; |
33126 | default: |
33127 | break; |
33128 | } |
33129 | break; |
33130 | case Arg::Index: |
33131 | #if CPU(X86_64) |
33132 | result = jit.branch64(args[0].asRelationalCondition(), args[1].asBaseIndex(), args[2].gpr()); |
33133 | OPGEN_RETURN(result); |
33134 | #endif |
33135 | break; |
33136 | break; |
33137 | default: |
33138 | break; |
33139 | } |
33140 | break; |
33141 | case Opcode::BranchTest8: |
33142 | switch (this->args[1].kind()) { |
33143 | case Arg::Addr: |
33144 | case Arg::Stack: |
33145 | case Arg::CallArg: |
33146 | #if CPU(X86) || CPU(X86_64) |
33147 | result = jit.branchTest8(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33148 | OPGEN_RETURN(result); |
33149 | #endif |
33150 | break; |
33151 | break; |
33152 | case Arg::Index: |
33153 | #if CPU(X86) || CPU(X86_64) |
33154 | result = jit.branchTest8(args[0].asResultCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32()); |
33155 | OPGEN_RETURN(result); |
33156 | #endif |
33157 | break; |
33158 | break; |
33159 | default: |
33160 | break; |
33161 | } |
33162 | break; |
33163 | case Opcode::BranchTest32: |
33164 | switch (this->args[1].kind()) { |
33165 | case Arg::Tmp: |
33166 | switch (this->args[2].kind()) { |
33167 | case Arg::Tmp: |
33168 | result = jit.branchTest32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33169 | OPGEN_RETURN(result); |
33170 | break; |
33171 | break; |
33172 | case Arg::BitImm: |
33173 | result = jit.branchTest32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33174 | OPGEN_RETURN(result); |
33175 | break; |
33176 | break; |
33177 | default: |
33178 | break; |
33179 | } |
33180 | break; |
33181 | case Arg::Addr: |
33182 | case Arg::Stack: |
33183 | case Arg::CallArg: |
33184 | #if CPU(X86) || CPU(X86_64) |
33185 | result = jit.branchTest32(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33186 | OPGEN_RETURN(result); |
33187 | #endif |
33188 | break; |
33189 | break; |
33190 | case Arg::Index: |
33191 | #if CPU(X86) || CPU(X86_64) |
33192 | result = jit.branchTest32(args[0].asResultCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32()); |
33193 | OPGEN_RETURN(result); |
33194 | #endif |
33195 | break; |
33196 | break; |
33197 | default: |
33198 | break; |
33199 | } |
33200 | break; |
33201 | case Opcode::BranchTest64: |
33202 | switch (this->args[1].kind()) { |
33203 | case Arg::Tmp: |
33204 | switch (this->args[2].kind()) { |
33205 | case Arg::Tmp: |
33206 | #if CPU(X86_64) || CPU(ARM64) |
33207 | result = jit.branchTest64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33208 | OPGEN_RETURN(result); |
33209 | #endif |
33210 | break; |
33211 | break; |
33212 | #if USE(JSVALUE64) |
33213 | case Arg::BitImm64: |
33214 | #if CPU(ARM64) |
33215 | result = jit.branchTest64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm64()); |
33216 | OPGEN_RETURN(result); |
33217 | #endif |
33218 | break; |
33219 | break; |
33220 | #endif // USE(JSVALUE64) |
33221 | case Arg::BitImm: |
33222 | #if CPU(X86_64) |
33223 | result = jit.branchTest64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33224 | OPGEN_RETURN(result); |
33225 | #endif |
33226 | break; |
33227 | break; |
33228 | default: |
33229 | break; |
33230 | } |
33231 | break; |
33232 | case Arg::Addr: |
33233 | case Arg::Stack: |
33234 | case Arg::CallArg: |
33235 | switch (this->args[2].kind()) { |
33236 | case Arg::BitImm: |
33237 | #if CPU(X86_64) |
33238 | result = jit.branchTest64(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33239 | OPGEN_RETURN(result); |
33240 | #endif |
33241 | break; |
33242 | break; |
33243 | case Arg::Tmp: |
33244 | #if CPU(X86_64) |
33245 | result = jit.branchTest64(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr()); |
33246 | OPGEN_RETURN(result); |
33247 | #endif |
33248 | break; |
33249 | break; |
33250 | default: |
33251 | break; |
33252 | } |
33253 | break; |
33254 | case Arg::Index: |
33255 | #if CPU(X86_64) |
33256 | result = jit.branchTest64(args[0].asResultCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32()); |
33257 | OPGEN_RETURN(result); |
33258 | #endif |
33259 | break; |
33260 | break; |
33261 | default: |
33262 | break; |
33263 | } |
33264 | break; |
33265 | case Opcode::BranchTestBit64: |
33266 | switch (this->args[1].kind()) { |
33267 | case Arg::Tmp: |
33268 | switch (this->args[2].kind()) { |
33269 | case Arg::Imm: |
33270 | #if CPU(X86_64) |
33271 | result = jit.branchTestBit64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33272 | OPGEN_RETURN(result); |
33273 | #endif |
33274 | break; |
33275 | break; |
33276 | case Arg::Tmp: |
33277 | #if CPU(X86_64) |
33278 | result = jit.branchTestBit64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33279 | OPGEN_RETURN(result); |
33280 | #endif |
33281 | break; |
33282 | break; |
33283 | default: |
33284 | break; |
33285 | } |
33286 | break; |
33287 | case Arg::Addr: |
33288 | case Arg::Stack: |
33289 | case Arg::CallArg: |
33290 | #if CPU(X86_64) |
33291 | result = jit.branchTestBit64(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33292 | OPGEN_RETURN(result); |
33293 | #endif |
33294 | break; |
33295 | break; |
33296 | default: |
33297 | break; |
33298 | } |
33299 | break; |
33300 | case Opcode::BranchTestBit32: |
33301 | switch (this->args[1].kind()) { |
33302 | case Arg::Tmp: |
33303 | switch (this->args[2].kind()) { |
33304 | case Arg::Imm: |
33305 | #if CPU(X86) || CPU(X86_64) |
33306 | result = jit.branchTestBit32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32()); |
33307 | OPGEN_RETURN(result); |
33308 | #endif |
33309 | break; |
33310 | break; |
33311 | case Arg::Tmp: |
33312 | #if CPU(X86) || CPU(X86_64) |
33313 | result = jit.branchTestBit32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33314 | OPGEN_RETURN(result); |
33315 | #endif |
33316 | break; |
33317 | break; |
33318 | default: |
33319 | break; |
33320 | } |
33321 | break; |
33322 | case Arg::Addr: |
33323 | case Arg::Stack: |
33324 | case Arg::CallArg: |
33325 | #if CPU(X86) || CPU(X86_64) |
33326 | result = jit.branchTestBit32(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32()); |
33327 | OPGEN_RETURN(result); |
33328 | #endif |
33329 | break; |
33330 | break; |
33331 | default: |
33332 | break; |
33333 | } |
33334 | break; |
33335 | case Opcode::BranchDouble: |
33336 | result = jit.branchDouble(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr()); |
33337 | OPGEN_RETURN(result); |
33338 | break; |
33339 | break; |
33340 | case Opcode::BranchFloat: |
33341 | result = jit.branchFloat(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr()); |
33342 | OPGEN_RETURN(result); |
33343 | break; |
33344 | break; |
33345 | case Opcode::BranchAdd32: |
33346 | switch (this->args.size()) { |
33347 | case 4: |
33348 | switch (this->args[1].kind()) { |
33349 | case Arg::Tmp: |
33350 | switch (this->args[2].kind()) { |
33351 | case Arg::Tmp: |
33352 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
33353 | OPGEN_RETURN(result); |
33354 | break; |
33355 | break; |
33356 | case Arg::Addr: |
33357 | case Arg::Stack: |
33358 | case Arg::CallArg: |
33359 | #if CPU(X86) || CPU(X86_64) |
33360 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].gpr(), args[2].asAddress(), args[3].gpr()); |
33361 | OPGEN_RETURN(result); |
33362 | #endif |
33363 | break; |
33364 | break; |
33365 | default: |
33366 | break; |
33367 | } |
33368 | break; |
33369 | case Arg::Addr: |
33370 | case Arg::Stack: |
33371 | case Arg::CallArg: |
33372 | #if CPU(X86) || CPU(X86_64) |
33373 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr(), args[3].gpr()); |
33374 | OPGEN_RETURN(result); |
33375 | #endif |
33376 | break; |
33377 | break; |
33378 | default: |
33379 | break; |
33380 | } |
33381 | break; |
33382 | case 3: |
33383 | switch (this->args[1].kind()) { |
33384 | case Arg::Tmp: |
33385 | switch (this->args[2].kind()) { |
33386 | case Arg::Tmp: |
33387 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33388 | OPGEN_RETURN(result); |
33389 | break; |
33390 | break; |
33391 | case Arg::Addr: |
33392 | case Arg::Stack: |
33393 | case Arg::CallArg: |
33394 | #if CPU(X86) || CPU(X86_64) |
33395 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].gpr(), args[2].asAddress()); |
33396 | OPGEN_RETURN(result); |
33397 | #endif |
33398 | break; |
33399 | break; |
33400 | default: |
33401 | break; |
33402 | } |
33403 | break; |
33404 | case Arg::Imm: |
33405 | switch (this->args[2].kind()) { |
33406 | case Arg::Tmp: |
33407 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].gpr()); |
33408 | OPGEN_RETURN(result); |
33409 | break; |
33410 | break; |
33411 | case Arg::Addr: |
33412 | case Arg::Stack: |
33413 | case Arg::CallArg: |
33414 | #if CPU(X86) || CPU(X86_64) |
33415 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].asAddress()); |
33416 | OPGEN_RETURN(result); |
33417 | #endif |
33418 | break; |
33419 | break; |
33420 | default: |
33421 | break; |
33422 | } |
33423 | break; |
33424 | case Arg::Addr: |
33425 | case Arg::Stack: |
33426 | case Arg::CallArg: |
33427 | #if CPU(X86) || CPU(X86_64) |
33428 | result = jit.branchAdd32(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr()); |
33429 | OPGEN_RETURN(result); |
33430 | #endif |
33431 | break; |
33432 | break; |
33433 | default: |
33434 | break; |
33435 | } |
33436 | break; |
33437 | default: |
33438 | break; |
33439 | } |
33440 | break; |
33441 | case Opcode::BranchAdd64: |
33442 | switch (this->args.size()) { |
33443 | case 4: |
33444 | switch (this->args[1].kind()) { |
33445 | case Arg::Tmp: |
33446 | switch (this->args[2].kind()) { |
33447 | case Arg::Tmp: |
33448 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr()); |
33449 | OPGEN_RETURN(result); |
33450 | break; |
33451 | break; |
33452 | case Arg::Addr: |
33453 | case Arg::Stack: |
33454 | case Arg::CallArg: |
33455 | #if CPU(X86) || CPU(X86_64) |
33456 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].gpr(), args[2].asAddress(), args[3].gpr()); |
33457 | OPGEN_RETURN(result); |
33458 | #endif |
33459 | break; |
33460 | break; |
33461 | default: |
33462 | break; |
33463 | } |
33464 | break; |
33465 | case Arg::Addr: |
33466 | case Arg::Stack: |
33467 | case Arg::CallArg: |
33468 | #if CPU(X86) || CPU(X86_64) |
33469 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr(), args[3].gpr()); |
33470 | OPGEN_RETURN(result); |
33471 | #endif |
33472 | break; |
33473 | break; |
33474 | default: |
33475 | break; |
33476 | } |
33477 | break; |
33478 | case 3: |
33479 | switch (this->args[1].kind()) { |
33480 | case Arg::Imm: |
33481 | #if CPU(X86_64) || CPU(ARM64) |
33482 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].gpr()); |
33483 | OPGEN_RETURN(result); |
33484 | #endif |
33485 | break; |
33486 | break; |
33487 | case Arg::Tmp: |
33488 | #if CPU(X86_64) || CPU(ARM64) |
33489 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33490 | OPGEN_RETURN(result); |
33491 | #endif |
33492 | break; |
33493 | break; |
33494 | case Arg::Addr: |
33495 | case Arg::Stack: |
33496 | case Arg::CallArg: |
33497 | #if CPU(X86_64) |
33498 | result = jit.branchAdd64(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr()); |
33499 | OPGEN_RETURN(result); |
33500 | #endif |
33501 | break; |
33502 | break; |
33503 | default: |
33504 | break; |
33505 | } |
33506 | break; |
33507 | default: |
33508 | break; |
33509 | } |
33510 | break; |
33511 | case Opcode::BranchMul32: |
33512 | switch (this->args.size()) { |
33513 | case 3: |
33514 | switch (this->args[1].kind()) { |
33515 | case Arg::Tmp: |
33516 | #if CPU(X86) || CPU(X86_64) |
33517 | result = jit.branchMul32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33518 | OPGEN_RETURN(result); |
33519 | #endif |
33520 | break; |
33521 | break; |
33522 | case Arg::Addr: |
33523 | case Arg::Stack: |
33524 | case Arg::CallArg: |
33525 | #if CPU(X86) || CPU(X86_64) |
33526 | result = jit.branchMul32(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr()); |
33527 | OPGEN_RETURN(result); |
33528 | #endif |
33529 | break; |
33530 | break; |
33531 | default: |
33532 | break; |
33533 | } |
33534 | break; |
33535 | case 4: |
33536 | #if CPU(X86) || CPU(X86_64) |
33537 | result = jit.branchMul32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr()); |
33538 | OPGEN_RETURN(result); |
33539 | #endif |
33540 | break; |
33541 | break; |
33542 | case 6: |
33543 | #if CPU(ARM64) |
33544 | result = jit.branchMul32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33545 | OPGEN_RETURN(result); |
33546 | #endif |
33547 | break; |
33548 | break; |
33549 | default: |
33550 | break; |
33551 | } |
33552 | break; |
33553 | case Opcode::BranchMul64: |
33554 | switch (this->args.size()) { |
33555 | case 3: |
33556 | #if CPU(X86_64) |
33557 | result = jit.branchMul64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33558 | OPGEN_RETURN(result); |
33559 | #endif |
33560 | break; |
33561 | break; |
33562 | case 6: |
33563 | #if CPU(ARM64) |
33564 | result = jit.branchMul64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33565 | OPGEN_RETURN(result); |
33566 | #endif |
33567 | break; |
33568 | break; |
33569 | default: |
33570 | break; |
33571 | } |
33572 | break; |
33573 | case Opcode::BranchSub32: |
33574 | switch (this->args[1].kind()) { |
33575 | case Arg::Tmp: |
33576 | switch (this->args[2].kind()) { |
33577 | case Arg::Tmp: |
33578 | result = jit.branchSub32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33579 | OPGEN_RETURN(result); |
33580 | break; |
33581 | break; |
33582 | case Arg::Addr: |
33583 | case Arg::Stack: |
33584 | case Arg::CallArg: |
33585 | #if CPU(X86) || CPU(X86_64) |
33586 | result = jit.branchSub32(args[0].asResultCondition(), args[1].gpr(), args[2].asAddress()); |
33587 | OPGEN_RETURN(result); |
33588 | #endif |
33589 | break; |
33590 | break; |
33591 | default: |
33592 | break; |
33593 | } |
33594 | break; |
33595 | case Arg::Imm: |
33596 | switch (this->args[2].kind()) { |
33597 | case Arg::Tmp: |
33598 | result = jit.branchSub32(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].gpr()); |
33599 | OPGEN_RETURN(result); |
33600 | break; |
33601 | break; |
33602 | case Arg::Addr: |
33603 | case Arg::Stack: |
33604 | case Arg::CallArg: |
33605 | #if CPU(X86) || CPU(X86_64) |
33606 | result = jit.branchSub32(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].asAddress()); |
33607 | OPGEN_RETURN(result); |
33608 | #endif |
33609 | break; |
33610 | break; |
33611 | default: |
33612 | break; |
33613 | } |
33614 | break; |
33615 | case Arg::Addr: |
33616 | case Arg::Stack: |
33617 | case Arg::CallArg: |
33618 | #if CPU(X86) || CPU(X86_64) |
33619 | result = jit.branchSub32(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr()); |
33620 | OPGEN_RETURN(result); |
33621 | #endif |
33622 | break; |
33623 | break; |
33624 | default: |
33625 | break; |
33626 | } |
33627 | break; |
33628 | case Opcode::BranchSub64: |
33629 | switch (this->args[1].kind()) { |
33630 | case Arg::Imm: |
33631 | #if CPU(X86_64) || CPU(ARM64) |
33632 | result = jit.branchSub64(args[0].asResultCondition(), args[1].asTrustedImm32(), args[2].gpr()); |
33633 | OPGEN_RETURN(result); |
33634 | #endif |
33635 | break; |
33636 | break; |
33637 | case Arg::Tmp: |
33638 | #if CPU(X86_64) || CPU(ARM64) |
33639 | result = jit.branchSub64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr()); |
33640 | OPGEN_RETURN(result); |
33641 | #endif |
33642 | break; |
33643 | break; |
33644 | default: |
33645 | break; |
33646 | } |
33647 | break; |
33648 | case Opcode::BranchNeg32: |
33649 | result = jit.branchNeg32(args[0].asResultCondition(), args[1].gpr()); |
33650 | OPGEN_RETURN(result); |
33651 | break; |
33652 | break; |
33653 | case Opcode::BranchNeg64: |
33654 | #if CPU(X86_64) || CPU(ARM64) |
33655 | result = jit.branchNeg64(args[0].asResultCondition(), args[1].gpr()); |
33656 | OPGEN_RETURN(result); |
33657 | #endif |
33658 | break; |
33659 | break; |
33660 | case Opcode::MoveConditionally32: |
33661 | switch (this->args.size()) { |
33662 | case 5: |
33663 | jit.moveConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr()); |
33664 | OPGEN_RETURN(result); |
33665 | break; |
33666 | break; |
33667 | case 6: |
33668 | switch (this->args[2].kind()) { |
33669 | case Arg::Tmp: |
33670 | jit.moveConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33671 | OPGEN_RETURN(result); |
33672 | break; |
33673 | break; |
33674 | case Arg::Imm: |
33675 | jit.moveConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33676 | OPGEN_RETURN(result); |
33677 | break; |
33678 | break; |
33679 | default: |
33680 | break; |
33681 | } |
33682 | break; |
33683 | default: |
33684 | break; |
33685 | } |
33686 | break; |
33687 | case Opcode::MoveConditionally64: |
33688 | switch (this->args.size()) { |
33689 | case 5: |
33690 | #if CPU(X86_64) || CPU(ARM64) |
33691 | jit.moveConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr()); |
33692 | OPGEN_RETURN(result); |
33693 | #endif |
33694 | break; |
33695 | break; |
33696 | case 6: |
33697 | switch (this->args[2].kind()) { |
33698 | case Arg::Tmp: |
33699 | #if CPU(X86_64) || CPU(ARM64) |
33700 | jit.moveConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33701 | OPGEN_RETURN(result); |
33702 | #endif |
33703 | break; |
33704 | break; |
33705 | case Arg::Imm: |
33706 | #if CPU(X86_64) || CPU(ARM64) |
33707 | jit.moveConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33708 | OPGEN_RETURN(result); |
33709 | #endif |
33710 | break; |
33711 | break; |
33712 | default: |
33713 | break; |
33714 | } |
33715 | break; |
33716 | default: |
33717 | break; |
33718 | } |
33719 | break; |
33720 | case Opcode::MoveConditionallyTest32: |
33721 | switch (this->args.size()) { |
33722 | case 5: |
33723 | switch (this->args[2].kind()) { |
33724 | case Arg::Tmp: |
33725 | jit.moveConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr()); |
33726 | OPGEN_RETURN(result); |
33727 | break; |
33728 | break; |
33729 | case Arg::Imm: |
33730 | #if CPU(X86) || CPU(X86_64) |
33731 | jit.moveConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr()); |
33732 | OPGEN_RETURN(result); |
33733 | #endif |
33734 | break; |
33735 | break; |
33736 | default: |
33737 | break; |
33738 | } |
33739 | break; |
33740 | case 6: |
33741 | switch (this->args[2].kind()) { |
33742 | case Arg::Tmp: |
33743 | jit.moveConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33744 | OPGEN_RETURN(result); |
33745 | break; |
33746 | break; |
33747 | case Arg::BitImm: |
33748 | jit.moveConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33749 | OPGEN_RETURN(result); |
33750 | break; |
33751 | break; |
33752 | default: |
33753 | break; |
33754 | } |
33755 | break; |
33756 | default: |
33757 | break; |
33758 | } |
33759 | break; |
33760 | case Opcode::MoveConditionallyTest64: |
33761 | switch (this->args.size()) { |
33762 | case 5: |
33763 | switch (this->args[2].kind()) { |
33764 | case Arg::Tmp: |
33765 | #if CPU(X86_64) || CPU(ARM64) |
33766 | jit.moveConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr()); |
33767 | OPGEN_RETURN(result); |
33768 | #endif |
33769 | break; |
33770 | break; |
33771 | case Arg::Imm: |
33772 | #if CPU(X86_64) |
33773 | jit.moveConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr()); |
33774 | OPGEN_RETURN(result); |
33775 | #endif |
33776 | break; |
33777 | break; |
33778 | default: |
33779 | break; |
33780 | } |
33781 | break; |
33782 | case 6: |
33783 | switch (this->args[2].kind()) { |
33784 | case Arg::Tmp: |
33785 | #if CPU(X86_64) || CPU(ARM64) |
33786 | jit.moveConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33787 | OPGEN_RETURN(result); |
33788 | #endif |
33789 | break; |
33790 | break; |
33791 | case Arg::Imm: |
33792 | #if CPU(X86_64) |
33793 | jit.moveConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33794 | OPGEN_RETURN(result); |
33795 | #endif |
33796 | break; |
33797 | break; |
33798 | default: |
33799 | break; |
33800 | } |
33801 | break; |
33802 | default: |
33803 | break; |
33804 | } |
33805 | break; |
33806 | case Opcode::MoveConditionallyDouble: |
33807 | switch (this->args.size()) { |
33808 | case 6: |
33809 | jit.moveConditionallyDouble(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33810 | OPGEN_RETURN(result); |
33811 | break; |
33812 | break; |
33813 | case 5: |
33814 | jit.moveConditionallyDouble(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr(), args[4].gpr()); |
33815 | OPGEN_RETURN(result); |
33816 | break; |
33817 | break; |
33818 | default: |
33819 | break; |
33820 | } |
33821 | break; |
33822 | case Opcode::MoveConditionallyFloat: |
33823 | switch (this->args.size()) { |
33824 | case 6: |
33825 | jit.moveConditionallyFloat(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr(), args[4].gpr(), args[5].gpr()); |
33826 | OPGEN_RETURN(result); |
33827 | break; |
33828 | break; |
33829 | case 5: |
33830 | jit.moveConditionallyFloat(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].gpr(), args[4].gpr()); |
33831 | OPGEN_RETURN(result); |
33832 | break; |
33833 | break; |
33834 | default: |
33835 | break; |
33836 | } |
33837 | break; |
33838 | case Opcode::MoveDoubleConditionally32: |
33839 | switch (this->args[1].kind()) { |
33840 | case Arg::Tmp: |
33841 | switch (this->args[2].kind()) { |
33842 | case Arg::Tmp: |
33843 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33844 | OPGEN_RETURN(result); |
33845 | break; |
33846 | break; |
33847 | case Arg::Imm: |
33848 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33849 | OPGEN_RETURN(result); |
33850 | break; |
33851 | break; |
33852 | case Arg::Addr: |
33853 | case Arg::Stack: |
33854 | case Arg::CallArg: |
33855 | #if CPU(X86) || CPU(X86_64) |
33856 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].gpr(), args[2].asAddress(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33857 | OPGEN_RETURN(result); |
33858 | #endif |
33859 | break; |
33860 | break; |
33861 | default: |
33862 | break; |
33863 | } |
33864 | break; |
33865 | case Arg::Addr: |
33866 | case Arg::Stack: |
33867 | case Arg::CallArg: |
33868 | switch (this->args[2].kind()) { |
33869 | case Arg::Imm: |
33870 | #if CPU(X86) || CPU(X86_64) |
33871 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].asAddress(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33872 | OPGEN_RETURN(result); |
33873 | #endif |
33874 | break; |
33875 | break; |
33876 | case Arg::Tmp: |
33877 | #if CPU(X86) || CPU(X86_64) |
33878 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].asAddress(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33879 | OPGEN_RETURN(result); |
33880 | #endif |
33881 | break; |
33882 | break; |
33883 | default: |
33884 | break; |
33885 | } |
33886 | break; |
33887 | case Arg::Index: |
33888 | #if CPU(X86) || CPU(X86_64) |
33889 | jit.moveDoubleConditionally32(args[0].asRelationalCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33890 | OPGEN_RETURN(result); |
33891 | #endif |
33892 | break; |
33893 | break; |
33894 | default: |
33895 | break; |
33896 | } |
33897 | break; |
33898 | case Opcode::MoveDoubleConditionally64: |
33899 | switch (this->args[1].kind()) { |
33900 | case Arg::Tmp: |
33901 | switch (this->args[2].kind()) { |
33902 | case Arg::Tmp: |
33903 | #if CPU(X86_64) || CPU(ARM64) |
33904 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33905 | OPGEN_RETURN(result); |
33906 | #endif |
33907 | break; |
33908 | break; |
33909 | case Arg::Imm: |
33910 | #if CPU(X86_64) || CPU(ARM64) |
33911 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33912 | OPGEN_RETURN(result); |
33913 | #endif |
33914 | break; |
33915 | break; |
33916 | case Arg::Addr: |
33917 | case Arg::Stack: |
33918 | case Arg::CallArg: |
33919 | #if CPU(X86_64) |
33920 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].gpr(), args[2].asAddress(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33921 | OPGEN_RETURN(result); |
33922 | #endif |
33923 | break; |
33924 | break; |
33925 | default: |
33926 | break; |
33927 | } |
33928 | break; |
33929 | case Arg::Addr: |
33930 | case Arg::Stack: |
33931 | case Arg::CallArg: |
33932 | switch (this->args[2].kind()) { |
33933 | case Arg::Tmp: |
33934 | #if CPU(X86_64) |
33935 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].asAddress(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33936 | OPGEN_RETURN(result); |
33937 | #endif |
33938 | break; |
33939 | break; |
33940 | case Arg::Imm: |
33941 | #if CPU(X86_64) |
33942 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].asAddress(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33943 | OPGEN_RETURN(result); |
33944 | #endif |
33945 | break; |
33946 | break; |
33947 | default: |
33948 | break; |
33949 | } |
33950 | break; |
33951 | case Arg::Index: |
33952 | #if CPU(X86_64) |
33953 | jit.moveDoubleConditionally64(args[0].asRelationalCondition(), args[1].asBaseIndex(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33954 | OPGEN_RETURN(result); |
33955 | #endif |
33956 | break; |
33957 | break; |
33958 | default: |
33959 | break; |
33960 | } |
33961 | break; |
33962 | case Opcode::MoveDoubleConditionallyTest32: |
33963 | switch (this->args[1].kind()) { |
33964 | case Arg::Tmp: |
33965 | switch (this->args[2].kind()) { |
33966 | case Arg::Tmp: |
33967 | jit.moveDoubleConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33968 | OPGEN_RETURN(result); |
33969 | break; |
33970 | break; |
33971 | case Arg::BitImm: |
33972 | jit.moveDoubleConditionallyTest32(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33973 | OPGEN_RETURN(result); |
33974 | break; |
33975 | break; |
33976 | default: |
33977 | break; |
33978 | } |
33979 | break; |
33980 | case Arg::Addr: |
33981 | case Arg::Stack: |
33982 | case Arg::CallArg: |
33983 | #if CPU(X86) || CPU(X86_64) |
33984 | jit.moveDoubleConditionallyTest32(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33985 | OPGEN_RETURN(result); |
33986 | #endif |
33987 | break; |
33988 | break; |
33989 | case Arg::Index: |
33990 | #if CPU(X86) || CPU(X86_64) |
33991 | jit.moveDoubleConditionallyTest32(args[0].asResultCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
33992 | OPGEN_RETURN(result); |
33993 | #endif |
33994 | break; |
33995 | break; |
33996 | default: |
33997 | break; |
33998 | } |
33999 | break; |
34000 | case Opcode::MoveDoubleConditionallyTest64: |
34001 | switch (this->args[1].kind()) { |
34002 | case Arg::Tmp: |
34003 | switch (this->args[2].kind()) { |
34004 | case Arg::Tmp: |
34005 | #if CPU(X86_64) || CPU(ARM64) |
34006 | jit.moveDoubleConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34007 | OPGEN_RETURN(result); |
34008 | #endif |
34009 | break; |
34010 | break; |
34011 | case Arg::Imm: |
34012 | #if CPU(X86_64) |
34013 | jit.moveDoubleConditionallyTest64(args[0].asResultCondition(), args[1].gpr(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34014 | OPGEN_RETURN(result); |
34015 | #endif |
34016 | break; |
34017 | break; |
34018 | default: |
34019 | break; |
34020 | } |
34021 | break; |
34022 | case Arg::Addr: |
34023 | case Arg::Stack: |
34024 | case Arg::CallArg: |
34025 | switch (this->args[2].kind()) { |
34026 | case Arg::Imm: |
34027 | #if CPU(X86_64) |
34028 | jit.moveDoubleConditionallyTest64(args[0].asResultCondition(), args[1].asAddress(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34029 | OPGEN_RETURN(result); |
34030 | #endif |
34031 | break; |
34032 | break; |
34033 | case Arg::Tmp: |
34034 | #if CPU(X86_64) |
34035 | jit.moveDoubleConditionallyTest64(args[0].asResultCondition(), args[1].asAddress(), args[2].gpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34036 | OPGEN_RETURN(result); |
34037 | #endif |
34038 | break; |
34039 | break; |
34040 | default: |
34041 | break; |
34042 | } |
34043 | break; |
34044 | case Arg::Index: |
34045 | #if CPU(X86_64) |
34046 | jit.moveDoubleConditionallyTest64(args[0].asResultCondition(), args[1].asBaseIndex(), args[2].asTrustedImm32(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34047 | OPGEN_RETURN(result); |
34048 | #endif |
34049 | break; |
34050 | break; |
34051 | default: |
34052 | break; |
34053 | } |
34054 | break; |
34055 | case Opcode::MoveDoubleConditionallyDouble: |
34056 | jit.moveDoubleConditionallyDouble(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34057 | OPGEN_RETURN(result); |
34058 | break; |
34059 | break; |
34060 | case Opcode::MoveDoubleConditionallyFloat: |
34061 | jit.moveDoubleConditionallyFloat(args[0].asDoubleCondition(), args[1].fpr(), args[2].fpr(), args[3].fpr(), args[4].fpr(), args[5].fpr()); |
34062 | OPGEN_RETURN(result); |
34063 | break; |
34064 | break; |
34065 | case Opcode::MemoryFence: |
34066 | jit.memoryFence(); |
34067 | OPGEN_RETURN(result); |
34068 | break; |
34069 | break; |
34070 | case Opcode::StoreFence: |
34071 | jit.storeFence(); |
34072 | OPGEN_RETURN(result); |
34073 | break; |
34074 | break; |
34075 | case Opcode::LoadFence: |
34076 | jit.loadFence(); |
34077 | OPGEN_RETURN(result); |
34078 | break; |
34079 | break; |
34080 | case Opcode::Jump: |
34081 | result = jit.jump(); |
34082 | OPGEN_RETURN(result); |
34083 | break; |
34084 | break; |
34085 | case Opcode::RetVoid: |
34086 | jit.retVoid(); |
34087 | OPGEN_RETURN(result); |
34088 | break; |
34089 | break; |
34090 | case Opcode::Ret32: |
34091 | jit.ret32(args[0].gpr()); |
34092 | OPGEN_RETURN(result); |
34093 | break; |
34094 | break; |
34095 | case Opcode::Ret64: |
34096 | #if CPU(X86_64) || CPU(ARM64) |
34097 | jit.ret64(args[0].gpr()); |
34098 | OPGEN_RETURN(result); |
34099 | #endif |
34100 | break; |
34101 | break; |
34102 | case Opcode::RetFloat: |
34103 | jit.retFloat(args[0].fpr()); |
34104 | OPGEN_RETURN(result); |
34105 | break; |
34106 | break; |
34107 | case Opcode::RetDouble: |
34108 | jit.retDouble(args[0].fpr()); |
34109 | OPGEN_RETURN(result); |
34110 | break; |
34111 | break; |
34112 | case Opcode::Oops: |
34113 | jit.oops(); |
34114 | OPGEN_RETURN(result); |
34115 | break; |
34116 | break; |
34117 | case Opcode::EntrySwitch: |
34118 | OPGEN_RETURN(EntrySwitchCustom::generate(*this, jit, context)); |
34119 | break; |
34120 | case Opcode::Shuffle: |
34121 | OPGEN_RETURN(ShuffleCustom::generate(*this, jit, context)); |
34122 | break; |
34123 | case Opcode::Patch: |
34124 | OPGEN_RETURN(PatchCustom::generate(*this, jit, context)); |
34125 | break; |
34126 | case Opcode::CCall: |
34127 | OPGEN_RETURN(CCallCustom::generate(*this, jit, context)); |
34128 | break; |
34129 | case Opcode::ColdCCall: |
34130 | OPGEN_RETURN(ColdCCallCustom::generate(*this, jit, context)); |
34131 | break; |
34132 | case Opcode::WasmBoundsCheck: |
34133 | OPGEN_RETURN(WasmBoundsCheckCustom::generate(*this, jit, context)); |
34134 | break; |
34135 | default: |
34136 | break; |
34137 | } |
34138 | RELEASE_ASSERT_NOT_REACHED(); |
34139 | return result; |
34140 | } |
34141 | } } } // namespace JSC::B3::Air |
34142 | #endif // AirOpcodeGenerated_h |
34143 | |