1#ifdef GET_OPCODE_NAMES
2OP_Activate,
3#endif
4#ifdef GET_INTERP
5case OP_Activate: {
6 if (!Activate(S, OpPC))
7 return false;
8 continue;
9}
10#endif
11#ifdef GET_DISASM
12case OP_Activate:
13 Text.Op = PrintName("Activate");
14 break;
15#endif
16#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
17bool emitActivate(SourceInfo);
18#endif
19#ifdef GET_LINK_IMPL
20bool ByteCodeEmitter::emitActivate(SourceInfo L) {
21 return emitOp<>(OP_Activate, L);
22}
23#endif
24#ifdef GET_EVAL_IMPL
25bool EvalEmitter::emitActivate(SourceInfo L) {
26 if (!isActive()) return true;
27 CurrentSource = L;
28 return Activate(S, OpPC);
29}
30#endif
31#ifdef GET_OPCODE_NAMES
32OP_ActivateThisField,
33#endif
34#ifdef GET_INTERP
35case OP_ActivateThisField: {
36 const auto V0 = ReadArg<uint32_t>(S, PC);
37 if (!ActivateThisField(S, OpPC, V0))
38 return false;
39 continue;
40}
41#endif
42#ifdef GET_DISASM
43case OP_ActivateThisField:
44 Text.Op = PrintName("ActivateThisField");
45 Text.Args.push_back(printArg<uint32_t>(P, PC));
46 break;
47#endif
48#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
49bool emitActivateThisField( uint32_t , SourceInfo);
50#endif
51#ifdef GET_LINK_IMPL
52bool ByteCodeEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
53 return emitOp<uint32_t>(OP_ActivateThisField, A0, L);
54}
55#endif
56#ifdef GET_EVAL_IMPL
57bool EvalEmitter::emitActivateThisField( uint32_t A0, SourceInfo L) {
58 if (!isActive()) return true;
59 CurrentSource = L;
60 return ActivateThisField(S, OpPC, A0);
61}
62#endif
63#ifdef GET_OPCODE_NAMES
64OP_AddSint8,
65OP_AddUint8,
66OP_AddSint16,
67OP_AddUint16,
68OP_AddSint32,
69OP_AddUint32,
70OP_AddSint64,
71OP_AddUint64,
72OP_AddIntAP,
73OP_AddIntAPS,
74OP_AddBool,
75OP_AddFixedPoint,
76#endif
77#ifdef GET_INTERP
78case OP_AddSint8: {
79 if (!Add<PT_Sint8>(S, OpPC))
80 return false;
81 continue;
82}
83case OP_AddUint8: {
84 if (!Add<PT_Uint8>(S, OpPC))
85 return false;
86 continue;
87}
88case OP_AddSint16: {
89 if (!Add<PT_Sint16>(S, OpPC))
90 return false;
91 continue;
92}
93case OP_AddUint16: {
94 if (!Add<PT_Uint16>(S, OpPC))
95 return false;
96 continue;
97}
98case OP_AddSint32: {
99 if (!Add<PT_Sint32>(S, OpPC))
100 return false;
101 continue;
102}
103case OP_AddUint32: {
104 if (!Add<PT_Uint32>(S, OpPC))
105 return false;
106 continue;
107}
108case OP_AddSint64: {
109 if (!Add<PT_Sint64>(S, OpPC))
110 return false;
111 continue;
112}
113case OP_AddUint64: {
114 if (!Add<PT_Uint64>(S, OpPC))
115 return false;
116 continue;
117}
118case OP_AddIntAP: {
119 if (!Add<PT_IntAP>(S, OpPC))
120 return false;
121 continue;
122}
123case OP_AddIntAPS: {
124 if (!Add<PT_IntAPS>(S, OpPC))
125 return false;
126 continue;
127}
128case OP_AddBool: {
129 if (!Add<PT_Bool>(S, OpPC))
130 return false;
131 continue;
132}
133case OP_AddFixedPoint: {
134 if (!Add<PT_FixedPoint>(S, OpPC))
135 return false;
136 continue;
137}
138#endif
139#ifdef GET_DISASM
140case OP_AddSint8:
141 Text.Op = PrintName("AddSint8");
142 break;
143case OP_AddUint8:
144 Text.Op = PrintName("AddUint8");
145 break;
146case OP_AddSint16:
147 Text.Op = PrintName("AddSint16");
148 break;
149case OP_AddUint16:
150 Text.Op = PrintName("AddUint16");
151 break;
152case OP_AddSint32:
153 Text.Op = PrintName("AddSint32");
154 break;
155case OP_AddUint32:
156 Text.Op = PrintName("AddUint32");
157 break;
158case OP_AddSint64:
159 Text.Op = PrintName("AddSint64");
160 break;
161case OP_AddUint64:
162 Text.Op = PrintName("AddUint64");
163 break;
164case OP_AddIntAP:
165 Text.Op = PrintName("AddIntAP");
166 break;
167case OP_AddIntAPS:
168 Text.Op = PrintName("AddIntAPS");
169 break;
170case OP_AddBool:
171 Text.Op = PrintName("AddBool");
172 break;
173case OP_AddFixedPoint:
174 Text.Op = PrintName("AddFixedPoint");
175 break;
176#endif
177#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
178bool emitAddSint8(SourceInfo);
179bool emitAddUint8(SourceInfo);
180bool emitAddSint16(SourceInfo);
181bool emitAddUint16(SourceInfo);
182bool emitAddSint32(SourceInfo);
183bool emitAddUint32(SourceInfo);
184bool emitAddSint64(SourceInfo);
185bool emitAddUint64(SourceInfo);
186bool emitAddIntAP(SourceInfo);
187bool emitAddIntAPS(SourceInfo);
188bool emitAddBool(SourceInfo);
189bool emitAddFixedPoint(SourceInfo);
190#endif
191#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
192[[nodiscard]] bool emitAdd(PrimType, SourceInfo I);
193#endif
194#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
195bool
196#if defined(GET_EVAL_IMPL)
197EvalEmitter
198#else
199ByteCodeEmitter
200#endif
201::emitAdd(PrimType T0, SourceInfo I) {
202 switch (T0) {
203 case PT_Sint8:
204 return emitAddSint8(I);
205 case PT_Uint8:
206 return emitAddUint8(I);
207 case PT_Sint16:
208 return emitAddSint16(I);
209 case PT_Uint16:
210 return emitAddUint16(I);
211 case PT_Sint32:
212 return emitAddSint32(I);
213 case PT_Uint32:
214 return emitAddUint32(I);
215 case PT_Sint64:
216 return emitAddSint64(I);
217 case PT_Uint64:
218 return emitAddUint64(I);
219 case PT_IntAP:
220 return emitAddIntAP(I);
221 case PT_IntAPS:
222 return emitAddIntAPS(I);
223 case PT_Bool:
224 return emitAddBool(I);
225 case PT_FixedPoint:
226 return emitAddFixedPoint(I);
227 default: llvm_unreachable("invalid type: emitAdd");
228 }
229 llvm_unreachable("invalid enum value");
230}
231#endif
232#ifdef GET_LINK_IMPL
233bool ByteCodeEmitter::emitAddSint8(SourceInfo L) {
234 return emitOp<>(OP_AddSint8, L);
235}
236bool ByteCodeEmitter::emitAddUint8(SourceInfo L) {
237 return emitOp<>(OP_AddUint8, L);
238}
239bool ByteCodeEmitter::emitAddSint16(SourceInfo L) {
240 return emitOp<>(OP_AddSint16, L);
241}
242bool ByteCodeEmitter::emitAddUint16(SourceInfo L) {
243 return emitOp<>(OP_AddUint16, L);
244}
245bool ByteCodeEmitter::emitAddSint32(SourceInfo L) {
246 return emitOp<>(OP_AddSint32, L);
247}
248bool ByteCodeEmitter::emitAddUint32(SourceInfo L) {
249 return emitOp<>(OP_AddUint32, L);
250}
251bool ByteCodeEmitter::emitAddSint64(SourceInfo L) {
252 return emitOp<>(OP_AddSint64, L);
253}
254bool ByteCodeEmitter::emitAddUint64(SourceInfo L) {
255 return emitOp<>(OP_AddUint64, L);
256}
257bool ByteCodeEmitter::emitAddIntAP(SourceInfo L) {
258 return emitOp<>(OP_AddIntAP, L);
259}
260bool ByteCodeEmitter::emitAddIntAPS(SourceInfo L) {
261 return emitOp<>(OP_AddIntAPS, L);
262}
263bool ByteCodeEmitter::emitAddBool(SourceInfo L) {
264 return emitOp<>(OP_AddBool, L);
265}
266bool ByteCodeEmitter::emitAddFixedPoint(SourceInfo L) {
267 return emitOp<>(OP_AddFixedPoint, L);
268}
269#endif
270#ifdef GET_EVAL_IMPL
271bool EvalEmitter::emitAddSint8(SourceInfo L) {
272 if (!isActive()) return true;
273 CurrentSource = L;
274 return Add<PT_Sint8>(S, OpPC);
275}
276bool EvalEmitter::emitAddUint8(SourceInfo L) {
277 if (!isActive()) return true;
278 CurrentSource = L;
279 return Add<PT_Uint8>(S, OpPC);
280}
281bool EvalEmitter::emitAddSint16(SourceInfo L) {
282 if (!isActive()) return true;
283 CurrentSource = L;
284 return Add<PT_Sint16>(S, OpPC);
285}
286bool EvalEmitter::emitAddUint16(SourceInfo L) {
287 if (!isActive()) return true;
288 CurrentSource = L;
289 return Add<PT_Uint16>(S, OpPC);
290}
291bool EvalEmitter::emitAddSint32(SourceInfo L) {
292 if (!isActive()) return true;
293 CurrentSource = L;
294 return Add<PT_Sint32>(S, OpPC);
295}
296bool EvalEmitter::emitAddUint32(SourceInfo L) {
297 if (!isActive()) return true;
298 CurrentSource = L;
299 return Add<PT_Uint32>(S, OpPC);
300}
301bool EvalEmitter::emitAddSint64(SourceInfo L) {
302 if (!isActive()) return true;
303 CurrentSource = L;
304 return Add<PT_Sint64>(S, OpPC);
305}
306bool EvalEmitter::emitAddUint64(SourceInfo L) {
307 if (!isActive()) return true;
308 CurrentSource = L;
309 return Add<PT_Uint64>(S, OpPC);
310}
311bool EvalEmitter::emitAddIntAP(SourceInfo L) {
312 if (!isActive()) return true;
313 CurrentSource = L;
314 return Add<PT_IntAP>(S, OpPC);
315}
316bool EvalEmitter::emitAddIntAPS(SourceInfo L) {
317 if (!isActive()) return true;
318 CurrentSource = L;
319 return Add<PT_IntAPS>(S, OpPC);
320}
321bool EvalEmitter::emitAddBool(SourceInfo L) {
322 if (!isActive()) return true;
323 CurrentSource = L;
324 return Add<PT_Bool>(S, OpPC);
325}
326bool EvalEmitter::emitAddFixedPoint(SourceInfo L) {
327 if (!isActive()) return true;
328 CurrentSource = L;
329 return Add<PT_FixedPoint>(S, OpPC);
330}
331#endif
332#ifdef GET_OPCODE_NAMES
333OP_AddOffsetSint8,
334OP_AddOffsetUint8,
335OP_AddOffsetSint16,
336OP_AddOffsetUint16,
337OP_AddOffsetSint32,
338OP_AddOffsetUint32,
339OP_AddOffsetSint64,
340OP_AddOffsetUint64,
341OP_AddOffsetIntAP,
342OP_AddOffsetIntAPS,
343OP_AddOffsetBool,
344#endif
345#ifdef GET_INTERP
346case OP_AddOffsetSint8: {
347 if (!AddOffset<PT_Sint8>(S, OpPC))
348 return false;
349 continue;
350}
351case OP_AddOffsetUint8: {
352 if (!AddOffset<PT_Uint8>(S, OpPC))
353 return false;
354 continue;
355}
356case OP_AddOffsetSint16: {
357 if (!AddOffset<PT_Sint16>(S, OpPC))
358 return false;
359 continue;
360}
361case OP_AddOffsetUint16: {
362 if (!AddOffset<PT_Uint16>(S, OpPC))
363 return false;
364 continue;
365}
366case OP_AddOffsetSint32: {
367 if (!AddOffset<PT_Sint32>(S, OpPC))
368 return false;
369 continue;
370}
371case OP_AddOffsetUint32: {
372 if (!AddOffset<PT_Uint32>(S, OpPC))
373 return false;
374 continue;
375}
376case OP_AddOffsetSint64: {
377 if (!AddOffset<PT_Sint64>(S, OpPC))
378 return false;
379 continue;
380}
381case OP_AddOffsetUint64: {
382 if (!AddOffset<PT_Uint64>(S, OpPC))
383 return false;
384 continue;
385}
386case OP_AddOffsetIntAP: {
387 if (!AddOffset<PT_IntAP>(S, OpPC))
388 return false;
389 continue;
390}
391case OP_AddOffsetIntAPS: {
392 if (!AddOffset<PT_IntAPS>(S, OpPC))
393 return false;
394 continue;
395}
396case OP_AddOffsetBool: {
397 if (!AddOffset<PT_Bool>(S, OpPC))
398 return false;
399 continue;
400}
401#endif
402#ifdef GET_DISASM
403case OP_AddOffsetSint8:
404 Text.Op = PrintName("AddOffsetSint8");
405 break;
406case OP_AddOffsetUint8:
407 Text.Op = PrintName("AddOffsetUint8");
408 break;
409case OP_AddOffsetSint16:
410 Text.Op = PrintName("AddOffsetSint16");
411 break;
412case OP_AddOffsetUint16:
413 Text.Op = PrintName("AddOffsetUint16");
414 break;
415case OP_AddOffsetSint32:
416 Text.Op = PrintName("AddOffsetSint32");
417 break;
418case OP_AddOffsetUint32:
419 Text.Op = PrintName("AddOffsetUint32");
420 break;
421case OP_AddOffsetSint64:
422 Text.Op = PrintName("AddOffsetSint64");
423 break;
424case OP_AddOffsetUint64:
425 Text.Op = PrintName("AddOffsetUint64");
426 break;
427case OP_AddOffsetIntAP:
428 Text.Op = PrintName("AddOffsetIntAP");
429 break;
430case OP_AddOffsetIntAPS:
431 Text.Op = PrintName("AddOffsetIntAPS");
432 break;
433case OP_AddOffsetBool:
434 Text.Op = PrintName("AddOffsetBool");
435 break;
436#endif
437#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
438bool emitAddOffsetSint8(SourceInfo);
439bool emitAddOffsetUint8(SourceInfo);
440bool emitAddOffsetSint16(SourceInfo);
441bool emitAddOffsetUint16(SourceInfo);
442bool emitAddOffsetSint32(SourceInfo);
443bool emitAddOffsetUint32(SourceInfo);
444bool emitAddOffsetSint64(SourceInfo);
445bool emitAddOffsetUint64(SourceInfo);
446bool emitAddOffsetIntAP(SourceInfo);
447bool emitAddOffsetIntAPS(SourceInfo);
448bool emitAddOffsetBool(SourceInfo);
449#endif
450#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
451[[nodiscard]] bool emitAddOffset(PrimType, SourceInfo I);
452#endif
453#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
454bool
455#if defined(GET_EVAL_IMPL)
456EvalEmitter
457#else
458ByteCodeEmitter
459#endif
460::emitAddOffset(PrimType T0, SourceInfo I) {
461 switch (T0) {
462 case PT_Sint8:
463 return emitAddOffsetSint8(I);
464 case PT_Uint8:
465 return emitAddOffsetUint8(I);
466 case PT_Sint16:
467 return emitAddOffsetSint16(I);
468 case PT_Uint16:
469 return emitAddOffsetUint16(I);
470 case PT_Sint32:
471 return emitAddOffsetSint32(I);
472 case PT_Uint32:
473 return emitAddOffsetUint32(I);
474 case PT_Sint64:
475 return emitAddOffsetSint64(I);
476 case PT_Uint64:
477 return emitAddOffsetUint64(I);
478 case PT_IntAP:
479 return emitAddOffsetIntAP(I);
480 case PT_IntAPS:
481 return emitAddOffsetIntAPS(I);
482 case PT_Bool:
483 return emitAddOffsetBool(I);
484 default: llvm_unreachable("invalid type: emitAddOffset");
485 }
486 llvm_unreachable("invalid enum value");
487}
488#endif
489#ifdef GET_LINK_IMPL
490bool ByteCodeEmitter::emitAddOffsetSint8(SourceInfo L) {
491 return emitOp<>(OP_AddOffsetSint8, L);
492}
493bool ByteCodeEmitter::emitAddOffsetUint8(SourceInfo L) {
494 return emitOp<>(OP_AddOffsetUint8, L);
495}
496bool ByteCodeEmitter::emitAddOffsetSint16(SourceInfo L) {
497 return emitOp<>(OP_AddOffsetSint16, L);
498}
499bool ByteCodeEmitter::emitAddOffsetUint16(SourceInfo L) {
500 return emitOp<>(OP_AddOffsetUint16, L);
501}
502bool ByteCodeEmitter::emitAddOffsetSint32(SourceInfo L) {
503 return emitOp<>(OP_AddOffsetSint32, L);
504}
505bool ByteCodeEmitter::emitAddOffsetUint32(SourceInfo L) {
506 return emitOp<>(OP_AddOffsetUint32, L);
507}
508bool ByteCodeEmitter::emitAddOffsetSint64(SourceInfo L) {
509 return emitOp<>(OP_AddOffsetSint64, L);
510}
511bool ByteCodeEmitter::emitAddOffsetUint64(SourceInfo L) {
512 return emitOp<>(OP_AddOffsetUint64, L);
513}
514bool ByteCodeEmitter::emitAddOffsetIntAP(SourceInfo L) {
515 return emitOp<>(OP_AddOffsetIntAP, L);
516}
517bool ByteCodeEmitter::emitAddOffsetIntAPS(SourceInfo L) {
518 return emitOp<>(OP_AddOffsetIntAPS, L);
519}
520bool ByteCodeEmitter::emitAddOffsetBool(SourceInfo L) {
521 return emitOp<>(OP_AddOffsetBool, L);
522}
523#endif
524#ifdef GET_EVAL_IMPL
525bool EvalEmitter::emitAddOffsetSint8(SourceInfo L) {
526 if (!isActive()) return true;
527 CurrentSource = L;
528 return AddOffset<PT_Sint8>(S, OpPC);
529}
530bool EvalEmitter::emitAddOffsetUint8(SourceInfo L) {
531 if (!isActive()) return true;
532 CurrentSource = L;
533 return AddOffset<PT_Uint8>(S, OpPC);
534}
535bool EvalEmitter::emitAddOffsetSint16(SourceInfo L) {
536 if (!isActive()) return true;
537 CurrentSource = L;
538 return AddOffset<PT_Sint16>(S, OpPC);
539}
540bool EvalEmitter::emitAddOffsetUint16(SourceInfo L) {
541 if (!isActive()) return true;
542 CurrentSource = L;
543 return AddOffset<PT_Uint16>(S, OpPC);
544}
545bool EvalEmitter::emitAddOffsetSint32(SourceInfo L) {
546 if (!isActive()) return true;
547 CurrentSource = L;
548 return AddOffset<PT_Sint32>(S, OpPC);
549}
550bool EvalEmitter::emitAddOffsetUint32(SourceInfo L) {
551 if (!isActive()) return true;
552 CurrentSource = L;
553 return AddOffset<PT_Uint32>(S, OpPC);
554}
555bool EvalEmitter::emitAddOffsetSint64(SourceInfo L) {
556 if (!isActive()) return true;
557 CurrentSource = L;
558 return AddOffset<PT_Sint64>(S, OpPC);
559}
560bool EvalEmitter::emitAddOffsetUint64(SourceInfo L) {
561 if (!isActive()) return true;
562 CurrentSource = L;
563 return AddOffset<PT_Uint64>(S, OpPC);
564}
565bool EvalEmitter::emitAddOffsetIntAP(SourceInfo L) {
566 if (!isActive()) return true;
567 CurrentSource = L;
568 return AddOffset<PT_IntAP>(S, OpPC);
569}
570bool EvalEmitter::emitAddOffsetIntAPS(SourceInfo L) {
571 if (!isActive()) return true;
572 CurrentSource = L;
573 return AddOffset<PT_IntAPS>(S, OpPC);
574}
575bool EvalEmitter::emitAddOffsetBool(SourceInfo L) {
576 if (!isActive()) return true;
577 CurrentSource = L;
578 return AddOffset<PT_Bool>(S, OpPC);
579}
580#endif
581#ifdef GET_OPCODE_NAMES
582OP_Addf,
583#endif
584#ifdef GET_INTERP
585case OP_Addf: {
586 const auto V0 = ReadArg<uint32_t>(S, PC);
587 if (!Addf(S, OpPC, V0))
588 return false;
589 continue;
590}
591#endif
592#ifdef GET_DISASM
593case OP_Addf:
594 Text.Op = PrintName("Addf");
595 Text.Args.push_back(printArg<uint32_t>(P, PC));
596 break;
597#endif
598#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
599bool emitAddf( uint32_t , SourceInfo);
600#endif
601#ifdef GET_LINK_IMPL
602bool ByteCodeEmitter::emitAddf( uint32_t A0, SourceInfo L) {
603 return emitOp<uint32_t>(OP_Addf, A0, L);
604}
605#endif
606#ifdef GET_EVAL_IMPL
607bool EvalEmitter::emitAddf( uint32_t A0, SourceInfo L) {
608 if (!isActive()) return true;
609 CurrentSource = L;
610 return Addf(S, OpPC, A0);
611}
612#endif
613#ifdef GET_OPCODE_NAMES
614OP_Alloc,
615#endif
616#ifdef GET_INTERP
617case OP_Alloc: {
618 const auto V0 = ReadArg<const Descriptor *>(S, PC);
619 if (!Alloc(S, OpPC, V0))
620 return false;
621 continue;
622}
623#endif
624#ifdef GET_DISASM
625case OP_Alloc:
626 Text.Op = PrintName("Alloc");
627 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
628 break;
629#endif
630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
631bool emitAlloc( const Descriptor * , SourceInfo);
632#endif
633#ifdef GET_LINK_IMPL
634bool ByteCodeEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
635 return emitOp<const Descriptor *>(OP_Alloc, A0, L);
636}
637#endif
638#ifdef GET_EVAL_IMPL
639bool EvalEmitter::emitAlloc( const Descriptor * A0, SourceInfo L) {
640 if (!isActive()) return true;
641 CurrentSource = L;
642 return Alloc(S, OpPC, A0);
643}
644#endif
645#ifdef GET_OPCODE_NAMES
646OP_AllocCNSint8,
647OP_AllocCNUint8,
648OP_AllocCNSint16,
649OP_AllocCNUint16,
650OP_AllocCNSint32,
651OP_AllocCNUint32,
652OP_AllocCNSint64,
653OP_AllocCNUint64,
654OP_AllocCNIntAP,
655OP_AllocCNIntAPS,
656#endif
657#ifdef GET_INTERP
658case OP_AllocCNSint8: {
659 const auto V0 = ReadArg<const Descriptor *>(S, PC);
660 const auto V1 = ReadArg<bool>(S, PC);
661 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1))
662 return false;
663 continue;
664}
665case OP_AllocCNUint8: {
666 const auto V0 = ReadArg<const Descriptor *>(S, PC);
667 const auto V1 = ReadArg<bool>(S, PC);
668 if (!AllocCN<PT_Uint8>(S, OpPC, V0, V1))
669 return false;
670 continue;
671}
672case OP_AllocCNSint16: {
673 const auto V0 = ReadArg<const Descriptor *>(S, PC);
674 const auto V1 = ReadArg<bool>(S, PC);
675 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1))
676 return false;
677 continue;
678}
679case OP_AllocCNUint16: {
680 const auto V0 = ReadArg<const Descriptor *>(S, PC);
681 const auto V1 = ReadArg<bool>(S, PC);
682 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1))
683 return false;
684 continue;
685}
686case OP_AllocCNSint32: {
687 const auto V0 = ReadArg<const Descriptor *>(S, PC);
688 const auto V1 = ReadArg<bool>(S, PC);
689 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1))
690 return false;
691 continue;
692}
693case OP_AllocCNUint32: {
694 const auto V0 = ReadArg<const Descriptor *>(S, PC);
695 const auto V1 = ReadArg<bool>(S, PC);
696 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1))
697 return false;
698 continue;
699}
700case OP_AllocCNSint64: {
701 const auto V0 = ReadArg<const Descriptor *>(S, PC);
702 const auto V1 = ReadArg<bool>(S, PC);
703 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1))
704 return false;
705 continue;
706}
707case OP_AllocCNUint64: {
708 const auto V0 = ReadArg<const Descriptor *>(S, PC);
709 const auto V1 = ReadArg<bool>(S, PC);
710 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1))
711 return false;
712 continue;
713}
714case OP_AllocCNIntAP: {
715 const auto V0 = ReadArg<const Descriptor *>(S, PC);
716 const auto V1 = ReadArg<bool>(S, PC);
717 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1))
718 return false;
719 continue;
720}
721case OP_AllocCNIntAPS: {
722 const auto V0 = ReadArg<const Descriptor *>(S, PC);
723 const auto V1 = ReadArg<bool>(S, PC);
724 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1))
725 return false;
726 continue;
727}
728#endif
729#ifdef GET_DISASM
730case OP_AllocCNSint8:
731 Text.Op = PrintName("AllocCNSint8");
732 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
733 Text.Args.push_back(printArg<bool>(P, PC));
734 break;
735case OP_AllocCNUint8:
736 Text.Op = PrintName("AllocCNUint8");
737 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
738 Text.Args.push_back(printArg<bool>(P, PC));
739 break;
740case OP_AllocCNSint16:
741 Text.Op = PrintName("AllocCNSint16");
742 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
743 Text.Args.push_back(printArg<bool>(P, PC));
744 break;
745case OP_AllocCNUint16:
746 Text.Op = PrintName("AllocCNUint16");
747 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
748 Text.Args.push_back(printArg<bool>(P, PC));
749 break;
750case OP_AllocCNSint32:
751 Text.Op = PrintName("AllocCNSint32");
752 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
753 Text.Args.push_back(printArg<bool>(P, PC));
754 break;
755case OP_AllocCNUint32:
756 Text.Op = PrintName("AllocCNUint32");
757 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
758 Text.Args.push_back(printArg<bool>(P, PC));
759 break;
760case OP_AllocCNSint64:
761 Text.Op = PrintName("AllocCNSint64");
762 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
763 Text.Args.push_back(printArg<bool>(P, PC));
764 break;
765case OP_AllocCNUint64:
766 Text.Op = PrintName("AllocCNUint64");
767 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
768 Text.Args.push_back(printArg<bool>(P, PC));
769 break;
770case OP_AllocCNIntAP:
771 Text.Op = PrintName("AllocCNIntAP");
772 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
773 Text.Args.push_back(printArg<bool>(P, PC));
774 break;
775case OP_AllocCNIntAPS:
776 Text.Op = PrintName("AllocCNIntAPS");
777 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
778 Text.Args.push_back(printArg<bool>(P, PC));
779 break;
780#endif
781#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
782bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
783bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
784bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
785bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
786bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
787bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
788bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
789bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
790bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
791bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
792#endif
793#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
794[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
795#endif
796#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
797bool
798#if defined(GET_EVAL_IMPL)
799EvalEmitter
800#else
801ByteCodeEmitter
802#endif
803::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
804 switch (T0) {
805 case PT_Sint8:
806 return emitAllocCNSint8(A0, A1, I);
807 case PT_Uint8:
808 return emitAllocCNUint8(A0, A1, I);
809 case PT_Sint16:
810 return emitAllocCNSint16(A0, A1, I);
811 case PT_Uint16:
812 return emitAllocCNUint16(A0, A1, I);
813 case PT_Sint32:
814 return emitAllocCNSint32(A0, A1, I);
815 case PT_Uint32:
816 return emitAllocCNUint32(A0, A1, I);
817 case PT_Sint64:
818 return emitAllocCNSint64(A0, A1, I);
819 case PT_Uint64:
820 return emitAllocCNUint64(A0, A1, I);
821 case PT_IntAP:
822 return emitAllocCNIntAP(A0, A1, I);
823 case PT_IntAPS:
824 return emitAllocCNIntAPS(A0, A1, I);
825 default: llvm_unreachable("invalid type: emitAllocCN");
826 }
827 llvm_unreachable("invalid enum value");
828}
829#endif
830#ifdef GET_LINK_IMPL
831bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
832 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
833}
834bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
835 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
836}
837bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
838 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
839}
840bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
841 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
842}
843bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
844 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
845}
846bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
847 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
848}
849bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
850 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
851}
852bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
853 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
854}
855bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
856 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
857}
858bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
859 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
860}
861#endif
862#ifdef GET_EVAL_IMPL
863bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
864 if (!isActive()) return true;
865 CurrentSource = L;
866 return AllocCN<PT_Sint8>(S, OpPC, A0, A1);
867}
868bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
869 if (!isActive()) return true;
870 CurrentSource = L;
871 return AllocCN<PT_Uint8>(S, OpPC, A0, A1);
872}
873bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
874 if (!isActive()) return true;
875 CurrentSource = L;
876 return AllocCN<PT_Sint16>(S, OpPC, A0, A1);
877}
878bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
879 if (!isActive()) return true;
880 CurrentSource = L;
881 return AllocCN<PT_Uint16>(S, OpPC, A0, A1);
882}
883bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
884 if (!isActive()) return true;
885 CurrentSource = L;
886 return AllocCN<PT_Sint32>(S, OpPC, A0, A1);
887}
888bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
889 if (!isActive()) return true;
890 CurrentSource = L;
891 return AllocCN<PT_Uint32>(S, OpPC, A0, A1);
892}
893bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
894 if (!isActive()) return true;
895 CurrentSource = L;
896 return AllocCN<PT_Sint64>(S, OpPC, A0, A1);
897}
898bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
899 if (!isActive()) return true;
900 CurrentSource = L;
901 return AllocCN<PT_Uint64>(S, OpPC, A0, A1);
902}
903bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
904 if (!isActive()) return true;
905 CurrentSource = L;
906 return AllocCN<PT_IntAP>(S, OpPC, A0, A1);
907}
908bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
909 if (!isActive()) return true;
910 CurrentSource = L;
911 return AllocCN<PT_IntAPS>(S, OpPC, A0, A1);
912}
913#endif
914#ifdef GET_OPCODE_NAMES
915OP_AllocNSint8,
916OP_AllocNUint8,
917OP_AllocNSint16,
918OP_AllocNUint16,
919OP_AllocNSint32,
920OP_AllocNUint32,
921OP_AllocNSint64,
922OP_AllocNUint64,
923OP_AllocNIntAP,
924OP_AllocNIntAPS,
925#endif
926#ifdef GET_INTERP
927case OP_AllocNSint8: {
928 const auto V0 = ReadArg<PrimType>(S, PC);
929 const auto V1 = ReadArg<const Expr *>(S, PC);
930 const auto V2 = ReadArg<bool>(S, PC);
931 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2))
932 return false;
933 continue;
934}
935case OP_AllocNUint8: {
936 const auto V0 = ReadArg<PrimType>(S, PC);
937 const auto V1 = ReadArg<const Expr *>(S, PC);
938 const auto V2 = ReadArg<bool>(S, PC);
939 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2))
940 return false;
941 continue;
942}
943case OP_AllocNSint16: {
944 const auto V0 = ReadArg<PrimType>(S, PC);
945 const auto V1 = ReadArg<const Expr *>(S, PC);
946 const auto V2 = ReadArg<bool>(S, PC);
947 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2))
948 return false;
949 continue;
950}
951case OP_AllocNUint16: {
952 const auto V0 = ReadArg<PrimType>(S, PC);
953 const auto V1 = ReadArg<const Expr *>(S, PC);
954 const auto V2 = ReadArg<bool>(S, PC);
955 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2))
956 return false;
957 continue;
958}
959case OP_AllocNSint32: {
960 const auto V0 = ReadArg<PrimType>(S, PC);
961 const auto V1 = ReadArg<const Expr *>(S, PC);
962 const auto V2 = ReadArg<bool>(S, PC);
963 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2))
964 return false;
965 continue;
966}
967case OP_AllocNUint32: {
968 const auto V0 = ReadArg<PrimType>(S, PC);
969 const auto V1 = ReadArg<const Expr *>(S, PC);
970 const auto V2 = ReadArg<bool>(S, PC);
971 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2))
972 return false;
973 continue;
974}
975case OP_AllocNSint64: {
976 const auto V0 = ReadArg<PrimType>(S, PC);
977 const auto V1 = ReadArg<const Expr *>(S, PC);
978 const auto V2 = ReadArg<bool>(S, PC);
979 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2))
980 return false;
981 continue;
982}
983case OP_AllocNUint64: {
984 const auto V0 = ReadArg<PrimType>(S, PC);
985 const auto V1 = ReadArg<const Expr *>(S, PC);
986 const auto V2 = ReadArg<bool>(S, PC);
987 if (!AllocN<PT_Uint64>(S, OpPC, V0, V1, V2))
988 return false;
989 continue;
990}
991case OP_AllocNIntAP: {
992 const auto V0 = ReadArg<PrimType>(S, PC);
993 const auto V1 = ReadArg<const Expr *>(S, PC);
994 const auto V2 = ReadArg<bool>(S, PC);
995 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2))
996 return false;
997 continue;
998}
999case OP_AllocNIntAPS: {
1000 const auto V0 = ReadArg<PrimType>(S, PC);
1001 const auto V1 = ReadArg<const Expr *>(S, PC);
1002 const auto V2 = ReadArg<bool>(S, PC);
1003 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2))
1004 return false;
1005 continue;
1006}
1007#endif
1008#ifdef GET_DISASM
1009case OP_AllocNSint8:
1010 Text.Op = PrintName("AllocNSint8");
1011 Text.Args.push_back(printArg<PrimType>(P, PC));
1012 Text.Args.push_back(printArg<const Expr *>(P, PC));
1013 Text.Args.push_back(printArg<bool>(P, PC));
1014 break;
1015case OP_AllocNUint8:
1016 Text.Op = PrintName("AllocNUint8");
1017 Text.Args.push_back(printArg<PrimType>(P, PC));
1018 Text.Args.push_back(printArg<const Expr *>(P, PC));
1019 Text.Args.push_back(printArg<bool>(P, PC));
1020 break;
1021case OP_AllocNSint16:
1022 Text.Op = PrintName("AllocNSint16");
1023 Text.Args.push_back(printArg<PrimType>(P, PC));
1024 Text.Args.push_back(printArg<const Expr *>(P, PC));
1025 Text.Args.push_back(printArg<bool>(P, PC));
1026 break;
1027case OP_AllocNUint16:
1028 Text.Op = PrintName("AllocNUint16");
1029 Text.Args.push_back(printArg<PrimType>(P, PC));
1030 Text.Args.push_back(printArg<const Expr *>(P, PC));
1031 Text.Args.push_back(printArg<bool>(P, PC));
1032 break;
1033case OP_AllocNSint32:
1034 Text.Op = PrintName("AllocNSint32");
1035 Text.Args.push_back(printArg<PrimType>(P, PC));
1036 Text.Args.push_back(printArg<const Expr *>(P, PC));
1037 Text.Args.push_back(printArg<bool>(P, PC));
1038 break;
1039case OP_AllocNUint32:
1040 Text.Op = PrintName("AllocNUint32");
1041 Text.Args.push_back(printArg<PrimType>(P, PC));
1042 Text.Args.push_back(printArg<const Expr *>(P, PC));
1043 Text.Args.push_back(printArg<bool>(P, PC));
1044 break;
1045case OP_AllocNSint64:
1046 Text.Op = PrintName("AllocNSint64");
1047 Text.Args.push_back(printArg<PrimType>(P, PC));
1048 Text.Args.push_back(printArg<const Expr *>(P, PC));
1049 Text.Args.push_back(printArg<bool>(P, PC));
1050 break;
1051case OP_AllocNUint64:
1052 Text.Op = PrintName("AllocNUint64");
1053 Text.Args.push_back(printArg<PrimType>(P, PC));
1054 Text.Args.push_back(printArg<const Expr *>(P, PC));
1055 Text.Args.push_back(printArg<bool>(P, PC));
1056 break;
1057case OP_AllocNIntAP:
1058 Text.Op = PrintName("AllocNIntAP");
1059 Text.Args.push_back(printArg<PrimType>(P, PC));
1060 Text.Args.push_back(printArg<const Expr *>(P, PC));
1061 Text.Args.push_back(printArg<bool>(P, PC));
1062 break;
1063case OP_AllocNIntAPS:
1064 Text.Op = PrintName("AllocNIntAPS");
1065 Text.Args.push_back(printArg<PrimType>(P, PC));
1066 Text.Args.push_back(printArg<const Expr *>(P, PC));
1067 Text.Args.push_back(printArg<bool>(P, PC));
1068 break;
1069#endif
1070#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1071bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1072bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1073bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1074bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1075bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1076bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1077bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1078bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1079bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1080bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1081#endif
1082#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1083[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1084#endif
1085#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1086bool
1087#if defined(GET_EVAL_IMPL)
1088EvalEmitter
1089#else
1090ByteCodeEmitter
1091#endif
1092::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1093 switch (T0) {
1094 case PT_Sint8:
1095 return emitAllocNSint8(A0, A1, A2, I);
1096 case PT_Uint8:
1097 return emitAllocNUint8(A0, A1, A2, I);
1098 case PT_Sint16:
1099 return emitAllocNSint16(A0, A1, A2, I);
1100 case PT_Uint16:
1101 return emitAllocNUint16(A0, A1, A2, I);
1102 case PT_Sint32:
1103 return emitAllocNSint32(A0, A1, A2, I);
1104 case PT_Uint32:
1105 return emitAllocNUint32(A0, A1, A2, I);
1106 case PT_Sint64:
1107 return emitAllocNSint64(A0, A1, A2, I);
1108 case PT_Uint64:
1109 return emitAllocNUint64(A0, A1, A2, I);
1110 case PT_IntAP:
1111 return emitAllocNIntAP(A0, A1, A2, I);
1112 case PT_IntAPS:
1113 return emitAllocNIntAPS(A0, A1, A2, I);
1114 default: llvm_unreachable("invalid type: emitAllocN");
1115 }
1116 llvm_unreachable("invalid enum value");
1117}
1118#endif
1119#ifdef GET_LINK_IMPL
1120bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1121 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1122}
1123bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1124 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1125}
1126bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1127 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1128}
1129bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1130 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1131}
1132bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1133 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1134}
1135bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1136 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1137}
1138bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1139 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1140}
1141bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1142 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1143}
1144bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1145 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1146}
1147bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1148 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1149}
1150#endif
1151#ifdef GET_EVAL_IMPL
1152bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1153 if (!isActive()) return true;
1154 CurrentSource = L;
1155 return AllocN<PT_Sint8>(S, OpPC, A0, A1, A2);
1156}
1157bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1158 if (!isActive()) return true;
1159 CurrentSource = L;
1160 return AllocN<PT_Uint8>(S, OpPC, A0, A1, A2);
1161}
1162bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1163 if (!isActive()) return true;
1164 CurrentSource = L;
1165 return AllocN<PT_Sint16>(S, OpPC, A0, A1, A2);
1166}
1167bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1168 if (!isActive()) return true;
1169 CurrentSource = L;
1170 return AllocN<PT_Uint16>(S, OpPC, A0, A1, A2);
1171}
1172bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1173 if (!isActive()) return true;
1174 CurrentSource = L;
1175 return AllocN<PT_Sint32>(S, OpPC, A0, A1, A2);
1176}
1177bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1178 if (!isActive()) return true;
1179 CurrentSource = L;
1180 return AllocN<PT_Uint32>(S, OpPC, A0, A1, A2);
1181}
1182bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1183 if (!isActive()) return true;
1184 CurrentSource = L;
1185 return AllocN<PT_Sint64>(S, OpPC, A0, A1, A2);
1186}
1187bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1188 if (!isActive()) return true;
1189 CurrentSource = L;
1190 return AllocN<PT_Uint64>(S, OpPC, A0, A1, A2);
1191}
1192bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1193 if (!isActive()) return true;
1194 CurrentSource = L;
1195 return AllocN<PT_IntAP>(S, OpPC, A0, A1, A2);
1196}
1197bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1198 if (!isActive()) return true;
1199 CurrentSource = L;
1200 return AllocN<PT_IntAPS>(S, OpPC, A0, A1, A2);
1201}
1202#endif
1203#ifdef GET_OPCODE_NAMES
1204OP_ArrayDecay,
1205#endif
1206#ifdef GET_INTERP
1207case OP_ArrayDecay: {
1208 if (!ArrayDecay(S, OpPC))
1209 return false;
1210 continue;
1211}
1212#endif
1213#ifdef GET_DISASM
1214case OP_ArrayDecay:
1215 Text.Op = PrintName("ArrayDecay");
1216 break;
1217#endif
1218#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1219bool emitArrayDecay(SourceInfo);
1220#endif
1221#ifdef GET_LINK_IMPL
1222bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1223 return emitOp<>(OP_ArrayDecay, L);
1224}
1225#endif
1226#ifdef GET_EVAL_IMPL
1227bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1228 if (!isActive()) return true;
1229 CurrentSource = L;
1230 return ArrayDecay(S, OpPC);
1231}
1232#endif
1233#ifdef GET_OPCODE_NAMES
1234OP_ArrayElemSint8,
1235OP_ArrayElemUint8,
1236OP_ArrayElemSint16,
1237OP_ArrayElemUint16,
1238OP_ArrayElemSint32,
1239OP_ArrayElemUint32,
1240OP_ArrayElemSint64,
1241OP_ArrayElemUint64,
1242OP_ArrayElemIntAP,
1243OP_ArrayElemIntAPS,
1244OP_ArrayElemBool,
1245OP_ArrayElemFixedPoint,
1246OP_ArrayElemPtr,
1247OP_ArrayElemMemberPtr,
1248OP_ArrayElemFloat,
1249#endif
1250#ifdef GET_INTERP
1251case OP_ArrayElemSint8: {
1252 const auto V0 = ReadArg<uint32_t>(S, PC);
1253 if (!ArrayElem<PT_Sint8>(S, OpPC, V0))
1254 return false;
1255 continue;
1256}
1257case OP_ArrayElemUint8: {
1258 const auto V0 = ReadArg<uint32_t>(S, PC);
1259 if (!ArrayElem<PT_Uint8>(S, OpPC, V0))
1260 return false;
1261 continue;
1262}
1263case OP_ArrayElemSint16: {
1264 const auto V0 = ReadArg<uint32_t>(S, PC);
1265 if (!ArrayElem<PT_Sint16>(S, OpPC, V0))
1266 return false;
1267 continue;
1268}
1269case OP_ArrayElemUint16: {
1270 const auto V0 = ReadArg<uint32_t>(S, PC);
1271 if (!ArrayElem<PT_Uint16>(S, OpPC, V0))
1272 return false;
1273 continue;
1274}
1275case OP_ArrayElemSint32: {
1276 const auto V0 = ReadArg<uint32_t>(S, PC);
1277 if (!ArrayElem<PT_Sint32>(S, OpPC, V0))
1278 return false;
1279 continue;
1280}
1281case OP_ArrayElemUint32: {
1282 const auto V0 = ReadArg<uint32_t>(S, PC);
1283 if (!ArrayElem<PT_Uint32>(S, OpPC, V0))
1284 return false;
1285 continue;
1286}
1287case OP_ArrayElemSint64: {
1288 const auto V0 = ReadArg<uint32_t>(S, PC);
1289 if (!ArrayElem<PT_Sint64>(S, OpPC, V0))
1290 return false;
1291 continue;
1292}
1293case OP_ArrayElemUint64: {
1294 const auto V0 = ReadArg<uint32_t>(S, PC);
1295 if (!ArrayElem<PT_Uint64>(S, OpPC, V0))
1296 return false;
1297 continue;
1298}
1299case OP_ArrayElemIntAP: {
1300 const auto V0 = ReadArg<uint32_t>(S, PC);
1301 if (!ArrayElem<PT_IntAP>(S, OpPC, V0))
1302 return false;
1303 continue;
1304}
1305case OP_ArrayElemIntAPS: {
1306 const auto V0 = ReadArg<uint32_t>(S, PC);
1307 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0))
1308 return false;
1309 continue;
1310}
1311case OP_ArrayElemBool: {
1312 const auto V0 = ReadArg<uint32_t>(S, PC);
1313 if (!ArrayElem<PT_Bool>(S, OpPC, V0))
1314 return false;
1315 continue;
1316}
1317case OP_ArrayElemFixedPoint: {
1318 const auto V0 = ReadArg<uint32_t>(S, PC);
1319 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0))
1320 return false;
1321 continue;
1322}
1323case OP_ArrayElemPtr: {
1324 const auto V0 = ReadArg<uint32_t>(S, PC);
1325 if (!ArrayElem<PT_Ptr>(S, OpPC, V0))
1326 return false;
1327 continue;
1328}
1329case OP_ArrayElemMemberPtr: {
1330 const auto V0 = ReadArg<uint32_t>(S, PC);
1331 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0))
1332 return false;
1333 continue;
1334}
1335case OP_ArrayElemFloat: {
1336 const auto V0 = ReadArg<uint32_t>(S, PC);
1337 if (!ArrayElem<PT_Float>(S, OpPC, V0))
1338 return false;
1339 continue;
1340}
1341#endif
1342#ifdef GET_DISASM
1343case OP_ArrayElemSint8:
1344 Text.Op = PrintName("ArrayElemSint8");
1345 Text.Args.push_back(printArg<uint32_t>(P, PC));
1346 break;
1347case OP_ArrayElemUint8:
1348 Text.Op = PrintName("ArrayElemUint8");
1349 Text.Args.push_back(printArg<uint32_t>(P, PC));
1350 break;
1351case OP_ArrayElemSint16:
1352 Text.Op = PrintName("ArrayElemSint16");
1353 Text.Args.push_back(printArg<uint32_t>(P, PC));
1354 break;
1355case OP_ArrayElemUint16:
1356 Text.Op = PrintName("ArrayElemUint16");
1357 Text.Args.push_back(printArg<uint32_t>(P, PC));
1358 break;
1359case OP_ArrayElemSint32:
1360 Text.Op = PrintName("ArrayElemSint32");
1361 Text.Args.push_back(printArg<uint32_t>(P, PC));
1362 break;
1363case OP_ArrayElemUint32:
1364 Text.Op = PrintName("ArrayElemUint32");
1365 Text.Args.push_back(printArg<uint32_t>(P, PC));
1366 break;
1367case OP_ArrayElemSint64:
1368 Text.Op = PrintName("ArrayElemSint64");
1369 Text.Args.push_back(printArg<uint32_t>(P, PC));
1370 break;
1371case OP_ArrayElemUint64:
1372 Text.Op = PrintName("ArrayElemUint64");
1373 Text.Args.push_back(printArg<uint32_t>(P, PC));
1374 break;
1375case OP_ArrayElemIntAP:
1376 Text.Op = PrintName("ArrayElemIntAP");
1377 Text.Args.push_back(printArg<uint32_t>(P, PC));
1378 break;
1379case OP_ArrayElemIntAPS:
1380 Text.Op = PrintName("ArrayElemIntAPS");
1381 Text.Args.push_back(printArg<uint32_t>(P, PC));
1382 break;
1383case OP_ArrayElemBool:
1384 Text.Op = PrintName("ArrayElemBool");
1385 Text.Args.push_back(printArg<uint32_t>(P, PC));
1386 break;
1387case OP_ArrayElemFixedPoint:
1388 Text.Op = PrintName("ArrayElemFixedPoint");
1389 Text.Args.push_back(printArg<uint32_t>(P, PC));
1390 break;
1391case OP_ArrayElemPtr:
1392 Text.Op = PrintName("ArrayElemPtr");
1393 Text.Args.push_back(printArg<uint32_t>(P, PC));
1394 break;
1395case OP_ArrayElemMemberPtr:
1396 Text.Op = PrintName("ArrayElemMemberPtr");
1397 Text.Args.push_back(printArg<uint32_t>(P, PC));
1398 break;
1399case OP_ArrayElemFloat:
1400 Text.Op = PrintName("ArrayElemFloat");
1401 Text.Args.push_back(printArg<uint32_t>(P, PC));
1402 break;
1403#endif
1404#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1405bool emitArrayElemSint8( uint32_t , SourceInfo);
1406bool emitArrayElemUint8( uint32_t , SourceInfo);
1407bool emitArrayElemSint16( uint32_t , SourceInfo);
1408bool emitArrayElemUint16( uint32_t , SourceInfo);
1409bool emitArrayElemSint32( uint32_t , SourceInfo);
1410bool emitArrayElemUint32( uint32_t , SourceInfo);
1411bool emitArrayElemSint64( uint32_t , SourceInfo);
1412bool emitArrayElemUint64( uint32_t , SourceInfo);
1413bool emitArrayElemIntAP( uint32_t , SourceInfo);
1414bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1415bool emitArrayElemBool( uint32_t , SourceInfo);
1416bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1417bool emitArrayElemPtr( uint32_t , SourceInfo);
1418bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1419bool emitArrayElemFloat( uint32_t , SourceInfo);
1420#endif
1421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1422[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
1423#endif
1424#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1425bool
1426#if defined(GET_EVAL_IMPL)
1427EvalEmitter
1428#else
1429ByteCodeEmitter
1430#endif
1431::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
1432 switch (T0) {
1433 case PT_Sint8:
1434 return emitArrayElemSint8(A0, I);
1435 case PT_Uint8:
1436 return emitArrayElemUint8(A0, I);
1437 case PT_Sint16:
1438 return emitArrayElemSint16(A0, I);
1439 case PT_Uint16:
1440 return emitArrayElemUint16(A0, I);
1441 case PT_Sint32:
1442 return emitArrayElemSint32(A0, I);
1443 case PT_Uint32:
1444 return emitArrayElemUint32(A0, I);
1445 case PT_Sint64:
1446 return emitArrayElemSint64(A0, I);
1447 case PT_Uint64:
1448 return emitArrayElemUint64(A0, I);
1449 case PT_IntAP:
1450 return emitArrayElemIntAP(A0, I);
1451 case PT_IntAPS:
1452 return emitArrayElemIntAPS(A0, I);
1453 case PT_Bool:
1454 return emitArrayElemBool(A0, I);
1455 case PT_FixedPoint:
1456 return emitArrayElemFixedPoint(A0, I);
1457 case PT_Ptr:
1458 return emitArrayElemPtr(A0, I);
1459 case PT_MemberPtr:
1460 return emitArrayElemMemberPtr(A0, I);
1461 case PT_Float:
1462 return emitArrayElemFloat(A0, I);
1463 }
1464 llvm_unreachable("invalid enum value");
1465}
1466#endif
1467#ifdef GET_LINK_IMPL
1468bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1469 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
1470}
1471bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1472 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
1473}
1474bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1475 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
1476}
1477bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1478 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
1479}
1480bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1481 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
1482}
1483bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1484 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
1485}
1486bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
1487 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
1488}
1489bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
1490 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
1491}
1492bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
1493 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
1494}
1495bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
1496 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
1497}
1498bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
1499 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
1500}
1501bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
1502 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
1503}
1504bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
1505 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
1506}
1507bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
1508 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
1509}
1510bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
1511 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
1512}
1513#endif
1514#ifdef GET_EVAL_IMPL
1515bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1516 if (!isActive()) return true;
1517 CurrentSource = L;
1518 return ArrayElem<PT_Sint8>(S, OpPC, A0);
1519}
1520bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1521 if (!isActive()) return true;
1522 CurrentSource = L;
1523 return ArrayElem<PT_Uint8>(S, OpPC, A0);
1524}
1525bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1526 if (!isActive()) return true;
1527 CurrentSource = L;
1528 return ArrayElem<PT_Sint16>(S, OpPC, A0);
1529}
1530bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1531 if (!isActive()) return true;
1532 CurrentSource = L;
1533 return ArrayElem<PT_Uint16>(S, OpPC, A0);
1534}
1535bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1536 if (!isActive()) return true;
1537 CurrentSource = L;
1538 return ArrayElem<PT_Sint32>(S, OpPC, A0);
1539}
1540bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1541 if (!isActive()) return true;
1542 CurrentSource = L;
1543 return ArrayElem<PT_Uint32>(S, OpPC, A0);
1544}
1545bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
1546 if (!isActive()) return true;
1547 CurrentSource = L;
1548 return ArrayElem<PT_Sint64>(S, OpPC, A0);
1549}
1550bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
1551 if (!isActive()) return true;
1552 CurrentSource = L;
1553 return ArrayElem<PT_Uint64>(S, OpPC, A0);
1554}
1555bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
1556 if (!isActive()) return true;
1557 CurrentSource = L;
1558 return ArrayElem<PT_IntAP>(S, OpPC, A0);
1559}
1560bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
1561 if (!isActive()) return true;
1562 CurrentSource = L;
1563 return ArrayElem<PT_IntAPS>(S, OpPC, A0);
1564}
1565bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
1566 if (!isActive()) return true;
1567 CurrentSource = L;
1568 return ArrayElem<PT_Bool>(S, OpPC, A0);
1569}
1570bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
1571 if (!isActive()) return true;
1572 CurrentSource = L;
1573 return ArrayElem<PT_FixedPoint>(S, OpPC, A0);
1574}
1575bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
1576 if (!isActive()) return true;
1577 CurrentSource = L;
1578 return ArrayElem<PT_Ptr>(S, OpPC, A0);
1579}
1580bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
1581 if (!isActive()) return true;
1582 CurrentSource = L;
1583 return ArrayElem<PT_MemberPtr>(S, OpPC, A0);
1584}
1585bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
1586 if (!isActive()) return true;
1587 CurrentSource = L;
1588 return ArrayElem<PT_Float>(S, OpPC, A0);
1589}
1590#endif
1591#ifdef GET_OPCODE_NAMES
1592OP_ArrayElemPopSint8,
1593OP_ArrayElemPopUint8,
1594OP_ArrayElemPopSint16,
1595OP_ArrayElemPopUint16,
1596OP_ArrayElemPopSint32,
1597OP_ArrayElemPopUint32,
1598OP_ArrayElemPopSint64,
1599OP_ArrayElemPopUint64,
1600OP_ArrayElemPopIntAP,
1601OP_ArrayElemPopIntAPS,
1602OP_ArrayElemPopBool,
1603OP_ArrayElemPopFixedPoint,
1604OP_ArrayElemPopPtr,
1605OP_ArrayElemPopMemberPtr,
1606OP_ArrayElemPopFloat,
1607#endif
1608#ifdef GET_INTERP
1609case OP_ArrayElemPopSint8: {
1610 const auto V0 = ReadArg<uint32_t>(S, PC);
1611 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0))
1612 return false;
1613 continue;
1614}
1615case OP_ArrayElemPopUint8: {
1616 const auto V0 = ReadArg<uint32_t>(S, PC);
1617 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0))
1618 return false;
1619 continue;
1620}
1621case OP_ArrayElemPopSint16: {
1622 const auto V0 = ReadArg<uint32_t>(S, PC);
1623 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0))
1624 return false;
1625 continue;
1626}
1627case OP_ArrayElemPopUint16: {
1628 const auto V0 = ReadArg<uint32_t>(S, PC);
1629 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0))
1630 return false;
1631 continue;
1632}
1633case OP_ArrayElemPopSint32: {
1634 const auto V0 = ReadArg<uint32_t>(S, PC);
1635 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0))
1636 return false;
1637 continue;
1638}
1639case OP_ArrayElemPopUint32: {
1640 const auto V0 = ReadArg<uint32_t>(S, PC);
1641 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0))
1642 return false;
1643 continue;
1644}
1645case OP_ArrayElemPopSint64: {
1646 const auto V0 = ReadArg<uint32_t>(S, PC);
1647 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0))
1648 return false;
1649 continue;
1650}
1651case OP_ArrayElemPopUint64: {
1652 const auto V0 = ReadArg<uint32_t>(S, PC);
1653 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0))
1654 return false;
1655 continue;
1656}
1657case OP_ArrayElemPopIntAP: {
1658 const auto V0 = ReadArg<uint32_t>(S, PC);
1659 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0))
1660 return false;
1661 continue;
1662}
1663case OP_ArrayElemPopIntAPS: {
1664 const auto V0 = ReadArg<uint32_t>(S, PC);
1665 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0))
1666 return false;
1667 continue;
1668}
1669case OP_ArrayElemPopBool: {
1670 const auto V0 = ReadArg<uint32_t>(S, PC);
1671 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0))
1672 return false;
1673 continue;
1674}
1675case OP_ArrayElemPopFixedPoint: {
1676 const auto V0 = ReadArg<uint32_t>(S, PC);
1677 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0))
1678 return false;
1679 continue;
1680}
1681case OP_ArrayElemPopPtr: {
1682 const auto V0 = ReadArg<uint32_t>(S, PC);
1683 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0))
1684 return false;
1685 continue;
1686}
1687case OP_ArrayElemPopMemberPtr: {
1688 const auto V0 = ReadArg<uint32_t>(S, PC);
1689 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0))
1690 return false;
1691 continue;
1692}
1693case OP_ArrayElemPopFloat: {
1694 const auto V0 = ReadArg<uint32_t>(S, PC);
1695 if (!ArrayElemPop<PT_Float>(S, OpPC, V0))
1696 return false;
1697 continue;
1698}
1699#endif
1700#ifdef GET_DISASM
1701case OP_ArrayElemPopSint8:
1702 Text.Op = PrintName("ArrayElemPopSint8");
1703 Text.Args.push_back(printArg<uint32_t>(P, PC));
1704 break;
1705case OP_ArrayElemPopUint8:
1706 Text.Op = PrintName("ArrayElemPopUint8");
1707 Text.Args.push_back(printArg<uint32_t>(P, PC));
1708 break;
1709case OP_ArrayElemPopSint16:
1710 Text.Op = PrintName("ArrayElemPopSint16");
1711 Text.Args.push_back(printArg<uint32_t>(P, PC));
1712 break;
1713case OP_ArrayElemPopUint16:
1714 Text.Op = PrintName("ArrayElemPopUint16");
1715 Text.Args.push_back(printArg<uint32_t>(P, PC));
1716 break;
1717case OP_ArrayElemPopSint32:
1718 Text.Op = PrintName("ArrayElemPopSint32");
1719 Text.Args.push_back(printArg<uint32_t>(P, PC));
1720 break;
1721case OP_ArrayElemPopUint32:
1722 Text.Op = PrintName("ArrayElemPopUint32");
1723 Text.Args.push_back(printArg<uint32_t>(P, PC));
1724 break;
1725case OP_ArrayElemPopSint64:
1726 Text.Op = PrintName("ArrayElemPopSint64");
1727 Text.Args.push_back(printArg<uint32_t>(P, PC));
1728 break;
1729case OP_ArrayElemPopUint64:
1730 Text.Op = PrintName("ArrayElemPopUint64");
1731 Text.Args.push_back(printArg<uint32_t>(P, PC));
1732 break;
1733case OP_ArrayElemPopIntAP:
1734 Text.Op = PrintName("ArrayElemPopIntAP");
1735 Text.Args.push_back(printArg<uint32_t>(P, PC));
1736 break;
1737case OP_ArrayElemPopIntAPS:
1738 Text.Op = PrintName("ArrayElemPopIntAPS");
1739 Text.Args.push_back(printArg<uint32_t>(P, PC));
1740 break;
1741case OP_ArrayElemPopBool:
1742 Text.Op = PrintName("ArrayElemPopBool");
1743 Text.Args.push_back(printArg<uint32_t>(P, PC));
1744 break;
1745case OP_ArrayElemPopFixedPoint:
1746 Text.Op = PrintName("ArrayElemPopFixedPoint");
1747 Text.Args.push_back(printArg<uint32_t>(P, PC));
1748 break;
1749case OP_ArrayElemPopPtr:
1750 Text.Op = PrintName("ArrayElemPopPtr");
1751 Text.Args.push_back(printArg<uint32_t>(P, PC));
1752 break;
1753case OP_ArrayElemPopMemberPtr:
1754 Text.Op = PrintName("ArrayElemPopMemberPtr");
1755 Text.Args.push_back(printArg<uint32_t>(P, PC));
1756 break;
1757case OP_ArrayElemPopFloat:
1758 Text.Op = PrintName("ArrayElemPopFloat");
1759 Text.Args.push_back(printArg<uint32_t>(P, PC));
1760 break;
1761#endif
1762#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1763bool emitArrayElemPopSint8( uint32_t , SourceInfo);
1764bool emitArrayElemPopUint8( uint32_t , SourceInfo);
1765bool emitArrayElemPopSint16( uint32_t , SourceInfo);
1766bool emitArrayElemPopUint16( uint32_t , SourceInfo);
1767bool emitArrayElemPopSint32( uint32_t , SourceInfo);
1768bool emitArrayElemPopUint32( uint32_t , SourceInfo);
1769bool emitArrayElemPopSint64( uint32_t , SourceInfo);
1770bool emitArrayElemPopUint64( uint32_t , SourceInfo);
1771bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
1772bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
1773bool emitArrayElemPopBool( uint32_t , SourceInfo);
1774bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
1775bool emitArrayElemPopPtr( uint32_t , SourceInfo);
1776bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
1777bool emitArrayElemPopFloat( uint32_t , SourceInfo);
1778#endif
1779#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1780[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
1781#endif
1782#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1783bool
1784#if defined(GET_EVAL_IMPL)
1785EvalEmitter
1786#else
1787ByteCodeEmitter
1788#endif
1789::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
1790 switch (T0) {
1791 case PT_Sint8:
1792 return emitArrayElemPopSint8(A0, I);
1793 case PT_Uint8:
1794 return emitArrayElemPopUint8(A0, I);
1795 case PT_Sint16:
1796 return emitArrayElemPopSint16(A0, I);
1797 case PT_Uint16:
1798 return emitArrayElemPopUint16(A0, I);
1799 case PT_Sint32:
1800 return emitArrayElemPopSint32(A0, I);
1801 case PT_Uint32:
1802 return emitArrayElemPopUint32(A0, I);
1803 case PT_Sint64:
1804 return emitArrayElemPopSint64(A0, I);
1805 case PT_Uint64:
1806 return emitArrayElemPopUint64(A0, I);
1807 case PT_IntAP:
1808 return emitArrayElemPopIntAP(A0, I);
1809 case PT_IntAPS:
1810 return emitArrayElemPopIntAPS(A0, I);
1811 case PT_Bool:
1812 return emitArrayElemPopBool(A0, I);
1813 case PT_FixedPoint:
1814 return emitArrayElemPopFixedPoint(A0, I);
1815 case PT_Ptr:
1816 return emitArrayElemPopPtr(A0, I);
1817 case PT_MemberPtr:
1818 return emitArrayElemPopMemberPtr(A0, I);
1819 case PT_Float:
1820 return emitArrayElemPopFloat(A0, I);
1821 }
1822 llvm_unreachable("invalid enum value");
1823}
1824#endif
1825#ifdef GET_LINK_IMPL
1826bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
1827 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
1828}
1829bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
1830 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
1831}
1832bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
1833 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
1834}
1835bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
1836 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
1837}
1838bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
1839 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
1840}
1841bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
1842 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
1843}
1844bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
1845 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
1846}
1847bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
1848 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
1849}
1850bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
1851 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
1852}
1853bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
1854 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
1855}
1856bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
1857 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
1858}
1859bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
1860 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
1861}
1862bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
1863 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
1864}
1865bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
1866 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
1867}
1868bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
1869 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
1870}
1871#endif
1872#ifdef GET_EVAL_IMPL
1873bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
1874 if (!isActive()) return true;
1875 CurrentSource = L;
1876 return ArrayElemPop<PT_Sint8>(S, OpPC, A0);
1877}
1878bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
1879 if (!isActive()) return true;
1880 CurrentSource = L;
1881 return ArrayElemPop<PT_Uint8>(S, OpPC, A0);
1882}
1883bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
1884 if (!isActive()) return true;
1885 CurrentSource = L;
1886 return ArrayElemPop<PT_Sint16>(S, OpPC, A0);
1887}
1888bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
1889 if (!isActive()) return true;
1890 CurrentSource = L;
1891 return ArrayElemPop<PT_Uint16>(S, OpPC, A0);
1892}
1893bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
1894 if (!isActive()) return true;
1895 CurrentSource = L;
1896 return ArrayElemPop<PT_Sint32>(S, OpPC, A0);
1897}
1898bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
1899 if (!isActive()) return true;
1900 CurrentSource = L;
1901 return ArrayElemPop<PT_Uint32>(S, OpPC, A0);
1902}
1903bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
1904 if (!isActive()) return true;
1905 CurrentSource = L;
1906 return ArrayElemPop<PT_Sint64>(S, OpPC, A0);
1907}
1908bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
1909 if (!isActive()) return true;
1910 CurrentSource = L;
1911 return ArrayElemPop<PT_Uint64>(S, OpPC, A0);
1912}
1913bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
1914 if (!isActive()) return true;
1915 CurrentSource = L;
1916 return ArrayElemPop<PT_IntAP>(S, OpPC, A0);
1917}
1918bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
1919 if (!isActive()) return true;
1920 CurrentSource = L;
1921 return ArrayElemPop<PT_IntAPS>(S, OpPC, A0);
1922}
1923bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
1924 if (!isActive()) return true;
1925 CurrentSource = L;
1926 return ArrayElemPop<PT_Bool>(S, OpPC, A0);
1927}
1928bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
1929 if (!isActive()) return true;
1930 CurrentSource = L;
1931 return ArrayElemPop<PT_FixedPoint>(S, OpPC, A0);
1932}
1933bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
1934 if (!isActive()) return true;
1935 CurrentSource = L;
1936 return ArrayElemPop<PT_Ptr>(S, OpPC, A0);
1937}
1938bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
1939 if (!isActive()) return true;
1940 CurrentSource = L;
1941 return ArrayElemPop<PT_MemberPtr>(S, OpPC, A0);
1942}
1943bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
1944 if (!isActive()) return true;
1945 CurrentSource = L;
1946 return ArrayElemPop<PT_Float>(S, OpPC, A0);
1947}
1948#endif
1949#ifdef GET_OPCODE_NAMES
1950OP_ArrayElemPtrSint8,
1951OP_ArrayElemPtrUint8,
1952OP_ArrayElemPtrSint16,
1953OP_ArrayElemPtrUint16,
1954OP_ArrayElemPtrSint32,
1955OP_ArrayElemPtrUint32,
1956OP_ArrayElemPtrSint64,
1957OP_ArrayElemPtrUint64,
1958OP_ArrayElemPtrIntAP,
1959OP_ArrayElemPtrIntAPS,
1960OP_ArrayElemPtrBool,
1961#endif
1962#ifdef GET_INTERP
1963case OP_ArrayElemPtrSint8: {
1964 if (!ArrayElemPtr<PT_Sint8>(S, OpPC))
1965 return false;
1966 continue;
1967}
1968case OP_ArrayElemPtrUint8: {
1969 if (!ArrayElemPtr<PT_Uint8>(S, OpPC))
1970 return false;
1971 continue;
1972}
1973case OP_ArrayElemPtrSint16: {
1974 if (!ArrayElemPtr<PT_Sint16>(S, OpPC))
1975 return false;
1976 continue;
1977}
1978case OP_ArrayElemPtrUint16: {
1979 if (!ArrayElemPtr<PT_Uint16>(S, OpPC))
1980 return false;
1981 continue;
1982}
1983case OP_ArrayElemPtrSint32: {
1984 if (!ArrayElemPtr<PT_Sint32>(S, OpPC))
1985 return false;
1986 continue;
1987}
1988case OP_ArrayElemPtrUint32: {
1989 if (!ArrayElemPtr<PT_Uint32>(S, OpPC))
1990 return false;
1991 continue;
1992}
1993case OP_ArrayElemPtrSint64: {
1994 if (!ArrayElemPtr<PT_Sint64>(S, OpPC))
1995 return false;
1996 continue;
1997}
1998case OP_ArrayElemPtrUint64: {
1999 if (!ArrayElemPtr<PT_Uint64>(S, OpPC))
2000 return false;
2001 continue;
2002}
2003case OP_ArrayElemPtrIntAP: {
2004 if (!ArrayElemPtr<PT_IntAP>(S, OpPC))
2005 return false;
2006 continue;
2007}
2008case OP_ArrayElemPtrIntAPS: {
2009 if (!ArrayElemPtr<PT_IntAPS>(S, OpPC))
2010 return false;
2011 continue;
2012}
2013case OP_ArrayElemPtrBool: {
2014 if (!ArrayElemPtr<PT_Bool>(S, OpPC))
2015 return false;
2016 continue;
2017}
2018#endif
2019#ifdef GET_DISASM
2020case OP_ArrayElemPtrSint8:
2021 Text.Op = PrintName("ArrayElemPtrSint8");
2022 break;
2023case OP_ArrayElemPtrUint8:
2024 Text.Op = PrintName("ArrayElemPtrUint8");
2025 break;
2026case OP_ArrayElemPtrSint16:
2027 Text.Op = PrintName("ArrayElemPtrSint16");
2028 break;
2029case OP_ArrayElemPtrUint16:
2030 Text.Op = PrintName("ArrayElemPtrUint16");
2031 break;
2032case OP_ArrayElemPtrSint32:
2033 Text.Op = PrintName("ArrayElemPtrSint32");
2034 break;
2035case OP_ArrayElemPtrUint32:
2036 Text.Op = PrintName("ArrayElemPtrUint32");
2037 break;
2038case OP_ArrayElemPtrSint64:
2039 Text.Op = PrintName("ArrayElemPtrSint64");
2040 break;
2041case OP_ArrayElemPtrUint64:
2042 Text.Op = PrintName("ArrayElemPtrUint64");
2043 break;
2044case OP_ArrayElemPtrIntAP:
2045 Text.Op = PrintName("ArrayElemPtrIntAP");
2046 break;
2047case OP_ArrayElemPtrIntAPS:
2048 Text.Op = PrintName("ArrayElemPtrIntAPS");
2049 break;
2050case OP_ArrayElemPtrBool:
2051 Text.Op = PrintName("ArrayElemPtrBool");
2052 break;
2053#endif
2054#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2055bool emitArrayElemPtrSint8(SourceInfo);
2056bool emitArrayElemPtrUint8(SourceInfo);
2057bool emitArrayElemPtrSint16(SourceInfo);
2058bool emitArrayElemPtrUint16(SourceInfo);
2059bool emitArrayElemPtrSint32(SourceInfo);
2060bool emitArrayElemPtrUint32(SourceInfo);
2061bool emitArrayElemPtrSint64(SourceInfo);
2062bool emitArrayElemPtrUint64(SourceInfo);
2063bool emitArrayElemPtrIntAP(SourceInfo);
2064bool emitArrayElemPtrIntAPS(SourceInfo);
2065bool emitArrayElemPtrBool(SourceInfo);
2066#endif
2067#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2068[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2069#endif
2070#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2071bool
2072#if defined(GET_EVAL_IMPL)
2073EvalEmitter
2074#else
2075ByteCodeEmitter
2076#endif
2077::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2078 switch (T0) {
2079 case PT_Sint8:
2080 return emitArrayElemPtrSint8(I);
2081 case PT_Uint8:
2082 return emitArrayElemPtrUint8(I);
2083 case PT_Sint16:
2084 return emitArrayElemPtrSint16(I);
2085 case PT_Uint16:
2086 return emitArrayElemPtrUint16(I);
2087 case PT_Sint32:
2088 return emitArrayElemPtrSint32(I);
2089 case PT_Uint32:
2090 return emitArrayElemPtrUint32(I);
2091 case PT_Sint64:
2092 return emitArrayElemPtrSint64(I);
2093 case PT_Uint64:
2094 return emitArrayElemPtrUint64(I);
2095 case PT_IntAP:
2096 return emitArrayElemPtrIntAP(I);
2097 case PT_IntAPS:
2098 return emitArrayElemPtrIntAPS(I);
2099 case PT_Bool:
2100 return emitArrayElemPtrBool(I);
2101 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2102 }
2103 llvm_unreachable("invalid enum value");
2104}
2105#endif
2106#ifdef GET_LINK_IMPL
2107bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2108 return emitOp<>(OP_ArrayElemPtrSint8, L);
2109}
2110bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2111 return emitOp<>(OP_ArrayElemPtrUint8, L);
2112}
2113bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2114 return emitOp<>(OP_ArrayElemPtrSint16, L);
2115}
2116bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2117 return emitOp<>(OP_ArrayElemPtrUint16, L);
2118}
2119bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2120 return emitOp<>(OP_ArrayElemPtrSint32, L);
2121}
2122bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2123 return emitOp<>(OP_ArrayElemPtrUint32, L);
2124}
2125bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2126 return emitOp<>(OP_ArrayElemPtrSint64, L);
2127}
2128bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2129 return emitOp<>(OP_ArrayElemPtrUint64, L);
2130}
2131bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2132 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2133}
2134bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2135 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2136}
2137bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2138 return emitOp<>(OP_ArrayElemPtrBool, L);
2139}
2140#endif
2141#ifdef GET_EVAL_IMPL
2142bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2143 if (!isActive()) return true;
2144 CurrentSource = L;
2145 return ArrayElemPtr<PT_Sint8>(S, OpPC);
2146}
2147bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2148 if (!isActive()) return true;
2149 CurrentSource = L;
2150 return ArrayElemPtr<PT_Uint8>(S, OpPC);
2151}
2152bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2153 if (!isActive()) return true;
2154 CurrentSource = L;
2155 return ArrayElemPtr<PT_Sint16>(S, OpPC);
2156}
2157bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2158 if (!isActive()) return true;
2159 CurrentSource = L;
2160 return ArrayElemPtr<PT_Uint16>(S, OpPC);
2161}
2162bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2163 if (!isActive()) return true;
2164 CurrentSource = L;
2165 return ArrayElemPtr<PT_Sint32>(S, OpPC);
2166}
2167bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2168 if (!isActive()) return true;
2169 CurrentSource = L;
2170 return ArrayElemPtr<PT_Uint32>(S, OpPC);
2171}
2172bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2173 if (!isActive()) return true;
2174 CurrentSource = L;
2175 return ArrayElemPtr<PT_Sint64>(S, OpPC);
2176}
2177bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2178 if (!isActive()) return true;
2179 CurrentSource = L;
2180 return ArrayElemPtr<PT_Uint64>(S, OpPC);
2181}
2182bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2183 if (!isActive()) return true;
2184 CurrentSource = L;
2185 return ArrayElemPtr<PT_IntAP>(S, OpPC);
2186}
2187bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2188 if (!isActive()) return true;
2189 CurrentSource = L;
2190 return ArrayElemPtr<PT_IntAPS>(S, OpPC);
2191}
2192bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2193 if (!isActive()) return true;
2194 CurrentSource = L;
2195 return ArrayElemPtr<PT_Bool>(S, OpPC);
2196}
2197#endif
2198#ifdef GET_OPCODE_NAMES
2199OP_ArrayElemPtrPopSint8,
2200OP_ArrayElemPtrPopUint8,
2201OP_ArrayElemPtrPopSint16,
2202OP_ArrayElemPtrPopUint16,
2203OP_ArrayElemPtrPopSint32,
2204OP_ArrayElemPtrPopUint32,
2205OP_ArrayElemPtrPopSint64,
2206OP_ArrayElemPtrPopUint64,
2207OP_ArrayElemPtrPopIntAP,
2208OP_ArrayElemPtrPopIntAPS,
2209OP_ArrayElemPtrPopBool,
2210#endif
2211#ifdef GET_INTERP
2212case OP_ArrayElemPtrPopSint8: {
2213 if (!ArrayElemPtrPop<PT_Sint8>(S, OpPC))
2214 return false;
2215 continue;
2216}
2217case OP_ArrayElemPtrPopUint8: {
2218 if (!ArrayElemPtrPop<PT_Uint8>(S, OpPC))
2219 return false;
2220 continue;
2221}
2222case OP_ArrayElemPtrPopSint16: {
2223 if (!ArrayElemPtrPop<PT_Sint16>(S, OpPC))
2224 return false;
2225 continue;
2226}
2227case OP_ArrayElemPtrPopUint16: {
2228 if (!ArrayElemPtrPop<PT_Uint16>(S, OpPC))
2229 return false;
2230 continue;
2231}
2232case OP_ArrayElemPtrPopSint32: {
2233 if (!ArrayElemPtrPop<PT_Sint32>(S, OpPC))
2234 return false;
2235 continue;
2236}
2237case OP_ArrayElemPtrPopUint32: {
2238 if (!ArrayElemPtrPop<PT_Uint32>(S, OpPC))
2239 return false;
2240 continue;
2241}
2242case OP_ArrayElemPtrPopSint64: {
2243 if (!ArrayElemPtrPop<PT_Sint64>(S, OpPC))
2244 return false;
2245 continue;
2246}
2247case OP_ArrayElemPtrPopUint64: {
2248 if (!ArrayElemPtrPop<PT_Uint64>(S, OpPC))
2249 return false;
2250 continue;
2251}
2252case OP_ArrayElemPtrPopIntAP: {
2253 if (!ArrayElemPtrPop<PT_IntAP>(S, OpPC))
2254 return false;
2255 continue;
2256}
2257case OP_ArrayElemPtrPopIntAPS: {
2258 if (!ArrayElemPtrPop<PT_IntAPS>(S, OpPC))
2259 return false;
2260 continue;
2261}
2262case OP_ArrayElemPtrPopBool: {
2263 if (!ArrayElemPtrPop<PT_Bool>(S, OpPC))
2264 return false;
2265 continue;
2266}
2267#endif
2268#ifdef GET_DISASM
2269case OP_ArrayElemPtrPopSint8:
2270 Text.Op = PrintName("ArrayElemPtrPopSint8");
2271 break;
2272case OP_ArrayElemPtrPopUint8:
2273 Text.Op = PrintName("ArrayElemPtrPopUint8");
2274 break;
2275case OP_ArrayElemPtrPopSint16:
2276 Text.Op = PrintName("ArrayElemPtrPopSint16");
2277 break;
2278case OP_ArrayElemPtrPopUint16:
2279 Text.Op = PrintName("ArrayElemPtrPopUint16");
2280 break;
2281case OP_ArrayElemPtrPopSint32:
2282 Text.Op = PrintName("ArrayElemPtrPopSint32");
2283 break;
2284case OP_ArrayElemPtrPopUint32:
2285 Text.Op = PrintName("ArrayElemPtrPopUint32");
2286 break;
2287case OP_ArrayElemPtrPopSint64:
2288 Text.Op = PrintName("ArrayElemPtrPopSint64");
2289 break;
2290case OP_ArrayElemPtrPopUint64:
2291 Text.Op = PrintName("ArrayElemPtrPopUint64");
2292 break;
2293case OP_ArrayElemPtrPopIntAP:
2294 Text.Op = PrintName("ArrayElemPtrPopIntAP");
2295 break;
2296case OP_ArrayElemPtrPopIntAPS:
2297 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
2298 break;
2299case OP_ArrayElemPtrPopBool:
2300 Text.Op = PrintName("ArrayElemPtrPopBool");
2301 break;
2302#endif
2303#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2304bool emitArrayElemPtrPopSint8(SourceInfo);
2305bool emitArrayElemPtrPopUint8(SourceInfo);
2306bool emitArrayElemPtrPopSint16(SourceInfo);
2307bool emitArrayElemPtrPopUint16(SourceInfo);
2308bool emitArrayElemPtrPopSint32(SourceInfo);
2309bool emitArrayElemPtrPopUint32(SourceInfo);
2310bool emitArrayElemPtrPopSint64(SourceInfo);
2311bool emitArrayElemPtrPopUint64(SourceInfo);
2312bool emitArrayElemPtrPopIntAP(SourceInfo);
2313bool emitArrayElemPtrPopIntAPS(SourceInfo);
2314bool emitArrayElemPtrPopBool(SourceInfo);
2315#endif
2316#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2317[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
2318#endif
2319#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2320bool
2321#if defined(GET_EVAL_IMPL)
2322EvalEmitter
2323#else
2324ByteCodeEmitter
2325#endif
2326::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
2327 switch (T0) {
2328 case PT_Sint8:
2329 return emitArrayElemPtrPopSint8(I);
2330 case PT_Uint8:
2331 return emitArrayElemPtrPopUint8(I);
2332 case PT_Sint16:
2333 return emitArrayElemPtrPopSint16(I);
2334 case PT_Uint16:
2335 return emitArrayElemPtrPopUint16(I);
2336 case PT_Sint32:
2337 return emitArrayElemPtrPopSint32(I);
2338 case PT_Uint32:
2339 return emitArrayElemPtrPopUint32(I);
2340 case PT_Sint64:
2341 return emitArrayElemPtrPopSint64(I);
2342 case PT_Uint64:
2343 return emitArrayElemPtrPopUint64(I);
2344 case PT_IntAP:
2345 return emitArrayElemPtrPopIntAP(I);
2346 case PT_IntAPS:
2347 return emitArrayElemPtrPopIntAPS(I);
2348 case PT_Bool:
2349 return emitArrayElemPtrPopBool(I);
2350 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
2351 }
2352 llvm_unreachable("invalid enum value");
2353}
2354#endif
2355#ifdef GET_LINK_IMPL
2356bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
2357 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
2358}
2359bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
2360 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
2361}
2362bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
2363 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
2364}
2365bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
2366 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
2367}
2368bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
2369 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
2370}
2371bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
2372 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
2373}
2374bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
2375 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
2376}
2377bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
2378 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
2379}
2380bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
2381 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
2382}
2383bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
2384 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
2385}
2386bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
2387 return emitOp<>(OP_ArrayElemPtrPopBool, L);
2388}
2389#endif
2390#ifdef GET_EVAL_IMPL
2391bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
2392 if (!isActive()) return true;
2393 CurrentSource = L;
2394 return ArrayElemPtrPop<PT_Sint8>(S, OpPC);
2395}
2396bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
2397 if (!isActive()) return true;
2398 CurrentSource = L;
2399 return ArrayElemPtrPop<PT_Uint8>(S, OpPC);
2400}
2401bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
2402 if (!isActive()) return true;
2403 CurrentSource = L;
2404 return ArrayElemPtrPop<PT_Sint16>(S, OpPC);
2405}
2406bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
2407 if (!isActive()) return true;
2408 CurrentSource = L;
2409 return ArrayElemPtrPop<PT_Uint16>(S, OpPC);
2410}
2411bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
2412 if (!isActive()) return true;
2413 CurrentSource = L;
2414 return ArrayElemPtrPop<PT_Sint32>(S, OpPC);
2415}
2416bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
2417 if (!isActive()) return true;
2418 CurrentSource = L;
2419 return ArrayElemPtrPop<PT_Uint32>(S, OpPC);
2420}
2421bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
2422 if (!isActive()) return true;
2423 CurrentSource = L;
2424 return ArrayElemPtrPop<PT_Sint64>(S, OpPC);
2425}
2426bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
2427 if (!isActive()) return true;
2428 CurrentSource = L;
2429 return ArrayElemPtrPop<PT_Uint64>(S, OpPC);
2430}
2431bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
2432 if (!isActive()) return true;
2433 CurrentSource = L;
2434 return ArrayElemPtrPop<PT_IntAP>(S, OpPC);
2435}
2436bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
2437 if (!isActive()) return true;
2438 CurrentSource = L;
2439 return ArrayElemPtrPop<PT_IntAPS>(S, OpPC);
2440}
2441bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
2442 if (!isActive()) return true;
2443 CurrentSource = L;
2444 return ArrayElemPtrPop<PT_Bool>(S, OpPC);
2445}
2446#endif
2447#ifdef GET_OPCODE_NAMES
2448OP_Assume,
2449#endif
2450#ifdef GET_INTERP
2451case OP_Assume: {
2452 if (!Assume(S, OpPC))
2453 return false;
2454 continue;
2455}
2456#endif
2457#ifdef GET_DISASM
2458case OP_Assume:
2459 Text.Op = PrintName("Assume");
2460 break;
2461#endif
2462#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2463bool emitAssume(SourceInfo);
2464#endif
2465#ifdef GET_LINK_IMPL
2466bool ByteCodeEmitter::emitAssume(SourceInfo L) {
2467 return emitOp<>(OP_Assume, L);
2468}
2469#endif
2470#ifdef GET_EVAL_IMPL
2471bool EvalEmitter::emitAssume(SourceInfo L) {
2472 if (!isActive()) return true;
2473 CurrentSource = L;
2474 return Assume(S, OpPC);
2475}
2476#endif
2477#ifdef GET_OPCODE_NAMES
2478OP_BCP,
2479#endif
2480#ifdef GET_INTERP
2481case OP_BCP: {
2482 const auto V0 = ReadArg<int32_t>(S, PC);
2483 const auto V1 = ReadArg<PrimType>(S, PC);
2484 if (!BCP(S, PC, V0, V1))
2485 return false;
2486 continue;
2487}
2488#endif
2489#ifdef GET_DISASM
2490case OP_BCP:
2491 Text.Op = PrintName("BCP");
2492 Text.Args.push_back(printArg<int32_t>(P, PC));
2493 Text.Args.push_back(printArg<PrimType>(P, PC));
2494 break;
2495#endif
2496#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2497bool emitBCP( int32_t , PrimType , SourceInfo);
2498#endif
2499#ifdef GET_LINK_IMPL
2500bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
2501 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
2502}
2503#endif
2504#ifdef GET_OPCODE_NAMES
2505OP_BitAndSint8,
2506OP_BitAndUint8,
2507OP_BitAndSint16,
2508OP_BitAndUint16,
2509OP_BitAndSint32,
2510OP_BitAndUint32,
2511OP_BitAndSint64,
2512OP_BitAndUint64,
2513OP_BitAndIntAP,
2514OP_BitAndIntAPS,
2515OP_BitAndFixedPoint,
2516#endif
2517#ifdef GET_INTERP
2518case OP_BitAndSint8: {
2519 if (!BitAnd<PT_Sint8>(S, OpPC))
2520 return false;
2521 continue;
2522}
2523case OP_BitAndUint8: {
2524 if (!BitAnd<PT_Uint8>(S, OpPC))
2525 return false;
2526 continue;
2527}
2528case OP_BitAndSint16: {
2529 if (!BitAnd<PT_Sint16>(S, OpPC))
2530 return false;
2531 continue;
2532}
2533case OP_BitAndUint16: {
2534 if (!BitAnd<PT_Uint16>(S, OpPC))
2535 return false;
2536 continue;
2537}
2538case OP_BitAndSint32: {
2539 if (!BitAnd<PT_Sint32>(S, OpPC))
2540 return false;
2541 continue;
2542}
2543case OP_BitAndUint32: {
2544 if (!BitAnd<PT_Uint32>(S, OpPC))
2545 return false;
2546 continue;
2547}
2548case OP_BitAndSint64: {
2549 if (!BitAnd<PT_Sint64>(S, OpPC))
2550 return false;
2551 continue;
2552}
2553case OP_BitAndUint64: {
2554 if (!BitAnd<PT_Uint64>(S, OpPC))
2555 return false;
2556 continue;
2557}
2558case OP_BitAndIntAP: {
2559 if (!BitAnd<PT_IntAP>(S, OpPC))
2560 return false;
2561 continue;
2562}
2563case OP_BitAndIntAPS: {
2564 if (!BitAnd<PT_IntAPS>(S, OpPC))
2565 return false;
2566 continue;
2567}
2568case OP_BitAndFixedPoint: {
2569 if (!BitAnd<PT_FixedPoint>(S, OpPC))
2570 return false;
2571 continue;
2572}
2573#endif
2574#ifdef GET_DISASM
2575case OP_BitAndSint8:
2576 Text.Op = PrintName("BitAndSint8");
2577 break;
2578case OP_BitAndUint8:
2579 Text.Op = PrintName("BitAndUint8");
2580 break;
2581case OP_BitAndSint16:
2582 Text.Op = PrintName("BitAndSint16");
2583 break;
2584case OP_BitAndUint16:
2585 Text.Op = PrintName("BitAndUint16");
2586 break;
2587case OP_BitAndSint32:
2588 Text.Op = PrintName("BitAndSint32");
2589 break;
2590case OP_BitAndUint32:
2591 Text.Op = PrintName("BitAndUint32");
2592 break;
2593case OP_BitAndSint64:
2594 Text.Op = PrintName("BitAndSint64");
2595 break;
2596case OP_BitAndUint64:
2597 Text.Op = PrintName("BitAndUint64");
2598 break;
2599case OP_BitAndIntAP:
2600 Text.Op = PrintName("BitAndIntAP");
2601 break;
2602case OP_BitAndIntAPS:
2603 Text.Op = PrintName("BitAndIntAPS");
2604 break;
2605case OP_BitAndFixedPoint:
2606 Text.Op = PrintName("BitAndFixedPoint");
2607 break;
2608#endif
2609#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2610bool emitBitAndSint8(SourceInfo);
2611bool emitBitAndUint8(SourceInfo);
2612bool emitBitAndSint16(SourceInfo);
2613bool emitBitAndUint16(SourceInfo);
2614bool emitBitAndSint32(SourceInfo);
2615bool emitBitAndUint32(SourceInfo);
2616bool emitBitAndSint64(SourceInfo);
2617bool emitBitAndUint64(SourceInfo);
2618bool emitBitAndIntAP(SourceInfo);
2619bool emitBitAndIntAPS(SourceInfo);
2620bool emitBitAndFixedPoint(SourceInfo);
2621#endif
2622#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2623[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
2624#endif
2625#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2626bool
2627#if defined(GET_EVAL_IMPL)
2628EvalEmitter
2629#else
2630ByteCodeEmitter
2631#endif
2632::emitBitAnd(PrimType T0, SourceInfo I) {
2633 switch (T0) {
2634 case PT_Sint8:
2635 return emitBitAndSint8(I);
2636 case PT_Uint8:
2637 return emitBitAndUint8(I);
2638 case PT_Sint16:
2639 return emitBitAndSint16(I);
2640 case PT_Uint16:
2641 return emitBitAndUint16(I);
2642 case PT_Sint32:
2643 return emitBitAndSint32(I);
2644 case PT_Uint32:
2645 return emitBitAndUint32(I);
2646 case PT_Sint64:
2647 return emitBitAndSint64(I);
2648 case PT_Uint64:
2649 return emitBitAndUint64(I);
2650 case PT_IntAP:
2651 return emitBitAndIntAP(I);
2652 case PT_IntAPS:
2653 return emitBitAndIntAPS(I);
2654 case PT_FixedPoint:
2655 return emitBitAndFixedPoint(I);
2656 default: llvm_unreachable("invalid type: emitBitAnd");
2657 }
2658 llvm_unreachable("invalid enum value");
2659}
2660#endif
2661#ifdef GET_LINK_IMPL
2662bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
2663 return emitOp<>(OP_BitAndSint8, L);
2664}
2665bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
2666 return emitOp<>(OP_BitAndUint8, L);
2667}
2668bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
2669 return emitOp<>(OP_BitAndSint16, L);
2670}
2671bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
2672 return emitOp<>(OP_BitAndUint16, L);
2673}
2674bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
2675 return emitOp<>(OP_BitAndSint32, L);
2676}
2677bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
2678 return emitOp<>(OP_BitAndUint32, L);
2679}
2680bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
2681 return emitOp<>(OP_BitAndSint64, L);
2682}
2683bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
2684 return emitOp<>(OP_BitAndUint64, L);
2685}
2686bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
2687 return emitOp<>(OP_BitAndIntAP, L);
2688}
2689bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
2690 return emitOp<>(OP_BitAndIntAPS, L);
2691}
2692bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
2693 return emitOp<>(OP_BitAndFixedPoint, L);
2694}
2695#endif
2696#ifdef GET_EVAL_IMPL
2697bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
2698 if (!isActive()) return true;
2699 CurrentSource = L;
2700 return BitAnd<PT_Sint8>(S, OpPC);
2701}
2702bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
2703 if (!isActive()) return true;
2704 CurrentSource = L;
2705 return BitAnd<PT_Uint8>(S, OpPC);
2706}
2707bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
2708 if (!isActive()) return true;
2709 CurrentSource = L;
2710 return BitAnd<PT_Sint16>(S, OpPC);
2711}
2712bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
2713 if (!isActive()) return true;
2714 CurrentSource = L;
2715 return BitAnd<PT_Uint16>(S, OpPC);
2716}
2717bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
2718 if (!isActive()) return true;
2719 CurrentSource = L;
2720 return BitAnd<PT_Sint32>(S, OpPC);
2721}
2722bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
2723 if (!isActive()) return true;
2724 CurrentSource = L;
2725 return BitAnd<PT_Uint32>(S, OpPC);
2726}
2727bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
2728 if (!isActive()) return true;
2729 CurrentSource = L;
2730 return BitAnd<PT_Sint64>(S, OpPC);
2731}
2732bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
2733 if (!isActive()) return true;
2734 CurrentSource = L;
2735 return BitAnd<PT_Uint64>(S, OpPC);
2736}
2737bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
2738 if (!isActive()) return true;
2739 CurrentSource = L;
2740 return BitAnd<PT_IntAP>(S, OpPC);
2741}
2742bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
2743 if (!isActive()) return true;
2744 CurrentSource = L;
2745 return BitAnd<PT_IntAPS>(S, OpPC);
2746}
2747bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
2748 if (!isActive()) return true;
2749 CurrentSource = L;
2750 return BitAnd<PT_FixedPoint>(S, OpPC);
2751}
2752#endif
2753#ifdef GET_OPCODE_NAMES
2754OP_BitCast,
2755#endif
2756#ifdef GET_INTERP
2757case OP_BitCast: {
2758 if (!BitCast(S, OpPC))
2759 return false;
2760 continue;
2761}
2762#endif
2763#ifdef GET_DISASM
2764case OP_BitCast:
2765 Text.Op = PrintName("BitCast");
2766 break;
2767#endif
2768#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2769bool emitBitCast(SourceInfo);
2770#endif
2771#ifdef GET_LINK_IMPL
2772bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
2773 return emitOp<>(OP_BitCast, L);
2774}
2775#endif
2776#ifdef GET_EVAL_IMPL
2777bool EvalEmitter::emitBitCast(SourceInfo L) {
2778 if (!isActive()) return true;
2779 CurrentSource = L;
2780 return BitCast(S, OpPC);
2781}
2782#endif
2783#ifdef GET_OPCODE_NAMES
2784OP_BitCastPrimUint8,
2785OP_BitCastPrimSint8,
2786OP_BitCastPrimUint16,
2787OP_BitCastPrimSint16,
2788OP_BitCastPrimUint32,
2789OP_BitCastPrimSint32,
2790OP_BitCastPrimUint64,
2791OP_BitCastPrimSint64,
2792OP_BitCastPrimIntAP,
2793OP_BitCastPrimIntAPS,
2794OP_BitCastPrimBool,
2795OP_BitCastPrimFloat,
2796OP_BitCastPrimPtr,
2797OP_BitCastPrimMemberPtr,
2798#endif
2799#ifdef GET_INTERP
2800case OP_BitCastPrimUint8: {
2801 const auto V0 = ReadArg<bool>(S, PC);
2802 const auto V1 = ReadArg<uint32_t>(S, PC);
2803 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2804 const auto V3 = ReadArg<const Type *>(S, PC);
2805 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3))
2806 return false;
2807 continue;
2808}
2809case OP_BitCastPrimSint8: {
2810 const auto V0 = ReadArg<bool>(S, PC);
2811 const auto V1 = ReadArg<uint32_t>(S, PC);
2812 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2813 const auto V3 = ReadArg<const Type *>(S, PC);
2814 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3))
2815 return false;
2816 continue;
2817}
2818case OP_BitCastPrimUint16: {
2819 const auto V0 = ReadArg<bool>(S, PC);
2820 const auto V1 = ReadArg<uint32_t>(S, PC);
2821 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2822 const auto V3 = ReadArg<const Type *>(S, PC);
2823 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3))
2824 return false;
2825 continue;
2826}
2827case OP_BitCastPrimSint16: {
2828 const auto V0 = ReadArg<bool>(S, PC);
2829 const auto V1 = ReadArg<uint32_t>(S, PC);
2830 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2831 const auto V3 = ReadArg<const Type *>(S, PC);
2832 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3))
2833 return false;
2834 continue;
2835}
2836case OP_BitCastPrimUint32: {
2837 const auto V0 = ReadArg<bool>(S, PC);
2838 const auto V1 = ReadArg<uint32_t>(S, PC);
2839 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2840 const auto V3 = ReadArg<const Type *>(S, PC);
2841 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3))
2842 return false;
2843 continue;
2844}
2845case OP_BitCastPrimSint32: {
2846 const auto V0 = ReadArg<bool>(S, PC);
2847 const auto V1 = ReadArg<uint32_t>(S, PC);
2848 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2849 const auto V3 = ReadArg<const Type *>(S, PC);
2850 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3))
2851 return false;
2852 continue;
2853}
2854case OP_BitCastPrimUint64: {
2855 const auto V0 = ReadArg<bool>(S, PC);
2856 const auto V1 = ReadArg<uint32_t>(S, PC);
2857 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2858 const auto V3 = ReadArg<const Type *>(S, PC);
2859 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3))
2860 return false;
2861 continue;
2862}
2863case OP_BitCastPrimSint64: {
2864 const auto V0 = ReadArg<bool>(S, PC);
2865 const auto V1 = ReadArg<uint32_t>(S, PC);
2866 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2867 const auto V3 = ReadArg<const Type *>(S, PC);
2868 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3))
2869 return false;
2870 continue;
2871}
2872case OP_BitCastPrimIntAP: {
2873 const auto V0 = ReadArg<bool>(S, PC);
2874 const auto V1 = ReadArg<uint32_t>(S, PC);
2875 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2876 const auto V3 = ReadArg<const Type *>(S, PC);
2877 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3))
2878 return false;
2879 continue;
2880}
2881case OP_BitCastPrimIntAPS: {
2882 const auto V0 = ReadArg<bool>(S, PC);
2883 const auto V1 = ReadArg<uint32_t>(S, PC);
2884 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2885 const auto V3 = ReadArg<const Type *>(S, PC);
2886 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3))
2887 return false;
2888 continue;
2889}
2890case OP_BitCastPrimBool: {
2891 const auto V0 = ReadArg<bool>(S, PC);
2892 const auto V1 = ReadArg<uint32_t>(S, PC);
2893 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2894 const auto V3 = ReadArg<const Type *>(S, PC);
2895 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3))
2896 return false;
2897 continue;
2898}
2899case OP_BitCastPrimFloat: {
2900 const auto V0 = ReadArg<bool>(S, PC);
2901 const auto V1 = ReadArg<uint32_t>(S, PC);
2902 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2903 const auto V3 = ReadArg<const Type *>(S, PC);
2904 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3))
2905 return false;
2906 continue;
2907}
2908case OP_BitCastPrimPtr: {
2909 const auto V0 = ReadArg<bool>(S, PC);
2910 const auto V1 = ReadArg<uint32_t>(S, PC);
2911 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2912 const auto V3 = ReadArg<const Type *>(S, PC);
2913 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3))
2914 return false;
2915 continue;
2916}
2917case OP_BitCastPrimMemberPtr: {
2918 const auto V0 = ReadArg<bool>(S, PC);
2919 const auto V1 = ReadArg<uint32_t>(S, PC);
2920 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2921 const auto V3 = ReadArg<const Type *>(S, PC);
2922 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3))
2923 return false;
2924 continue;
2925}
2926#endif
2927#ifdef GET_DISASM
2928case OP_BitCastPrimUint8:
2929 Text.Op = PrintName("BitCastPrimUint8");
2930 Text.Args.push_back(printArg<bool>(P, PC));
2931 Text.Args.push_back(printArg<uint32_t>(P, PC));
2932 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2933 Text.Args.push_back(printArg<const Type *>(P, PC));
2934 break;
2935case OP_BitCastPrimSint8:
2936 Text.Op = PrintName("BitCastPrimSint8");
2937 Text.Args.push_back(printArg<bool>(P, PC));
2938 Text.Args.push_back(printArg<uint32_t>(P, PC));
2939 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2940 Text.Args.push_back(printArg<const Type *>(P, PC));
2941 break;
2942case OP_BitCastPrimUint16:
2943 Text.Op = PrintName("BitCastPrimUint16");
2944 Text.Args.push_back(printArg<bool>(P, PC));
2945 Text.Args.push_back(printArg<uint32_t>(P, PC));
2946 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2947 Text.Args.push_back(printArg<const Type *>(P, PC));
2948 break;
2949case OP_BitCastPrimSint16:
2950 Text.Op = PrintName("BitCastPrimSint16");
2951 Text.Args.push_back(printArg<bool>(P, PC));
2952 Text.Args.push_back(printArg<uint32_t>(P, PC));
2953 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2954 Text.Args.push_back(printArg<const Type *>(P, PC));
2955 break;
2956case OP_BitCastPrimUint32:
2957 Text.Op = PrintName("BitCastPrimUint32");
2958 Text.Args.push_back(printArg<bool>(P, PC));
2959 Text.Args.push_back(printArg<uint32_t>(P, PC));
2960 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2961 Text.Args.push_back(printArg<const Type *>(P, PC));
2962 break;
2963case OP_BitCastPrimSint32:
2964 Text.Op = PrintName("BitCastPrimSint32");
2965 Text.Args.push_back(printArg<bool>(P, PC));
2966 Text.Args.push_back(printArg<uint32_t>(P, PC));
2967 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2968 Text.Args.push_back(printArg<const Type *>(P, PC));
2969 break;
2970case OP_BitCastPrimUint64:
2971 Text.Op = PrintName("BitCastPrimUint64");
2972 Text.Args.push_back(printArg<bool>(P, PC));
2973 Text.Args.push_back(printArg<uint32_t>(P, PC));
2974 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2975 Text.Args.push_back(printArg<const Type *>(P, PC));
2976 break;
2977case OP_BitCastPrimSint64:
2978 Text.Op = PrintName("BitCastPrimSint64");
2979 Text.Args.push_back(printArg<bool>(P, PC));
2980 Text.Args.push_back(printArg<uint32_t>(P, PC));
2981 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2982 Text.Args.push_back(printArg<const Type *>(P, PC));
2983 break;
2984case OP_BitCastPrimIntAP:
2985 Text.Op = PrintName("BitCastPrimIntAP");
2986 Text.Args.push_back(printArg<bool>(P, PC));
2987 Text.Args.push_back(printArg<uint32_t>(P, PC));
2988 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2989 Text.Args.push_back(printArg<const Type *>(P, PC));
2990 break;
2991case OP_BitCastPrimIntAPS:
2992 Text.Op = PrintName("BitCastPrimIntAPS");
2993 Text.Args.push_back(printArg<bool>(P, PC));
2994 Text.Args.push_back(printArg<uint32_t>(P, PC));
2995 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2996 Text.Args.push_back(printArg<const Type *>(P, PC));
2997 break;
2998case OP_BitCastPrimBool:
2999 Text.Op = PrintName("BitCastPrimBool");
3000 Text.Args.push_back(printArg<bool>(P, PC));
3001 Text.Args.push_back(printArg<uint32_t>(P, PC));
3002 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3003 Text.Args.push_back(printArg<const Type *>(P, PC));
3004 break;
3005case OP_BitCastPrimFloat:
3006 Text.Op = PrintName("BitCastPrimFloat");
3007 Text.Args.push_back(printArg<bool>(P, PC));
3008 Text.Args.push_back(printArg<uint32_t>(P, PC));
3009 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3010 Text.Args.push_back(printArg<const Type *>(P, PC));
3011 break;
3012case OP_BitCastPrimPtr:
3013 Text.Op = PrintName("BitCastPrimPtr");
3014 Text.Args.push_back(printArg<bool>(P, PC));
3015 Text.Args.push_back(printArg<uint32_t>(P, PC));
3016 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3017 Text.Args.push_back(printArg<const Type *>(P, PC));
3018 break;
3019case OP_BitCastPrimMemberPtr:
3020 Text.Op = PrintName("BitCastPrimMemberPtr");
3021 Text.Args.push_back(printArg<bool>(P, PC));
3022 Text.Args.push_back(printArg<uint32_t>(P, PC));
3023 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3024 Text.Args.push_back(printArg<const Type *>(P, PC));
3025 break;
3026#endif
3027#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3028bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3029bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3030bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3031bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3032bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3033bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3034bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3035bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3036bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3037bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3038bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3039bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3040bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3041bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3042#endif
3043#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3044[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
3045#endif
3046#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3047bool
3048#if defined(GET_EVAL_IMPL)
3049EvalEmitter
3050#else
3051ByteCodeEmitter
3052#endif
3053::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
3054 switch (T0) {
3055 case PT_Uint8:
3056 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
3057 case PT_Sint8:
3058 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
3059 case PT_Uint16:
3060 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
3061 case PT_Sint16:
3062 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
3063 case PT_Uint32:
3064 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
3065 case PT_Sint32:
3066 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
3067 case PT_Uint64:
3068 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
3069 case PT_Sint64:
3070 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
3071 case PT_IntAP:
3072 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
3073 case PT_IntAPS:
3074 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
3075 case PT_Bool:
3076 return emitBitCastPrimBool(A0, A1, A2, A3, I);
3077 case PT_Float:
3078 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
3079 case PT_Ptr:
3080 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
3081 case PT_MemberPtr:
3082 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
3083 default: llvm_unreachable("invalid type: emitBitCastPrim");
3084 }
3085 llvm_unreachable("invalid enum value");
3086}
3087#endif
3088#ifdef GET_LINK_IMPL
3089bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3090 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
3091}
3092bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3093 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
3094}
3095bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3096 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
3097}
3098bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3099 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
3100}
3101bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3102 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
3103}
3104bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3105 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
3106}
3107bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3108 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
3109}
3110bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3111 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
3112}
3113bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3114 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
3115}
3116bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3117 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
3118}
3119bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3120 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
3121}
3122bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3123 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
3124}
3125bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3126 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
3127}
3128bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3129 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
3130}
3131#endif
3132#ifdef GET_EVAL_IMPL
3133bool EvalEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3134 if (!isActive()) return true;
3135 CurrentSource = L;
3136 return BitCastPrim<PT_Uint8>(S, OpPC, A0, A1, A2, A3);
3137}
3138bool EvalEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3139 if (!isActive()) return true;
3140 CurrentSource = L;
3141 return BitCastPrim<PT_Sint8>(S, OpPC, A0, A1, A2, A3);
3142}
3143bool EvalEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3144 if (!isActive()) return true;
3145 CurrentSource = L;
3146 return BitCastPrim<PT_Uint16>(S, OpPC, A0, A1, A2, A3);
3147}
3148bool EvalEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3149 if (!isActive()) return true;
3150 CurrentSource = L;
3151 return BitCastPrim<PT_Sint16>(S, OpPC, A0, A1, A2, A3);
3152}
3153bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3154 if (!isActive()) return true;
3155 CurrentSource = L;
3156 return BitCastPrim<PT_Uint32>(S, OpPC, A0, A1, A2, A3);
3157}
3158bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3159 if (!isActive()) return true;
3160 CurrentSource = L;
3161 return BitCastPrim<PT_Sint32>(S, OpPC, A0, A1, A2, A3);
3162}
3163bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3164 if (!isActive()) return true;
3165 CurrentSource = L;
3166 return BitCastPrim<PT_Uint64>(S, OpPC, A0, A1, A2, A3);
3167}
3168bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3169 if (!isActive()) return true;
3170 CurrentSource = L;
3171 return BitCastPrim<PT_Sint64>(S, OpPC, A0, A1, A2, A3);
3172}
3173bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3174 if (!isActive()) return true;
3175 CurrentSource = L;
3176 return BitCastPrim<PT_IntAP>(S, OpPC, A0, A1, A2, A3);
3177}
3178bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3179 if (!isActive()) return true;
3180 CurrentSource = L;
3181 return BitCastPrim<PT_IntAPS>(S, OpPC, A0, A1, A2, A3);
3182}
3183bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3184 if (!isActive()) return true;
3185 CurrentSource = L;
3186 return BitCastPrim<PT_Bool>(S, OpPC, A0, A1, A2, A3);
3187}
3188bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3189 if (!isActive()) return true;
3190 CurrentSource = L;
3191 return BitCastPrim<PT_Float>(S, OpPC, A0, A1, A2, A3);
3192}
3193bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3194 if (!isActive()) return true;
3195 CurrentSource = L;
3196 return BitCastPrim<PT_Ptr>(S, OpPC, A0, A1, A2, A3);
3197}
3198bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3199 if (!isActive()) return true;
3200 CurrentSource = L;
3201 return BitCastPrim<PT_MemberPtr>(S, OpPC, A0, A1, A2, A3);
3202}
3203#endif
3204#ifdef GET_OPCODE_NAMES
3205OP_BitOrSint8,
3206OP_BitOrUint8,
3207OP_BitOrSint16,
3208OP_BitOrUint16,
3209OP_BitOrSint32,
3210OP_BitOrUint32,
3211OP_BitOrSint64,
3212OP_BitOrUint64,
3213OP_BitOrIntAP,
3214OP_BitOrIntAPS,
3215OP_BitOrFixedPoint,
3216#endif
3217#ifdef GET_INTERP
3218case OP_BitOrSint8: {
3219 if (!BitOr<PT_Sint8>(S, OpPC))
3220 return false;
3221 continue;
3222}
3223case OP_BitOrUint8: {
3224 if (!BitOr<PT_Uint8>(S, OpPC))
3225 return false;
3226 continue;
3227}
3228case OP_BitOrSint16: {
3229 if (!BitOr<PT_Sint16>(S, OpPC))
3230 return false;
3231 continue;
3232}
3233case OP_BitOrUint16: {
3234 if (!BitOr<PT_Uint16>(S, OpPC))
3235 return false;
3236 continue;
3237}
3238case OP_BitOrSint32: {
3239 if (!BitOr<PT_Sint32>(S, OpPC))
3240 return false;
3241 continue;
3242}
3243case OP_BitOrUint32: {
3244 if (!BitOr<PT_Uint32>(S, OpPC))
3245 return false;
3246 continue;
3247}
3248case OP_BitOrSint64: {
3249 if (!BitOr<PT_Sint64>(S, OpPC))
3250 return false;
3251 continue;
3252}
3253case OP_BitOrUint64: {
3254 if (!BitOr<PT_Uint64>(S, OpPC))
3255 return false;
3256 continue;
3257}
3258case OP_BitOrIntAP: {
3259 if (!BitOr<PT_IntAP>(S, OpPC))
3260 return false;
3261 continue;
3262}
3263case OP_BitOrIntAPS: {
3264 if (!BitOr<PT_IntAPS>(S, OpPC))
3265 return false;
3266 continue;
3267}
3268case OP_BitOrFixedPoint: {
3269 if (!BitOr<PT_FixedPoint>(S, OpPC))
3270 return false;
3271 continue;
3272}
3273#endif
3274#ifdef GET_DISASM
3275case OP_BitOrSint8:
3276 Text.Op = PrintName("BitOrSint8");
3277 break;
3278case OP_BitOrUint8:
3279 Text.Op = PrintName("BitOrUint8");
3280 break;
3281case OP_BitOrSint16:
3282 Text.Op = PrintName("BitOrSint16");
3283 break;
3284case OP_BitOrUint16:
3285 Text.Op = PrintName("BitOrUint16");
3286 break;
3287case OP_BitOrSint32:
3288 Text.Op = PrintName("BitOrSint32");
3289 break;
3290case OP_BitOrUint32:
3291 Text.Op = PrintName("BitOrUint32");
3292 break;
3293case OP_BitOrSint64:
3294 Text.Op = PrintName("BitOrSint64");
3295 break;
3296case OP_BitOrUint64:
3297 Text.Op = PrintName("BitOrUint64");
3298 break;
3299case OP_BitOrIntAP:
3300 Text.Op = PrintName("BitOrIntAP");
3301 break;
3302case OP_BitOrIntAPS:
3303 Text.Op = PrintName("BitOrIntAPS");
3304 break;
3305case OP_BitOrFixedPoint:
3306 Text.Op = PrintName("BitOrFixedPoint");
3307 break;
3308#endif
3309#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3310bool emitBitOrSint8(SourceInfo);
3311bool emitBitOrUint8(SourceInfo);
3312bool emitBitOrSint16(SourceInfo);
3313bool emitBitOrUint16(SourceInfo);
3314bool emitBitOrSint32(SourceInfo);
3315bool emitBitOrUint32(SourceInfo);
3316bool emitBitOrSint64(SourceInfo);
3317bool emitBitOrUint64(SourceInfo);
3318bool emitBitOrIntAP(SourceInfo);
3319bool emitBitOrIntAPS(SourceInfo);
3320bool emitBitOrFixedPoint(SourceInfo);
3321#endif
3322#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3323[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
3324#endif
3325#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3326bool
3327#if defined(GET_EVAL_IMPL)
3328EvalEmitter
3329#else
3330ByteCodeEmitter
3331#endif
3332::emitBitOr(PrimType T0, SourceInfo I) {
3333 switch (T0) {
3334 case PT_Sint8:
3335 return emitBitOrSint8(I);
3336 case PT_Uint8:
3337 return emitBitOrUint8(I);
3338 case PT_Sint16:
3339 return emitBitOrSint16(I);
3340 case PT_Uint16:
3341 return emitBitOrUint16(I);
3342 case PT_Sint32:
3343 return emitBitOrSint32(I);
3344 case PT_Uint32:
3345 return emitBitOrUint32(I);
3346 case PT_Sint64:
3347 return emitBitOrSint64(I);
3348 case PT_Uint64:
3349 return emitBitOrUint64(I);
3350 case PT_IntAP:
3351 return emitBitOrIntAP(I);
3352 case PT_IntAPS:
3353 return emitBitOrIntAPS(I);
3354 case PT_FixedPoint:
3355 return emitBitOrFixedPoint(I);
3356 default: llvm_unreachable("invalid type: emitBitOr");
3357 }
3358 llvm_unreachable("invalid enum value");
3359}
3360#endif
3361#ifdef GET_LINK_IMPL
3362bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
3363 return emitOp<>(OP_BitOrSint8, L);
3364}
3365bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
3366 return emitOp<>(OP_BitOrUint8, L);
3367}
3368bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
3369 return emitOp<>(OP_BitOrSint16, L);
3370}
3371bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
3372 return emitOp<>(OP_BitOrUint16, L);
3373}
3374bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
3375 return emitOp<>(OP_BitOrSint32, L);
3376}
3377bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
3378 return emitOp<>(OP_BitOrUint32, L);
3379}
3380bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
3381 return emitOp<>(OP_BitOrSint64, L);
3382}
3383bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
3384 return emitOp<>(OP_BitOrUint64, L);
3385}
3386bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
3387 return emitOp<>(OP_BitOrIntAP, L);
3388}
3389bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
3390 return emitOp<>(OP_BitOrIntAPS, L);
3391}
3392bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
3393 return emitOp<>(OP_BitOrFixedPoint, L);
3394}
3395#endif
3396#ifdef GET_EVAL_IMPL
3397bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
3398 if (!isActive()) return true;
3399 CurrentSource = L;
3400 return BitOr<PT_Sint8>(S, OpPC);
3401}
3402bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
3403 if (!isActive()) return true;
3404 CurrentSource = L;
3405 return BitOr<PT_Uint8>(S, OpPC);
3406}
3407bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
3408 if (!isActive()) return true;
3409 CurrentSource = L;
3410 return BitOr<PT_Sint16>(S, OpPC);
3411}
3412bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
3413 if (!isActive()) return true;
3414 CurrentSource = L;
3415 return BitOr<PT_Uint16>(S, OpPC);
3416}
3417bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
3418 if (!isActive()) return true;
3419 CurrentSource = L;
3420 return BitOr<PT_Sint32>(S, OpPC);
3421}
3422bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
3423 if (!isActive()) return true;
3424 CurrentSource = L;
3425 return BitOr<PT_Uint32>(S, OpPC);
3426}
3427bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
3428 if (!isActive()) return true;
3429 CurrentSource = L;
3430 return BitOr<PT_Sint64>(S, OpPC);
3431}
3432bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
3433 if (!isActive()) return true;
3434 CurrentSource = L;
3435 return BitOr<PT_Uint64>(S, OpPC);
3436}
3437bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
3438 if (!isActive()) return true;
3439 CurrentSource = L;
3440 return BitOr<PT_IntAP>(S, OpPC);
3441}
3442bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
3443 if (!isActive()) return true;
3444 CurrentSource = L;
3445 return BitOr<PT_IntAPS>(S, OpPC);
3446}
3447bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
3448 if (!isActive()) return true;
3449 CurrentSource = L;
3450 return BitOr<PT_FixedPoint>(S, OpPC);
3451}
3452#endif
3453#ifdef GET_OPCODE_NAMES
3454OP_BitXorSint8,
3455OP_BitXorUint8,
3456OP_BitXorSint16,
3457OP_BitXorUint16,
3458OP_BitXorSint32,
3459OP_BitXorUint32,
3460OP_BitXorSint64,
3461OP_BitXorUint64,
3462OP_BitXorIntAP,
3463OP_BitXorIntAPS,
3464OP_BitXorFixedPoint,
3465#endif
3466#ifdef GET_INTERP
3467case OP_BitXorSint8: {
3468 if (!BitXor<PT_Sint8>(S, OpPC))
3469 return false;
3470 continue;
3471}
3472case OP_BitXorUint8: {
3473 if (!BitXor<PT_Uint8>(S, OpPC))
3474 return false;
3475 continue;
3476}
3477case OP_BitXorSint16: {
3478 if (!BitXor<PT_Sint16>(S, OpPC))
3479 return false;
3480 continue;
3481}
3482case OP_BitXorUint16: {
3483 if (!BitXor<PT_Uint16>(S, OpPC))
3484 return false;
3485 continue;
3486}
3487case OP_BitXorSint32: {
3488 if (!BitXor<PT_Sint32>(S, OpPC))
3489 return false;
3490 continue;
3491}
3492case OP_BitXorUint32: {
3493 if (!BitXor<PT_Uint32>(S, OpPC))
3494 return false;
3495 continue;
3496}
3497case OP_BitXorSint64: {
3498 if (!BitXor<PT_Sint64>(S, OpPC))
3499 return false;
3500 continue;
3501}
3502case OP_BitXorUint64: {
3503 if (!BitXor<PT_Uint64>(S, OpPC))
3504 return false;
3505 continue;
3506}
3507case OP_BitXorIntAP: {
3508 if (!BitXor<PT_IntAP>(S, OpPC))
3509 return false;
3510 continue;
3511}
3512case OP_BitXorIntAPS: {
3513 if (!BitXor<PT_IntAPS>(S, OpPC))
3514 return false;
3515 continue;
3516}
3517case OP_BitXorFixedPoint: {
3518 if (!BitXor<PT_FixedPoint>(S, OpPC))
3519 return false;
3520 continue;
3521}
3522#endif
3523#ifdef GET_DISASM
3524case OP_BitXorSint8:
3525 Text.Op = PrintName("BitXorSint8");
3526 break;
3527case OP_BitXorUint8:
3528 Text.Op = PrintName("BitXorUint8");
3529 break;
3530case OP_BitXorSint16:
3531 Text.Op = PrintName("BitXorSint16");
3532 break;
3533case OP_BitXorUint16:
3534 Text.Op = PrintName("BitXorUint16");
3535 break;
3536case OP_BitXorSint32:
3537 Text.Op = PrintName("BitXorSint32");
3538 break;
3539case OP_BitXorUint32:
3540 Text.Op = PrintName("BitXorUint32");
3541 break;
3542case OP_BitXorSint64:
3543 Text.Op = PrintName("BitXorSint64");
3544 break;
3545case OP_BitXorUint64:
3546 Text.Op = PrintName("BitXorUint64");
3547 break;
3548case OP_BitXorIntAP:
3549 Text.Op = PrintName("BitXorIntAP");
3550 break;
3551case OP_BitXorIntAPS:
3552 Text.Op = PrintName("BitXorIntAPS");
3553 break;
3554case OP_BitXorFixedPoint:
3555 Text.Op = PrintName("BitXorFixedPoint");
3556 break;
3557#endif
3558#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3559bool emitBitXorSint8(SourceInfo);
3560bool emitBitXorUint8(SourceInfo);
3561bool emitBitXorSint16(SourceInfo);
3562bool emitBitXorUint16(SourceInfo);
3563bool emitBitXorSint32(SourceInfo);
3564bool emitBitXorUint32(SourceInfo);
3565bool emitBitXorSint64(SourceInfo);
3566bool emitBitXorUint64(SourceInfo);
3567bool emitBitXorIntAP(SourceInfo);
3568bool emitBitXorIntAPS(SourceInfo);
3569bool emitBitXorFixedPoint(SourceInfo);
3570#endif
3571#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3572[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
3573#endif
3574#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3575bool
3576#if defined(GET_EVAL_IMPL)
3577EvalEmitter
3578#else
3579ByteCodeEmitter
3580#endif
3581::emitBitXor(PrimType T0, SourceInfo I) {
3582 switch (T0) {
3583 case PT_Sint8:
3584 return emitBitXorSint8(I);
3585 case PT_Uint8:
3586 return emitBitXorUint8(I);
3587 case PT_Sint16:
3588 return emitBitXorSint16(I);
3589 case PT_Uint16:
3590 return emitBitXorUint16(I);
3591 case PT_Sint32:
3592 return emitBitXorSint32(I);
3593 case PT_Uint32:
3594 return emitBitXorUint32(I);
3595 case PT_Sint64:
3596 return emitBitXorSint64(I);
3597 case PT_Uint64:
3598 return emitBitXorUint64(I);
3599 case PT_IntAP:
3600 return emitBitXorIntAP(I);
3601 case PT_IntAPS:
3602 return emitBitXorIntAPS(I);
3603 case PT_FixedPoint:
3604 return emitBitXorFixedPoint(I);
3605 default: llvm_unreachable("invalid type: emitBitXor");
3606 }
3607 llvm_unreachable("invalid enum value");
3608}
3609#endif
3610#ifdef GET_LINK_IMPL
3611bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
3612 return emitOp<>(OP_BitXorSint8, L);
3613}
3614bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
3615 return emitOp<>(OP_BitXorUint8, L);
3616}
3617bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
3618 return emitOp<>(OP_BitXorSint16, L);
3619}
3620bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
3621 return emitOp<>(OP_BitXorUint16, L);
3622}
3623bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
3624 return emitOp<>(OP_BitXorSint32, L);
3625}
3626bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
3627 return emitOp<>(OP_BitXorUint32, L);
3628}
3629bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
3630 return emitOp<>(OP_BitXorSint64, L);
3631}
3632bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
3633 return emitOp<>(OP_BitXorUint64, L);
3634}
3635bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
3636 return emitOp<>(OP_BitXorIntAP, L);
3637}
3638bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
3639 return emitOp<>(OP_BitXorIntAPS, L);
3640}
3641bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
3642 return emitOp<>(OP_BitXorFixedPoint, L);
3643}
3644#endif
3645#ifdef GET_EVAL_IMPL
3646bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
3647 if (!isActive()) return true;
3648 CurrentSource = L;
3649 return BitXor<PT_Sint8>(S, OpPC);
3650}
3651bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
3652 if (!isActive()) return true;
3653 CurrentSource = L;
3654 return BitXor<PT_Uint8>(S, OpPC);
3655}
3656bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
3657 if (!isActive()) return true;
3658 CurrentSource = L;
3659 return BitXor<PT_Sint16>(S, OpPC);
3660}
3661bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
3662 if (!isActive()) return true;
3663 CurrentSource = L;
3664 return BitXor<PT_Uint16>(S, OpPC);
3665}
3666bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
3667 if (!isActive()) return true;
3668 CurrentSource = L;
3669 return BitXor<PT_Sint32>(S, OpPC);
3670}
3671bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
3672 if (!isActive()) return true;
3673 CurrentSource = L;
3674 return BitXor<PT_Uint32>(S, OpPC);
3675}
3676bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
3677 if (!isActive()) return true;
3678 CurrentSource = L;
3679 return BitXor<PT_Sint64>(S, OpPC);
3680}
3681bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
3682 if (!isActive()) return true;
3683 CurrentSource = L;
3684 return BitXor<PT_Uint64>(S, OpPC);
3685}
3686bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
3687 if (!isActive()) return true;
3688 CurrentSource = L;
3689 return BitXor<PT_IntAP>(S, OpPC);
3690}
3691bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
3692 if (!isActive()) return true;
3693 CurrentSource = L;
3694 return BitXor<PT_IntAPS>(S, OpPC);
3695}
3696bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
3697 if (!isActive()) return true;
3698 CurrentSource = L;
3699 return BitXor<PT_FixedPoint>(S, OpPC);
3700}
3701#endif
3702#ifdef GET_OPCODE_NAMES
3703OP_CMP3Sint8,
3704OP_CMP3Uint8,
3705OP_CMP3Sint16,
3706OP_CMP3Uint16,
3707OP_CMP3Sint32,
3708OP_CMP3Uint32,
3709OP_CMP3Sint64,
3710OP_CMP3Uint64,
3711OP_CMP3IntAP,
3712OP_CMP3IntAPS,
3713OP_CMP3Bool,
3714OP_CMP3FixedPoint,
3715OP_CMP3Ptr,
3716OP_CMP3Float,
3717#endif
3718#ifdef GET_INTERP
3719case OP_CMP3Sint8: {
3720 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3721 if (!CMP3<PT_Sint8>(S, OpPC, V0))
3722 return false;
3723 continue;
3724}
3725case OP_CMP3Uint8: {
3726 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3727 if (!CMP3<PT_Uint8>(S, OpPC, V0))
3728 return false;
3729 continue;
3730}
3731case OP_CMP3Sint16: {
3732 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3733 if (!CMP3<PT_Sint16>(S, OpPC, V0))
3734 return false;
3735 continue;
3736}
3737case OP_CMP3Uint16: {
3738 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3739 if (!CMP3<PT_Uint16>(S, OpPC, V0))
3740 return false;
3741 continue;
3742}
3743case OP_CMP3Sint32: {
3744 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3745 if (!CMP3<PT_Sint32>(S, OpPC, V0))
3746 return false;
3747 continue;
3748}
3749case OP_CMP3Uint32: {
3750 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3751 if (!CMP3<PT_Uint32>(S, OpPC, V0))
3752 return false;
3753 continue;
3754}
3755case OP_CMP3Sint64: {
3756 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3757 if (!CMP3<PT_Sint64>(S, OpPC, V0))
3758 return false;
3759 continue;
3760}
3761case OP_CMP3Uint64: {
3762 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3763 if (!CMP3<PT_Uint64>(S, OpPC, V0))
3764 return false;
3765 continue;
3766}
3767case OP_CMP3IntAP: {
3768 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3769 if (!CMP3<PT_IntAP>(S, OpPC, V0))
3770 return false;
3771 continue;
3772}
3773case OP_CMP3IntAPS: {
3774 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3775 if (!CMP3<PT_IntAPS>(S, OpPC, V0))
3776 return false;
3777 continue;
3778}
3779case OP_CMP3Bool: {
3780 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3781 if (!CMP3<PT_Bool>(S, OpPC, V0))
3782 return false;
3783 continue;
3784}
3785case OP_CMP3FixedPoint: {
3786 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3787 if (!CMP3<PT_FixedPoint>(S, OpPC, V0))
3788 return false;
3789 continue;
3790}
3791case OP_CMP3Ptr: {
3792 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3793 if (!CMP3<PT_Ptr>(S, OpPC, V0))
3794 return false;
3795 continue;
3796}
3797case OP_CMP3Float: {
3798 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3799 if (!CMP3<PT_Float>(S, OpPC, V0))
3800 return false;
3801 continue;
3802}
3803#endif
3804#ifdef GET_DISASM
3805case OP_CMP3Sint8:
3806 Text.Op = PrintName("CMP3Sint8");
3807 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3808 break;
3809case OP_CMP3Uint8:
3810 Text.Op = PrintName("CMP3Uint8");
3811 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3812 break;
3813case OP_CMP3Sint16:
3814 Text.Op = PrintName("CMP3Sint16");
3815 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3816 break;
3817case OP_CMP3Uint16:
3818 Text.Op = PrintName("CMP3Uint16");
3819 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3820 break;
3821case OP_CMP3Sint32:
3822 Text.Op = PrintName("CMP3Sint32");
3823 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3824 break;
3825case OP_CMP3Uint32:
3826 Text.Op = PrintName("CMP3Uint32");
3827 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3828 break;
3829case OP_CMP3Sint64:
3830 Text.Op = PrintName("CMP3Sint64");
3831 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3832 break;
3833case OP_CMP3Uint64:
3834 Text.Op = PrintName("CMP3Uint64");
3835 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3836 break;
3837case OP_CMP3IntAP:
3838 Text.Op = PrintName("CMP3IntAP");
3839 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3840 break;
3841case OP_CMP3IntAPS:
3842 Text.Op = PrintName("CMP3IntAPS");
3843 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3844 break;
3845case OP_CMP3Bool:
3846 Text.Op = PrintName("CMP3Bool");
3847 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3848 break;
3849case OP_CMP3FixedPoint:
3850 Text.Op = PrintName("CMP3FixedPoint");
3851 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3852 break;
3853case OP_CMP3Ptr:
3854 Text.Op = PrintName("CMP3Ptr");
3855 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3856 break;
3857case OP_CMP3Float:
3858 Text.Op = PrintName("CMP3Float");
3859 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3860 break;
3861#endif
3862#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3863bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
3864bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
3865bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
3866bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
3867bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
3868bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
3869bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
3870bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
3871bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
3872bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
3873bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
3874bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
3875bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
3876bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
3877#endif
3878#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3879[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
3880#endif
3881#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3882bool
3883#if defined(GET_EVAL_IMPL)
3884EvalEmitter
3885#else
3886ByteCodeEmitter
3887#endif
3888::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
3889 switch (T0) {
3890 case PT_Sint8:
3891 return emitCMP3Sint8(A0, I);
3892 case PT_Uint8:
3893 return emitCMP3Uint8(A0, I);
3894 case PT_Sint16:
3895 return emitCMP3Sint16(A0, I);
3896 case PT_Uint16:
3897 return emitCMP3Uint16(A0, I);
3898 case PT_Sint32:
3899 return emitCMP3Sint32(A0, I);
3900 case PT_Uint32:
3901 return emitCMP3Uint32(A0, I);
3902 case PT_Sint64:
3903 return emitCMP3Sint64(A0, I);
3904 case PT_Uint64:
3905 return emitCMP3Uint64(A0, I);
3906 case PT_IntAP:
3907 return emitCMP3IntAP(A0, I);
3908 case PT_IntAPS:
3909 return emitCMP3IntAPS(A0, I);
3910 case PT_Bool:
3911 return emitCMP3Bool(A0, I);
3912 case PT_FixedPoint:
3913 return emitCMP3FixedPoint(A0, I);
3914 case PT_Ptr:
3915 return emitCMP3Ptr(A0, I);
3916 case PT_Float:
3917 return emitCMP3Float(A0, I);
3918 default: llvm_unreachable("invalid type: emitCMP3");
3919 }
3920 llvm_unreachable("invalid enum value");
3921}
3922#endif
3923#ifdef GET_LINK_IMPL
3924bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3925 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
3926}
3927bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3928 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
3929}
3930bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3931 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
3932}
3933bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3934 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
3935}
3936bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3937 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
3938}
3939bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3940 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
3941}
3942bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
3943 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
3944}
3945bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
3946 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
3947}
3948bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
3949 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
3950}
3951bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
3952 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
3953}
3954bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
3955 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
3956}
3957bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
3958 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
3959}
3960bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
3961 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
3962}
3963bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
3964 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
3965}
3966#endif
3967#ifdef GET_EVAL_IMPL
3968bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3969 if (!isActive()) return true;
3970 CurrentSource = L;
3971 return CMP3<PT_Sint8>(S, OpPC, A0);
3972}
3973bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3974 if (!isActive()) return true;
3975 CurrentSource = L;
3976 return CMP3<PT_Uint8>(S, OpPC, A0);
3977}
3978bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3979 if (!isActive()) return true;
3980 CurrentSource = L;
3981 return CMP3<PT_Sint16>(S, OpPC, A0);
3982}
3983bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3984 if (!isActive()) return true;
3985 CurrentSource = L;
3986 return CMP3<PT_Uint16>(S, OpPC, A0);
3987}
3988bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3989 if (!isActive()) return true;
3990 CurrentSource = L;
3991 return CMP3<PT_Sint32>(S, OpPC, A0);
3992}
3993bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3994 if (!isActive()) return true;
3995 CurrentSource = L;
3996 return CMP3<PT_Uint32>(S, OpPC, A0);
3997}
3998bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
3999 if (!isActive()) return true;
4000 CurrentSource = L;
4001 return CMP3<PT_Sint64>(S, OpPC, A0);
4002}
4003bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
4004 if (!isActive()) return true;
4005 CurrentSource = L;
4006 return CMP3<PT_Uint64>(S, OpPC, A0);
4007}
4008bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
4009 if (!isActive()) return true;
4010 CurrentSource = L;
4011 return CMP3<PT_IntAP>(S, OpPC, A0);
4012}
4013bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
4014 if (!isActive()) return true;
4015 CurrentSource = L;
4016 return CMP3<PT_IntAPS>(S, OpPC, A0);
4017}
4018bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
4019 if (!isActive()) return true;
4020 CurrentSource = L;
4021 return CMP3<PT_Bool>(S, OpPC, A0);
4022}
4023bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
4024 if (!isActive()) return true;
4025 CurrentSource = L;
4026 return CMP3<PT_FixedPoint>(S, OpPC, A0);
4027}
4028bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
4029 if (!isActive()) return true;
4030 CurrentSource = L;
4031 return CMP3<PT_Ptr>(S, OpPC, A0);
4032}
4033bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
4034 if (!isActive()) return true;
4035 CurrentSource = L;
4036 return CMP3<PT_Float>(S, OpPC, A0);
4037}
4038#endif
4039#ifdef GET_OPCODE_NAMES
4040OP_Call,
4041#endif
4042#ifdef GET_INTERP
4043case OP_Call: {
4044 const auto V0 = ReadArg<const Function *>(S, PC);
4045 const auto V1 = ReadArg<uint32_t>(S, PC);
4046 if (!Call(S, OpPC, V0, V1))
4047 return false;
4048 continue;
4049}
4050#endif
4051#ifdef GET_DISASM
4052case OP_Call:
4053 Text.Op = PrintName("Call");
4054 Text.Args.push_back(printArg<const Function *>(P, PC));
4055 Text.Args.push_back(printArg<uint32_t>(P, PC));
4056 break;
4057#endif
4058#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4059bool emitCall( const Function * , uint32_t , SourceInfo);
4060#endif
4061#ifdef GET_LINK_IMPL
4062bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
4063 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
4064}
4065#endif
4066#ifdef GET_EVAL_IMPL
4067bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
4068 if (!isActive()) return true;
4069 CurrentSource = L;
4070 return Call(S, OpPC, A0, A1);
4071}
4072#endif
4073#ifdef GET_OPCODE_NAMES
4074OP_CallBI,
4075#endif
4076#ifdef GET_INTERP
4077case OP_CallBI: {
4078 const auto V0 = ReadArg<const CallExpr *>(S, PC);
4079 const auto V1 = ReadArg<uint32_t>(S, PC);
4080 if (!CallBI(S, OpPC, V0, V1))
4081 return false;
4082 continue;
4083}
4084#endif
4085#ifdef GET_DISASM
4086case OP_CallBI:
4087 Text.Op = PrintName("CallBI");
4088 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
4089 Text.Args.push_back(printArg<uint32_t>(P, PC));
4090 break;
4091#endif
4092#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4093bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
4094#endif
4095#ifdef GET_LINK_IMPL
4096bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
4097 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
4098}
4099#endif
4100#ifdef GET_EVAL_IMPL
4101bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
4102 if (!isActive()) return true;
4103 CurrentSource = L;
4104 return CallBI(S, OpPC, A0, A1);
4105}
4106#endif
4107#ifdef GET_OPCODE_NAMES
4108OP_CallPtr,
4109#endif
4110#ifdef GET_INTERP
4111case OP_CallPtr: {
4112 const auto V0 = ReadArg<uint32_t>(S, PC);
4113 const auto V1 = ReadArg<const CallExpr *>(S, PC);
4114 if (!CallPtr(S, OpPC, V0, V1))
4115 return false;
4116 continue;
4117}
4118#endif
4119#ifdef GET_DISASM
4120case OP_CallPtr:
4121 Text.Op = PrintName("CallPtr");
4122 Text.Args.push_back(printArg<uint32_t>(P, PC));
4123 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
4124 break;
4125#endif
4126#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4127bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
4128#endif
4129#ifdef GET_LINK_IMPL
4130bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
4131 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
4132}
4133#endif
4134#ifdef GET_EVAL_IMPL
4135bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
4136 if (!isActive()) return true;
4137 CurrentSource = L;
4138 return CallPtr(S, OpPC, A0, A1);
4139}
4140#endif
4141#ifdef GET_OPCODE_NAMES
4142OP_CallVar,
4143#endif
4144#ifdef GET_INTERP
4145case OP_CallVar: {
4146 const auto V0 = ReadArg<const Function *>(S, PC);
4147 const auto V1 = ReadArg<uint32_t>(S, PC);
4148 if (!CallVar(S, OpPC, V0, V1))
4149 return false;
4150 continue;
4151}
4152#endif
4153#ifdef GET_DISASM
4154case OP_CallVar:
4155 Text.Op = PrintName("CallVar");
4156 Text.Args.push_back(printArg<const Function *>(P, PC));
4157 Text.Args.push_back(printArg<uint32_t>(P, PC));
4158 break;
4159#endif
4160#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4161bool emitCallVar( const Function * , uint32_t , SourceInfo);
4162#endif
4163#ifdef GET_LINK_IMPL
4164bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
4165 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
4166}
4167#endif
4168#ifdef GET_EVAL_IMPL
4169bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
4170 if (!isActive()) return true;
4171 CurrentSource = L;
4172 return CallVar(S, OpPC, A0, A1);
4173}
4174#endif
4175#ifdef GET_OPCODE_NAMES
4176OP_CallVirt,
4177#endif
4178#ifdef GET_INTERP
4179case OP_CallVirt: {
4180 const auto V0 = ReadArg<const Function *>(S, PC);
4181 const auto V1 = ReadArg<uint32_t>(S, PC);
4182 if (!CallVirt(S, OpPC, V0, V1))
4183 return false;
4184 continue;
4185}
4186#endif
4187#ifdef GET_DISASM
4188case OP_CallVirt:
4189 Text.Op = PrintName("CallVirt");
4190 Text.Args.push_back(printArg<const Function *>(P, PC));
4191 Text.Args.push_back(printArg<uint32_t>(P, PC));
4192 break;
4193#endif
4194#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4195bool emitCallVirt( const Function * , uint32_t , SourceInfo);
4196#endif
4197#ifdef GET_LINK_IMPL
4198bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
4199 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
4200}
4201#endif
4202#ifdef GET_EVAL_IMPL
4203bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
4204 if (!isActive()) return true;
4205 CurrentSource = L;
4206 return CallVirt(S, OpPC, A0, A1);
4207}
4208#endif
4209#ifdef GET_OPCODE_NAMES
4210OP_CastUint8Uint8,
4211OP_CastUint8Sint8,
4212OP_CastUint8Uint16,
4213OP_CastUint8Sint16,
4214OP_CastUint8Uint32,
4215OP_CastUint8Sint32,
4216OP_CastUint8Uint64,
4217OP_CastUint8Sint64,
4218OP_CastUint8Bool,
4219OP_CastSint8Uint8,
4220OP_CastSint8Sint8,
4221OP_CastSint8Uint16,
4222OP_CastSint8Sint16,
4223OP_CastSint8Uint32,
4224OP_CastSint8Sint32,
4225OP_CastSint8Uint64,
4226OP_CastSint8Sint64,
4227OP_CastSint8Bool,
4228OP_CastUint16Uint8,
4229OP_CastUint16Sint8,
4230OP_CastUint16Uint16,
4231OP_CastUint16Sint16,
4232OP_CastUint16Uint32,
4233OP_CastUint16Sint32,
4234OP_CastUint16Uint64,
4235OP_CastUint16Sint64,
4236OP_CastUint16Bool,
4237OP_CastSint16Uint8,
4238OP_CastSint16Sint8,
4239OP_CastSint16Uint16,
4240OP_CastSint16Sint16,
4241OP_CastSint16Uint32,
4242OP_CastSint16Sint32,
4243OP_CastSint16Uint64,
4244OP_CastSint16Sint64,
4245OP_CastSint16Bool,
4246OP_CastUint32Uint8,
4247OP_CastUint32Sint8,
4248OP_CastUint32Uint16,
4249OP_CastUint32Sint16,
4250OP_CastUint32Uint32,
4251OP_CastUint32Sint32,
4252OP_CastUint32Uint64,
4253OP_CastUint32Sint64,
4254OP_CastUint32Bool,
4255OP_CastSint32Uint8,
4256OP_CastSint32Sint8,
4257OP_CastSint32Uint16,
4258OP_CastSint32Sint16,
4259OP_CastSint32Uint32,
4260OP_CastSint32Sint32,
4261OP_CastSint32Uint64,
4262OP_CastSint32Sint64,
4263OP_CastSint32Bool,
4264OP_CastUint64Uint8,
4265OP_CastUint64Sint8,
4266OP_CastUint64Uint16,
4267OP_CastUint64Sint16,
4268OP_CastUint64Uint32,
4269OP_CastUint64Sint32,
4270OP_CastUint64Uint64,
4271OP_CastUint64Sint64,
4272OP_CastUint64Bool,
4273OP_CastSint64Uint8,
4274OP_CastSint64Sint8,
4275OP_CastSint64Uint16,
4276OP_CastSint64Sint16,
4277OP_CastSint64Uint32,
4278OP_CastSint64Sint32,
4279OP_CastSint64Uint64,
4280OP_CastSint64Sint64,
4281OP_CastSint64Bool,
4282OP_CastBoolUint8,
4283OP_CastBoolSint8,
4284OP_CastBoolUint16,
4285OP_CastBoolSint16,
4286OP_CastBoolUint32,
4287OP_CastBoolSint32,
4288OP_CastBoolUint64,
4289OP_CastBoolSint64,
4290OP_CastBoolBool,
4291OP_CastIntAPUint8,
4292OP_CastIntAPSint8,
4293OP_CastIntAPUint16,
4294OP_CastIntAPSint16,
4295OP_CastIntAPUint32,
4296OP_CastIntAPSint32,
4297OP_CastIntAPUint64,
4298OP_CastIntAPSint64,
4299OP_CastIntAPBool,
4300OP_CastIntAPSUint8,
4301OP_CastIntAPSSint8,
4302OP_CastIntAPSUint16,
4303OP_CastIntAPSSint16,
4304OP_CastIntAPSUint32,
4305OP_CastIntAPSSint32,
4306OP_CastIntAPSUint64,
4307OP_CastIntAPSSint64,
4308OP_CastIntAPSBool,
4309OP_CastFixedPointUint8,
4310OP_CastFixedPointSint8,
4311OP_CastFixedPointUint16,
4312OP_CastFixedPointSint16,
4313OP_CastFixedPointUint32,
4314OP_CastFixedPointSint32,
4315OP_CastFixedPointUint64,
4316OP_CastFixedPointSint64,
4317OP_CastFixedPointBool,
4318#endif
4319#ifdef GET_INTERP
4320case OP_CastUint8Uint8: {
4321 if (!Cast<PT_Uint8, PT_Uint8>(S, OpPC))
4322 return false;
4323 continue;
4324}
4325case OP_CastUint8Sint8: {
4326 if (!Cast<PT_Uint8, PT_Sint8>(S, OpPC))
4327 return false;
4328 continue;
4329}
4330case OP_CastUint8Uint16: {
4331 if (!Cast<PT_Uint8, PT_Uint16>(S, OpPC))
4332 return false;
4333 continue;
4334}
4335case OP_CastUint8Sint16: {
4336 if (!Cast<PT_Uint8, PT_Sint16>(S, OpPC))
4337 return false;
4338 continue;
4339}
4340case OP_CastUint8Uint32: {
4341 if (!Cast<PT_Uint8, PT_Uint32>(S, OpPC))
4342 return false;
4343 continue;
4344}
4345case OP_CastUint8Sint32: {
4346 if (!Cast<PT_Uint8, PT_Sint32>(S, OpPC))
4347 return false;
4348 continue;
4349}
4350case OP_CastUint8Uint64: {
4351 if (!Cast<PT_Uint8, PT_Uint64>(S, OpPC))
4352 return false;
4353 continue;
4354}
4355case OP_CastUint8Sint64: {
4356 if (!Cast<PT_Uint8, PT_Sint64>(S, OpPC))
4357 return false;
4358 continue;
4359}
4360case OP_CastUint8Bool: {
4361 if (!Cast<PT_Uint8, PT_Bool>(S, OpPC))
4362 return false;
4363 continue;
4364}
4365case OP_CastSint8Uint8: {
4366 if (!Cast<PT_Sint8, PT_Uint8>(S, OpPC))
4367 return false;
4368 continue;
4369}
4370case OP_CastSint8Sint8: {
4371 if (!Cast<PT_Sint8, PT_Sint8>(S, OpPC))
4372 return false;
4373 continue;
4374}
4375case OP_CastSint8Uint16: {
4376 if (!Cast<PT_Sint8, PT_Uint16>(S, OpPC))
4377 return false;
4378 continue;
4379}
4380case OP_CastSint8Sint16: {
4381 if (!Cast<PT_Sint8, PT_Sint16>(S, OpPC))
4382 return false;
4383 continue;
4384}
4385case OP_CastSint8Uint32: {
4386 if (!Cast<PT_Sint8, PT_Uint32>(S, OpPC))
4387 return false;
4388 continue;
4389}
4390case OP_CastSint8Sint32: {
4391 if (!Cast<PT_Sint8, PT_Sint32>(S, OpPC))
4392 return false;
4393 continue;
4394}
4395case OP_CastSint8Uint64: {
4396 if (!Cast<PT_Sint8, PT_Uint64>(S, OpPC))
4397 return false;
4398 continue;
4399}
4400case OP_CastSint8Sint64: {
4401 if (!Cast<PT_Sint8, PT_Sint64>(S, OpPC))
4402 return false;
4403 continue;
4404}
4405case OP_CastSint8Bool: {
4406 if (!Cast<PT_Sint8, PT_Bool>(S, OpPC))
4407 return false;
4408 continue;
4409}
4410case OP_CastUint16Uint8: {
4411 if (!Cast<PT_Uint16, PT_Uint8>(S, OpPC))
4412 return false;
4413 continue;
4414}
4415case OP_CastUint16Sint8: {
4416 if (!Cast<PT_Uint16, PT_Sint8>(S, OpPC))
4417 return false;
4418 continue;
4419}
4420case OP_CastUint16Uint16: {
4421 if (!Cast<PT_Uint16, PT_Uint16>(S, OpPC))
4422 return false;
4423 continue;
4424}
4425case OP_CastUint16Sint16: {
4426 if (!Cast<PT_Uint16, PT_Sint16>(S, OpPC))
4427 return false;
4428 continue;
4429}
4430case OP_CastUint16Uint32: {
4431 if (!Cast<PT_Uint16, PT_Uint32>(S, OpPC))
4432 return false;
4433 continue;
4434}
4435case OP_CastUint16Sint32: {
4436 if (!Cast<PT_Uint16, PT_Sint32>(S, OpPC))
4437 return false;
4438 continue;
4439}
4440case OP_CastUint16Uint64: {
4441 if (!Cast<PT_Uint16, PT_Uint64>(S, OpPC))
4442 return false;
4443 continue;
4444}
4445case OP_CastUint16Sint64: {
4446 if (!Cast<PT_Uint16, PT_Sint64>(S, OpPC))
4447 return false;
4448 continue;
4449}
4450case OP_CastUint16Bool: {
4451 if (!Cast<PT_Uint16, PT_Bool>(S, OpPC))
4452 return false;
4453 continue;
4454}
4455case OP_CastSint16Uint8: {
4456 if (!Cast<PT_Sint16, PT_Uint8>(S, OpPC))
4457 return false;
4458 continue;
4459}
4460case OP_CastSint16Sint8: {
4461 if (!Cast<PT_Sint16, PT_Sint8>(S, OpPC))
4462 return false;
4463 continue;
4464}
4465case OP_CastSint16Uint16: {
4466 if (!Cast<PT_Sint16, PT_Uint16>(S, OpPC))
4467 return false;
4468 continue;
4469}
4470case OP_CastSint16Sint16: {
4471 if (!Cast<PT_Sint16, PT_Sint16>(S, OpPC))
4472 return false;
4473 continue;
4474}
4475case OP_CastSint16Uint32: {
4476 if (!Cast<PT_Sint16, PT_Uint32>(S, OpPC))
4477 return false;
4478 continue;
4479}
4480case OP_CastSint16Sint32: {
4481 if (!Cast<PT_Sint16, PT_Sint32>(S, OpPC))
4482 return false;
4483 continue;
4484}
4485case OP_CastSint16Uint64: {
4486 if (!Cast<PT_Sint16, PT_Uint64>(S, OpPC))
4487 return false;
4488 continue;
4489}
4490case OP_CastSint16Sint64: {
4491 if (!Cast<PT_Sint16, PT_Sint64>(S, OpPC))
4492 return false;
4493 continue;
4494}
4495case OP_CastSint16Bool: {
4496 if (!Cast<PT_Sint16, PT_Bool>(S, OpPC))
4497 return false;
4498 continue;
4499}
4500case OP_CastUint32Uint8: {
4501 if (!Cast<PT_Uint32, PT_Uint8>(S, OpPC))
4502 return false;
4503 continue;
4504}
4505case OP_CastUint32Sint8: {
4506 if (!Cast<PT_Uint32, PT_Sint8>(S, OpPC))
4507 return false;
4508 continue;
4509}
4510case OP_CastUint32Uint16: {
4511 if (!Cast<PT_Uint32, PT_Uint16>(S, OpPC))
4512 return false;
4513 continue;
4514}
4515case OP_CastUint32Sint16: {
4516 if (!Cast<PT_Uint32, PT_Sint16>(S, OpPC))
4517 return false;
4518 continue;
4519}
4520case OP_CastUint32Uint32: {
4521 if (!Cast<PT_Uint32, PT_Uint32>(S, OpPC))
4522 return false;
4523 continue;
4524}
4525case OP_CastUint32Sint32: {
4526 if (!Cast<PT_Uint32, PT_Sint32>(S, OpPC))
4527 return false;
4528 continue;
4529}
4530case OP_CastUint32Uint64: {
4531 if (!Cast<PT_Uint32, PT_Uint64>(S, OpPC))
4532 return false;
4533 continue;
4534}
4535case OP_CastUint32Sint64: {
4536 if (!Cast<PT_Uint32, PT_Sint64>(S, OpPC))
4537 return false;
4538 continue;
4539}
4540case OP_CastUint32Bool: {
4541 if (!Cast<PT_Uint32, PT_Bool>(S, OpPC))
4542 return false;
4543 continue;
4544}
4545case OP_CastSint32Uint8: {
4546 if (!Cast<PT_Sint32, PT_Uint8>(S, OpPC))
4547 return false;
4548 continue;
4549}
4550case OP_CastSint32Sint8: {
4551 if (!Cast<PT_Sint32, PT_Sint8>(S, OpPC))
4552 return false;
4553 continue;
4554}
4555case OP_CastSint32Uint16: {
4556 if (!Cast<PT_Sint32, PT_Uint16>(S, OpPC))
4557 return false;
4558 continue;
4559}
4560case OP_CastSint32Sint16: {
4561 if (!Cast<PT_Sint32, PT_Sint16>(S, OpPC))
4562 return false;
4563 continue;
4564}
4565case OP_CastSint32Uint32: {
4566 if (!Cast<PT_Sint32, PT_Uint32>(S, OpPC))
4567 return false;
4568 continue;
4569}
4570case OP_CastSint32Sint32: {
4571 if (!Cast<PT_Sint32, PT_Sint32>(S, OpPC))
4572 return false;
4573 continue;
4574}
4575case OP_CastSint32Uint64: {
4576 if (!Cast<PT_Sint32, PT_Uint64>(S, OpPC))
4577 return false;
4578 continue;
4579}
4580case OP_CastSint32Sint64: {
4581 if (!Cast<PT_Sint32, PT_Sint64>(S, OpPC))
4582 return false;
4583 continue;
4584}
4585case OP_CastSint32Bool: {
4586 if (!Cast<PT_Sint32, PT_Bool>(S, OpPC))
4587 return false;
4588 continue;
4589}
4590case OP_CastUint64Uint8: {
4591 if (!Cast<PT_Uint64, PT_Uint8>(S, OpPC))
4592 return false;
4593 continue;
4594}
4595case OP_CastUint64Sint8: {
4596 if (!Cast<PT_Uint64, PT_Sint8>(S, OpPC))
4597 return false;
4598 continue;
4599}
4600case OP_CastUint64Uint16: {
4601 if (!Cast<PT_Uint64, PT_Uint16>(S, OpPC))
4602 return false;
4603 continue;
4604}
4605case OP_CastUint64Sint16: {
4606 if (!Cast<PT_Uint64, PT_Sint16>(S, OpPC))
4607 return false;
4608 continue;
4609}
4610case OP_CastUint64Uint32: {
4611 if (!Cast<PT_Uint64, PT_Uint32>(S, OpPC))
4612 return false;
4613 continue;
4614}
4615case OP_CastUint64Sint32: {
4616 if (!Cast<PT_Uint64, PT_Sint32>(S, OpPC))
4617 return false;
4618 continue;
4619}
4620case OP_CastUint64Uint64: {
4621 if (!Cast<PT_Uint64, PT_Uint64>(S, OpPC))
4622 return false;
4623 continue;
4624}
4625case OP_CastUint64Sint64: {
4626 if (!Cast<PT_Uint64, PT_Sint64>(S, OpPC))
4627 return false;
4628 continue;
4629}
4630case OP_CastUint64Bool: {
4631 if (!Cast<PT_Uint64, PT_Bool>(S, OpPC))
4632 return false;
4633 continue;
4634}
4635case OP_CastSint64Uint8: {
4636 if (!Cast<PT_Sint64, PT_Uint8>(S, OpPC))
4637 return false;
4638 continue;
4639}
4640case OP_CastSint64Sint8: {
4641 if (!Cast<PT_Sint64, PT_Sint8>(S, OpPC))
4642 return false;
4643 continue;
4644}
4645case OP_CastSint64Uint16: {
4646 if (!Cast<PT_Sint64, PT_Uint16>(S, OpPC))
4647 return false;
4648 continue;
4649}
4650case OP_CastSint64Sint16: {
4651 if (!Cast<PT_Sint64, PT_Sint16>(S, OpPC))
4652 return false;
4653 continue;
4654}
4655case OP_CastSint64Uint32: {
4656 if (!Cast<PT_Sint64, PT_Uint32>(S, OpPC))
4657 return false;
4658 continue;
4659}
4660case OP_CastSint64Sint32: {
4661 if (!Cast<PT_Sint64, PT_Sint32>(S, OpPC))
4662 return false;
4663 continue;
4664}
4665case OP_CastSint64Uint64: {
4666 if (!Cast<PT_Sint64, PT_Uint64>(S, OpPC))
4667 return false;
4668 continue;
4669}
4670case OP_CastSint64Sint64: {
4671 if (!Cast<PT_Sint64, PT_Sint64>(S, OpPC))
4672 return false;
4673 continue;
4674}
4675case OP_CastSint64Bool: {
4676 if (!Cast<PT_Sint64, PT_Bool>(S, OpPC))
4677 return false;
4678 continue;
4679}
4680case OP_CastBoolUint8: {
4681 if (!Cast<PT_Bool, PT_Uint8>(S, OpPC))
4682 return false;
4683 continue;
4684}
4685case OP_CastBoolSint8: {
4686 if (!Cast<PT_Bool, PT_Sint8>(S, OpPC))
4687 return false;
4688 continue;
4689}
4690case OP_CastBoolUint16: {
4691 if (!Cast<PT_Bool, PT_Uint16>(S, OpPC))
4692 return false;
4693 continue;
4694}
4695case OP_CastBoolSint16: {
4696 if (!Cast<PT_Bool, PT_Sint16>(S, OpPC))
4697 return false;
4698 continue;
4699}
4700case OP_CastBoolUint32: {
4701 if (!Cast<PT_Bool, PT_Uint32>(S, OpPC))
4702 return false;
4703 continue;
4704}
4705case OP_CastBoolSint32: {
4706 if (!Cast<PT_Bool, PT_Sint32>(S, OpPC))
4707 return false;
4708 continue;
4709}
4710case OP_CastBoolUint64: {
4711 if (!Cast<PT_Bool, PT_Uint64>(S, OpPC))
4712 return false;
4713 continue;
4714}
4715case OP_CastBoolSint64: {
4716 if (!Cast<PT_Bool, PT_Sint64>(S, OpPC))
4717 return false;
4718 continue;
4719}
4720case OP_CastBoolBool: {
4721 if (!Cast<PT_Bool, PT_Bool>(S, OpPC))
4722 return false;
4723 continue;
4724}
4725case OP_CastIntAPUint8: {
4726 if (!Cast<PT_IntAP, PT_Uint8>(S, OpPC))
4727 return false;
4728 continue;
4729}
4730case OP_CastIntAPSint8: {
4731 if (!Cast<PT_IntAP, PT_Sint8>(S, OpPC))
4732 return false;
4733 continue;
4734}
4735case OP_CastIntAPUint16: {
4736 if (!Cast<PT_IntAP, PT_Uint16>(S, OpPC))
4737 return false;
4738 continue;
4739}
4740case OP_CastIntAPSint16: {
4741 if (!Cast<PT_IntAP, PT_Sint16>(S, OpPC))
4742 return false;
4743 continue;
4744}
4745case OP_CastIntAPUint32: {
4746 if (!Cast<PT_IntAP, PT_Uint32>(S, OpPC))
4747 return false;
4748 continue;
4749}
4750case OP_CastIntAPSint32: {
4751 if (!Cast<PT_IntAP, PT_Sint32>(S, OpPC))
4752 return false;
4753 continue;
4754}
4755case OP_CastIntAPUint64: {
4756 if (!Cast<PT_IntAP, PT_Uint64>(S, OpPC))
4757 return false;
4758 continue;
4759}
4760case OP_CastIntAPSint64: {
4761 if (!Cast<PT_IntAP, PT_Sint64>(S, OpPC))
4762 return false;
4763 continue;
4764}
4765case OP_CastIntAPBool: {
4766 if (!Cast<PT_IntAP, PT_Bool>(S, OpPC))
4767 return false;
4768 continue;
4769}
4770case OP_CastIntAPSUint8: {
4771 if (!Cast<PT_IntAPS, PT_Uint8>(S, OpPC))
4772 return false;
4773 continue;
4774}
4775case OP_CastIntAPSSint8: {
4776 if (!Cast<PT_IntAPS, PT_Sint8>(S, OpPC))
4777 return false;
4778 continue;
4779}
4780case OP_CastIntAPSUint16: {
4781 if (!Cast<PT_IntAPS, PT_Uint16>(S, OpPC))
4782 return false;
4783 continue;
4784}
4785case OP_CastIntAPSSint16: {
4786 if (!Cast<PT_IntAPS, PT_Sint16>(S, OpPC))
4787 return false;
4788 continue;
4789}
4790case OP_CastIntAPSUint32: {
4791 if (!Cast<PT_IntAPS, PT_Uint32>(S, OpPC))
4792 return false;
4793 continue;
4794}
4795case OP_CastIntAPSSint32: {
4796 if (!Cast<PT_IntAPS, PT_Sint32>(S, OpPC))
4797 return false;
4798 continue;
4799}
4800case OP_CastIntAPSUint64: {
4801 if (!Cast<PT_IntAPS, PT_Uint64>(S, OpPC))
4802 return false;
4803 continue;
4804}
4805case OP_CastIntAPSSint64: {
4806 if (!Cast<PT_IntAPS, PT_Sint64>(S, OpPC))
4807 return false;
4808 continue;
4809}
4810case OP_CastIntAPSBool: {
4811 if (!Cast<PT_IntAPS, PT_Bool>(S, OpPC))
4812 return false;
4813 continue;
4814}
4815case OP_CastFixedPointUint8: {
4816 if (!Cast<PT_FixedPoint, PT_Uint8>(S, OpPC))
4817 return false;
4818 continue;
4819}
4820case OP_CastFixedPointSint8: {
4821 if (!Cast<PT_FixedPoint, PT_Sint8>(S, OpPC))
4822 return false;
4823 continue;
4824}
4825case OP_CastFixedPointUint16: {
4826 if (!Cast<PT_FixedPoint, PT_Uint16>(S, OpPC))
4827 return false;
4828 continue;
4829}
4830case OP_CastFixedPointSint16: {
4831 if (!Cast<PT_FixedPoint, PT_Sint16>(S, OpPC))
4832 return false;
4833 continue;
4834}
4835case OP_CastFixedPointUint32: {
4836 if (!Cast<PT_FixedPoint, PT_Uint32>(S, OpPC))
4837 return false;
4838 continue;
4839}
4840case OP_CastFixedPointSint32: {
4841 if (!Cast<PT_FixedPoint, PT_Sint32>(S, OpPC))
4842 return false;
4843 continue;
4844}
4845case OP_CastFixedPointUint64: {
4846 if (!Cast<PT_FixedPoint, PT_Uint64>(S, OpPC))
4847 return false;
4848 continue;
4849}
4850case OP_CastFixedPointSint64: {
4851 if (!Cast<PT_FixedPoint, PT_Sint64>(S, OpPC))
4852 return false;
4853 continue;
4854}
4855case OP_CastFixedPointBool: {
4856 if (!Cast<PT_FixedPoint, PT_Bool>(S, OpPC))
4857 return false;
4858 continue;
4859}
4860#endif
4861#ifdef GET_DISASM
4862case OP_CastUint8Uint8:
4863 Text.Op = PrintName("CastUint8Uint8");
4864 break;
4865case OP_CastUint8Sint8:
4866 Text.Op = PrintName("CastUint8Sint8");
4867 break;
4868case OP_CastUint8Uint16:
4869 Text.Op = PrintName("CastUint8Uint16");
4870 break;
4871case OP_CastUint8Sint16:
4872 Text.Op = PrintName("CastUint8Sint16");
4873 break;
4874case OP_CastUint8Uint32:
4875 Text.Op = PrintName("CastUint8Uint32");
4876 break;
4877case OP_CastUint8Sint32:
4878 Text.Op = PrintName("CastUint8Sint32");
4879 break;
4880case OP_CastUint8Uint64:
4881 Text.Op = PrintName("CastUint8Uint64");
4882 break;
4883case OP_CastUint8Sint64:
4884 Text.Op = PrintName("CastUint8Sint64");
4885 break;
4886case OP_CastUint8Bool:
4887 Text.Op = PrintName("CastUint8Bool");
4888 break;
4889case OP_CastSint8Uint8:
4890 Text.Op = PrintName("CastSint8Uint8");
4891 break;
4892case OP_CastSint8Sint8:
4893 Text.Op = PrintName("CastSint8Sint8");
4894 break;
4895case OP_CastSint8Uint16:
4896 Text.Op = PrintName("CastSint8Uint16");
4897 break;
4898case OP_CastSint8Sint16:
4899 Text.Op = PrintName("CastSint8Sint16");
4900 break;
4901case OP_CastSint8Uint32:
4902 Text.Op = PrintName("CastSint8Uint32");
4903 break;
4904case OP_CastSint8Sint32:
4905 Text.Op = PrintName("CastSint8Sint32");
4906 break;
4907case OP_CastSint8Uint64:
4908 Text.Op = PrintName("CastSint8Uint64");
4909 break;
4910case OP_CastSint8Sint64:
4911 Text.Op = PrintName("CastSint8Sint64");
4912 break;
4913case OP_CastSint8Bool:
4914 Text.Op = PrintName("CastSint8Bool");
4915 break;
4916case OP_CastUint16Uint8:
4917 Text.Op = PrintName("CastUint16Uint8");
4918 break;
4919case OP_CastUint16Sint8:
4920 Text.Op = PrintName("CastUint16Sint8");
4921 break;
4922case OP_CastUint16Uint16:
4923 Text.Op = PrintName("CastUint16Uint16");
4924 break;
4925case OP_CastUint16Sint16:
4926 Text.Op = PrintName("CastUint16Sint16");
4927 break;
4928case OP_CastUint16Uint32:
4929 Text.Op = PrintName("CastUint16Uint32");
4930 break;
4931case OP_CastUint16Sint32:
4932 Text.Op = PrintName("CastUint16Sint32");
4933 break;
4934case OP_CastUint16Uint64:
4935 Text.Op = PrintName("CastUint16Uint64");
4936 break;
4937case OP_CastUint16Sint64:
4938 Text.Op = PrintName("CastUint16Sint64");
4939 break;
4940case OP_CastUint16Bool:
4941 Text.Op = PrintName("CastUint16Bool");
4942 break;
4943case OP_CastSint16Uint8:
4944 Text.Op = PrintName("CastSint16Uint8");
4945 break;
4946case OP_CastSint16Sint8:
4947 Text.Op = PrintName("CastSint16Sint8");
4948 break;
4949case OP_CastSint16Uint16:
4950 Text.Op = PrintName("CastSint16Uint16");
4951 break;
4952case OP_CastSint16Sint16:
4953 Text.Op = PrintName("CastSint16Sint16");
4954 break;
4955case OP_CastSint16Uint32:
4956 Text.Op = PrintName("CastSint16Uint32");
4957 break;
4958case OP_CastSint16Sint32:
4959 Text.Op = PrintName("CastSint16Sint32");
4960 break;
4961case OP_CastSint16Uint64:
4962 Text.Op = PrintName("CastSint16Uint64");
4963 break;
4964case OP_CastSint16Sint64:
4965 Text.Op = PrintName("CastSint16Sint64");
4966 break;
4967case OP_CastSint16Bool:
4968 Text.Op = PrintName("CastSint16Bool");
4969 break;
4970case OP_CastUint32Uint8:
4971 Text.Op = PrintName("CastUint32Uint8");
4972 break;
4973case OP_CastUint32Sint8:
4974 Text.Op = PrintName("CastUint32Sint8");
4975 break;
4976case OP_CastUint32Uint16:
4977 Text.Op = PrintName("CastUint32Uint16");
4978 break;
4979case OP_CastUint32Sint16:
4980 Text.Op = PrintName("CastUint32Sint16");
4981 break;
4982case OP_CastUint32Uint32:
4983 Text.Op = PrintName("CastUint32Uint32");
4984 break;
4985case OP_CastUint32Sint32:
4986 Text.Op = PrintName("CastUint32Sint32");
4987 break;
4988case OP_CastUint32Uint64:
4989 Text.Op = PrintName("CastUint32Uint64");
4990 break;
4991case OP_CastUint32Sint64:
4992 Text.Op = PrintName("CastUint32Sint64");
4993 break;
4994case OP_CastUint32Bool:
4995 Text.Op = PrintName("CastUint32Bool");
4996 break;
4997case OP_CastSint32Uint8:
4998 Text.Op = PrintName("CastSint32Uint8");
4999 break;
5000case OP_CastSint32Sint8:
5001 Text.Op = PrintName("CastSint32Sint8");
5002 break;
5003case OP_CastSint32Uint16:
5004 Text.Op = PrintName("CastSint32Uint16");
5005 break;
5006case OP_CastSint32Sint16:
5007 Text.Op = PrintName("CastSint32Sint16");
5008 break;
5009case OP_CastSint32Uint32:
5010 Text.Op = PrintName("CastSint32Uint32");
5011 break;
5012case OP_CastSint32Sint32:
5013 Text.Op = PrintName("CastSint32Sint32");
5014 break;
5015case OP_CastSint32Uint64:
5016 Text.Op = PrintName("CastSint32Uint64");
5017 break;
5018case OP_CastSint32Sint64:
5019 Text.Op = PrintName("CastSint32Sint64");
5020 break;
5021case OP_CastSint32Bool:
5022 Text.Op = PrintName("CastSint32Bool");
5023 break;
5024case OP_CastUint64Uint8:
5025 Text.Op = PrintName("CastUint64Uint8");
5026 break;
5027case OP_CastUint64Sint8:
5028 Text.Op = PrintName("CastUint64Sint8");
5029 break;
5030case OP_CastUint64Uint16:
5031 Text.Op = PrintName("CastUint64Uint16");
5032 break;
5033case OP_CastUint64Sint16:
5034 Text.Op = PrintName("CastUint64Sint16");
5035 break;
5036case OP_CastUint64Uint32:
5037 Text.Op = PrintName("CastUint64Uint32");
5038 break;
5039case OP_CastUint64Sint32:
5040 Text.Op = PrintName("CastUint64Sint32");
5041 break;
5042case OP_CastUint64Uint64:
5043 Text.Op = PrintName("CastUint64Uint64");
5044 break;
5045case OP_CastUint64Sint64:
5046 Text.Op = PrintName("CastUint64Sint64");
5047 break;
5048case OP_CastUint64Bool:
5049 Text.Op = PrintName("CastUint64Bool");
5050 break;
5051case OP_CastSint64Uint8:
5052 Text.Op = PrintName("CastSint64Uint8");
5053 break;
5054case OP_CastSint64Sint8:
5055 Text.Op = PrintName("CastSint64Sint8");
5056 break;
5057case OP_CastSint64Uint16:
5058 Text.Op = PrintName("CastSint64Uint16");
5059 break;
5060case OP_CastSint64Sint16:
5061 Text.Op = PrintName("CastSint64Sint16");
5062 break;
5063case OP_CastSint64Uint32:
5064 Text.Op = PrintName("CastSint64Uint32");
5065 break;
5066case OP_CastSint64Sint32:
5067 Text.Op = PrintName("CastSint64Sint32");
5068 break;
5069case OP_CastSint64Uint64:
5070 Text.Op = PrintName("CastSint64Uint64");
5071 break;
5072case OP_CastSint64Sint64:
5073 Text.Op = PrintName("CastSint64Sint64");
5074 break;
5075case OP_CastSint64Bool:
5076 Text.Op = PrintName("CastSint64Bool");
5077 break;
5078case OP_CastBoolUint8:
5079 Text.Op = PrintName("CastBoolUint8");
5080 break;
5081case OP_CastBoolSint8:
5082 Text.Op = PrintName("CastBoolSint8");
5083 break;
5084case OP_CastBoolUint16:
5085 Text.Op = PrintName("CastBoolUint16");
5086 break;
5087case OP_CastBoolSint16:
5088 Text.Op = PrintName("CastBoolSint16");
5089 break;
5090case OP_CastBoolUint32:
5091 Text.Op = PrintName("CastBoolUint32");
5092 break;
5093case OP_CastBoolSint32:
5094 Text.Op = PrintName("CastBoolSint32");
5095 break;
5096case OP_CastBoolUint64:
5097 Text.Op = PrintName("CastBoolUint64");
5098 break;
5099case OP_CastBoolSint64:
5100 Text.Op = PrintName("CastBoolSint64");
5101 break;
5102case OP_CastBoolBool:
5103 Text.Op = PrintName("CastBoolBool");
5104 break;
5105case OP_CastIntAPUint8:
5106 Text.Op = PrintName("CastIntAPUint8");
5107 break;
5108case OP_CastIntAPSint8:
5109 Text.Op = PrintName("CastIntAPSint8");
5110 break;
5111case OP_CastIntAPUint16:
5112 Text.Op = PrintName("CastIntAPUint16");
5113 break;
5114case OP_CastIntAPSint16:
5115 Text.Op = PrintName("CastIntAPSint16");
5116 break;
5117case OP_CastIntAPUint32:
5118 Text.Op = PrintName("CastIntAPUint32");
5119 break;
5120case OP_CastIntAPSint32:
5121 Text.Op = PrintName("CastIntAPSint32");
5122 break;
5123case OP_CastIntAPUint64:
5124 Text.Op = PrintName("CastIntAPUint64");
5125 break;
5126case OP_CastIntAPSint64:
5127 Text.Op = PrintName("CastIntAPSint64");
5128 break;
5129case OP_CastIntAPBool:
5130 Text.Op = PrintName("CastIntAPBool");
5131 break;
5132case OP_CastIntAPSUint8:
5133 Text.Op = PrintName("CastIntAPSUint8");
5134 break;
5135case OP_CastIntAPSSint8:
5136 Text.Op = PrintName("CastIntAPSSint8");
5137 break;
5138case OP_CastIntAPSUint16:
5139 Text.Op = PrintName("CastIntAPSUint16");
5140 break;
5141case OP_CastIntAPSSint16:
5142 Text.Op = PrintName("CastIntAPSSint16");
5143 break;
5144case OP_CastIntAPSUint32:
5145 Text.Op = PrintName("CastIntAPSUint32");
5146 break;
5147case OP_CastIntAPSSint32:
5148 Text.Op = PrintName("CastIntAPSSint32");
5149 break;
5150case OP_CastIntAPSUint64:
5151 Text.Op = PrintName("CastIntAPSUint64");
5152 break;
5153case OP_CastIntAPSSint64:
5154 Text.Op = PrintName("CastIntAPSSint64");
5155 break;
5156case OP_CastIntAPSBool:
5157 Text.Op = PrintName("CastIntAPSBool");
5158 break;
5159case OP_CastFixedPointUint8:
5160 Text.Op = PrintName("CastFixedPointUint8");
5161 break;
5162case OP_CastFixedPointSint8:
5163 Text.Op = PrintName("CastFixedPointSint8");
5164 break;
5165case OP_CastFixedPointUint16:
5166 Text.Op = PrintName("CastFixedPointUint16");
5167 break;
5168case OP_CastFixedPointSint16:
5169 Text.Op = PrintName("CastFixedPointSint16");
5170 break;
5171case OP_CastFixedPointUint32:
5172 Text.Op = PrintName("CastFixedPointUint32");
5173 break;
5174case OP_CastFixedPointSint32:
5175 Text.Op = PrintName("CastFixedPointSint32");
5176 break;
5177case OP_CastFixedPointUint64:
5178 Text.Op = PrintName("CastFixedPointUint64");
5179 break;
5180case OP_CastFixedPointSint64:
5181 Text.Op = PrintName("CastFixedPointSint64");
5182 break;
5183case OP_CastFixedPointBool:
5184 Text.Op = PrintName("CastFixedPointBool");
5185 break;
5186#endif
5187#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5188bool emitCastUint8Uint8(SourceInfo);
5189bool emitCastUint8Sint8(SourceInfo);
5190bool emitCastUint8Uint16(SourceInfo);
5191bool emitCastUint8Sint16(SourceInfo);
5192bool emitCastUint8Uint32(SourceInfo);
5193bool emitCastUint8Sint32(SourceInfo);
5194bool emitCastUint8Uint64(SourceInfo);
5195bool emitCastUint8Sint64(SourceInfo);
5196bool emitCastUint8Bool(SourceInfo);
5197bool emitCastSint8Uint8(SourceInfo);
5198bool emitCastSint8Sint8(SourceInfo);
5199bool emitCastSint8Uint16(SourceInfo);
5200bool emitCastSint8Sint16(SourceInfo);
5201bool emitCastSint8Uint32(SourceInfo);
5202bool emitCastSint8Sint32(SourceInfo);
5203bool emitCastSint8Uint64(SourceInfo);
5204bool emitCastSint8Sint64(SourceInfo);
5205bool emitCastSint8Bool(SourceInfo);
5206bool emitCastUint16Uint8(SourceInfo);
5207bool emitCastUint16Sint8(SourceInfo);
5208bool emitCastUint16Uint16(SourceInfo);
5209bool emitCastUint16Sint16(SourceInfo);
5210bool emitCastUint16Uint32(SourceInfo);
5211bool emitCastUint16Sint32(SourceInfo);
5212bool emitCastUint16Uint64(SourceInfo);
5213bool emitCastUint16Sint64(SourceInfo);
5214bool emitCastUint16Bool(SourceInfo);
5215bool emitCastSint16Uint8(SourceInfo);
5216bool emitCastSint16Sint8(SourceInfo);
5217bool emitCastSint16Uint16(SourceInfo);
5218bool emitCastSint16Sint16(SourceInfo);
5219bool emitCastSint16Uint32(SourceInfo);
5220bool emitCastSint16Sint32(SourceInfo);
5221bool emitCastSint16Uint64(SourceInfo);
5222bool emitCastSint16Sint64(SourceInfo);
5223bool emitCastSint16Bool(SourceInfo);
5224bool emitCastUint32Uint8(SourceInfo);
5225bool emitCastUint32Sint8(SourceInfo);
5226bool emitCastUint32Uint16(SourceInfo);
5227bool emitCastUint32Sint16(SourceInfo);
5228bool emitCastUint32Uint32(SourceInfo);
5229bool emitCastUint32Sint32(SourceInfo);
5230bool emitCastUint32Uint64(SourceInfo);
5231bool emitCastUint32Sint64(SourceInfo);
5232bool emitCastUint32Bool(SourceInfo);
5233bool emitCastSint32Uint8(SourceInfo);
5234bool emitCastSint32Sint8(SourceInfo);
5235bool emitCastSint32Uint16(SourceInfo);
5236bool emitCastSint32Sint16(SourceInfo);
5237bool emitCastSint32Uint32(SourceInfo);
5238bool emitCastSint32Sint32(SourceInfo);
5239bool emitCastSint32Uint64(SourceInfo);
5240bool emitCastSint32Sint64(SourceInfo);
5241bool emitCastSint32Bool(SourceInfo);
5242bool emitCastUint64Uint8(SourceInfo);
5243bool emitCastUint64Sint8(SourceInfo);
5244bool emitCastUint64Uint16(SourceInfo);
5245bool emitCastUint64Sint16(SourceInfo);
5246bool emitCastUint64Uint32(SourceInfo);
5247bool emitCastUint64Sint32(SourceInfo);
5248bool emitCastUint64Uint64(SourceInfo);
5249bool emitCastUint64Sint64(SourceInfo);
5250bool emitCastUint64Bool(SourceInfo);
5251bool emitCastSint64Uint8(SourceInfo);
5252bool emitCastSint64Sint8(SourceInfo);
5253bool emitCastSint64Uint16(SourceInfo);
5254bool emitCastSint64Sint16(SourceInfo);
5255bool emitCastSint64Uint32(SourceInfo);
5256bool emitCastSint64Sint32(SourceInfo);
5257bool emitCastSint64Uint64(SourceInfo);
5258bool emitCastSint64Sint64(SourceInfo);
5259bool emitCastSint64Bool(SourceInfo);
5260bool emitCastBoolUint8(SourceInfo);
5261bool emitCastBoolSint8(SourceInfo);
5262bool emitCastBoolUint16(SourceInfo);
5263bool emitCastBoolSint16(SourceInfo);
5264bool emitCastBoolUint32(SourceInfo);
5265bool emitCastBoolSint32(SourceInfo);
5266bool emitCastBoolUint64(SourceInfo);
5267bool emitCastBoolSint64(SourceInfo);
5268bool emitCastBoolBool(SourceInfo);
5269bool emitCastIntAPUint8(SourceInfo);
5270bool emitCastIntAPSint8(SourceInfo);
5271bool emitCastIntAPUint16(SourceInfo);
5272bool emitCastIntAPSint16(SourceInfo);
5273bool emitCastIntAPUint32(SourceInfo);
5274bool emitCastIntAPSint32(SourceInfo);
5275bool emitCastIntAPUint64(SourceInfo);
5276bool emitCastIntAPSint64(SourceInfo);
5277bool emitCastIntAPBool(SourceInfo);
5278bool emitCastIntAPSUint8(SourceInfo);
5279bool emitCastIntAPSSint8(SourceInfo);
5280bool emitCastIntAPSUint16(SourceInfo);
5281bool emitCastIntAPSSint16(SourceInfo);
5282bool emitCastIntAPSUint32(SourceInfo);
5283bool emitCastIntAPSSint32(SourceInfo);
5284bool emitCastIntAPSUint64(SourceInfo);
5285bool emitCastIntAPSSint64(SourceInfo);
5286bool emitCastIntAPSBool(SourceInfo);
5287bool emitCastFixedPointUint8(SourceInfo);
5288bool emitCastFixedPointSint8(SourceInfo);
5289bool emitCastFixedPointUint16(SourceInfo);
5290bool emitCastFixedPointSint16(SourceInfo);
5291bool emitCastFixedPointUint32(SourceInfo);
5292bool emitCastFixedPointSint32(SourceInfo);
5293bool emitCastFixedPointUint64(SourceInfo);
5294bool emitCastFixedPointSint64(SourceInfo);
5295bool emitCastFixedPointBool(SourceInfo);
5296#endif
5297#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5298[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
5299#endif
5300#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5301bool
5302#if defined(GET_EVAL_IMPL)
5303EvalEmitter
5304#else
5305ByteCodeEmitter
5306#endif
5307::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
5308 switch (T0) {
5309 case PT_Uint8:
5310 switch (T1) {
5311 case PT_Uint8:
5312 return emitCastUint8Uint8(I);
5313 case PT_Sint8:
5314 return emitCastUint8Sint8(I);
5315 case PT_Uint16:
5316 return emitCastUint8Uint16(I);
5317 case PT_Sint16:
5318 return emitCastUint8Sint16(I);
5319 case PT_Uint32:
5320 return emitCastUint8Uint32(I);
5321 case PT_Sint32:
5322 return emitCastUint8Sint32(I);
5323 case PT_Uint64:
5324 return emitCastUint8Uint64(I);
5325 case PT_Sint64:
5326 return emitCastUint8Sint64(I);
5327 case PT_Bool:
5328 return emitCastUint8Bool(I);
5329 default: llvm_unreachable("invalid type: emitCast");
5330 }
5331 llvm_unreachable("invalid enum value");
5332 case PT_Sint8:
5333 switch (T1) {
5334 case PT_Uint8:
5335 return emitCastSint8Uint8(I);
5336 case PT_Sint8:
5337 return emitCastSint8Sint8(I);
5338 case PT_Uint16:
5339 return emitCastSint8Uint16(I);
5340 case PT_Sint16:
5341 return emitCastSint8Sint16(I);
5342 case PT_Uint32:
5343 return emitCastSint8Uint32(I);
5344 case PT_Sint32:
5345 return emitCastSint8Sint32(I);
5346 case PT_Uint64:
5347 return emitCastSint8Uint64(I);
5348 case PT_Sint64:
5349 return emitCastSint8Sint64(I);
5350 case PT_Bool:
5351 return emitCastSint8Bool(I);
5352 default: llvm_unreachable("invalid type: emitCast");
5353 }
5354 llvm_unreachable("invalid enum value");
5355 case PT_Uint16:
5356 switch (T1) {
5357 case PT_Uint8:
5358 return emitCastUint16Uint8(I);
5359 case PT_Sint8:
5360 return emitCastUint16Sint8(I);
5361 case PT_Uint16:
5362 return emitCastUint16Uint16(I);
5363 case PT_Sint16:
5364 return emitCastUint16Sint16(I);
5365 case PT_Uint32:
5366 return emitCastUint16Uint32(I);
5367 case PT_Sint32:
5368 return emitCastUint16Sint32(I);
5369 case PT_Uint64:
5370 return emitCastUint16Uint64(I);
5371 case PT_Sint64:
5372 return emitCastUint16Sint64(I);
5373 case PT_Bool:
5374 return emitCastUint16Bool(I);
5375 default: llvm_unreachable("invalid type: emitCast");
5376 }
5377 llvm_unreachable("invalid enum value");
5378 case PT_Sint16:
5379 switch (T1) {
5380 case PT_Uint8:
5381 return emitCastSint16Uint8(I);
5382 case PT_Sint8:
5383 return emitCastSint16Sint8(I);
5384 case PT_Uint16:
5385 return emitCastSint16Uint16(I);
5386 case PT_Sint16:
5387 return emitCastSint16Sint16(I);
5388 case PT_Uint32:
5389 return emitCastSint16Uint32(I);
5390 case PT_Sint32:
5391 return emitCastSint16Sint32(I);
5392 case PT_Uint64:
5393 return emitCastSint16Uint64(I);
5394 case PT_Sint64:
5395 return emitCastSint16Sint64(I);
5396 case PT_Bool:
5397 return emitCastSint16Bool(I);
5398 default: llvm_unreachable("invalid type: emitCast");
5399 }
5400 llvm_unreachable("invalid enum value");
5401 case PT_Uint32:
5402 switch (T1) {
5403 case PT_Uint8:
5404 return emitCastUint32Uint8(I);
5405 case PT_Sint8:
5406 return emitCastUint32Sint8(I);
5407 case PT_Uint16:
5408 return emitCastUint32Uint16(I);
5409 case PT_Sint16:
5410 return emitCastUint32Sint16(I);
5411 case PT_Uint32:
5412 return emitCastUint32Uint32(I);
5413 case PT_Sint32:
5414 return emitCastUint32Sint32(I);
5415 case PT_Uint64:
5416 return emitCastUint32Uint64(I);
5417 case PT_Sint64:
5418 return emitCastUint32Sint64(I);
5419 case PT_Bool:
5420 return emitCastUint32Bool(I);
5421 default: llvm_unreachable("invalid type: emitCast");
5422 }
5423 llvm_unreachable("invalid enum value");
5424 case PT_Sint32:
5425 switch (T1) {
5426 case PT_Uint8:
5427 return emitCastSint32Uint8(I);
5428 case PT_Sint8:
5429 return emitCastSint32Sint8(I);
5430 case PT_Uint16:
5431 return emitCastSint32Uint16(I);
5432 case PT_Sint16:
5433 return emitCastSint32Sint16(I);
5434 case PT_Uint32:
5435 return emitCastSint32Uint32(I);
5436 case PT_Sint32:
5437 return emitCastSint32Sint32(I);
5438 case PT_Uint64:
5439 return emitCastSint32Uint64(I);
5440 case PT_Sint64:
5441 return emitCastSint32Sint64(I);
5442 case PT_Bool:
5443 return emitCastSint32Bool(I);
5444 default: llvm_unreachable("invalid type: emitCast");
5445 }
5446 llvm_unreachable("invalid enum value");
5447 case PT_Uint64:
5448 switch (T1) {
5449 case PT_Uint8:
5450 return emitCastUint64Uint8(I);
5451 case PT_Sint8:
5452 return emitCastUint64Sint8(I);
5453 case PT_Uint16:
5454 return emitCastUint64Uint16(I);
5455 case PT_Sint16:
5456 return emitCastUint64Sint16(I);
5457 case PT_Uint32:
5458 return emitCastUint64Uint32(I);
5459 case PT_Sint32:
5460 return emitCastUint64Sint32(I);
5461 case PT_Uint64:
5462 return emitCastUint64Uint64(I);
5463 case PT_Sint64:
5464 return emitCastUint64Sint64(I);
5465 case PT_Bool:
5466 return emitCastUint64Bool(I);
5467 default: llvm_unreachable("invalid type: emitCast");
5468 }
5469 llvm_unreachable("invalid enum value");
5470 case PT_Sint64:
5471 switch (T1) {
5472 case PT_Uint8:
5473 return emitCastSint64Uint8(I);
5474 case PT_Sint8:
5475 return emitCastSint64Sint8(I);
5476 case PT_Uint16:
5477 return emitCastSint64Uint16(I);
5478 case PT_Sint16:
5479 return emitCastSint64Sint16(I);
5480 case PT_Uint32:
5481 return emitCastSint64Uint32(I);
5482 case PT_Sint32:
5483 return emitCastSint64Sint32(I);
5484 case PT_Uint64:
5485 return emitCastSint64Uint64(I);
5486 case PT_Sint64:
5487 return emitCastSint64Sint64(I);
5488 case PT_Bool:
5489 return emitCastSint64Bool(I);
5490 default: llvm_unreachable("invalid type: emitCast");
5491 }
5492 llvm_unreachable("invalid enum value");
5493 case PT_Bool:
5494 switch (T1) {
5495 case PT_Uint8:
5496 return emitCastBoolUint8(I);
5497 case PT_Sint8:
5498 return emitCastBoolSint8(I);
5499 case PT_Uint16:
5500 return emitCastBoolUint16(I);
5501 case PT_Sint16:
5502 return emitCastBoolSint16(I);
5503 case PT_Uint32:
5504 return emitCastBoolUint32(I);
5505 case PT_Sint32:
5506 return emitCastBoolSint32(I);
5507 case PT_Uint64:
5508 return emitCastBoolUint64(I);
5509 case PT_Sint64:
5510 return emitCastBoolSint64(I);
5511 case PT_Bool:
5512 return emitCastBoolBool(I);
5513 default: llvm_unreachable("invalid type: emitCast");
5514 }
5515 llvm_unreachable("invalid enum value");
5516 case PT_IntAP:
5517 switch (T1) {
5518 case PT_Uint8:
5519 return emitCastIntAPUint8(I);
5520 case PT_Sint8:
5521 return emitCastIntAPSint8(I);
5522 case PT_Uint16:
5523 return emitCastIntAPUint16(I);
5524 case PT_Sint16:
5525 return emitCastIntAPSint16(I);
5526 case PT_Uint32:
5527 return emitCastIntAPUint32(I);
5528 case PT_Sint32:
5529 return emitCastIntAPSint32(I);
5530 case PT_Uint64:
5531 return emitCastIntAPUint64(I);
5532 case PT_Sint64:
5533 return emitCastIntAPSint64(I);
5534 case PT_Bool:
5535 return emitCastIntAPBool(I);
5536 default: llvm_unreachable("invalid type: emitCast");
5537 }
5538 llvm_unreachable("invalid enum value");
5539 case PT_IntAPS:
5540 switch (T1) {
5541 case PT_Uint8:
5542 return emitCastIntAPSUint8(I);
5543 case PT_Sint8:
5544 return emitCastIntAPSSint8(I);
5545 case PT_Uint16:
5546 return emitCastIntAPSUint16(I);
5547 case PT_Sint16:
5548 return emitCastIntAPSSint16(I);
5549 case PT_Uint32:
5550 return emitCastIntAPSUint32(I);
5551 case PT_Sint32:
5552 return emitCastIntAPSSint32(I);
5553 case PT_Uint64:
5554 return emitCastIntAPSUint64(I);
5555 case PT_Sint64:
5556 return emitCastIntAPSSint64(I);
5557 case PT_Bool:
5558 return emitCastIntAPSBool(I);
5559 default: llvm_unreachable("invalid type: emitCast");
5560 }
5561 llvm_unreachable("invalid enum value");
5562 case PT_FixedPoint:
5563 switch (T1) {
5564 case PT_Uint8:
5565 return emitCastFixedPointUint8(I);
5566 case PT_Sint8:
5567 return emitCastFixedPointSint8(I);
5568 case PT_Uint16:
5569 return emitCastFixedPointUint16(I);
5570 case PT_Sint16:
5571 return emitCastFixedPointSint16(I);
5572 case PT_Uint32:
5573 return emitCastFixedPointUint32(I);
5574 case PT_Sint32:
5575 return emitCastFixedPointSint32(I);
5576 case PT_Uint64:
5577 return emitCastFixedPointUint64(I);
5578 case PT_Sint64:
5579 return emitCastFixedPointSint64(I);
5580 case PT_Bool:
5581 return emitCastFixedPointBool(I);
5582 default: llvm_unreachable("invalid type: emitCast");
5583 }
5584 llvm_unreachable("invalid enum value");
5585 default: llvm_unreachable("invalid type: emitCast");
5586 }
5587 llvm_unreachable("invalid enum value");
5588}
5589#endif
5590#ifdef GET_LINK_IMPL
5591bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
5592 return emitOp<>(OP_CastUint8Uint8, L);
5593}
5594bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
5595 return emitOp<>(OP_CastUint8Sint8, L);
5596}
5597bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
5598 return emitOp<>(OP_CastUint8Uint16, L);
5599}
5600bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
5601 return emitOp<>(OP_CastUint8Sint16, L);
5602}
5603bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
5604 return emitOp<>(OP_CastUint8Uint32, L);
5605}
5606bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
5607 return emitOp<>(OP_CastUint8Sint32, L);
5608}
5609bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
5610 return emitOp<>(OP_CastUint8Uint64, L);
5611}
5612bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
5613 return emitOp<>(OP_CastUint8Sint64, L);
5614}
5615bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
5616 return emitOp<>(OP_CastUint8Bool, L);
5617}
5618bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
5619 return emitOp<>(OP_CastSint8Uint8, L);
5620}
5621bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
5622 return emitOp<>(OP_CastSint8Sint8, L);
5623}
5624bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
5625 return emitOp<>(OP_CastSint8Uint16, L);
5626}
5627bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
5628 return emitOp<>(OP_CastSint8Sint16, L);
5629}
5630bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
5631 return emitOp<>(OP_CastSint8Uint32, L);
5632}
5633bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
5634 return emitOp<>(OP_CastSint8Sint32, L);
5635}
5636bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
5637 return emitOp<>(OP_CastSint8Uint64, L);
5638}
5639bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
5640 return emitOp<>(OP_CastSint8Sint64, L);
5641}
5642bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
5643 return emitOp<>(OP_CastSint8Bool, L);
5644}
5645bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
5646 return emitOp<>(OP_CastUint16Uint8, L);
5647}
5648bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
5649 return emitOp<>(OP_CastUint16Sint8, L);
5650}
5651bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
5652 return emitOp<>(OP_CastUint16Uint16, L);
5653}
5654bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
5655 return emitOp<>(OP_CastUint16Sint16, L);
5656}
5657bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
5658 return emitOp<>(OP_CastUint16Uint32, L);
5659}
5660bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
5661 return emitOp<>(OP_CastUint16Sint32, L);
5662}
5663bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
5664 return emitOp<>(OP_CastUint16Uint64, L);
5665}
5666bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
5667 return emitOp<>(OP_CastUint16Sint64, L);
5668}
5669bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
5670 return emitOp<>(OP_CastUint16Bool, L);
5671}
5672bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
5673 return emitOp<>(OP_CastSint16Uint8, L);
5674}
5675bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
5676 return emitOp<>(OP_CastSint16Sint8, L);
5677}
5678bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
5679 return emitOp<>(OP_CastSint16Uint16, L);
5680}
5681bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
5682 return emitOp<>(OP_CastSint16Sint16, L);
5683}
5684bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
5685 return emitOp<>(OP_CastSint16Uint32, L);
5686}
5687bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
5688 return emitOp<>(OP_CastSint16Sint32, L);
5689}
5690bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
5691 return emitOp<>(OP_CastSint16Uint64, L);
5692}
5693bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
5694 return emitOp<>(OP_CastSint16Sint64, L);
5695}
5696bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
5697 return emitOp<>(OP_CastSint16Bool, L);
5698}
5699bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
5700 return emitOp<>(OP_CastUint32Uint8, L);
5701}
5702bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
5703 return emitOp<>(OP_CastUint32Sint8, L);
5704}
5705bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
5706 return emitOp<>(OP_CastUint32Uint16, L);
5707}
5708bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
5709 return emitOp<>(OP_CastUint32Sint16, L);
5710}
5711bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
5712 return emitOp<>(OP_CastUint32Uint32, L);
5713}
5714bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
5715 return emitOp<>(OP_CastUint32Sint32, L);
5716}
5717bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
5718 return emitOp<>(OP_CastUint32Uint64, L);
5719}
5720bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
5721 return emitOp<>(OP_CastUint32Sint64, L);
5722}
5723bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
5724 return emitOp<>(OP_CastUint32Bool, L);
5725}
5726bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
5727 return emitOp<>(OP_CastSint32Uint8, L);
5728}
5729bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
5730 return emitOp<>(OP_CastSint32Sint8, L);
5731}
5732bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
5733 return emitOp<>(OP_CastSint32Uint16, L);
5734}
5735bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
5736 return emitOp<>(OP_CastSint32Sint16, L);
5737}
5738bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
5739 return emitOp<>(OP_CastSint32Uint32, L);
5740}
5741bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
5742 return emitOp<>(OP_CastSint32Sint32, L);
5743}
5744bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
5745 return emitOp<>(OP_CastSint32Uint64, L);
5746}
5747bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
5748 return emitOp<>(OP_CastSint32Sint64, L);
5749}
5750bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
5751 return emitOp<>(OP_CastSint32Bool, L);
5752}
5753bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
5754 return emitOp<>(OP_CastUint64Uint8, L);
5755}
5756bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
5757 return emitOp<>(OP_CastUint64Sint8, L);
5758}
5759bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
5760 return emitOp<>(OP_CastUint64Uint16, L);
5761}
5762bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
5763 return emitOp<>(OP_CastUint64Sint16, L);
5764}
5765bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
5766 return emitOp<>(OP_CastUint64Uint32, L);
5767}
5768bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
5769 return emitOp<>(OP_CastUint64Sint32, L);
5770}
5771bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
5772 return emitOp<>(OP_CastUint64Uint64, L);
5773}
5774bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
5775 return emitOp<>(OP_CastUint64Sint64, L);
5776}
5777bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
5778 return emitOp<>(OP_CastUint64Bool, L);
5779}
5780bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
5781 return emitOp<>(OP_CastSint64Uint8, L);
5782}
5783bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
5784 return emitOp<>(OP_CastSint64Sint8, L);
5785}
5786bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
5787 return emitOp<>(OP_CastSint64Uint16, L);
5788}
5789bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
5790 return emitOp<>(OP_CastSint64Sint16, L);
5791}
5792bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
5793 return emitOp<>(OP_CastSint64Uint32, L);
5794}
5795bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
5796 return emitOp<>(OP_CastSint64Sint32, L);
5797}
5798bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
5799 return emitOp<>(OP_CastSint64Uint64, L);
5800}
5801bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
5802 return emitOp<>(OP_CastSint64Sint64, L);
5803}
5804bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
5805 return emitOp<>(OP_CastSint64Bool, L);
5806}
5807bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
5808 return emitOp<>(OP_CastBoolUint8, L);
5809}
5810bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
5811 return emitOp<>(OP_CastBoolSint8, L);
5812}
5813bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
5814 return emitOp<>(OP_CastBoolUint16, L);
5815}
5816bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
5817 return emitOp<>(OP_CastBoolSint16, L);
5818}
5819bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
5820 return emitOp<>(OP_CastBoolUint32, L);
5821}
5822bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
5823 return emitOp<>(OP_CastBoolSint32, L);
5824}
5825bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
5826 return emitOp<>(OP_CastBoolUint64, L);
5827}
5828bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
5829 return emitOp<>(OP_CastBoolSint64, L);
5830}
5831bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
5832 return emitOp<>(OP_CastBoolBool, L);
5833}
5834bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
5835 return emitOp<>(OP_CastIntAPUint8, L);
5836}
5837bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
5838 return emitOp<>(OP_CastIntAPSint8, L);
5839}
5840bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
5841 return emitOp<>(OP_CastIntAPUint16, L);
5842}
5843bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
5844 return emitOp<>(OP_CastIntAPSint16, L);
5845}
5846bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
5847 return emitOp<>(OP_CastIntAPUint32, L);
5848}
5849bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
5850 return emitOp<>(OP_CastIntAPSint32, L);
5851}
5852bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
5853 return emitOp<>(OP_CastIntAPUint64, L);
5854}
5855bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
5856 return emitOp<>(OP_CastIntAPSint64, L);
5857}
5858bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
5859 return emitOp<>(OP_CastIntAPBool, L);
5860}
5861bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
5862 return emitOp<>(OP_CastIntAPSUint8, L);
5863}
5864bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
5865 return emitOp<>(OP_CastIntAPSSint8, L);
5866}
5867bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
5868 return emitOp<>(OP_CastIntAPSUint16, L);
5869}
5870bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
5871 return emitOp<>(OP_CastIntAPSSint16, L);
5872}
5873bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
5874 return emitOp<>(OP_CastIntAPSUint32, L);
5875}
5876bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
5877 return emitOp<>(OP_CastIntAPSSint32, L);
5878}
5879bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
5880 return emitOp<>(OP_CastIntAPSUint64, L);
5881}
5882bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
5883 return emitOp<>(OP_CastIntAPSSint64, L);
5884}
5885bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
5886 return emitOp<>(OP_CastIntAPSBool, L);
5887}
5888bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
5889 return emitOp<>(OP_CastFixedPointUint8, L);
5890}
5891bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
5892 return emitOp<>(OP_CastFixedPointSint8, L);
5893}
5894bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
5895 return emitOp<>(OP_CastFixedPointUint16, L);
5896}
5897bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
5898 return emitOp<>(OP_CastFixedPointSint16, L);
5899}
5900bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
5901 return emitOp<>(OP_CastFixedPointUint32, L);
5902}
5903bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
5904 return emitOp<>(OP_CastFixedPointSint32, L);
5905}
5906bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
5907 return emitOp<>(OP_CastFixedPointUint64, L);
5908}
5909bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
5910 return emitOp<>(OP_CastFixedPointSint64, L);
5911}
5912bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
5913 return emitOp<>(OP_CastFixedPointBool, L);
5914}
5915#endif
5916#ifdef GET_EVAL_IMPL
5917bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
5918 if (!isActive()) return true;
5919 CurrentSource = L;
5920 return Cast<PT_Uint8, PT_Uint8>(S, OpPC);
5921}
5922bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
5923 if (!isActive()) return true;
5924 CurrentSource = L;
5925 return Cast<PT_Uint8, PT_Sint8>(S, OpPC);
5926}
5927bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
5928 if (!isActive()) return true;
5929 CurrentSource = L;
5930 return Cast<PT_Uint8, PT_Uint16>(S, OpPC);
5931}
5932bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
5933 if (!isActive()) return true;
5934 CurrentSource = L;
5935 return Cast<PT_Uint8, PT_Sint16>(S, OpPC);
5936}
5937bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
5938 if (!isActive()) return true;
5939 CurrentSource = L;
5940 return Cast<PT_Uint8, PT_Uint32>(S, OpPC);
5941}
5942bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
5943 if (!isActive()) return true;
5944 CurrentSource = L;
5945 return Cast<PT_Uint8, PT_Sint32>(S, OpPC);
5946}
5947bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
5948 if (!isActive()) return true;
5949 CurrentSource = L;
5950 return Cast<PT_Uint8, PT_Uint64>(S, OpPC);
5951}
5952bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
5953 if (!isActive()) return true;
5954 CurrentSource = L;
5955 return Cast<PT_Uint8, PT_Sint64>(S, OpPC);
5956}
5957bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
5958 if (!isActive()) return true;
5959 CurrentSource = L;
5960 return Cast<PT_Uint8, PT_Bool>(S, OpPC);
5961}
5962bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
5963 if (!isActive()) return true;
5964 CurrentSource = L;
5965 return Cast<PT_Sint8, PT_Uint8>(S, OpPC);
5966}
5967bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
5968 if (!isActive()) return true;
5969 CurrentSource = L;
5970 return Cast<PT_Sint8, PT_Sint8>(S, OpPC);
5971}
5972bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
5973 if (!isActive()) return true;
5974 CurrentSource = L;
5975 return Cast<PT_Sint8, PT_Uint16>(S, OpPC);
5976}
5977bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
5978 if (!isActive()) return true;
5979 CurrentSource = L;
5980 return Cast<PT_Sint8, PT_Sint16>(S, OpPC);
5981}
5982bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
5983 if (!isActive()) return true;
5984 CurrentSource = L;
5985 return Cast<PT_Sint8, PT_Uint32>(S, OpPC);
5986}
5987bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
5988 if (!isActive()) return true;
5989 CurrentSource = L;
5990 return Cast<PT_Sint8, PT_Sint32>(S, OpPC);
5991}
5992bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
5993 if (!isActive()) return true;
5994 CurrentSource = L;
5995 return Cast<PT_Sint8, PT_Uint64>(S, OpPC);
5996}
5997bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
5998 if (!isActive()) return true;
5999 CurrentSource = L;
6000 return Cast<PT_Sint8, PT_Sint64>(S, OpPC);
6001}
6002bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
6003 if (!isActive()) return true;
6004 CurrentSource = L;
6005 return Cast<PT_Sint8, PT_Bool>(S, OpPC);
6006}
6007bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
6008 if (!isActive()) return true;
6009 CurrentSource = L;
6010 return Cast<PT_Uint16, PT_Uint8>(S, OpPC);
6011}
6012bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
6013 if (!isActive()) return true;
6014 CurrentSource = L;
6015 return Cast<PT_Uint16, PT_Sint8>(S, OpPC);
6016}
6017bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
6018 if (!isActive()) return true;
6019 CurrentSource = L;
6020 return Cast<PT_Uint16, PT_Uint16>(S, OpPC);
6021}
6022bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
6023 if (!isActive()) return true;
6024 CurrentSource = L;
6025 return Cast<PT_Uint16, PT_Sint16>(S, OpPC);
6026}
6027bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
6028 if (!isActive()) return true;
6029 CurrentSource = L;
6030 return Cast<PT_Uint16, PT_Uint32>(S, OpPC);
6031}
6032bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
6033 if (!isActive()) return true;
6034 CurrentSource = L;
6035 return Cast<PT_Uint16, PT_Sint32>(S, OpPC);
6036}
6037bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
6038 if (!isActive()) return true;
6039 CurrentSource = L;
6040 return Cast<PT_Uint16, PT_Uint64>(S, OpPC);
6041}
6042bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
6043 if (!isActive()) return true;
6044 CurrentSource = L;
6045 return Cast<PT_Uint16, PT_Sint64>(S, OpPC);
6046}
6047bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
6048 if (!isActive()) return true;
6049 CurrentSource = L;
6050 return Cast<PT_Uint16, PT_Bool>(S, OpPC);
6051}
6052bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
6053 if (!isActive()) return true;
6054 CurrentSource = L;
6055 return Cast<PT_Sint16, PT_Uint8>(S, OpPC);
6056}
6057bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
6058 if (!isActive()) return true;
6059 CurrentSource = L;
6060 return Cast<PT_Sint16, PT_Sint8>(S, OpPC);
6061}
6062bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
6063 if (!isActive()) return true;
6064 CurrentSource = L;
6065 return Cast<PT_Sint16, PT_Uint16>(S, OpPC);
6066}
6067bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
6068 if (!isActive()) return true;
6069 CurrentSource = L;
6070 return Cast<PT_Sint16, PT_Sint16>(S, OpPC);
6071}
6072bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
6073 if (!isActive()) return true;
6074 CurrentSource = L;
6075 return Cast<PT_Sint16, PT_Uint32>(S, OpPC);
6076}
6077bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
6078 if (!isActive()) return true;
6079 CurrentSource = L;
6080 return Cast<PT_Sint16, PT_Sint32>(S, OpPC);
6081}
6082bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
6083 if (!isActive()) return true;
6084 CurrentSource = L;
6085 return Cast<PT_Sint16, PT_Uint64>(S, OpPC);
6086}
6087bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
6088 if (!isActive()) return true;
6089 CurrentSource = L;
6090 return Cast<PT_Sint16, PT_Sint64>(S, OpPC);
6091}
6092bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
6093 if (!isActive()) return true;
6094 CurrentSource = L;
6095 return Cast<PT_Sint16, PT_Bool>(S, OpPC);
6096}
6097bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
6098 if (!isActive()) return true;
6099 CurrentSource = L;
6100 return Cast<PT_Uint32, PT_Uint8>(S, OpPC);
6101}
6102bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
6103 if (!isActive()) return true;
6104 CurrentSource = L;
6105 return Cast<PT_Uint32, PT_Sint8>(S, OpPC);
6106}
6107bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
6108 if (!isActive()) return true;
6109 CurrentSource = L;
6110 return Cast<PT_Uint32, PT_Uint16>(S, OpPC);
6111}
6112bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
6113 if (!isActive()) return true;
6114 CurrentSource = L;
6115 return Cast<PT_Uint32, PT_Sint16>(S, OpPC);
6116}
6117bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
6118 if (!isActive()) return true;
6119 CurrentSource = L;
6120 return Cast<PT_Uint32, PT_Uint32>(S, OpPC);
6121}
6122bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
6123 if (!isActive()) return true;
6124 CurrentSource = L;
6125 return Cast<PT_Uint32, PT_Sint32>(S, OpPC);
6126}
6127bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
6128 if (!isActive()) return true;
6129 CurrentSource = L;
6130 return Cast<PT_Uint32, PT_Uint64>(S, OpPC);
6131}
6132bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
6133 if (!isActive()) return true;
6134 CurrentSource = L;
6135 return Cast<PT_Uint32, PT_Sint64>(S, OpPC);
6136}
6137bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
6138 if (!isActive()) return true;
6139 CurrentSource = L;
6140 return Cast<PT_Uint32, PT_Bool>(S, OpPC);
6141}
6142bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
6143 if (!isActive()) return true;
6144 CurrentSource = L;
6145 return Cast<PT_Sint32, PT_Uint8>(S, OpPC);
6146}
6147bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
6148 if (!isActive()) return true;
6149 CurrentSource = L;
6150 return Cast<PT_Sint32, PT_Sint8>(S, OpPC);
6151}
6152bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
6153 if (!isActive()) return true;
6154 CurrentSource = L;
6155 return Cast<PT_Sint32, PT_Uint16>(S, OpPC);
6156}
6157bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
6158 if (!isActive()) return true;
6159 CurrentSource = L;
6160 return Cast<PT_Sint32, PT_Sint16>(S, OpPC);
6161}
6162bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
6163 if (!isActive()) return true;
6164 CurrentSource = L;
6165 return Cast<PT_Sint32, PT_Uint32>(S, OpPC);
6166}
6167bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
6168 if (!isActive()) return true;
6169 CurrentSource = L;
6170 return Cast<PT_Sint32, PT_Sint32>(S, OpPC);
6171}
6172bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
6173 if (!isActive()) return true;
6174 CurrentSource = L;
6175 return Cast<PT_Sint32, PT_Uint64>(S, OpPC);
6176}
6177bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
6178 if (!isActive()) return true;
6179 CurrentSource = L;
6180 return Cast<PT_Sint32, PT_Sint64>(S, OpPC);
6181}
6182bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
6183 if (!isActive()) return true;
6184 CurrentSource = L;
6185 return Cast<PT_Sint32, PT_Bool>(S, OpPC);
6186}
6187bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
6188 if (!isActive()) return true;
6189 CurrentSource = L;
6190 return Cast<PT_Uint64, PT_Uint8>(S, OpPC);
6191}
6192bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
6193 if (!isActive()) return true;
6194 CurrentSource = L;
6195 return Cast<PT_Uint64, PT_Sint8>(S, OpPC);
6196}
6197bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
6198 if (!isActive()) return true;
6199 CurrentSource = L;
6200 return Cast<PT_Uint64, PT_Uint16>(S, OpPC);
6201}
6202bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
6203 if (!isActive()) return true;
6204 CurrentSource = L;
6205 return Cast<PT_Uint64, PT_Sint16>(S, OpPC);
6206}
6207bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
6208 if (!isActive()) return true;
6209 CurrentSource = L;
6210 return Cast<PT_Uint64, PT_Uint32>(S, OpPC);
6211}
6212bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
6213 if (!isActive()) return true;
6214 CurrentSource = L;
6215 return Cast<PT_Uint64, PT_Sint32>(S, OpPC);
6216}
6217bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
6218 if (!isActive()) return true;
6219 CurrentSource = L;
6220 return Cast<PT_Uint64, PT_Uint64>(S, OpPC);
6221}
6222bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
6223 if (!isActive()) return true;
6224 CurrentSource = L;
6225 return Cast<PT_Uint64, PT_Sint64>(S, OpPC);
6226}
6227bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
6228 if (!isActive()) return true;
6229 CurrentSource = L;
6230 return Cast<PT_Uint64, PT_Bool>(S, OpPC);
6231}
6232bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
6233 if (!isActive()) return true;
6234 CurrentSource = L;
6235 return Cast<PT_Sint64, PT_Uint8>(S, OpPC);
6236}
6237bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
6238 if (!isActive()) return true;
6239 CurrentSource = L;
6240 return Cast<PT_Sint64, PT_Sint8>(S, OpPC);
6241}
6242bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
6243 if (!isActive()) return true;
6244 CurrentSource = L;
6245 return Cast<PT_Sint64, PT_Uint16>(S, OpPC);
6246}
6247bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
6248 if (!isActive()) return true;
6249 CurrentSource = L;
6250 return Cast<PT_Sint64, PT_Sint16>(S, OpPC);
6251}
6252bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
6253 if (!isActive()) return true;
6254 CurrentSource = L;
6255 return Cast<PT_Sint64, PT_Uint32>(S, OpPC);
6256}
6257bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
6258 if (!isActive()) return true;
6259 CurrentSource = L;
6260 return Cast<PT_Sint64, PT_Sint32>(S, OpPC);
6261}
6262bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
6263 if (!isActive()) return true;
6264 CurrentSource = L;
6265 return Cast<PT_Sint64, PT_Uint64>(S, OpPC);
6266}
6267bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
6268 if (!isActive()) return true;
6269 CurrentSource = L;
6270 return Cast<PT_Sint64, PT_Sint64>(S, OpPC);
6271}
6272bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
6273 if (!isActive()) return true;
6274 CurrentSource = L;
6275 return Cast<PT_Sint64, PT_Bool>(S, OpPC);
6276}
6277bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
6278 if (!isActive()) return true;
6279 CurrentSource = L;
6280 return Cast<PT_Bool, PT_Uint8>(S, OpPC);
6281}
6282bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
6283 if (!isActive()) return true;
6284 CurrentSource = L;
6285 return Cast<PT_Bool, PT_Sint8>(S, OpPC);
6286}
6287bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
6288 if (!isActive()) return true;
6289 CurrentSource = L;
6290 return Cast<PT_Bool, PT_Uint16>(S, OpPC);
6291}
6292bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
6293 if (!isActive()) return true;
6294 CurrentSource = L;
6295 return Cast<PT_Bool, PT_Sint16>(S, OpPC);
6296}
6297bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
6298 if (!isActive()) return true;
6299 CurrentSource = L;
6300 return Cast<PT_Bool, PT_Uint32>(S, OpPC);
6301}
6302bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
6303 if (!isActive()) return true;
6304 CurrentSource = L;
6305 return Cast<PT_Bool, PT_Sint32>(S, OpPC);
6306}
6307bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
6308 if (!isActive()) return true;
6309 CurrentSource = L;
6310 return Cast<PT_Bool, PT_Uint64>(S, OpPC);
6311}
6312bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
6313 if (!isActive()) return true;
6314 CurrentSource = L;
6315 return Cast<PT_Bool, PT_Sint64>(S, OpPC);
6316}
6317bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
6318 if (!isActive()) return true;
6319 CurrentSource = L;
6320 return Cast<PT_Bool, PT_Bool>(S, OpPC);
6321}
6322bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
6323 if (!isActive()) return true;
6324 CurrentSource = L;
6325 return Cast<PT_IntAP, PT_Uint8>(S, OpPC);
6326}
6327bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
6328 if (!isActive()) return true;
6329 CurrentSource = L;
6330 return Cast<PT_IntAP, PT_Sint8>(S, OpPC);
6331}
6332bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
6333 if (!isActive()) return true;
6334 CurrentSource = L;
6335 return Cast<PT_IntAP, PT_Uint16>(S, OpPC);
6336}
6337bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
6338 if (!isActive()) return true;
6339 CurrentSource = L;
6340 return Cast<PT_IntAP, PT_Sint16>(S, OpPC);
6341}
6342bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
6343 if (!isActive()) return true;
6344 CurrentSource = L;
6345 return Cast<PT_IntAP, PT_Uint32>(S, OpPC);
6346}
6347bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
6348 if (!isActive()) return true;
6349 CurrentSource = L;
6350 return Cast<PT_IntAP, PT_Sint32>(S, OpPC);
6351}
6352bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
6353 if (!isActive()) return true;
6354 CurrentSource = L;
6355 return Cast<PT_IntAP, PT_Uint64>(S, OpPC);
6356}
6357bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
6358 if (!isActive()) return true;
6359 CurrentSource = L;
6360 return Cast<PT_IntAP, PT_Sint64>(S, OpPC);
6361}
6362bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
6363 if (!isActive()) return true;
6364 CurrentSource = L;
6365 return Cast<PT_IntAP, PT_Bool>(S, OpPC);
6366}
6367bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
6368 if (!isActive()) return true;
6369 CurrentSource = L;
6370 return Cast<PT_IntAPS, PT_Uint8>(S, OpPC);
6371}
6372bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
6373 if (!isActive()) return true;
6374 CurrentSource = L;
6375 return Cast<PT_IntAPS, PT_Sint8>(S, OpPC);
6376}
6377bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
6378 if (!isActive()) return true;
6379 CurrentSource = L;
6380 return Cast<PT_IntAPS, PT_Uint16>(S, OpPC);
6381}
6382bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
6383 if (!isActive()) return true;
6384 CurrentSource = L;
6385 return Cast<PT_IntAPS, PT_Sint16>(S, OpPC);
6386}
6387bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
6388 if (!isActive()) return true;
6389 CurrentSource = L;
6390 return Cast<PT_IntAPS, PT_Uint32>(S, OpPC);
6391}
6392bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
6393 if (!isActive()) return true;
6394 CurrentSource = L;
6395 return Cast<PT_IntAPS, PT_Sint32>(S, OpPC);
6396}
6397bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
6398 if (!isActive()) return true;
6399 CurrentSource = L;
6400 return Cast<PT_IntAPS, PT_Uint64>(S, OpPC);
6401}
6402bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
6403 if (!isActive()) return true;
6404 CurrentSource = L;
6405 return Cast<PT_IntAPS, PT_Sint64>(S, OpPC);
6406}
6407bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
6408 if (!isActive()) return true;
6409 CurrentSource = L;
6410 return Cast<PT_IntAPS, PT_Bool>(S, OpPC);
6411}
6412bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
6413 if (!isActive()) return true;
6414 CurrentSource = L;
6415 return Cast<PT_FixedPoint, PT_Uint8>(S, OpPC);
6416}
6417bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
6418 if (!isActive()) return true;
6419 CurrentSource = L;
6420 return Cast<PT_FixedPoint, PT_Sint8>(S, OpPC);
6421}
6422bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
6423 if (!isActive()) return true;
6424 CurrentSource = L;
6425 return Cast<PT_FixedPoint, PT_Uint16>(S, OpPC);
6426}
6427bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
6428 if (!isActive()) return true;
6429 CurrentSource = L;
6430 return Cast<PT_FixedPoint, PT_Sint16>(S, OpPC);
6431}
6432bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
6433 if (!isActive()) return true;
6434 CurrentSource = L;
6435 return Cast<PT_FixedPoint, PT_Uint32>(S, OpPC);
6436}
6437bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
6438 if (!isActive()) return true;
6439 CurrentSource = L;
6440 return Cast<PT_FixedPoint, PT_Sint32>(S, OpPC);
6441}
6442bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
6443 if (!isActive()) return true;
6444 CurrentSource = L;
6445 return Cast<PT_FixedPoint, PT_Uint64>(S, OpPC);
6446}
6447bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
6448 if (!isActive()) return true;
6449 CurrentSource = L;
6450 return Cast<PT_FixedPoint, PT_Sint64>(S, OpPC);
6451}
6452bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
6453 if (!isActive()) return true;
6454 CurrentSource = L;
6455 return Cast<PT_FixedPoint, PT_Bool>(S, OpPC);
6456}
6457#endif
6458#ifdef GET_OPCODE_NAMES
6459OP_CastAPSint8,
6460OP_CastAPUint8,
6461OP_CastAPSint16,
6462OP_CastAPUint16,
6463OP_CastAPSint32,
6464OP_CastAPUint32,
6465OP_CastAPSint64,
6466OP_CastAPUint64,
6467OP_CastAPIntAP,
6468OP_CastAPIntAPS,
6469OP_CastAPBool,
6470OP_CastAPFixedPoint,
6471#endif
6472#ifdef GET_INTERP
6473case OP_CastAPSint8: {
6474 const auto V0 = ReadArg<uint32_t>(S, PC);
6475 if (!CastAP<PT_Sint8>(S, OpPC, V0))
6476 return false;
6477 continue;
6478}
6479case OP_CastAPUint8: {
6480 const auto V0 = ReadArg<uint32_t>(S, PC);
6481 if (!CastAP<PT_Uint8>(S, OpPC, V0))
6482 return false;
6483 continue;
6484}
6485case OP_CastAPSint16: {
6486 const auto V0 = ReadArg<uint32_t>(S, PC);
6487 if (!CastAP<PT_Sint16>(S, OpPC, V0))
6488 return false;
6489 continue;
6490}
6491case OP_CastAPUint16: {
6492 const auto V0 = ReadArg<uint32_t>(S, PC);
6493 if (!CastAP<PT_Uint16>(S, OpPC, V0))
6494 return false;
6495 continue;
6496}
6497case OP_CastAPSint32: {
6498 const auto V0 = ReadArg<uint32_t>(S, PC);
6499 if (!CastAP<PT_Sint32>(S, OpPC, V0))
6500 return false;
6501 continue;
6502}
6503case OP_CastAPUint32: {
6504 const auto V0 = ReadArg<uint32_t>(S, PC);
6505 if (!CastAP<PT_Uint32>(S, OpPC, V0))
6506 return false;
6507 continue;
6508}
6509case OP_CastAPSint64: {
6510 const auto V0 = ReadArg<uint32_t>(S, PC);
6511 if (!CastAP<PT_Sint64>(S, OpPC, V0))
6512 return false;
6513 continue;
6514}
6515case OP_CastAPUint64: {
6516 const auto V0 = ReadArg<uint32_t>(S, PC);
6517 if (!CastAP<PT_Uint64>(S, OpPC, V0))
6518 return false;
6519 continue;
6520}
6521case OP_CastAPIntAP: {
6522 const auto V0 = ReadArg<uint32_t>(S, PC);
6523 if (!CastAP<PT_IntAP>(S, OpPC, V0))
6524 return false;
6525 continue;
6526}
6527case OP_CastAPIntAPS: {
6528 const auto V0 = ReadArg<uint32_t>(S, PC);
6529 if (!CastAP<PT_IntAPS>(S, OpPC, V0))
6530 return false;
6531 continue;
6532}
6533case OP_CastAPBool: {
6534 const auto V0 = ReadArg<uint32_t>(S, PC);
6535 if (!CastAP<PT_Bool>(S, OpPC, V0))
6536 return false;
6537 continue;
6538}
6539case OP_CastAPFixedPoint: {
6540 const auto V0 = ReadArg<uint32_t>(S, PC);
6541 if (!CastAP<PT_FixedPoint>(S, OpPC, V0))
6542 return false;
6543 continue;
6544}
6545#endif
6546#ifdef GET_DISASM
6547case OP_CastAPSint8:
6548 Text.Op = PrintName("CastAPSint8");
6549 Text.Args.push_back(printArg<uint32_t>(P, PC));
6550 break;
6551case OP_CastAPUint8:
6552 Text.Op = PrintName("CastAPUint8");
6553 Text.Args.push_back(printArg<uint32_t>(P, PC));
6554 break;
6555case OP_CastAPSint16:
6556 Text.Op = PrintName("CastAPSint16");
6557 Text.Args.push_back(printArg<uint32_t>(P, PC));
6558 break;
6559case OP_CastAPUint16:
6560 Text.Op = PrintName("CastAPUint16");
6561 Text.Args.push_back(printArg<uint32_t>(P, PC));
6562 break;
6563case OP_CastAPSint32:
6564 Text.Op = PrintName("CastAPSint32");
6565 Text.Args.push_back(printArg<uint32_t>(P, PC));
6566 break;
6567case OP_CastAPUint32:
6568 Text.Op = PrintName("CastAPUint32");
6569 Text.Args.push_back(printArg<uint32_t>(P, PC));
6570 break;
6571case OP_CastAPSint64:
6572 Text.Op = PrintName("CastAPSint64");
6573 Text.Args.push_back(printArg<uint32_t>(P, PC));
6574 break;
6575case OP_CastAPUint64:
6576 Text.Op = PrintName("CastAPUint64");
6577 Text.Args.push_back(printArg<uint32_t>(P, PC));
6578 break;
6579case OP_CastAPIntAP:
6580 Text.Op = PrintName("CastAPIntAP");
6581 Text.Args.push_back(printArg<uint32_t>(P, PC));
6582 break;
6583case OP_CastAPIntAPS:
6584 Text.Op = PrintName("CastAPIntAPS");
6585 Text.Args.push_back(printArg<uint32_t>(P, PC));
6586 break;
6587case OP_CastAPBool:
6588 Text.Op = PrintName("CastAPBool");
6589 Text.Args.push_back(printArg<uint32_t>(P, PC));
6590 break;
6591case OP_CastAPFixedPoint:
6592 Text.Op = PrintName("CastAPFixedPoint");
6593 Text.Args.push_back(printArg<uint32_t>(P, PC));
6594 break;
6595#endif
6596#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6597bool emitCastAPSint8( uint32_t , SourceInfo);
6598bool emitCastAPUint8( uint32_t , SourceInfo);
6599bool emitCastAPSint16( uint32_t , SourceInfo);
6600bool emitCastAPUint16( uint32_t , SourceInfo);
6601bool emitCastAPSint32( uint32_t , SourceInfo);
6602bool emitCastAPUint32( uint32_t , SourceInfo);
6603bool emitCastAPSint64( uint32_t , SourceInfo);
6604bool emitCastAPUint64( uint32_t , SourceInfo);
6605bool emitCastAPIntAP( uint32_t , SourceInfo);
6606bool emitCastAPIntAPS( uint32_t , SourceInfo);
6607bool emitCastAPBool( uint32_t , SourceInfo);
6608bool emitCastAPFixedPoint( uint32_t , SourceInfo);
6609#endif
6610#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6611[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
6612#endif
6613#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
6614bool
6615#if defined(GET_EVAL_IMPL)
6616EvalEmitter
6617#else
6618ByteCodeEmitter
6619#endif
6620::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
6621 switch (T0) {
6622 case PT_Sint8:
6623 return emitCastAPSint8(A0, I);
6624 case PT_Uint8:
6625 return emitCastAPUint8(A0, I);
6626 case PT_Sint16:
6627 return emitCastAPSint16(A0, I);
6628 case PT_Uint16:
6629 return emitCastAPUint16(A0, I);
6630 case PT_Sint32:
6631 return emitCastAPSint32(A0, I);
6632 case PT_Uint32:
6633 return emitCastAPUint32(A0, I);
6634 case PT_Sint64:
6635 return emitCastAPSint64(A0, I);
6636 case PT_Uint64:
6637 return emitCastAPUint64(A0, I);
6638 case PT_IntAP:
6639 return emitCastAPIntAP(A0, I);
6640 case PT_IntAPS:
6641 return emitCastAPIntAPS(A0, I);
6642 case PT_Bool:
6643 return emitCastAPBool(A0, I);
6644 case PT_FixedPoint:
6645 return emitCastAPFixedPoint(A0, I);
6646 default: llvm_unreachable("invalid type: emitCastAP");
6647 }
6648 llvm_unreachable("invalid enum value");
6649}
6650#endif
6651#ifdef GET_LINK_IMPL
6652bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
6653 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
6654}
6655bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
6656 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
6657}
6658bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
6659 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
6660}
6661bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
6662 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
6663}
6664bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
6665 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
6666}
6667bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
6668 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
6669}
6670bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
6671 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
6672}
6673bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
6674 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
6675}
6676bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
6677 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
6678}
6679bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
6680 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
6681}
6682bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
6683 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
6684}
6685bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
6686 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
6687}
6688#endif
6689#ifdef GET_EVAL_IMPL
6690bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
6691 if (!isActive()) return true;
6692 CurrentSource = L;
6693 return CastAP<PT_Sint8>(S, OpPC, A0);
6694}
6695bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
6696 if (!isActive()) return true;
6697 CurrentSource = L;
6698 return CastAP<PT_Uint8>(S, OpPC, A0);
6699}
6700bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
6701 if (!isActive()) return true;
6702 CurrentSource = L;
6703 return CastAP<PT_Sint16>(S, OpPC, A0);
6704}
6705bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
6706 if (!isActive()) return true;
6707 CurrentSource = L;
6708 return CastAP<PT_Uint16>(S, OpPC, A0);
6709}
6710bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
6711 if (!isActive()) return true;
6712 CurrentSource = L;
6713 return CastAP<PT_Sint32>(S, OpPC, A0);
6714}
6715bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
6716 if (!isActive()) return true;
6717 CurrentSource = L;
6718 return CastAP<PT_Uint32>(S, OpPC, A0);
6719}
6720bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
6721 if (!isActive()) return true;
6722 CurrentSource = L;
6723 return CastAP<PT_Sint64>(S, OpPC, A0);
6724}
6725bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
6726 if (!isActive()) return true;
6727 CurrentSource = L;
6728 return CastAP<PT_Uint64>(S, OpPC, A0);
6729}
6730bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
6731 if (!isActive()) return true;
6732 CurrentSource = L;
6733 return CastAP<PT_IntAP>(S, OpPC, A0);
6734}
6735bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
6736 if (!isActive()) return true;
6737 CurrentSource = L;
6738 return CastAP<PT_IntAPS>(S, OpPC, A0);
6739}
6740bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
6741 if (!isActive()) return true;
6742 CurrentSource = L;
6743 return CastAP<PT_Bool>(S, OpPC, A0);
6744}
6745bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
6746 if (!isActive()) return true;
6747 CurrentSource = L;
6748 return CastAP<PT_FixedPoint>(S, OpPC, A0);
6749}
6750#endif
6751#ifdef GET_OPCODE_NAMES
6752OP_CastAPSSint8,
6753OP_CastAPSUint8,
6754OP_CastAPSSint16,
6755OP_CastAPSUint16,
6756OP_CastAPSSint32,
6757OP_CastAPSUint32,
6758OP_CastAPSSint64,
6759OP_CastAPSUint64,
6760OP_CastAPSIntAP,
6761OP_CastAPSIntAPS,
6762OP_CastAPSBool,
6763OP_CastAPSFixedPoint,
6764#endif
6765#ifdef GET_INTERP
6766case OP_CastAPSSint8: {
6767 const auto V0 = ReadArg<uint32_t>(S, PC);
6768 if (!CastAPS<PT_Sint8>(S, OpPC, V0))
6769 return false;
6770 continue;
6771}
6772case OP_CastAPSUint8: {
6773 const auto V0 = ReadArg<uint32_t>(S, PC);
6774 if (!CastAPS<PT_Uint8>(S, OpPC, V0))
6775 return false;
6776 continue;
6777}
6778case OP_CastAPSSint16: {
6779 const auto V0 = ReadArg<uint32_t>(S, PC);
6780 if (!CastAPS<PT_Sint16>(S, OpPC, V0))
6781 return false;
6782 continue;
6783}
6784case OP_CastAPSUint16: {
6785 const auto V0 = ReadArg<uint32_t>(S, PC);
6786 if (!CastAPS<PT_Uint16>(S, OpPC, V0))
6787 return false;
6788 continue;
6789}
6790case OP_CastAPSSint32: {
6791 const auto V0 = ReadArg<uint32_t>(S, PC);
6792 if (!CastAPS<PT_Sint32>(S, OpPC, V0))
6793 return false;
6794 continue;
6795}
6796case OP_CastAPSUint32: {
6797 const auto V0 = ReadArg<uint32_t>(S, PC);
6798 if (!CastAPS<PT_Uint32>(S, OpPC, V0))
6799 return false;
6800 continue;
6801}
6802case OP_CastAPSSint64: {
6803 const auto V0 = ReadArg<uint32_t>(S, PC);
6804 if (!CastAPS<PT_Sint64>(S, OpPC, V0))
6805 return false;
6806 continue;
6807}
6808case OP_CastAPSUint64: {
6809 const auto V0 = ReadArg<uint32_t>(S, PC);
6810 if (!CastAPS<PT_Uint64>(S, OpPC, V0))
6811 return false;
6812 continue;
6813}
6814case OP_CastAPSIntAP: {
6815 const auto V0 = ReadArg<uint32_t>(S, PC);
6816 if (!CastAPS<PT_IntAP>(S, OpPC, V0))
6817 return false;
6818 continue;
6819}
6820case OP_CastAPSIntAPS: {
6821 const auto V0 = ReadArg<uint32_t>(S, PC);
6822 if (!CastAPS<PT_IntAPS>(S, OpPC, V0))
6823 return false;
6824 continue;
6825}
6826case OP_CastAPSBool: {
6827 const auto V0 = ReadArg<uint32_t>(S, PC);
6828 if (!CastAPS<PT_Bool>(S, OpPC, V0))
6829 return false;
6830 continue;
6831}
6832case OP_CastAPSFixedPoint: {
6833 const auto V0 = ReadArg<uint32_t>(S, PC);
6834 if (!CastAPS<PT_FixedPoint>(S, OpPC, V0))
6835 return false;
6836 continue;
6837}
6838#endif
6839#ifdef GET_DISASM
6840case OP_CastAPSSint8:
6841 Text.Op = PrintName("CastAPSSint8");
6842 Text.Args.push_back(printArg<uint32_t>(P, PC));
6843 break;
6844case OP_CastAPSUint8:
6845 Text.Op = PrintName("CastAPSUint8");
6846 Text.Args.push_back(printArg<uint32_t>(P, PC));
6847 break;
6848case OP_CastAPSSint16:
6849 Text.Op = PrintName("CastAPSSint16");
6850 Text.Args.push_back(printArg<uint32_t>(P, PC));
6851 break;
6852case OP_CastAPSUint16:
6853 Text.Op = PrintName("CastAPSUint16");
6854 Text.Args.push_back(printArg<uint32_t>(P, PC));
6855 break;
6856case OP_CastAPSSint32:
6857 Text.Op = PrintName("CastAPSSint32");
6858 Text.Args.push_back(printArg<uint32_t>(P, PC));
6859 break;
6860case OP_CastAPSUint32:
6861 Text.Op = PrintName("CastAPSUint32");
6862 Text.Args.push_back(printArg<uint32_t>(P, PC));
6863 break;
6864case OP_CastAPSSint64:
6865 Text.Op = PrintName("CastAPSSint64");
6866 Text.Args.push_back(printArg<uint32_t>(P, PC));
6867 break;
6868case OP_CastAPSUint64:
6869 Text.Op = PrintName("CastAPSUint64");
6870 Text.Args.push_back(printArg<uint32_t>(P, PC));
6871 break;
6872case OP_CastAPSIntAP:
6873 Text.Op = PrintName("CastAPSIntAP");
6874 Text.Args.push_back(printArg<uint32_t>(P, PC));
6875 break;
6876case OP_CastAPSIntAPS:
6877 Text.Op = PrintName("CastAPSIntAPS");
6878 Text.Args.push_back(printArg<uint32_t>(P, PC));
6879 break;
6880case OP_CastAPSBool:
6881 Text.Op = PrintName("CastAPSBool");
6882 Text.Args.push_back(printArg<uint32_t>(P, PC));
6883 break;
6884case OP_CastAPSFixedPoint:
6885 Text.Op = PrintName("CastAPSFixedPoint");
6886 Text.Args.push_back(printArg<uint32_t>(P, PC));
6887 break;
6888#endif
6889#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6890bool emitCastAPSSint8( uint32_t , SourceInfo);
6891bool emitCastAPSUint8( uint32_t , SourceInfo);
6892bool emitCastAPSSint16( uint32_t , SourceInfo);
6893bool emitCastAPSUint16( uint32_t , SourceInfo);
6894bool emitCastAPSSint32( uint32_t , SourceInfo);
6895bool emitCastAPSUint32( uint32_t , SourceInfo);
6896bool emitCastAPSSint64( uint32_t , SourceInfo);
6897bool emitCastAPSUint64( uint32_t , SourceInfo);
6898bool emitCastAPSIntAP( uint32_t , SourceInfo);
6899bool emitCastAPSIntAPS( uint32_t , SourceInfo);
6900bool emitCastAPSBool( uint32_t , SourceInfo);
6901bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
6902#endif
6903#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6904[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
6905#endif
6906#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
6907bool
6908#if defined(GET_EVAL_IMPL)
6909EvalEmitter
6910#else
6911ByteCodeEmitter
6912#endif
6913::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
6914 switch (T0) {
6915 case PT_Sint8:
6916 return emitCastAPSSint8(A0, I);
6917 case PT_Uint8:
6918 return emitCastAPSUint8(A0, I);
6919 case PT_Sint16:
6920 return emitCastAPSSint16(A0, I);
6921 case PT_Uint16:
6922 return emitCastAPSUint16(A0, I);
6923 case PT_Sint32:
6924 return emitCastAPSSint32(A0, I);
6925 case PT_Uint32:
6926 return emitCastAPSUint32(A0, I);
6927 case PT_Sint64:
6928 return emitCastAPSSint64(A0, I);
6929 case PT_Uint64:
6930 return emitCastAPSUint64(A0, I);
6931 case PT_IntAP:
6932 return emitCastAPSIntAP(A0, I);
6933 case PT_IntAPS:
6934 return emitCastAPSIntAPS(A0, I);
6935 case PT_Bool:
6936 return emitCastAPSBool(A0, I);
6937 case PT_FixedPoint:
6938 return emitCastAPSFixedPoint(A0, I);
6939 default: llvm_unreachable("invalid type: emitCastAPS");
6940 }
6941 llvm_unreachable("invalid enum value");
6942}
6943#endif
6944#ifdef GET_LINK_IMPL
6945bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
6946 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
6947}
6948bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
6949 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
6950}
6951bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
6952 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
6953}
6954bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
6955 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
6956}
6957bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
6958 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
6959}
6960bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
6961 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
6962}
6963bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
6964 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
6965}
6966bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
6967 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
6968}
6969bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
6970 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
6971}
6972bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
6973 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
6974}
6975bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
6976 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
6977}
6978bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
6979 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
6980}
6981#endif
6982#ifdef GET_EVAL_IMPL
6983bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
6984 if (!isActive()) return true;
6985 CurrentSource = L;
6986 return CastAPS<PT_Sint8>(S, OpPC, A0);
6987}
6988bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
6989 if (!isActive()) return true;
6990 CurrentSource = L;
6991 return CastAPS<PT_Uint8>(S, OpPC, A0);
6992}
6993bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
6994 if (!isActive()) return true;
6995 CurrentSource = L;
6996 return CastAPS<PT_Sint16>(S, OpPC, A0);
6997}
6998bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
6999 if (!isActive()) return true;
7000 CurrentSource = L;
7001 return CastAPS<PT_Uint16>(S, OpPC, A0);
7002}
7003bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
7004 if (!isActive()) return true;
7005 CurrentSource = L;
7006 return CastAPS<PT_Sint32>(S, OpPC, A0);
7007}
7008bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
7009 if (!isActive()) return true;
7010 CurrentSource = L;
7011 return CastAPS<PT_Uint32>(S, OpPC, A0);
7012}
7013bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
7014 if (!isActive()) return true;
7015 CurrentSource = L;
7016 return CastAPS<PT_Sint64>(S, OpPC, A0);
7017}
7018bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
7019 if (!isActive()) return true;
7020 CurrentSource = L;
7021 return CastAPS<PT_Uint64>(S, OpPC, A0);
7022}
7023bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
7024 if (!isActive()) return true;
7025 CurrentSource = L;
7026 return CastAPS<PT_IntAP>(S, OpPC, A0);
7027}
7028bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
7029 if (!isActive()) return true;
7030 CurrentSource = L;
7031 return CastAPS<PT_IntAPS>(S, OpPC, A0);
7032}
7033bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
7034 if (!isActive()) return true;
7035 CurrentSource = L;
7036 return CastAPS<PT_Bool>(S, OpPC, A0);
7037}
7038bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
7039 if (!isActive()) return true;
7040 CurrentSource = L;
7041 return CastAPS<PT_FixedPoint>(S, OpPC, A0);
7042}
7043#endif
7044#ifdef GET_OPCODE_NAMES
7045OP_CastFP,
7046#endif
7047#ifdef GET_INTERP
7048case OP_CastFP: {
7049 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7050 const auto V1 = ReadArg<llvm::RoundingMode>(S, PC);
7051 if (!CastFP(S, OpPC, V0, V1))
7052 return false;
7053 continue;
7054}
7055#endif
7056#ifdef GET_DISASM
7057case OP_CastFP:
7058 Text.Op = PrintName("CastFP");
7059 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7060 Text.Args.push_back(printArg<llvm::RoundingMode>(P, PC));
7061 break;
7062#endif
7063#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7064bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
7065#endif
7066#ifdef GET_LINK_IMPL
7067bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
7068 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
7069}
7070#endif
7071#ifdef GET_EVAL_IMPL
7072bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
7073 if (!isActive()) return true;
7074 CurrentSource = L;
7075 return CastFP(S, OpPC, A0, A1);
7076}
7077#endif
7078#ifdef GET_OPCODE_NAMES
7079OP_CastFixedPoint,
7080#endif
7081#ifdef GET_INTERP
7082case OP_CastFixedPoint: {
7083 const auto V0 = ReadArg<uint32_t>(S, PC);
7084 if (!CastFixedPoint(S, OpPC, V0))
7085 return false;
7086 continue;
7087}
7088#endif
7089#ifdef GET_DISASM
7090case OP_CastFixedPoint:
7091 Text.Op = PrintName("CastFixedPoint");
7092 Text.Args.push_back(printArg<uint32_t>(P, PC));
7093 break;
7094#endif
7095#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7096bool emitCastFixedPoint( uint32_t , SourceInfo);
7097#endif
7098#ifdef GET_LINK_IMPL
7099bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
7100 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
7101}
7102#endif
7103#ifdef GET_EVAL_IMPL
7104bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
7105 if (!isActive()) return true;
7106 CurrentSource = L;
7107 return CastFixedPoint(S, OpPC, A0);
7108}
7109#endif
7110#ifdef GET_OPCODE_NAMES
7111OP_CastFixedPointFloating,
7112#endif
7113#ifdef GET_INTERP
7114case OP_CastFixedPointFloating: {
7115 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7116 if (!CastFixedPointFloating(S, OpPC, V0))
7117 return false;
7118 continue;
7119}
7120#endif
7121#ifdef GET_DISASM
7122case OP_CastFixedPointFloating:
7123 Text.Op = PrintName("CastFixedPointFloating");
7124 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7125 break;
7126#endif
7127#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7128bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
7129#endif
7130#ifdef GET_LINK_IMPL
7131bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
7132 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
7133}
7134#endif
7135#ifdef GET_EVAL_IMPL
7136bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
7137 if (!isActive()) return true;
7138 CurrentSource = L;
7139 return CastFixedPointFloating(S, OpPC, A0);
7140}
7141#endif
7142#ifdef GET_OPCODE_NAMES
7143OP_CastFixedPointIntegralSint8,
7144OP_CastFixedPointIntegralUint8,
7145OP_CastFixedPointIntegralSint16,
7146OP_CastFixedPointIntegralUint16,
7147OP_CastFixedPointIntegralSint32,
7148OP_CastFixedPointIntegralUint32,
7149OP_CastFixedPointIntegralSint64,
7150OP_CastFixedPointIntegralUint64,
7151#endif
7152#ifdef GET_INTERP
7153case OP_CastFixedPointIntegralSint8: {
7154 if (!CastFixedPointIntegral<PT_Sint8>(S, OpPC))
7155 return false;
7156 continue;
7157}
7158case OP_CastFixedPointIntegralUint8: {
7159 if (!CastFixedPointIntegral<PT_Uint8>(S, OpPC))
7160 return false;
7161 continue;
7162}
7163case OP_CastFixedPointIntegralSint16: {
7164 if (!CastFixedPointIntegral<PT_Sint16>(S, OpPC))
7165 return false;
7166 continue;
7167}
7168case OP_CastFixedPointIntegralUint16: {
7169 if (!CastFixedPointIntegral<PT_Uint16>(S, OpPC))
7170 return false;
7171 continue;
7172}
7173case OP_CastFixedPointIntegralSint32: {
7174 if (!CastFixedPointIntegral<PT_Sint32>(S, OpPC))
7175 return false;
7176 continue;
7177}
7178case OP_CastFixedPointIntegralUint32: {
7179 if (!CastFixedPointIntegral<PT_Uint32>(S, OpPC))
7180 return false;
7181 continue;
7182}
7183case OP_CastFixedPointIntegralSint64: {
7184 if (!CastFixedPointIntegral<PT_Sint64>(S, OpPC))
7185 return false;
7186 continue;
7187}
7188case OP_CastFixedPointIntegralUint64: {
7189 if (!CastFixedPointIntegral<PT_Uint64>(S, OpPC))
7190 return false;
7191 continue;
7192}
7193#endif
7194#ifdef GET_DISASM
7195case OP_CastFixedPointIntegralSint8:
7196 Text.Op = PrintName("CastFixedPointIntegralSint8");
7197 break;
7198case OP_CastFixedPointIntegralUint8:
7199 Text.Op = PrintName("CastFixedPointIntegralUint8");
7200 break;
7201case OP_CastFixedPointIntegralSint16:
7202 Text.Op = PrintName("CastFixedPointIntegralSint16");
7203 break;
7204case OP_CastFixedPointIntegralUint16:
7205 Text.Op = PrintName("CastFixedPointIntegralUint16");
7206 break;
7207case OP_CastFixedPointIntegralSint32:
7208 Text.Op = PrintName("CastFixedPointIntegralSint32");
7209 break;
7210case OP_CastFixedPointIntegralUint32:
7211 Text.Op = PrintName("CastFixedPointIntegralUint32");
7212 break;
7213case OP_CastFixedPointIntegralSint64:
7214 Text.Op = PrintName("CastFixedPointIntegralSint64");
7215 break;
7216case OP_CastFixedPointIntegralUint64:
7217 Text.Op = PrintName("CastFixedPointIntegralUint64");
7218 break;
7219#endif
7220#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7221bool emitCastFixedPointIntegralSint8(SourceInfo);
7222bool emitCastFixedPointIntegralUint8(SourceInfo);
7223bool emitCastFixedPointIntegralSint16(SourceInfo);
7224bool emitCastFixedPointIntegralUint16(SourceInfo);
7225bool emitCastFixedPointIntegralSint32(SourceInfo);
7226bool emitCastFixedPointIntegralUint32(SourceInfo);
7227bool emitCastFixedPointIntegralSint64(SourceInfo);
7228bool emitCastFixedPointIntegralUint64(SourceInfo);
7229#endif
7230#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7231[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
7232#endif
7233#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7234bool
7235#if defined(GET_EVAL_IMPL)
7236EvalEmitter
7237#else
7238ByteCodeEmitter
7239#endif
7240::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
7241 switch (T0) {
7242 case PT_Sint8:
7243 return emitCastFixedPointIntegralSint8(I);
7244 case PT_Uint8:
7245 return emitCastFixedPointIntegralUint8(I);
7246 case PT_Sint16:
7247 return emitCastFixedPointIntegralSint16(I);
7248 case PT_Uint16:
7249 return emitCastFixedPointIntegralUint16(I);
7250 case PT_Sint32:
7251 return emitCastFixedPointIntegralSint32(I);
7252 case PT_Uint32:
7253 return emitCastFixedPointIntegralUint32(I);
7254 case PT_Sint64:
7255 return emitCastFixedPointIntegralSint64(I);
7256 case PT_Uint64:
7257 return emitCastFixedPointIntegralUint64(I);
7258 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
7259 }
7260 llvm_unreachable("invalid enum value");
7261}
7262#endif
7263#ifdef GET_LINK_IMPL
7264bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
7265 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
7266}
7267bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
7268 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
7269}
7270bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
7271 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
7272}
7273bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
7274 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
7275}
7276bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
7277 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
7278}
7279bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
7280 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
7281}
7282bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
7283 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
7284}
7285bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
7286 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
7287}
7288#endif
7289#ifdef GET_EVAL_IMPL
7290bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
7291 if (!isActive()) return true;
7292 CurrentSource = L;
7293 return CastFixedPointIntegral<PT_Sint8>(S, OpPC);
7294}
7295bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
7296 if (!isActive()) return true;
7297 CurrentSource = L;
7298 return CastFixedPointIntegral<PT_Uint8>(S, OpPC);
7299}
7300bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
7301 if (!isActive()) return true;
7302 CurrentSource = L;
7303 return CastFixedPointIntegral<PT_Sint16>(S, OpPC);
7304}
7305bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
7306 if (!isActive()) return true;
7307 CurrentSource = L;
7308 return CastFixedPointIntegral<PT_Uint16>(S, OpPC);
7309}
7310bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
7311 if (!isActive()) return true;
7312 CurrentSource = L;
7313 return CastFixedPointIntegral<PT_Sint32>(S, OpPC);
7314}
7315bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
7316 if (!isActive()) return true;
7317 CurrentSource = L;
7318 return CastFixedPointIntegral<PT_Uint32>(S, OpPC);
7319}
7320bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
7321 if (!isActive()) return true;
7322 CurrentSource = L;
7323 return CastFixedPointIntegral<PT_Sint64>(S, OpPC);
7324}
7325bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
7326 if (!isActive()) return true;
7327 CurrentSource = L;
7328 return CastFixedPointIntegral<PT_Uint64>(S, OpPC);
7329}
7330#endif
7331#ifdef GET_OPCODE_NAMES
7332OP_CastFloatingFixedPoint,
7333#endif
7334#ifdef GET_INTERP
7335case OP_CastFloatingFixedPoint: {
7336 const auto V0 = ReadArg<uint32_t>(S, PC);
7337 if (!CastFloatingFixedPoint(S, OpPC, V0))
7338 return false;
7339 continue;
7340}
7341#endif
7342#ifdef GET_DISASM
7343case OP_CastFloatingFixedPoint:
7344 Text.Op = PrintName("CastFloatingFixedPoint");
7345 Text.Args.push_back(printArg<uint32_t>(P, PC));
7346 break;
7347#endif
7348#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7349bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
7350#endif
7351#ifdef GET_LINK_IMPL
7352bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
7353 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
7354}
7355#endif
7356#ifdef GET_EVAL_IMPL
7357bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
7358 if (!isActive()) return true;
7359 CurrentSource = L;
7360 return CastFloatingFixedPoint(S, OpPC, A0);
7361}
7362#endif
7363#ifdef GET_OPCODE_NAMES
7364OP_CastFloatingIntegralSint8,
7365OP_CastFloatingIntegralUint8,
7366OP_CastFloatingIntegralSint16,
7367OP_CastFloatingIntegralUint16,
7368OP_CastFloatingIntegralSint32,
7369OP_CastFloatingIntegralUint32,
7370OP_CastFloatingIntegralSint64,
7371OP_CastFloatingIntegralUint64,
7372OP_CastFloatingIntegralBool,
7373#endif
7374#ifdef GET_INTERP
7375case OP_CastFloatingIntegralSint8: {
7376 const auto V0 = ReadArg<uint32_t>(S, PC);
7377 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0))
7378 return false;
7379 continue;
7380}
7381case OP_CastFloatingIntegralUint8: {
7382 const auto V0 = ReadArg<uint32_t>(S, PC);
7383 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0))
7384 return false;
7385 continue;
7386}
7387case OP_CastFloatingIntegralSint16: {
7388 const auto V0 = ReadArg<uint32_t>(S, PC);
7389 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0))
7390 return false;
7391 continue;
7392}
7393case OP_CastFloatingIntegralUint16: {
7394 const auto V0 = ReadArg<uint32_t>(S, PC);
7395 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0))
7396 return false;
7397 continue;
7398}
7399case OP_CastFloatingIntegralSint32: {
7400 const auto V0 = ReadArg<uint32_t>(S, PC);
7401 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0))
7402 return false;
7403 continue;
7404}
7405case OP_CastFloatingIntegralUint32: {
7406 const auto V0 = ReadArg<uint32_t>(S, PC);
7407 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0))
7408 return false;
7409 continue;
7410}
7411case OP_CastFloatingIntegralSint64: {
7412 const auto V0 = ReadArg<uint32_t>(S, PC);
7413 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0))
7414 return false;
7415 continue;
7416}
7417case OP_CastFloatingIntegralUint64: {
7418 const auto V0 = ReadArg<uint32_t>(S, PC);
7419 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0))
7420 return false;
7421 continue;
7422}
7423case OP_CastFloatingIntegralBool: {
7424 const auto V0 = ReadArg<uint32_t>(S, PC);
7425 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0))
7426 return false;
7427 continue;
7428}
7429#endif
7430#ifdef GET_DISASM
7431case OP_CastFloatingIntegralSint8:
7432 Text.Op = PrintName("CastFloatingIntegralSint8");
7433 Text.Args.push_back(printArg<uint32_t>(P, PC));
7434 break;
7435case OP_CastFloatingIntegralUint8:
7436 Text.Op = PrintName("CastFloatingIntegralUint8");
7437 Text.Args.push_back(printArg<uint32_t>(P, PC));
7438 break;
7439case OP_CastFloatingIntegralSint16:
7440 Text.Op = PrintName("CastFloatingIntegralSint16");
7441 Text.Args.push_back(printArg<uint32_t>(P, PC));
7442 break;
7443case OP_CastFloatingIntegralUint16:
7444 Text.Op = PrintName("CastFloatingIntegralUint16");
7445 Text.Args.push_back(printArg<uint32_t>(P, PC));
7446 break;
7447case OP_CastFloatingIntegralSint32:
7448 Text.Op = PrintName("CastFloatingIntegralSint32");
7449 Text.Args.push_back(printArg<uint32_t>(P, PC));
7450 break;
7451case OP_CastFloatingIntegralUint32:
7452 Text.Op = PrintName("CastFloatingIntegralUint32");
7453 Text.Args.push_back(printArg<uint32_t>(P, PC));
7454 break;
7455case OP_CastFloatingIntegralSint64:
7456 Text.Op = PrintName("CastFloatingIntegralSint64");
7457 Text.Args.push_back(printArg<uint32_t>(P, PC));
7458 break;
7459case OP_CastFloatingIntegralUint64:
7460 Text.Op = PrintName("CastFloatingIntegralUint64");
7461 Text.Args.push_back(printArg<uint32_t>(P, PC));
7462 break;
7463case OP_CastFloatingIntegralBool:
7464 Text.Op = PrintName("CastFloatingIntegralBool");
7465 Text.Args.push_back(printArg<uint32_t>(P, PC));
7466 break;
7467#endif
7468#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7469bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
7470bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
7471bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
7472bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
7473bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
7474bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
7475bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
7476bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
7477bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
7478#endif
7479#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7480[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
7481#endif
7482#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7483bool
7484#if defined(GET_EVAL_IMPL)
7485EvalEmitter
7486#else
7487ByteCodeEmitter
7488#endif
7489::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
7490 switch (T0) {
7491 case PT_Sint8:
7492 return emitCastFloatingIntegralSint8(A0, I);
7493 case PT_Uint8:
7494 return emitCastFloatingIntegralUint8(A0, I);
7495 case PT_Sint16:
7496 return emitCastFloatingIntegralSint16(A0, I);
7497 case PT_Uint16:
7498 return emitCastFloatingIntegralUint16(A0, I);
7499 case PT_Sint32:
7500 return emitCastFloatingIntegralSint32(A0, I);
7501 case PT_Uint32:
7502 return emitCastFloatingIntegralUint32(A0, I);
7503 case PT_Sint64:
7504 return emitCastFloatingIntegralSint64(A0, I);
7505 case PT_Uint64:
7506 return emitCastFloatingIntegralUint64(A0, I);
7507 case PT_Bool:
7508 return emitCastFloatingIntegralBool(A0, I);
7509 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
7510 }
7511 llvm_unreachable("invalid enum value");
7512}
7513#endif
7514#ifdef GET_LINK_IMPL
7515bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
7516 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
7517}
7518bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
7519 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
7520}
7521bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
7522 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
7523}
7524bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
7525 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
7526}
7527bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
7528 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
7529}
7530bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
7531 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
7532}
7533bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
7534 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
7535}
7536bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
7537 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
7538}
7539bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
7540 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
7541}
7542#endif
7543#ifdef GET_EVAL_IMPL
7544bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
7545 if (!isActive()) return true;
7546 CurrentSource = L;
7547 return CastFloatingIntegral<PT_Sint8>(S, OpPC, A0);
7548}
7549bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
7550 if (!isActive()) return true;
7551 CurrentSource = L;
7552 return CastFloatingIntegral<PT_Uint8>(S, OpPC, A0);
7553}
7554bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
7555 if (!isActive()) return true;
7556 CurrentSource = L;
7557 return CastFloatingIntegral<PT_Sint16>(S, OpPC, A0);
7558}
7559bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
7560 if (!isActive()) return true;
7561 CurrentSource = L;
7562 return CastFloatingIntegral<PT_Uint16>(S, OpPC, A0);
7563}
7564bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
7565 if (!isActive()) return true;
7566 CurrentSource = L;
7567 return CastFloatingIntegral<PT_Sint32>(S, OpPC, A0);
7568}
7569bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
7570 if (!isActive()) return true;
7571 CurrentSource = L;
7572 return CastFloatingIntegral<PT_Uint32>(S, OpPC, A0);
7573}
7574bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
7575 if (!isActive()) return true;
7576 CurrentSource = L;
7577 return CastFloatingIntegral<PT_Sint64>(S, OpPC, A0);
7578}
7579bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
7580 if (!isActive()) return true;
7581 CurrentSource = L;
7582 return CastFloatingIntegral<PT_Uint64>(S, OpPC, A0);
7583}
7584bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
7585 if (!isActive()) return true;
7586 CurrentSource = L;
7587 return CastFloatingIntegral<PT_Bool>(S, OpPC, A0);
7588}
7589#endif
7590#ifdef GET_OPCODE_NAMES
7591OP_CastFloatingIntegralAP,
7592#endif
7593#ifdef GET_INTERP
7594case OP_CastFloatingIntegralAP: {
7595 const auto V0 = ReadArg<uint32_t>(S, PC);
7596 const auto V1 = ReadArg<uint32_t>(S, PC);
7597 if (!CastFloatingIntegralAP(S, OpPC, V0, V1))
7598 return false;
7599 continue;
7600}
7601#endif
7602#ifdef GET_DISASM
7603case OP_CastFloatingIntegralAP:
7604 Text.Op = PrintName("CastFloatingIntegralAP");
7605 Text.Args.push_back(printArg<uint32_t>(P, PC));
7606 Text.Args.push_back(printArg<uint32_t>(P, PC));
7607 break;
7608#endif
7609#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7610bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
7611#endif
7612#ifdef GET_LINK_IMPL
7613bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
7614 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
7615}
7616#endif
7617#ifdef GET_EVAL_IMPL
7618bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
7619 if (!isActive()) return true;
7620 CurrentSource = L;
7621 return CastFloatingIntegralAP(S, OpPC, A0, A1);
7622}
7623#endif
7624#ifdef GET_OPCODE_NAMES
7625OP_CastFloatingIntegralAPS,
7626#endif
7627#ifdef GET_INTERP
7628case OP_CastFloatingIntegralAPS: {
7629 const auto V0 = ReadArg<uint32_t>(S, PC);
7630 const auto V1 = ReadArg<uint32_t>(S, PC);
7631 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1))
7632 return false;
7633 continue;
7634}
7635#endif
7636#ifdef GET_DISASM
7637case OP_CastFloatingIntegralAPS:
7638 Text.Op = PrintName("CastFloatingIntegralAPS");
7639 Text.Args.push_back(printArg<uint32_t>(P, PC));
7640 Text.Args.push_back(printArg<uint32_t>(P, PC));
7641 break;
7642#endif
7643#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7644bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
7645#endif
7646#ifdef GET_LINK_IMPL
7647bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
7648 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
7649}
7650#endif
7651#ifdef GET_EVAL_IMPL
7652bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
7653 if (!isActive()) return true;
7654 CurrentSource = L;
7655 return CastFloatingIntegralAPS(S, OpPC, A0, A1);
7656}
7657#endif
7658#ifdef GET_OPCODE_NAMES
7659OP_CastIntegralFixedPointSint8,
7660OP_CastIntegralFixedPointUint8,
7661OP_CastIntegralFixedPointSint16,
7662OP_CastIntegralFixedPointUint16,
7663OP_CastIntegralFixedPointSint32,
7664OP_CastIntegralFixedPointUint32,
7665OP_CastIntegralFixedPointSint64,
7666OP_CastIntegralFixedPointUint64,
7667OP_CastIntegralFixedPointBool,
7668#endif
7669#ifdef GET_INTERP
7670case OP_CastIntegralFixedPointSint8: {
7671 const auto V0 = ReadArg<uint32_t>(S, PC);
7672 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0))
7673 return false;
7674 continue;
7675}
7676case OP_CastIntegralFixedPointUint8: {
7677 const auto V0 = ReadArg<uint32_t>(S, PC);
7678 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0))
7679 return false;
7680 continue;
7681}
7682case OP_CastIntegralFixedPointSint16: {
7683 const auto V0 = ReadArg<uint32_t>(S, PC);
7684 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0))
7685 return false;
7686 continue;
7687}
7688case OP_CastIntegralFixedPointUint16: {
7689 const auto V0 = ReadArg<uint32_t>(S, PC);
7690 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0))
7691 return false;
7692 continue;
7693}
7694case OP_CastIntegralFixedPointSint32: {
7695 const auto V0 = ReadArg<uint32_t>(S, PC);
7696 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0))
7697 return false;
7698 continue;
7699}
7700case OP_CastIntegralFixedPointUint32: {
7701 const auto V0 = ReadArg<uint32_t>(S, PC);
7702 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0))
7703 return false;
7704 continue;
7705}
7706case OP_CastIntegralFixedPointSint64: {
7707 const auto V0 = ReadArg<uint32_t>(S, PC);
7708 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0))
7709 return false;
7710 continue;
7711}
7712case OP_CastIntegralFixedPointUint64: {
7713 const auto V0 = ReadArg<uint32_t>(S, PC);
7714 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0))
7715 return false;
7716 continue;
7717}
7718case OP_CastIntegralFixedPointBool: {
7719 const auto V0 = ReadArg<uint32_t>(S, PC);
7720 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0))
7721 return false;
7722 continue;
7723}
7724#endif
7725#ifdef GET_DISASM
7726case OP_CastIntegralFixedPointSint8:
7727 Text.Op = PrintName("CastIntegralFixedPointSint8");
7728 Text.Args.push_back(printArg<uint32_t>(P, PC));
7729 break;
7730case OP_CastIntegralFixedPointUint8:
7731 Text.Op = PrintName("CastIntegralFixedPointUint8");
7732 Text.Args.push_back(printArg<uint32_t>(P, PC));
7733 break;
7734case OP_CastIntegralFixedPointSint16:
7735 Text.Op = PrintName("CastIntegralFixedPointSint16");
7736 Text.Args.push_back(printArg<uint32_t>(P, PC));
7737 break;
7738case OP_CastIntegralFixedPointUint16:
7739 Text.Op = PrintName("CastIntegralFixedPointUint16");
7740 Text.Args.push_back(printArg<uint32_t>(P, PC));
7741 break;
7742case OP_CastIntegralFixedPointSint32:
7743 Text.Op = PrintName("CastIntegralFixedPointSint32");
7744 Text.Args.push_back(printArg<uint32_t>(P, PC));
7745 break;
7746case OP_CastIntegralFixedPointUint32:
7747 Text.Op = PrintName("CastIntegralFixedPointUint32");
7748 Text.Args.push_back(printArg<uint32_t>(P, PC));
7749 break;
7750case OP_CastIntegralFixedPointSint64:
7751 Text.Op = PrintName("CastIntegralFixedPointSint64");
7752 Text.Args.push_back(printArg<uint32_t>(P, PC));
7753 break;
7754case OP_CastIntegralFixedPointUint64:
7755 Text.Op = PrintName("CastIntegralFixedPointUint64");
7756 Text.Args.push_back(printArg<uint32_t>(P, PC));
7757 break;
7758case OP_CastIntegralFixedPointBool:
7759 Text.Op = PrintName("CastIntegralFixedPointBool");
7760 Text.Args.push_back(printArg<uint32_t>(P, PC));
7761 break;
7762#endif
7763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7764bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
7765bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
7766bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
7767bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
7768bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
7769bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
7770bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
7771bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
7772bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
7773#endif
7774#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7775[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
7776#endif
7777#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7778bool
7779#if defined(GET_EVAL_IMPL)
7780EvalEmitter
7781#else
7782ByteCodeEmitter
7783#endif
7784::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
7785 switch (T0) {
7786 case PT_Sint8:
7787 return emitCastIntegralFixedPointSint8(A0, I);
7788 case PT_Uint8:
7789 return emitCastIntegralFixedPointUint8(A0, I);
7790 case PT_Sint16:
7791 return emitCastIntegralFixedPointSint16(A0, I);
7792 case PT_Uint16:
7793 return emitCastIntegralFixedPointUint16(A0, I);
7794 case PT_Sint32:
7795 return emitCastIntegralFixedPointSint32(A0, I);
7796 case PT_Uint32:
7797 return emitCastIntegralFixedPointUint32(A0, I);
7798 case PT_Sint64:
7799 return emitCastIntegralFixedPointSint64(A0, I);
7800 case PT_Uint64:
7801 return emitCastIntegralFixedPointUint64(A0, I);
7802 case PT_Bool:
7803 return emitCastIntegralFixedPointBool(A0, I);
7804 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
7805 }
7806 llvm_unreachable("invalid enum value");
7807}
7808#endif
7809#ifdef GET_LINK_IMPL
7810bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
7811 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
7812}
7813bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
7814 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
7815}
7816bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
7817 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
7818}
7819bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
7820 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
7821}
7822bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
7823 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
7824}
7825bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
7826 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
7827}
7828bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
7829 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
7830}
7831bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
7832 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
7833}
7834bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
7835 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
7836}
7837#endif
7838#ifdef GET_EVAL_IMPL
7839bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
7840 if (!isActive()) return true;
7841 CurrentSource = L;
7842 return CastIntegralFixedPoint<PT_Sint8>(S, OpPC, A0);
7843}
7844bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
7845 if (!isActive()) return true;
7846 CurrentSource = L;
7847 return CastIntegralFixedPoint<PT_Uint8>(S, OpPC, A0);
7848}
7849bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
7850 if (!isActive()) return true;
7851 CurrentSource = L;
7852 return CastIntegralFixedPoint<PT_Sint16>(S, OpPC, A0);
7853}
7854bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
7855 if (!isActive()) return true;
7856 CurrentSource = L;
7857 return CastIntegralFixedPoint<PT_Uint16>(S, OpPC, A0);
7858}
7859bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
7860 if (!isActive()) return true;
7861 CurrentSource = L;
7862 return CastIntegralFixedPoint<PT_Sint32>(S, OpPC, A0);
7863}
7864bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
7865 if (!isActive()) return true;
7866 CurrentSource = L;
7867 return CastIntegralFixedPoint<PT_Uint32>(S, OpPC, A0);
7868}
7869bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
7870 if (!isActive()) return true;
7871 CurrentSource = L;
7872 return CastIntegralFixedPoint<PT_Sint64>(S, OpPC, A0);
7873}
7874bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
7875 if (!isActive()) return true;
7876 CurrentSource = L;
7877 return CastIntegralFixedPoint<PT_Uint64>(S, OpPC, A0);
7878}
7879bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
7880 if (!isActive()) return true;
7881 CurrentSource = L;
7882 return CastIntegralFixedPoint<PT_Bool>(S, OpPC, A0);
7883}
7884#endif
7885#ifdef GET_OPCODE_NAMES
7886OP_CastIntegralFloatingSint8,
7887OP_CastIntegralFloatingUint8,
7888OP_CastIntegralFloatingSint16,
7889OP_CastIntegralFloatingUint16,
7890OP_CastIntegralFloatingSint32,
7891OP_CastIntegralFloatingUint32,
7892OP_CastIntegralFloatingSint64,
7893OP_CastIntegralFloatingUint64,
7894OP_CastIntegralFloatingIntAP,
7895OP_CastIntegralFloatingIntAPS,
7896OP_CastIntegralFloatingBool,
7897OP_CastIntegralFloatingFixedPoint,
7898#endif
7899#ifdef GET_INTERP
7900case OP_CastIntegralFloatingSint8: {
7901 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7902 const auto V1 = ReadArg<uint32_t>(S, PC);
7903 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1))
7904 return false;
7905 continue;
7906}
7907case OP_CastIntegralFloatingUint8: {
7908 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7909 const auto V1 = ReadArg<uint32_t>(S, PC);
7910 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1))
7911 return false;
7912 continue;
7913}
7914case OP_CastIntegralFloatingSint16: {
7915 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7916 const auto V1 = ReadArg<uint32_t>(S, PC);
7917 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1))
7918 return false;
7919 continue;
7920}
7921case OP_CastIntegralFloatingUint16: {
7922 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7923 const auto V1 = ReadArg<uint32_t>(S, PC);
7924 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1))
7925 return false;
7926 continue;
7927}
7928case OP_CastIntegralFloatingSint32: {
7929 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7930 const auto V1 = ReadArg<uint32_t>(S, PC);
7931 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1))
7932 return false;
7933 continue;
7934}
7935case OP_CastIntegralFloatingUint32: {
7936 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7937 const auto V1 = ReadArg<uint32_t>(S, PC);
7938 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1))
7939 return false;
7940 continue;
7941}
7942case OP_CastIntegralFloatingSint64: {
7943 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7944 const auto V1 = ReadArg<uint32_t>(S, PC);
7945 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1))
7946 return false;
7947 continue;
7948}
7949case OP_CastIntegralFloatingUint64: {
7950 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7951 const auto V1 = ReadArg<uint32_t>(S, PC);
7952 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1))
7953 return false;
7954 continue;
7955}
7956case OP_CastIntegralFloatingIntAP: {
7957 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7958 const auto V1 = ReadArg<uint32_t>(S, PC);
7959 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1))
7960 return false;
7961 continue;
7962}
7963case OP_CastIntegralFloatingIntAPS: {
7964 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7965 const auto V1 = ReadArg<uint32_t>(S, PC);
7966 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1))
7967 return false;
7968 continue;
7969}
7970case OP_CastIntegralFloatingBool: {
7971 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7972 const auto V1 = ReadArg<uint32_t>(S, PC);
7973 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1))
7974 return false;
7975 continue;
7976}
7977case OP_CastIntegralFloatingFixedPoint: {
7978 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7979 const auto V1 = ReadArg<uint32_t>(S, PC);
7980 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1))
7981 return false;
7982 continue;
7983}
7984#endif
7985#ifdef GET_DISASM
7986case OP_CastIntegralFloatingSint8:
7987 Text.Op = PrintName("CastIntegralFloatingSint8");
7988 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7989 Text.Args.push_back(printArg<uint32_t>(P, PC));
7990 break;
7991case OP_CastIntegralFloatingUint8:
7992 Text.Op = PrintName("CastIntegralFloatingUint8");
7993 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7994 Text.Args.push_back(printArg<uint32_t>(P, PC));
7995 break;
7996case OP_CastIntegralFloatingSint16:
7997 Text.Op = PrintName("CastIntegralFloatingSint16");
7998 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7999 Text.Args.push_back(printArg<uint32_t>(P, PC));
8000 break;
8001case OP_CastIntegralFloatingUint16:
8002 Text.Op = PrintName("CastIntegralFloatingUint16");
8003 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8004 Text.Args.push_back(printArg<uint32_t>(P, PC));
8005 break;
8006case OP_CastIntegralFloatingSint32:
8007 Text.Op = PrintName("CastIntegralFloatingSint32");
8008 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8009 Text.Args.push_back(printArg<uint32_t>(P, PC));
8010 break;
8011case OP_CastIntegralFloatingUint32:
8012 Text.Op = PrintName("CastIntegralFloatingUint32");
8013 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8014 Text.Args.push_back(printArg<uint32_t>(P, PC));
8015 break;
8016case OP_CastIntegralFloatingSint64:
8017 Text.Op = PrintName("CastIntegralFloatingSint64");
8018 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8019 Text.Args.push_back(printArg<uint32_t>(P, PC));
8020 break;
8021case OP_CastIntegralFloatingUint64:
8022 Text.Op = PrintName("CastIntegralFloatingUint64");
8023 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8024 Text.Args.push_back(printArg<uint32_t>(P, PC));
8025 break;
8026case OP_CastIntegralFloatingIntAP:
8027 Text.Op = PrintName("CastIntegralFloatingIntAP");
8028 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8029 Text.Args.push_back(printArg<uint32_t>(P, PC));
8030 break;
8031case OP_CastIntegralFloatingIntAPS:
8032 Text.Op = PrintName("CastIntegralFloatingIntAPS");
8033 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8034 Text.Args.push_back(printArg<uint32_t>(P, PC));
8035 break;
8036case OP_CastIntegralFloatingBool:
8037 Text.Op = PrintName("CastIntegralFloatingBool");
8038 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8039 Text.Args.push_back(printArg<uint32_t>(P, PC));
8040 break;
8041case OP_CastIntegralFloatingFixedPoint:
8042 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
8043 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8044 Text.Args.push_back(printArg<uint32_t>(P, PC));
8045 break;
8046#endif
8047#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8048bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
8049bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
8050bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
8051bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
8052bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
8053bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
8054bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
8055bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
8056bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
8057bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
8058bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
8059bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
8060#endif
8061#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8062[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
8063#endif
8064#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8065bool
8066#if defined(GET_EVAL_IMPL)
8067EvalEmitter
8068#else
8069ByteCodeEmitter
8070#endif
8071::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
8072 switch (T0) {
8073 case PT_Sint8:
8074 return emitCastIntegralFloatingSint8(A0, A1, I);
8075 case PT_Uint8:
8076 return emitCastIntegralFloatingUint8(A0, A1, I);
8077 case PT_Sint16:
8078 return emitCastIntegralFloatingSint16(A0, A1, I);
8079 case PT_Uint16:
8080 return emitCastIntegralFloatingUint16(A0, A1, I);
8081 case PT_Sint32:
8082 return emitCastIntegralFloatingSint32(A0, A1, I);
8083 case PT_Uint32:
8084 return emitCastIntegralFloatingUint32(A0, A1, I);
8085 case PT_Sint64:
8086 return emitCastIntegralFloatingSint64(A0, A1, I);
8087 case PT_Uint64:
8088 return emitCastIntegralFloatingUint64(A0, A1, I);
8089 case PT_IntAP:
8090 return emitCastIntegralFloatingIntAP(A0, A1, I);
8091 case PT_IntAPS:
8092 return emitCastIntegralFloatingIntAPS(A0, A1, I);
8093 case PT_Bool:
8094 return emitCastIntegralFloatingBool(A0, A1, I);
8095 case PT_FixedPoint:
8096 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
8097 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
8098 }
8099 llvm_unreachable("invalid enum value");
8100}
8101#endif
8102#ifdef GET_LINK_IMPL
8103bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8104 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
8105}
8106bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8107 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
8108}
8109bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8110 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
8111}
8112bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8113 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
8114}
8115bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8116 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
8117}
8118bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8119 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
8120}
8121bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8122 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
8123}
8124bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8125 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
8126}
8127bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8128 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
8129}
8130bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8131 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
8132}
8133bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8134 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
8135}
8136bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8137 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
8138}
8139#endif
8140#ifdef GET_EVAL_IMPL
8141bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8142 if (!isActive()) return true;
8143 CurrentSource = L;
8144 return CastIntegralFloating<PT_Sint8>(S, OpPC, A0, A1);
8145}
8146bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8147 if (!isActive()) return true;
8148 CurrentSource = L;
8149 return CastIntegralFloating<PT_Uint8>(S, OpPC, A0, A1);
8150}
8151bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8152 if (!isActive()) return true;
8153 CurrentSource = L;
8154 return CastIntegralFloating<PT_Sint16>(S, OpPC, A0, A1);
8155}
8156bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8157 if (!isActive()) return true;
8158 CurrentSource = L;
8159 return CastIntegralFloating<PT_Uint16>(S, OpPC, A0, A1);
8160}
8161bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8162 if (!isActive()) return true;
8163 CurrentSource = L;
8164 return CastIntegralFloating<PT_Sint32>(S, OpPC, A0, A1);
8165}
8166bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8167 if (!isActive()) return true;
8168 CurrentSource = L;
8169 return CastIntegralFloating<PT_Uint32>(S, OpPC, A0, A1);
8170}
8171bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8172 if (!isActive()) return true;
8173 CurrentSource = L;
8174 return CastIntegralFloating<PT_Sint64>(S, OpPC, A0, A1);
8175}
8176bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8177 if (!isActive()) return true;
8178 CurrentSource = L;
8179 return CastIntegralFloating<PT_Uint64>(S, OpPC, A0, A1);
8180}
8181bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8182 if (!isActive()) return true;
8183 CurrentSource = L;
8184 return CastIntegralFloating<PT_IntAP>(S, OpPC, A0, A1);
8185}
8186bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8187 if (!isActive()) return true;
8188 CurrentSource = L;
8189 return CastIntegralFloating<PT_IntAPS>(S, OpPC, A0, A1);
8190}
8191bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8192 if (!isActive()) return true;
8193 CurrentSource = L;
8194 return CastIntegralFloating<PT_Bool>(S, OpPC, A0, A1);
8195}
8196bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8197 if (!isActive()) return true;
8198 CurrentSource = L;
8199 return CastIntegralFloating<PT_FixedPoint>(S, OpPC, A0, A1);
8200}
8201#endif
8202#ifdef GET_OPCODE_NAMES
8203OP_CastMemberPtrPtr,
8204#endif
8205#ifdef GET_INTERP
8206case OP_CastMemberPtrPtr: {
8207 if (!CastMemberPtrPtr(S, OpPC))
8208 return false;
8209 continue;
8210}
8211#endif
8212#ifdef GET_DISASM
8213case OP_CastMemberPtrPtr:
8214 Text.Op = PrintName("CastMemberPtrPtr");
8215 break;
8216#endif
8217#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8218bool emitCastMemberPtrPtr(SourceInfo);
8219#endif
8220#ifdef GET_LINK_IMPL
8221bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
8222 return emitOp<>(OP_CastMemberPtrPtr, L);
8223}
8224#endif
8225#ifdef GET_EVAL_IMPL
8226bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
8227 if (!isActive()) return true;
8228 CurrentSource = L;
8229 return CastMemberPtrPtr(S, OpPC);
8230}
8231#endif
8232#ifdef GET_OPCODE_NAMES
8233OP_CastPointerIntegralSint8,
8234OP_CastPointerIntegralUint8,
8235OP_CastPointerIntegralSint16,
8236OP_CastPointerIntegralUint16,
8237OP_CastPointerIntegralSint32,
8238OP_CastPointerIntegralUint32,
8239OP_CastPointerIntegralSint64,
8240OP_CastPointerIntegralUint64,
8241OP_CastPointerIntegralBool,
8242#endif
8243#ifdef GET_INTERP
8244case OP_CastPointerIntegralSint8: {
8245 if (!CastPointerIntegral<PT_Sint8>(S, OpPC))
8246 return false;
8247 continue;
8248}
8249case OP_CastPointerIntegralUint8: {
8250 if (!CastPointerIntegral<PT_Uint8>(S, OpPC))
8251 return false;
8252 continue;
8253}
8254case OP_CastPointerIntegralSint16: {
8255 if (!CastPointerIntegral<PT_Sint16>(S, OpPC))
8256 return false;
8257 continue;
8258}
8259case OP_CastPointerIntegralUint16: {
8260 if (!CastPointerIntegral<PT_Uint16>(S, OpPC))
8261 return false;
8262 continue;
8263}
8264case OP_CastPointerIntegralSint32: {
8265 if (!CastPointerIntegral<PT_Sint32>(S, OpPC))
8266 return false;
8267 continue;
8268}
8269case OP_CastPointerIntegralUint32: {
8270 if (!CastPointerIntegral<PT_Uint32>(S, OpPC))
8271 return false;
8272 continue;
8273}
8274case OP_CastPointerIntegralSint64: {
8275 if (!CastPointerIntegral<PT_Sint64>(S, OpPC))
8276 return false;
8277 continue;
8278}
8279case OP_CastPointerIntegralUint64: {
8280 if (!CastPointerIntegral<PT_Uint64>(S, OpPC))
8281 return false;
8282 continue;
8283}
8284case OP_CastPointerIntegralBool: {
8285 if (!CastPointerIntegral<PT_Bool>(S, OpPC))
8286 return false;
8287 continue;
8288}
8289#endif
8290#ifdef GET_DISASM
8291case OP_CastPointerIntegralSint8:
8292 Text.Op = PrintName("CastPointerIntegralSint8");
8293 break;
8294case OP_CastPointerIntegralUint8:
8295 Text.Op = PrintName("CastPointerIntegralUint8");
8296 break;
8297case OP_CastPointerIntegralSint16:
8298 Text.Op = PrintName("CastPointerIntegralSint16");
8299 break;
8300case OP_CastPointerIntegralUint16:
8301 Text.Op = PrintName("CastPointerIntegralUint16");
8302 break;
8303case OP_CastPointerIntegralSint32:
8304 Text.Op = PrintName("CastPointerIntegralSint32");
8305 break;
8306case OP_CastPointerIntegralUint32:
8307 Text.Op = PrintName("CastPointerIntegralUint32");
8308 break;
8309case OP_CastPointerIntegralSint64:
8310 Text.Op = PrintName("CastPointerIntegralSint64");
8311 break;
8312case OP_CastPointerIntegralUint64:
8313 Text.Op = PrintName("CastPointerIntegralUint64");
8314 break;
8315case OP_CastPointerIntegralBool:
8316 Text.Op = PrintName("CastPointerIntegralBool");
8317 break;
8318#endif
8319#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8320bool emitCastPointerIntegralSint8(SourceInfo);
8321bool emitCastPointerIntegralUint8(SourceInfo);
8322bool emitCastPointerIntegralSint16(SourceInfo);
8323bool emitCastPointerIntegralUint16(SourceInfo);
8324bool emitCastPointerIntegralSint32(SourceInfo);
8325bool emitCastPointerIntegralUint32(SourceInfo);
8326bool emitCastPointerIntegralSint64(SourceInfo);
8327bool emitCastPointerIntegralUint64(SourceInfo);
8328bool emitCastPointerIntegralBool(SourceInfo);
8329#endif
8330#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8331[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
8332#endif
8333#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8334bool
8335#if defined(GET_EVAL_IMPL)
8336EvalEmitter
8337#else
8338ByteCodeEmitter
8339#endif
8340::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
8341 switch (T0) {
8342 case PT_Sint8:
8343 return emitCastPointerIntegralSint8(I);
8344 case PT_Uint8:
8345 return emitCastPointerIntegralUint8(I);
8346 case PT_Sint16:
8347 return emitCastPointerIntegralSint16(I);
8348 case PT_Uint16:
8349 return emitCastPointerIntegralUint16(I);
8350 case PT_Sint32:
8351 return emitCastPointerIntegralSint32(I);
8352 case PT_Uint32:
8353 return emitCastPointerIntegralUint32(I);
8354 case PT_Sint64:
8355 return emitCastPointerIntegralSint64(I);
8356 case PT_Uint64:
8357 return emitCastPointerIntegralUint64(I);
8358 case PT_Bool:
8359 return emitCastPointerIntegralBool(I);
8360 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
8361 }
8362 llvm_unreachable("invalid enum value");
8363}
8364#endif
8365#ifdef GET_LINK_IMPL
8366bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
8367 return emitOp<>(OP_CastPointerIntegralSint8, L);
8368}
8369bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
8370 return emitOp<>(OP_CastPointerIntegralUint8, L);
8371}
8372bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
8373 return emitOp<>(OP_CastPointerIntegralSint16, L);
8374}
8375bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
8376 return emitOp<>(OP_CastPointerIntegralUint16, L);
8377}
8378bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
8379 return emitOp<>(OP_CastPointerIntegralSint32, L);
8380}
8381bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
8382 return emitOp<>(OP_CastPointerIntegralUint32, L);
8383}
8384bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
8385 return emitOp<>(OP_CastPointerIntegralSint64, L);
8386}
8387bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
8388 return emitOp<>(OP_CastPointerIntegralUint64, L);
8389}
8390bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
8391 return emitOp<>(OP_CastPointerIntegralBool, L);
8392}
8393#endif
8394#ifdef GET_EVAL_IMPL
8395bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
8396 if (!isActive()) return true;
8397 CurrentSource = L;
8398 return CastPointerIntegral<PT_Sint8>(S, OpPC);
8399}
8400bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
8401 if (!isActive()) return true;
8402 CurrentSource = L;
8403 return CastPointerIntegral<PT_Uint8>(S, OpPC);
8404}
8405bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
8406 if (!isActive()) return true;
8407 CurrentSource = L;
8408 return CastPointerIntegral<PT_Sint16>(S, OpPC);
8409}
8410bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
8411 if (!isActive()) return true;
8412 CurrentSource = L;
8413 return CastPointerIntegral<PT_Uint16>(S, OpPC);
8414}
8415bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
8416 if (!isActive()) return true;
8417 CurrentSource = L;
8418 return CastPointerIntegral<PT_Sint32>(S, OpPC);
8419}
8420bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
8421 if (!isActive()) return true;
8422 CurrentSource = L;
8423 return CastPointerIntegral<PT_Uint32>(S, OpPC);
8424}
8425bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
8426 if (!isActive()) return true;
8427 CurrentSource = L;
8428 return CastPointerIntegral<PT_Sint64>(S, OpPC);
8429}
8430bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
8431 if (!isActive()) return true;
8432 CurrentSource = L;
8433 return CastPointerIntegral<PT_Uint64>(S, OpPC);
8434}
8435bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
8436 if (!isActive()) return true;
8437 CurrentSource = L;
8438 return CastPointerIntegral<PT_Bool>(S, OpPC);
8439}
8440#endif
8441#ifdef GET_OPCODE_NAMES
8442OP_CastPointerIntegralAP,
8443#endif
8444#ifdef GET_INTERP
8445case OP_CastPointerIntegralAP: {
8446 const auto V0 = ReadArg<uint32_t>(S, PC);
8447 if (!CastPointerIntegralAP(S, OpPC, V0))
8448 return false;
8449 continue;
8450}
8451#endif
8452#ifdef GET_DISASM
8453case OP_CastPointerIntegralAP:
8454 Text.Op = PrintName("CastPointerIntegralAP");
8455 Text.Args.push_back(printArg<uint32_t>(P, PC));
8456 break;
8457#endif
8458#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8459bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
8460#endif
8461#ifdef GET_LINK_IMPL
8462bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
8463 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
8464}
8465#endif
8466#ifdef GET_EVAL_IMPL
8467bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
8468 if (!isActive()) return true;
8469 CurrentSource = L;
8470 return CastPointerIntegralAP(S, OpPC, A0);
8471}
8472#endif
8473#ifdef GET_OPCODE_NAMES
8474OP_CastPointerIntegralAPS,
8475#endif
8476#ifdef GET_INTERP
8477case OP_CastPointerIntegralAPS: {
8478 const auto V0 = ReadArg<uint32_t>(S, PC);
8479 if (!CastPointerIntegralAPS(S, OpPC, V0))
8480 return false;
8481 continue;
8482}
8483#endif
8484#ifdef GET_DISASM
8485case OP_CastPointerIntegralAPS:
8486 Text.Op = PrintName("CastPointerIntegralAPS");
8487 Text.Args.push_back(printArg<uint32_t>(P, PC));
8488 break;
8489#endif
8490#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8491bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
8492#endif
8493#ifdef GET_LINK_IMPL
8494bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
8495 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
8496}
8497#endif
8498#ifdef GET_EVAL_IMPL
8499bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
8500 if (!isActive()) return true;
8501 CurrentSource = L;
8502 return CastPointerIntegralAPS(S, OpPC, A0);
8503}
8504#endif
8505#ifdef GET_OPCODE_NAMES
8506OP_CheckAllocations,
8507#endif
8508#ifdef GET_INTERP
8509case OP_CheckAllocations: {
8510 if (!CheckAllocations(S, OpPC))
8511 return false;
8512 continue;
8513}
8514#endif
8515#ifdef GET_DISASM
8516case OP_CheckAllocations:
8517 Text.Op = PrintName("CheckAllocations");
8518 break;
8519#endif
8520#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8521bool emitCheckAllocations(SourceInfo);
8522#endif
8523#ifdef GET_LINK_IMPL
8524bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
8525 return emitOp<>(OP_CheckAllocations, L);
8526}
8527#endif
8528#ifdef GET_EVAL_IMPL
8529bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
8530 if (!isActive()) return true;
8531 CurrentSource = L;
8532 return CheckAllocations(S, OpPC);
8533}
8534#endif
8535#ifdef GET_OPCODE_NAMES
8536OP_CheckArraySize,
8537#endif
8538#ifdef GET_INTERP
8539case OP_CheckArraySize: {
8540 const auto V0 = ReadArg<uint64_t>(S, PC);
8541 if (!CheckArraySize(S, OpPC, V0))
8542 return false;
8543 continue;
8544}
8545#endif
8546#ifdef GET_DISASM
8547case OP_CheckArraySize:
8548 Text.Op = PrintName("CheckArraySize");
8549 Text.Args.push_back(printArg<uint64_t>(P, PC));
8550 break;
8551#endif
8552#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8553bool emitCheckArraySize( uint64_t , SourceInfo);
8554#endif
8555#ifdef GET_LINK_IMPL
8556bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
8557 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
8558}
8559#endif
8560#ifdef GET_EVAL_IMPL
8561bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
8562 if (!isActive()) return true;
8563 CurrentSource = L;
8564 return CheckArraySize(S, OpPC, A0);
8565}
8566#endif
8567#ifdef GET_OPCODE_NAMES
8568OP_CheckBitCast,
8569#endif
8570#ifdef GET_INTERP
8571case OP_CheckBitCast: {
8572 const auto V0 = ReadArg<const Type *>(S, PC);
8573 const auto V1 = ReadArg<bool>(S, PC);
8574 if (!CheckBitCast(S, OpPC, V0, V1))
8575 return false;
8576 continue;
8577}
8578#endif
8579#ifdef GET_DISASM
8580case OP_CheckBitCast:
8581 Text.Op = PrintName("CheckBitCast");
8582 Text.Args.push_back(printArg<const Type *>(P, PC));
8583 Text.Args.push_back(printArg<bool>(P, PC));
8584 break;
8585#endif
8586#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8587bool emitCheckBitCast( const Type * , bool , SourceInfo);
8588#endif
8589#ifdef GET_LINK_IMPL
8590bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
8591 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
8592}
8593#endif
8594#ifdef GET_EVAL_IMPL
8595bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
8596 if (!isActive()) return true;
8597 CurrentSource = L;
8598 return CheckBitCast(S, OpPC, A0, A1);
8599}
8600#endif
8601#ifdef GET_OPCODE_NAMES
8602OP_CheckDecl,
8603#endif
8604#ifdef GET_INTERP
8605case OP_CheckDecl: {
8606 const auto V0 = ReadArg<const VarDecl*>(S, PC);
8607 if (!CheckDecl(S, OpPC, V0))
8608 return false;
8609 continue;
8610}
8611#endif
8612#ifdef GET_DISASM
8613case OP_CheckDecl:
8614 Text.Op = PrintName("CheckDecl");
8615 Text.Args.push_back(printArg<const VarDecl*>(P, PC));
8616 break;
8617#endif
8618#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8619bool emitCheckDecl( const VarDecl* , SourceInfo);
8620#endif
8621#ifdef GET_LINK_IMPL
8622bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
8623 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
8624}
8625#endif
8626#ifdef GET_EVAL_IMPL
8627bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
8628 if (!isActive()) return true;
8629 CurrentSource = L;
8630 return CheckDecl(S, OpPC, A0);
8631}
8632#endif
8633#ifdef GET_OPCODE_NAMES
8634OP_CheckDestruction,
8635#endif
8636#ifdef GET_INTERP
8637case OP_CheckDestruction: {
8638 if (!CheckDestruction(S, OpPC))
8639 return false;
8640 continue;
8641}
8642#endif
8643#ifdef GET_DISASM
8644case OP_CheckDestruction:
8645 Text.Op = PrintName("CheckDestruction");
8646 break;
8647#endif
8648#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8649bool emitCheckDestruction(SourceInfo);
8650#endif
8651#ifdef GET_LINK_IMPL
8652bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
8653 return emitOp<>(OP_CheckDestruction, L);
8654}
8655#endif
8656#ifdef GET_EVAL_IMPL
8657bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
8658 if (!isActive()) return true;
8659 CurrentSource = L;
8660 return CheckDestruction(S, OpPC);
8661}
8662#endif
8663#ifdef GET_OPCODE_NAMES
8664OP_CheckEnumValueSint8,
8665OP_CheckEnumValueUint8,
8666OP_CheckEnumValueSint16,
8667OP_CheckEnumValueUint16,
8668OP_CheckEnumValueSint32,
8669OP_CheckEnumValueUint32,
8670OP_CheckEnumValueSint64,
8671OP_CheckEnumValueUint64,
8672OP_CheckEnumValueIntAP,
8673OP_CheckEnumValueIntAPS,
8674OP_CheckEnumValueBool,
8675#endif
8676#ifdef GET_INTERP
8677case OP_CheckEnumValueSint8: {
8678 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8679 if (!CheckEnumValue<PT_Sint8>(S, OpPC, V0))
8680 return false;
8681 continue;
8682}
8683case OP_CheckEnumValueUint8: {
8684 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8685 if (!CheckEnumValue<PT_Uint8>(S, OpPC, V0))
8686 return false;
8687 continue;
8688}
8689case OP_CheckEnumValueSint16: {
8690 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8691 if (!CheckEnumValue<PT_Sint16>(S, OpPC, V0))
8692 return false;
8693 continue;
8694}
8695case OP_CheckEnumValueUint16: {
8696 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8697 if (!CheckEnumValue<PT_Uint16>(S, OpPC, V0))
8698 return false;
8699 continue;
8700}
8701case OP_CheckEnumValueSint32: {
8702 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8703 if (!CheckEnumValue<PT_Sint32>(S, OpPC, V0))
8704 return false;
8705 continue;
8706}
8707case OP_CheckEnumValueUint32: {
8708 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8709 if (!CheckEnumValue<PT_Uint32>(S, OpPC, V0))
8710 return false;
8711 continue;
8712}
8713case OP_CheckEnumValueSint64: {
8714 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8715 if (!CheckEnumValue<PT_Sint64>(S, OpPC, V0))
8716 return false;
8717 continue;
8718}
8719case OP_CheckEnumValueUint64: {
8720 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8721 if (!CheckEnumValue<PT_Uint64>(S, OpPC, V0))
8722 return false;
8723 continue;
8724}
8725case OP_CheckEnumValueIntAP: {
8726 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8727 if (!CheckEnumValue<PT_IntAP>(S, OpPC, V0))
8728 return false;
8729 continue;
8730}
8731case OP_CheckEnumValueIntAPS: {
8732 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8733 if (!CheckEnumValue<PT_IntAPS>(S, OpPC, V0))
8734 return false;
8735 continue;
8736}
8737case OP_CheckEnumValueBool: {
8738 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8739 if (!CheckEnumValue<PT_Bool>(S, OpPC, V0))
8740 return false;
8741 continue;
8742}
8743#endif
8744#ifdef GET_DISASM
8745case OP_CheckEnumValueSint8:
8746 Text.Op = PrintName("CheckEnumValueSint8");
8747 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8748 break;
8749case OP_CheckEnumValueUint8:
8750 Text.Op = PrintName("CheckEnumValueUint8");
8751 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8752 break;
8753case OP_CheckEnumValueSint16:
8754 Text.Op = PrintName("CheckEnumValueSint16");
8755 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8756 break;
8757case OP_CheckEnumValueUint16:
8758 Text.Op = PrintName("CheckEnumValueUint16");
8759 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8760 break;
8761case OP_CheckEnumValueSint32:
8762 Text.Op = PrintName("CheckEnumValueSint32");
8763 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8764 break;
8765case OP_CheckEnumValueUint32:
8766 Text.Op = PrintName("CheckEnumValueUint32");
8767 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8768 break;
8769case OP_CheckEnumValueSint64:
8770 Text.Op = PrintName("CheckEnumValueSint64");
8771 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8772 break;
8773case OP_CheckEnumValueUint64:
8774 Text.Op = PrintName("CheckEnumValueUint64");
8775 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8776 break;
8777case OP_CheckEnumValueIntAP:
8778 Text.Op = PrintName("CheckEnumValueIntAP");
8779 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8780 break;
8781case OP_CheckEnumValueIntAPS:
8782 Text.Op = PrintName("CheckEnumValueIntAPS");
8783 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8784 break;
8785case OP_CheckEnumValueBool:
8786 Text.Op = PrintName("CheckEnumValueBool");
8787 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8788 break;
8789#endif
8790#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8791bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
8792bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
8793bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
8794bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
8795bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
8796bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
8797bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
8798bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
8799bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
8800bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
8801bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
8802#endif
8803#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8804[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
8805#endif
8806#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8807bool
8808#if defined(GET_EVAL_IMPL)
8809EvalEmitter
8810#else
8811ByteCodeEmitter
8812#endif
8813::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
8814 switch (T0) {
8815 case PT_Sint8:
8816 return emitCheckEnumValueSint8(A0, I);
8817 case PT_Uint8:
8818 return emitCheckEnumValueUint8(A0, I);
8819 case PT_Sint16:
8820 return emitCheckEnumValueSint16(A0, I);
8821 case PT_Uint16:
8822 return emitCheckEnumValueUint16(A0, I);
8823 case PT_Sint32:
8824 return emitCheckEnumValueSint32(A0, I);
8825 case PT_Uint32:
8826 return emitCheckEnumValueUint32(A0, I);
8827 case PT_Sint64:
8828 return emitCheckEnumValueSint64(A0, I);
8829 case PT_Uint64:
8830 return emitCheckEnumValueUint64(A0, I);
8831 case PT_IntAP:
8832 return emitCheckEnumValueIntAP(A0, I);
8833 case PT_IntAPS:
8834 return emitCheckEnumValueIntAPS(A0, I);
8835 case PT_Bool:
8836 return emitCheckEnumValueBool(A0, I);
8837 default: llvm_unreachable("invalid type: emitCheckEnumValue");
8838 }
8839 llvm_unreachable("invalid enum value");
8840}
8841#endif
8842#ifdef GET_LINK_IMPL
8843bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
8844 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
8845}
8846bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
8847 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
8848}
8849bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
8850 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
8851}
8852bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
8853 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
8854}
8855bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
8856 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
8857}
8858bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
8859 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
8860}
8861bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
8862 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
8863}
8864bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
8865 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
8866}
8867bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
8868 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
8869}
8870bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
8871 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
8872}
8873bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
8874 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
8875}
8876#endif
8877#ifdef GET_EVAL_IMPL
8878bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
8879 if (!isActive()) return true;
8880 CurrentSource = L;
8881 return CheckEnumValue<PT_Sint8>(S, OpPC, A0);
8882}
8883bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
8884 if (!isActive()) return true;
8885 CurrentSource = L;
8886 return CheckEnumValue<PT_Uint8>(S, OpPC, A0);
8887}
8888bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
8889 if (!isActive()) return true;
8890 CurrentSource = L;
8891 return CheckEnumValue<PT_Sint16>(S, OpPC, A0);
8892}
8893bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
8894 if (!isActive()) return true;
8895 CurrentSource = L;
8896 return CheckEnumValue<PT_Uint16>(S, OpPC, A0);
8897}
8898bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
8899 if (!isActive()) return true;
8900 CurrentSource = L;
8901 return CheckEnumValue<PT_Sint32>(S, OpPC, A0);
8902}
8903bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
8904 if (!isActive()) return true;
8905 CurrentSource = L;
8906 return CheckEnumValue<PT_Uint32>(S, OpPC, A0);
8907}
8908bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
8909 if (!isActive()) return true;
8910 CurrentSource = L;
8911 return CheckEnumValue<PT_Sint64>(S, OpPC, A0);
8912}
8913bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
8914 if (!isActive()) return true;
8915 CurrentSource = L;
8916 return CheckEnumValue<PT_Uint64>(S, OpPC, A0);
8917}
8918bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
8919 if (!isActive()) return true;
8920 CurrentSource = L;
8921 return CheckEnumValue<PT_IntAP>(S, OpPC, A0);
8922}
8923bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
8924 if (!isActive()) return true;
8925 CurrentSource = L;
8926 return CheckEnumValue<PT_IntAPS>(S, OpPC, A0);
8927}
8928bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
8929 if (!isActive()) return true;
8930 CurrentSource = L;
8931 return CheckEnumValue<PT_Bool>(S, OpPC, A0);
8932}
8933#endif
8934#ifdef GET_OPCODE_NAMES
8935OP_CheckFunctionDecl,
8936#endif
8937#ifdef GET_INTERP
8938case OP_CheckFunctionDecl: {
8939 const auto V0 = ReadArg<const FunctionDecl *>(S, PC);
8940 if (!CheckFunctionDecl(S, OpPC, V0))
8941 return false;
8942 continue;
8943}
8944#endif
8945#ifdef GET_DISASM
8946case OP_CheckFunctionDecl:
8947 Text.Op = PrintName("CheckFunctionDecl");
8948 Text.Args.push_back(printArg<const FunctionDecl *>(P, PC));
8949 break;
8950#endif
8951#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8952bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
8953#endif
8954#ifdef GET_LINK_IMPL
8955bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
8956 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
8957}
8958#endif
8959#ifdef GET_EVAL_IMPL
8960bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
8961 if (!isActive()) return true;
8962 CurrentSource = L;
8963 return CheckFunctionDecl(S, OpPC, A0);
8964}
8965#endif
8966#ifdef GET_OPCODE_NAMES
8967OP_CheckLiteralType,
8968#endif
8969#ifdef GET_INTERP
8970case OP_CheckLiteralType: {
8971 const auto V0 = ReadArg<const Type *>(S, PC);
8972 if (!CheckLiteralType(S, OpPC, V0))
8973 return false;
8974 continue;
8975}
8976#endif
8977#ifdef GET_DISASM
8978case OP_CheckLiteralType:
8979 Text.Op = PrintName("CheckLiteralType");
8980 Text.Args.push_back(printArg<const Type *>(P, PC));
8981 break;
8982#endif
8983#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8984bool emitCheckLiteralType( const Type * , SourceInfo);
8985#endif
8986#ifdef GET_LINK_IMPL
8987bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
8988 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
8989}
8990#endif
8991#ifdef GET_EVAL_IMPL
8992bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
8993 if (!isActive()) return true;
8994 CurrentSource = L;
8995 return CheckLiteralType(S, OpPC, A0);
8996}
8997#endif
8998#ifdef GET_OPCODE_NAMES
8999OP_CheckNewTypeMismatch,
9000#endif
9001#ifdef GET_INTERP
9002case OP_CheckNewTypeMismatch: {
9003 const auto V0 = ReadArg<const Expr *>(S, PC);
9004 if (!CheckNewTypeMismatch(S, OpPC, V0))
9005 return false;
9006 continue;
9007}
9008#endif
9009#ifdef GET_DISASM
9010case OP_CheckNewTypeMismatch:
9011 Text.Op = PrintName("CheckNewTypeMismatch");
9012 Text.Args.push_back(printArg<const Expr *>(P, PC));
9013 break;
9014#endif
9015#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9016bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
9017#endif
9018#ifdef GET_LINK_IMPL
9019bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
9020 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
9021}
9022#endif
9023#ifdef GET_EVAL_IMPL
9024bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
9025 if (!isActive()) return true;
9026 CurrentSource = L;
9027 return CheckNewTypeMismatch(S, OpPC, A0);
9028}
9029#endif
9030#ifdef GET_OPCODE_NAMES
9031OP_CheckNewTypeMismatchArraySint8,
9032OP_CheckNewTypeMismatchArrayUint8,
9033OP_CheckNewTypeMismatchArraySint16,
9034OP_CheckNewTypeMismatchArrayUint16,
9035OP_CheckNewTypeMismatchArraySint32,
9036OP_CheckNewTypeMismatchArrayUint32,
9037OP_CheckNewTypeMismatchArraySint64,
9038OP_CheckNewTypeMismatchArrayUint64,
9039OP_CheckNewTypeMismatchArrayIntAP,
9040OP_CheckNewTypeMismatchArrayIntAPS,
9041#endif
9042#ifdef GET_INTERP
9043case OP_CheckNewTypeMismatchArraySint8: {
9044 const auto V0 = ReadArg<const Expr *>(S, PC);
9045 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0))
9046 return false;
9047 continue;
9048}
9049case OP_CheckNewTypeMismatchArrayUint8: {
9050 const auto V0 = ReadArg<const Expr *>(S, PC);
9051 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0))
9052 return false;
9053 continue;
9054}
9055case OP_CheckNewTypeMismatchArraySint16: {
9056 const auto V0 = ReadArg<const Expr *>(S, PC);
9057 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0))
9058 return false;
9059 continue;
9060}
9061case OP_CheckNewTypeMismatchArrayUint16: {
9062 const auto V0 = ReadArg<const Expr *>(S, PC);
9063 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0))
9064 return false;
9065 continue;
9066}
9067case OP_CheckNewTypeMismatchArraySint32: {
9068 const auto V0 = ReadArg<const Expr *>(S, PC);
9069 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0))
9070 return false;
9071 continue;
9072}
9073case OP_CheckNewTypeMismatchArrayUint32: {
9074 const auto V0 = ReadArg<const Expr *>(S, PC);
9075 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0))
9076 return false;
9077 continue;
9078}
9079case OP_CheckNewTypeMismatchArraySint64: {
9080 const auto V0 = ReadArg<const Expr *>(S, PC);
9081 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0))
9082 return false;
9083 continue;
9084}
9085case OP_CheckNewTypeMismatchArrayUint64: {
9086 const auto V0 = ReadArg<const Expr *>(S, PC);
9087 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0))
9088 return false;
9089 continue;
9090}
9091case OP_CheckNewTypeMismatchArrayIntAP: {
9092 const auto V0 = ReadArg<const Expr *>(S, PC);
9093 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0))
9094 return false;
9095 continue;
9096}
9097case OP_CheckNewTypeMismatchArrayIntAPS: {
9098 const auto V0 = ReadArg<const Expr *>(S, PC);
9099 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0))
9100 return false;
9101 continue;
9102}
9103#endif
9104#ifdef GET_DISASM
9105case OP_CheckNewTypeMismatchArraySint8:
9106 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
9107 Text.Args.push_back(printArg<const Expr *>(P, PC));
9108 break;
9109case OP_CheckNewTypeMismatchArrayUint8:
9110 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
9111 Text.Args.push_back(printArg<const Expr *>(P, PC));
9112 break;
9113case OP_CheckNewTypeMismatchArraySint16:
9114 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
9115 Text.Args.push_back(printArg<const Expr *>(P, PC));
9116 break;
9117case OP_CheckNewTypeMismatchArrayUint16:
9118 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
9119 Text.Args.push_back(printArg<const Expr *>(P, PC));
9120 break;
9121case OP_CheckNewTypeMismatchArraySint32:
9122 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
9123 Text.Args.push_back(printArg<const Expr *>(P, PC));
9124 break;
9125case OP_CheckNewTypeMismatchArrayUint32:
9126 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
9127 Text.Args.push_back(printArg<const Expr *>(P, PC));
9128 break;
9129case OP_CheckNewTypeMismatchArraySint64:
9130 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
9131 Text.Args.push_back(printArg<const Expr *>(P, PC));
9132 break;
9133case OP_CheckNewTypeMismatchArrayUint64:
9134 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
9135 Text.Args.push_back(printArg<const Expr *>(P, PC));
9136 break;
9137case OP_CheckNewTypeMismatchArrayIntAP:
9138 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
9139 Text.Args.push_back(printArg<const Expr *>(P, PC));
9140 break;
9141case OP_CheckNewTypeMismatchArrayIntAPS:
9142 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
9143 Text.Args.push_back(printArg<const Expr *>(P, PC));
9144 break;
9145#endif
9146#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9147bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
9148bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
9149bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
9150bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
9151bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
9152bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
9153bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
9154bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
9155bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
9156bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
9157#endif
9158#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9159[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
9160#endif
9161#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9162bool
9163#if defined(GET_EVAL_IMPL)
9164EvalEmitter
9165#else
9166ByteCodeEmitter
9167#endif
9168::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
9169 switch (T0) {
9170 case PT_Sint8:
9171 return emitCheckNewTypeMismatchArraySint8(A0, I);
9172 case PT_Uint8:
9173 return emitCheckNewTypeMismatchArrayUint8(A0, I);
9174 case PT_Sint16:
9175 return emitCheckNewTypeMismatchArraySint16(A0, I);
9176 case PT_Uint16:
9177 return emitCheckNewTypeMismatchArrayUint16(A0, I);
9178 case PT_Sint32:
9179 return emitCheckNewTypeMismatchArraySint32(A0, I);
9180 case PT_Uint32:
9181 return emitCheckNewTypeMismatchArrayUint32(A0, I);
9182 case PT_Sint64:
9183 return emitCheckNewTypeMismatchArraySint64(A0, I);
9184 case PT_Uint64:
9185 return emitCheckNewTypeMismatchArrayUint64(A0, I);
9186 case PT_IntAP:
9187 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
9188 case PT_IntAPS:
9189 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
9190 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
9191 }
9192 llvm_unreachable("invalid enum value");
9193}
9194#endif
9195#ifdef GET_LINK_IMPL
9196bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
9197 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
9198}
9199bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
9200 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
9201}
9202bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
9203 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
9204}
9205bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
9206 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
9207}
9208bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
9209 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
9210}
9211bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
9212 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
9213}
9214bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
9215 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
9216}
9217bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
9218 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
9219}
9220bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
9221 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
9222}
9223bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
9224 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
9225}
9226#endif
9227#ifdef GET_EVAL_IMPL
9228bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
9229 if (!isActive()) return true;
9230 CurrentSource = L;
9231 return CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, A0);
9232}
9233bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
9234 if (!isActive()) return true;
9235 CurrentSource = L;
9236 return CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, A0);
9237}
9238bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
9239 if (!isActive()) return true;
9240 CurrentSource = L;
9241 return CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, A0);
9242}
9243bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
9244 if (!isActive()) return true;
9245 CurrentSource = L;
9246 return CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, A0);
9247}
9248bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
9249 if (!isActive()) return true;
9250 CurrentSource = L;
9251 return CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, A0);
9252}
9253bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
9254 if (!isActive()) return true;
9255 CurrentSource = L;
9256 return CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, A0);
9257}
9258bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
9259 if (!isActive()) return true;
9260 CurrentSource = L;
9261 return CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, A0);
9262}
9263bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
9264 if (!isActive()) return true;
9265 CurrentSource = L;
9266 return CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, A0);
9267}
9268bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
9269 if (!isActive()) return true;
9270 CurrentSource = L;
9271 return CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, A0);
9272}
9273bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
9274 if (!isActive()) return true;
9275 CurrentSource = L;
9276 return CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, A0);
9277}
9278#endif
9279#ifdef GET_OPCODE_NAMES
9280OP_CheckNonNullArgPtr,
9281OP_CheckNonNullArgMemberPtr,
9282#endif
9283#ifdef GET_INTERP
9284case OP_CheckNonNullArgPtr: {
9285 if (!CheckNonNullArg<PT_Ptr>(S, OpPC))
9286 return false;
9287 continue;
9288}
9289case OP_CheckNonNullArgMemberPtr: {
9290 if (!CheckNonNullArg<PT_MemberPtr>(S, OpPC))
9291 return false;
9292 continue;
9293}
9294#endif
9295#ifdef GET_DISASM
9296case OP_CheckNonNullArgPtr:
9297 Text.Op = PrintName("CheckNonNullArgPtr");
9298 break;
9299case OP_CheckNonNullArgMemberPtr:
9300 Text.Op = PrintName("CheckNonNullArgMemberPtr");
9301 break;
9302#endif
9303#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9304bool emitCheckNonNullArgPtr(SourceInfo);
9305bool emitCheckNonNullArgMemberPtr(SourceInfo);
9306#endif
9307#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9308[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
9309#endif
9310#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9311bool
9312#if defined(GET_EVAL_IMPL)
9313EvalEmitter
9314#else
9315ByteCodeEmitter
9316#endif
9317::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
9318 switch (T0) {
9319 case PT_Ptr:
9320 return emitCheckNonNullArgPtr(I);
9321 case PT_MemberPtr:
9322 return emitCheckNonNullArgMemberPtr(I);
9323 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
9324 }
9325 llvm_unreachable("invalid enum value");
9326}
9327#endif
9328#ifdef GET_LINK_IMPL
9329bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
9330 return emitOp<>(OP_CheckNonNullArgPtr, L);
9331}
9332bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
9333 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
9334}
9335#endif
9336#ifdef GET_EVAL_IMPL
9337bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
9338 if (!isActive()) return true;
9339 CurrentSource = L;
9340 return CheckNonNullArg<PT_Ptr>(S, OpPC);
9341}
9342bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
9343 if (!isActive()) return true;
9344 CurrentSource = L;
9345 return CheckNonNullArg<PT_MemberPtr>(S, OpPC);
9346}
9347#endif
9348#ifdef GET_OPCODE_NAMES
9349OP_CheckNull,
9350#endif
9351#ifdef GET_INTERP
9352case OP_CheckNull: {
9353 if (!CheckNull(S, OpPC))
9354 return false;
9355 continue;
9356}
9357#endif
9358#ifdef GET_DISASM
9359case OP_CheckNull:
9360 Text.Op = PrintName("CheckNull");
9361 break;
9362#endif
9363#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9364bool emitCheckNull(SourceInfo);
9365#endif
9366#ifdef GET_LINK_IMPL
9367bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
9368 return emitOp<>(OP_CheckNull, L);
9369}
9370#endif
9371#ifdef GET_EVAL_IMPL
9372bool EvalEmitter::emitCheckNull(SourceInfo L) {
9373 if (!isActive()) return true;
9374 CurrentSource = L;
9375 return CheckNull(S, OpPC);
9376}
9377#endif
9378#ifdef GET_OPCODE_NAMES
9379OP_CheckPseudoDtor,
9380#endif
9381#ifdef GET_INTERP
9382case OP_CheckPseudoDtor: {
9383 if (!CheckPseudoDtor(S, OpPC))
9384 return false;
9385 continue;
9386}
9387#endif
9388#ifdef GET_DISASM
9389case OP_CheckPseudoDtor:
9390 Text.Op = PrintName("CheckPseudoDtor");
9391 break;
9392#endif
9393#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9394bool emitCheckPseudoDtor(SourceInfo);
9395#endif
9396#ifdef GET_LINK_IMPL
9397bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
9398 return emitOp<>(OP_CheckPseudoDtor, L);
9399}
9400#endif
9401#ifdef GET_EVAL_IMPL
9402bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
9403 if (!isActive()) return true;
9404 CurrentSource = L;
9405 return CheckPseudoDtor(S, OpPC);
9406}
9407#endif
9408#ifdef GET_OPCODE_NAMES
9409OP_CompSint8,
9410OP_CompUint8,
9411OP_CompSint16,
9412OP_CompUint16,
9413OP_CompSint32,
9414OP_CompUint32,
9415OP_CompSint64,
9416OP_CompUint64,
9417OP_CompIntAP,
9418OP_CompIntAPS,
9419#endif
9420#ifdef GET_INTERP
9421case OP_CompSint8: {
9422 if (!Comp<PT_Sint8>(S, OpPC))
9423 return false;
9424 continue;
9425}
9426case OP_CompUint8: {
9427 if (!Comp<PT_Uint8>(S, OpPC))
9428 return false;
9429 continue;
9430}
9431case OP_CompSint16: {
9432 if (!Comp<PT_Sint16>(S, OpPC))
9433 return false;
9434 continue;
9435}
9436case OP_CompUint16: {
9437 if (!Comp<PT_Uint16>(S, OpPC))
9438 return false;
9439 continue;
9440}
9441case OP_CompSint32: {
9442 if (!Comp<PT_Sint32>(S, OpPC))
9443 return false;
9444 continue;
9445}
9446case OP_CompUint32: {
9447 if (!Comp<PT_Uint32>(S, OpPC))
9448 return false;
9449 continue;
9450}
9451case OP_CompSint64: {
9452 if (!Comp<PT_Sint64>(S, OpPC))
9453 return false;
9454 continue;
9455}
9456case OP_CompUint64: {
9457 if (!Comp<PT_Uint64>(S, OpPC))
9458 return false;
9459 continue;
9460}
9461case OP_CompIntAP: {
9462 if (!Comp<PT_IntAP>(S, OpPC))
9463 return false;
9464 continue;
9465}
9466case OP_CompIntAPS: {
9467 if (!Comp<PT_IntAPS>(S, OpPC))
9468 return false;
9469 continue;
9470}
9471#endif
9472#ifdef GET_DISASM
9473case OP_CompSint8:
9474 Text.Op = PrintName("CompSint8");
9475 break;
9476case OP_CompUint8:
9477 Text.Op = PrintName("CompUint8");
9478 break;
9479case OP_CompSint16:
9480 Text.Op = PrintName("CompSint16");
9481 break;
9482case OP_CompUint16:
9483 Text.Op = PrintName("CompUint16");
9484 break;
9485case OP_CompSint32:
9486 Text.Op = PrintName("CompSint32");
9487 break;
9488case OP_CompUint32:
9489 Text.Op = PrintName("CompUint32");
9490 break;
9491case OP_CompSint64:
9492 Text.Op = PrintName("CompSint64");
9493 break;
9494case OP_CompUint64:
9495 Text.Op = PrintName("CompUint64");
9496 break;
9497case OP_CompIntAP:
9498 Text.Op = PrintName("CompIntAP");
9499 break;
9500case OP_CompIntAPS:
9501 Text.Op = PrintName("CompIntAPS");
9502 break;
9503#endif
9504#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9505bool emitCompSint8(SourceInfo);
9506bool emitCompUint8(SourceInfo);
9507bool emitCompSint16(SourceInfo);
9508bool emitCompUint16(SourceInfo);
9509bool emitCompSint32(SourceInfo);
9510bool emitCompUint32(SourceInfo);
9511bool emitCompSint64(SourceInfo);
9512bool emitCompUint64(SourceInfo);
9513bool emitCompIntAP(SourceInfo);
9514bool emitCompIntAPS(SourceInfo);
9515#endif
9516#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9517[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
9518#endif
9519#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9520bool
9521#if defined(GET_EVAL_IMPL)
9522EvalEmitter
9523#else
9524ByteCodeEmitter
9525#endif
9526::emitComp(PrimType T0, SourceInfo I) {
9527 switch (T0) {
9528 case PT_Sint8:
9529 return emitCompSint8(I);
9530 case PT_Uint8:
9531 return emitCompUint8(I);
9532 case PT_Sint16:
9533 return emitCompSint16(I);
9534 case PT_Uint16:
9535 return emitCompUint16(I);
9536 case PT_Sint32:
9537 return emitCompSint32(I);
9538 case PT_Uint32:
9539 return emitCompUint32(I);
9540 case PT_Sint64:
9541 return emitCompSint64(I);
9542 case PT_Uint64:
9543 return emitCompUint64(I);
9544 case PT_IntAP:
9545 return emitCompIntAP(I);
9546 case PT_IntAPS:
9547 return emitCompIntAPS(I);
9548 default: llvm_unreachable("invalid type: emitComp");
9549 }
9550 llvm_unreachable("invalid enum value");
9551}
9552#endif
9553#ifdef GET_LINK_IMPL
9554bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
9555 return emitOp<>(OP_CompSint8, L);
9556}
9557bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
9558 return emitOp<>(OP_CompUint8, L);
9559}
9560bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
9561 return emitOp<>(OP_CompSint16, L);
9562}
9563bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
9564 return emitOp<>(OP_CompUint16, L);
9565}
9566bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
9567 return emitOp<>(OP_CompSint32, L);
9568}
9569bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
9570 return emitOp<>(OP_CompUint32, L);
9571}
9572bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
9573 return emitOp<>(OP_CompSint64, L);
9574}
9575bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
9576 return emitOp<>(OP_CompUint64, L);
9577}
9578bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
9579 return emitOp<>(OP_CompIntAP, L);
9580}
9581bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
9582 return emitOp<>(OP_CompIntAPS, L);
9583}
9584#endif
9585#ifdef GET_EVAL_IMPL
9586bool EvalEmitter::emitCompSint8(SourceInfo L) {
9587 if (!isActive()) return true;
9588 CurrentSource = L;
9589 return Comp<PT_Sint8>(S, OpPC);
9590}
9591bool EvalEmitter::emitCompUint8(SourceInfo L) {
9592 if (!isActive()) return true;
9593 CurrentSource = L;
9594 return Comp<PT_Uint8>(S, OpPC);
9595}
9596bool EvalEmitter::emitCompSint16(SourceInfo L) {
9597 if (!isActive()) return true;
9598 CurrentSource = L;
9599 return Comp<PT_Sint16>(S, OpPC);
9600}
9601bool EvalEmitter::emitCompUint16(SourceInfo L) {
9602 if (!isActive()) return true;
9603 CurrentSource = L;
9604 return Comp<PT_Uint16>(S, OpPC);
9605}
9606bool EvalEmitter::emitCompSint32(SourceInfo L) {
9607 if (!isActive()) return true;
9608 CurrentSource = L;
9609 return Comp<PT_Sint32>(S, OpPC);
9610}
9611bool EvalEmitter::emitCompUint32(SourceInfo L) {
9612 if (!isActive()) return true;
9613 CurrentSource = L;
9614 return Comp<PT_Uint32>(S, OpPC);
9615}
9616bool EvalEmitter::emitCompSint64(SourceInfo L) {
9617 if (!isActive()) return true;
9618 CurrentSource = L;
9619 return Comp<PT_Sint64>(S, OpPC);
9620}
9621bool EvalEmitter::emitCompUint64(SourceInfo L) {
9622 if (!isActive()) return true;
9623 CurrentSource = L;
9624 return Comp<PT_Uint64>(S, OpPC);
9625}
9626bool EvalEmitter::emitCompIntAP(SourceInfo L) {
9627 if (!isActive()) return true;
9628 CurrentSource = L;
9629 return Comp<PT_IntAP>(S, OpPC);
9630}
9631bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
9632 if (!isActive()) return true;
9633 CurrentSource = L;
9634 return Comp<PT_IntAPS>(S, OpPC);
9635}
9636#endif
9637#ifdef GET_OPCODE_NAMES
9638OP_ConstBool,
9639#endif
9640#ifdef GET_INTERP
9641case OP_ConstBool: {
9642 const auto V0 = ReadArg<bool>(S, PC);
9643 if (!Const<PT_Bool>(S, OpPC, V0))
9644 return false;
9645 continue;
9646}
9647#endif
9648#ifdef GET_DISASM
9649case OP_ConstBool:
9650 Text.Op = PrintName("ConstBool");
9651 Text.Args.push_back(printArg<bool>(P, PC));
9652 break;
9653#endif
9654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9655bool emitConstBool( bool , SourceInfo);
9656#endif
9657#ifdef GET_LINK_IMPL
9658bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
9659 return emitOp<bool>(OP_ConstBool, A0, L);
9660}
9661#endif
9662#ifdef GET_EVAL_IMPL
9663bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
9664 if (!isActive()) return true;
9665 CurrentSource = L;
9666 return Const<PT_Bool>(S, OpPC, A0);
9667}
9668#endif
9669#ifdef GET_OPCODE_NAMES
9670OP_ConstFixedPoint,
9671#endif
9672#ifdef GET_INTERP
9673case OP_ConstFixedPoint: {
9674 const auto &V0 = ReadArg<FixedPoint>(S, PC);
9675 if (!Const<PT_FixedPoint>(S, OpPC, V0))
9676 return false;
9677 continue;
9678}
9679#endif
9680#ifdef GET_DISASM
9681case OP_ConstFixedPoint:
9682 Text.Op = PrintName("ConstFixedPoint");
9683 Text.Args.push_back(printArg<FixedPoint>(P, PC));
9684 break;
9685#endif
9686#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9687bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
9688#endif
9689#ifdef GET_LINK_IMPL
9690bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
9691 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
9692}
9693#endif
9694#ifdef GET_EVAL_IMPL
9695bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
9696 if (!isActive()) return true;
9697 CurrentSource = L;
9698 return Const<PT_FixedPoint>(S, OpPC, A0);
9699}
9700#endif
9701#ifdef GET_OPCODE_NAMES
9702OP_ConstFloat,
9703#endif
9704#ifdef GET_INTERP
9705case OP_ConstFloat: {
9706 const auto &V0 = ReadArg<Floating>(S, PC);
9707 if (!ConstFloat(S, OpPC, V0))
9708 return false;
9709 continue;
9710}
9711#endif
9712#ifdef GET_DISASM
9713case OP_ConstFloat:
9714 Text.Op = PrintName("ConstFloat");
9715 Text.Args.push_back(printArg<Floating>(P, PC));
9716 break;
9717#endif
9718#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9719bool emitConstFloat(const Floating &, SourceInfo);
9720#endif
9721#ifdef GET_LINK_IMPL
9722bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
9723 return emitOp<Floating>(OP_ConstFloat, A0, L);
9724}
9725#endif
9726#ifdef GET_EVAL_IMPL
9727bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
9728 if (!isActive()) return true;
9729 CurrentSource = L;
9730 return ConstFloat(S, OpPC, A0);
9731}
9732#endif
9733#ifdef GET_OPCODE_NAMES
9734OP_ConstIntAP,
9735#endif
9736#ifdef GET_INTERP
9737case OP_ConstIntAP: {
9738 const auto &V0 = ReadArg<IntegralAP<false>>(S, PC);
9739 if (!Const<PT_IntAP>(S, OpPC, V0))
9740 return false;
9741 continue;
9742}
9743#endif
9744#ifdef GET_DISASM
9745case OP_ConstIntAP:
9746 Text.Op = PrintName("ConstIntAP");
9747 Text.Args.push_back(printArg<IntegralAP<false>>(P, PC));
9748 break;
9749#endif
9750#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9751bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
9752#endif
9753#ifdef GET_LINK_IMPL
9754bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
9755 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
9756}
9757#endif
9758#ifdef GET_EVAL_IMPL
9759bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
9760 if (!isActive()) return true;
9761 CurrentSource = L;
9762 return Const<PT_IntAP>(S, OpPC, A0);
9763}
9764#endif
9765#ifdef GET_OPCODE_NAMES
9766OP_ConstIntAPS,
9767#endif
9768#ifdef GET_INTERP
9769case OP_ConstIntAPS: {
9770 const auto &V0 = ReadArg<IntegralAP<true>>(S, PC);
9771 if (!Const<PT_IntAPS>(S, OpPC, V0))
9772 return false;
9773 continue;
9774}
9775#endif
9776#ifdef GET_DISASM
9777case OP_ConstIntAPS:
9778 Text.Op = PrintName("ConstIntAPS");
9779 Text.Args.push_back(printArg<IntegralAP<true>>(P, PC));
9780 break;
9781#endif
9782#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9783bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
9784#endif
9785#ifdef GET_LINK_IMPL
9786bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
9787 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
9788}
9789#endif
9790#ifdef GET_EVAL_IMPL
9791bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
9792 if (!isActive()) return true;
9793 CurrentSource = L;
9794 return Const<PT_IntAPS>(S, OpPC, A0);
9795}
9796#endif
9797#ifdef GET_OPCODE_NAMES
9798OP_ConstSint8,
9799#endif
9800#ifdef GET_INTERP
9801case OP_ConstSint8: {
9802 const auto V0 = ReadArg<int8_t>(S, PC);
9803 if (!Const<PT_Sint8>(S, OpPC, V0))
9804 return false;
9805 continue;
9806}
9807#endif
9808#ifdef GET_DISASM
9809case OP_ConstSint8:
9810 Text.Op = PrintName("ConstSint8");
9811 Text.Args.push_back(printArg<int8_t>(P, PC));
9812 break;
9813#endif
9814#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9815bool emitConstSint8( int8_t , SourceInfo);
9816#endif
9817#ifdef GET_LINK_IMPL
9818bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
9819 return emitOp<int8_t>(OP_ConstSint8, A0, L);
9820}
9821#endif
9822#ifdef GET_EVAL_IMPL
9823bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
9824 if (!isActive()) return true;
9825 CurrentSource = L;
9826 return Const<PT_Sint8>(S, OpPC, A0);
9827}
9828#endif
9829#ifdef GET_OPCODE_NAMES
9830OP_ConstSint16,
9831#endif
9832#ifdef GET_INTERP
9833case OP_ConstSint16: {
9834 const auto V0 = ReadArg<int16_t>(S, PC);
9835 if (!Const<PT_Sint16>(S, OpPC, V0))
9836 return false;
9837 continue;
9838}
9839#endif
9840#ifdef GET_DISASM
9841case OP_ConstSint16:
9842 Text.Op = PrintName("ConstSint16");
9843 Text.Args.push_back(printArg<int16_t>(P, PC));
9844 break;
9845#endif
9846#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9847bool emitConstSint16( int16_t , SourceInfo);
9848#endif
9849#ifdef GET_LINK_IMPL
9850bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
9851 return emitOp<int16_t>(OP_ConstSint16, A0, L);
9852}
9853#endif
9854#ifdef GET_EVAL_IMPL
9855bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
9856 if (!isActive()) return true;
9857 CurrentSource = L;
9858 return Const<PT_Sint16>(S, OpPC, A0);
9859}
9860#endif
9861#ifdef GET_OPCODE_NAMES
9862OP_ConstSint32,
9863#endif
9864#ifdef GET_INTERP
9865case OP_ConstSint32: {
9866 const auto V0 = ReadArg<int32_t>(S, PC);
9867 if (!Const<PT_Sint32>(S, OpPC, V0))
9868 return false;
9869 continue;
9870}
9871#endif
9872#ifdef GET_DISASM
9873case OP_ConstSint32:
9874 Text.Op = PrintName("ConstSint32");
9875 Text.Args.push_back(printArg<int32_t>(P, PC));
9876 break;
9877#endif
9878#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9879bool emitConstSint32( int32_t , SourceInfo);
9880#endif
9881#ifdef GET_LINK_IMPL
9882bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
9883 return emitOp<int32_t>(OP_ConstSint32, A0, L);
9884}
9885#endif
9886#ifdef GET_EVAL_IMPL
9887bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
9888 if (!isActive()) return true;
9889 CurrentSource = L;
9890 return Const<PT_Sint32>(S, OpPC, A0);
9891}
9892#endif
9893#ifdef GET_OPCODE_NAMES
9894OP_ConstSint64,
9895#endif
9896#ifdef GET_INTERP
9897case OP_ConstSint64: {
9898 const auto V0 = ReadArg<int64_t>(S, PC);
9899 if (!Const<PT_Sint64>(S, OpPC, V0))
9900 return false;
9901 continue;
9902}
9903#endif
9904#ifdef GET_DISASM
9905case OP_ConstSint64:
9906 Text.Op = PrintName("ConstSint64");
9907 Text.Args.push_back(printArg<int64_t>(P, PC));
9908 break;
9909#endif
9910#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9911bool emitConstSint64( int64_t , SourceInfo);
9912#endif
9913#ifdef GET_LINK_IMPL
9914bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
9915 return emitOp<int64_t>(OP_ConstSint64, A0, L);
9916}
9917#endif
9918#ifdef GET_EVAL_IMPL
9919bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
9920 if (!isActive()) return true;
9921 CurrentSource = L;
9922 return Const<PT_Sint64>(S, OpPC, A0);
9923}
9924#endif
9925#ifdef GET_OPCODE_NAMES
9926OP_ConstUint8,
9927#endif
9928#ifdef GET_INTERP
9929case OP_ConstUint8: {
9930 const auto V0 = ReadArg<uint8_t>(S, PC);
9931 if (!Const<PT_Uint8>(S, OpPC, V0))
9932 return false;
9933 continue;
9934}
9935#endif
9936#ifdef GET_DISASM
9937case OP_ConstUint8:
9938 Text.Op = PrintName("ConstUint8");
9939 Text.Args.push_back(printArg<uint8_t>(P, PC));
9940 break;
9941#endif
9942#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9943bool emitConstUint8( uint8_t , SourceInfo);
9944#endif
9945#ifdef GET_LINK_IMPL
9946bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
9947 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
9948}
9949#endif
9950#ifdef GET_EVAL_IMPL
9951bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
9952 if (!isActive()) return true;
9953 CurrentSource = L;
9954 return Const<PT_Uint8>(S, OpPC, A0);
9955}
9956#endif
9957#ifdef GET_OPCODE_NAMES
9958OP_ConstUint16,
9959#endif
9960#ifdef GET_INTERP
9961case OP_ConstUint16: {
9962 const auto V0 = ReadArg<uint16_t>(S, PC);
9963 if (!Const<PT_Uint16>(S, OpPC, V0))
9964 return false;
9965 continue;
9966}
9967#endif
9968#ifdef GET_DISASM
9969case OP_ConstUint16:
9970 Text.Op = PrintName("ConstUint16");
9971 Text.Args.push_back(printArg<uint16_t>(P, PC));
9972 break;
9973#endif
9974#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9975bool emitConstUint16( uint16_t , SourceInfo);
9976#endif
9977#ifdef GET_LINK_IMPL
9978bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
9979 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
9980}
9981#endif
9982#ifdef GET_EVAL_IMPL
9983bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
9984 if (!isActive()) return true;
9985 CurrentSource = L;
9986 return Const<PT_Uint16>(S, OpPC, A0);
9987}
9988#endif
9989#ifdef GET_OPCODE_NAMES
9990OP_ConstUint32,
9991#endif
9992#ifdef GET_INTERP
9993case OP_ConstUint32: {
9994 const auto V0 = ReadArg<uint32_t>(S, PC);
9995 if (!Const<PT_Uint32>(S, OpPC, V0))
9996 return false;
9997 continue;
9998}
9999#endif
10000#ifdef GET_DISASM
10001case OP_ConstUint32:
10002 Text.Op = PrintName("ConstUint32");
10003 Text.Args.push_back(printArg<uint32_t>(P, PC));
10004 break;
10005#endif
10006#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10007bool emitConstUint32( uint32_t , SourceInfo);
10008#endif
10009#ifdef GET_LINK_IMPL
10010bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
10011 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
10012}
10013#endif
10014#ifdef GET_EVAL_IMPL
10015bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
10016 if (!isActive()) return true;
10017 CurrentSource = L;
10018 return Const<PT_Uint32>(S, OpPC, A0);
10019}
10020#endif
10021#ifdef GET_OPCODE_NAMES
10022OP_ConstUint64,
10023#endif
10024#ifdef GET_INTERP
10025case OP_ConstUint64: {
10026 const auto V0 = ReadArg<uint64_t>(S, PC);
10027 if (!Const<PT_Uint64>(S, OpPC, V0))
10028 return false;
10029 continue;
10030}
10031#endif
10032#ifdef GET_DISASM
10033case OP_ConstUint64:
10034 Text.Op = PrintName("ConstUint64");
10035 Text.Args.push_back(printArg<uint64_t>(P, PC));
10036 break;
10037#endif
10038#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10039bool emitConstUint64( uint64_t , SourceInfo);
10040#endif
10041#ifdef GET_LINK_IMPL
10042bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
10043 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
10044}
10045#endif
10046#ifdef GET_EVAL_IMPL
10047bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
10048 if (!isActive()) return true;
10049 CurrentSource = L;
10050 return Const<PT_Uint64>(S, OpPC, A0);
10051}
10052#endif
10053#ifdef GET_OPCODE_NAMES
10054OP_CopyArraySint8,
10055OP_CopyArrayUint8,
10056OP_CopyArraySint16,
10057OP_CopyArrayUint16,
10058OP_CopyArraySint32,
10059OP_CopyArrayUint32,
10060OP_CopyArraySint64,
10061OP_CopyArrayUint64,
10062OP_CopyArrayIntAP,
10063OP_CopyArrayIntAPS,
10064OP_CopyArrayBool,
10065OP_CopyArrayFixedPoint,
10066OP_CopyArrayPtr,
10067OP_CopyArrayMemberPtr,
10068OP_CopyArrayFloat,
10069#endif
10070#ifdef GET_INTERP
10071case OP_CopyArraySint8: {
10072 const auto V0 = ReadArg<uint32_t>(S, PC);
10073 const auto V1 = ReadArg<uint32_t>(S, PC);
10074 const auto V2 = ReadArg<uint32_t>(S, PC);
10075 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2))
10076 return false;
10077 continue;
10078}
10079case OP_CopyArrayUint8: {
10080 const auto V0 = ReadArg<uint32_t>(S, PC);
10081 const auto V1 = ReadArg<uint32_t>(S, PC);
10082 const auto V2 = ReadArg<uint32_t>(S, PC);
10083 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2))
10084 return false;
10085 continue;
10086}
10087case OP_CopyArraySint16: {
10088 const auto V0 = ReadArg<uint32_t>(S, PC);
10089 const auto V1 = ReadArg<uint32_t>(S, PC);
10090 const auto V2 = ReadArg<uint32_t>(S, PC);
10091 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2))
10092 return false;
10093 continue;
10094}
10095case OP_CopyArrayUint16: {
10096 const auto V0 = ReadArg<uint32_t>(S, PC);
10097 const auto V1 = ReadArg<uint32_t>(S, PC);
10098 const auto V2 = ReadArg<uint32_t>(S, PC);
10099 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2))
10100 return false;
10101 continue;
10102}
10103case OP_CopyArraySint32: {
10104 const auto V0 = ReadArg<uint32_t>(S, PC);
10105 const auto V1 = ReadArg<uint32_t>(S, PC);
10106 const auto V2 = ReadArg<uint32_t>(S, PC);
10107 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2))
10108 return false;
10109 continue;
10110}
10111case OP_CopyArrayUint32: {
10112 const auto V0 = ReadArg<uint32_t>(S, PC);
10113 const auto V1 = ReadArg<uint32_t>(S, PC);
10114 const auto V2 = ReadArg<uint32_t>(S, PC);
10115 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2))
10116 return false;
10117 continue;
10118}
10119case OP_CopyArraySint64: {
10120 const auto V0 = ReadArg<uint32_t>(S, PC);
10121 const auto V1 = ReadArg<uint32_t>(S, PC);
10122 const auto V2 = ReadArg<uint32_t>(S, PC);
10123 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2))
10124 return false;
10125 continue;
10126}
10127case OP_CopyArrayUint64: {
10128 const auto V0 = ReadArg<uint32_t>(S, PC);
10129 const auto V1 = ReadArg<uint32_t>(S, PC);
10130 const auto V2 = ReadArg<uint32_t>(S, PC);
10131 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2))
10132 return false;
10133 continue;
10134}
10135case OP_CopyArrayIntAP: {
10136 const auto V0 = ReadArg<uint32_t>(S, PC);
10137 const auto V1 = ReadArg<uint32_t>(S, PC);
10138 const auto V2 = ReadArg<uint32_t>(S, PC);
10139 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2))
10140 return false;
10141 continue;
10142}
10143case OP_CopyArrayIntAPS: {
10144 const auto V0 = ReadArg<uint32_t>(S, PC);
10145 const auto V1 = ReadArg<uint32_t>(S, PC);
10146 const auto V2 = ReadArg<uint32_t>(S, PC);
10147 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2))
10148 return false;
10149 continue;
10150}
10151case OP_CopyArrayBool: {
10152 const auto V0 = ReadArg<uint32_t>(S, PC);
10153 const auto V1 = ReadArg<uint32_t>(S, PC);
10154 const auto V2 = ReadArg<uint32_t>(S, PC);
10155 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2))
10156 return false;
10157 continue;
10158}
10159case OP_CopyArrayFixedPoint: {
10160 const auto V0 = ReadArg<uint32_t>(S, PC);
10161 const auto V1 = ReadArg<uint32_t>(S, PC);
10162 const auto V2 = ReadArg<uint32_t>(S, PC);
10163 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2))
10164 return false;
10165 continue;
10166}
10167case OP_CopyArrayPtr: {
10168 const auto V0 = ReadArg<uint32_t>(S, PC);
10169 const auto V1 = ReadArg<uint32_t>(S, PC);
10170 const auto V2 = ReadArg<uint32_t>(S, PC);
10171 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2))
10172 return false;
10173 continue;
10174}
10175case OP_CopyArrayMemberPtr: {
10176 const auto V0 = ReadArg<uint32_t>(S, PC);
10177 const auto V1 = ReadArg<uint32_t>(S, PC);
10178 const auto V2 = ReadArg<uint32_t>(S, PC);
10179 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2))
10180 return false;
10181 continue;
10182}
10183case OP_CopyArrayFloat: {
10184 const auto V0 = ReadArg<uint32_t>(S, PC);
10185 const auto V1 = ReadArg<uint32_t>(S, PC);
10186 const auto V2 = ReadArg<uint32_t>(S, PC);
10187 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2))
10188 return false;
10189 continue;
10190}
10191#endif
10192#ifdef GET_DISASM
10193case OP_CopyArraySint8:
10194 Text.Op = PrintName("CopyArraySint8");
10195 Text.Args.push_back(printArg<uint32_t>(P, PC));
10196 Text.Args.push_back(printArg<uint32_t>(P, PC));
10197 Text.Args.push_back(printArg<uint32_t>(P, PC));
10198 break;
10199case OP_CopyArrayUint8:
10200 Text.Op = PrintName("CopyArrayUint8");
10201 Text.Args.push_back(printArg<uint32_t>(P, PC));
10202 Text.Args.push_back(printArg<uint32_t>(P, PC));
10203 Text.Args.push_back(printArg<uint32_t>(P, PC));
10204 break;
10205case OP_CopyArraySint16:
10206 Text.Op = PrintName("CopyArraySint16");
10207 Text.Args.push_back(printArg<uint32_t>(P, PC));
10208 Text.Args.push_back(printArg<uint32_t>(P, PC));
10209 Text.Args.push_back(printArg<uint32_t>(P, PC));
10210 break;
10211case OP_CopyArrayUint16:
10212 Text.Op = PrintName("CopyArrayUint16");
10213 Text.Args.push_back(printArg<uint32_t>(P, PC));
10214 Text.Args.push_back(printArg<uint32_t>(P, PC));
10215 Text.Args.push_back(printArg<uint32_t>(P, PC));
10216 break;
10217case OP_CopyArraySint32:
10218 Text.Op = PrintName("CopyArraySint32");
10219 Text.Args.push_back(printArg<uint32_t>(P, PC));
10220 Text.Args.push_back(printArg<uint32_t>(P, PC));
10221 Text.Args.push_back(printArg<uint32_t>(P, PC));
10222 break;
10223case OP_CopyArrayUint32:
10224 Text.Op = PrintName("CopyArrayUint32");
10225 Text.Args.push_back(printArg<uint32_t>(P, PC));
10226 Text.Args.push_back(printArg<uint32_t>(P, PC));
10227 Text.Args.push_back(printArg<uint32_t>(P, PC));
10228 break;
10229case OP_CopyArraySint64:
10230 Text.Op = PrintName("CopyArraySint64");
10231 Text.Args.push_back(printArg<uint32_t>(P, PC));
10232 Text.Args.push_back(printArg<uint32_t>(P, PC));
10233 Text.Args.push_back(printArg<uint32_t>(P, PC));
10234 break;
10235case OP_CopyArrayUint64:
10236 Text.Op = PrintName("CopyArrayUint64");
10237 Text.Args.push_back(printArg<uint32_t>(P, PC));
10238 Text.Args.push_back(printArg<uint32_t>(P, PC));
10239 Text.Args.push_back(printArg<uint32_t>(P, PC));
10240 break;
10241case OP_CopyArrayIntAP:
10242 Text.Op = PrintName("CopyArrayIntAP");
10243 Text.Args.push_back(printArg<uint32_t>(P, PC));
10244 Text.Args.push_back(printArg<uint32_t>(P, PC));
10245 Text.Args.push_back(printArg<uint32_t>(P, PC));
10246 break;
10247case OP_CopyArrayIntAPS:
10248 Text.Op = PrintName("CopyArrayIntAPS");
10249 Text.Args.push_back(printArg<uint32_t>(P, PC));
10250 Text.Args.push_back(printArg<uint32_t>(P, PC));
10251 Text.Args.push_back(printArg<uint32_t>(P, PC));
10252 break;
10253case OP_CopyArrayBool:
10254 Text.Op = PrintName("CopyArrayBool");
10255 Text.Args.push_back(printArg<uint32_t>(P, PC));
10256 Text.Args.push_back(printArg<uint32_t>(P, PC));
10257 Text.Args.push_back(printArg<uint32_t>(P, PC));
10258 break;
10259case OP_CopyArrayFixedPoint:
10260 Text.Op = PrintName("CopyArrayFixedPoint");
10261 Text.Args.push_back(printArg<uint32_t>(P, PC));
10262 Text.Args.push_back(printArg<uint32_t>(P, PC));
10263 Text.Args.push_back(printArg<uint32_t>(P, PC));
10264 break;
10265case OP_CopyArrayPtr:
10266 Text.Op = PrintName("CopyArrayPtr");
10267 Text.Args.push_back(printArg<uint32_t>(P, PC));
10268 Text.Args.push_back(printArg<uint32_t>(P, PC));
10269 Text.Args.push_back(printArg<uint32_t>(P, PC));
10270 break;
10271case OP_CopyArrayMemberPtr:
10272 Text.Op = PrintName("CopyArrayMemberPtr");
10273 Text.Args.push_back(printArg<uint32_t>(P, PC));
10274 Text.Args.push_back(printArg<uint32_t>(P, PC));
10275 Text.Args.push_back(printArg<uint32_t>(P, PC));
10276 break;
10277case OP_CopyArrayFloat:
10278 Text.Op = PrintName("CopyArrayFloat");
10279 Text.Args.push_back(printArg<uint32_t>(P, PC));
10280 Text.Args.push_back(printArg<uint32_t>(P, PC));
10281 Text.Args.push_back(printArg<uint32_t>(P, PC));
10282 break;
10283#endif
10284#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10285bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
10286bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
10287bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
10288bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
10289bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
10290bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
10291bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
10292bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
10293bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
10294bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
10295bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
10296bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
10297bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
10298bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
10299bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
10300#endif
10301#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10302[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
10303#endif
10304#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10305bool
10306#if defined(GET_EVAL_IMPL)
10307EvalEmitter
10308#else
10309ByteCodeEmitter
10310#endif
10311::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
10312 switch (T0) {
10313 case PT_Sint8:
10314 return emitCopyArraySint8(A0, A1, A2, I);
10315 case PT_Uint8:
10316 return emitCopyArrayUint8(A0, A1, A2, I);
10317 case PT_Sint16:
10318 return emitCopyArraySint16(A0, A1, A2, I);
10319 case PT_Uint16:
10320 return emitCopyArrayUint16(A0, A1, A2, I);
10321 case PT_Sint32:
10322 return emitCopyArraySint32(A0, A1, A2, I);
10323 case PT_Uint32:
10324 return emitCopyArrayUint32(A0, A1, A2, I);
10325 case PT_Sint64:
10326 return emitCopyArraySint64(A0, A1, A2, I);
10327 case PT_Uint64:
10328 return emitCopyArrayUint64(A0, A1, A2, I);
10329 case PT_IntAP:
10330 return emitCopyArrayIntAP(A0, A1, A2, I);
10331 case PT_IntAPS:
10332 return emitCopyArrayIntAPS(A0, A1, A2, I);
10333 case PT_Bool:
10334 return emitCopyArrayBool(A0, A1, A2, I);
10335 case PT_FixedPoint:
10336 return emitCopyArrayFixedPoint(A0, A1, A2, I);
10337 case PT_Ptr:
10338 return emitCopyArrayPtr(A0, A1, A2, I);
10339 case PT_MemberPtr:
10340 return emitCopyArrayMemberPtr(A0, A1, A2, I);
10341 case PT_Float:
10342 return emitCopyArrayFloat(A0, A1, A2, I);
10343 }
10344 llvm_unreachable("invalid enum value");
10345}
10346#endif
10347#ifdef GET_LINK_IMPL
10348bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10349 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
10350}
10351bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10352 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
10353}
10354bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10355 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
10356}
10357bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10358 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
10359}
10360bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10361 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
10362}
10363bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10364 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
10365}
10366bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10367 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
10368}
10369bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10370 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
10371}
10372bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10373 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
10374}
10375bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10376 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
10377}
10378bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10379 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
10380}
10381bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10382 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
10383}
10384bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10385 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
10386}
10387bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10388 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
10389}
10390bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10391 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
10392}
10393#endif
10394#ifdef GET_EVAL_IMPL
10395bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10396 if (!isActive()) return true;
10397 CurrentSource = L;
10398 return CopyArray<PT_Sint8>(S, OpPC, A0, A1, A2);
10399}
10400bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10401 if (!isActive()) return true;
10402 CurrentSource = L;
10403 return CopyArray<PT_Uint8>(S, OpPC, A0, A1, A2);
10404}
10405bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10406 if (!isActive()) return true;
10407 CurrentSource = L;
10408 return CopyArray<PT_Sint16>(S, OpPC, A0, A1, A2);
10409}
10410bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10411 if (!isActive()) return true;
10412 CurrentSource = L;
10413 return CopyArray<PT_Uint16>(S, OpPC, A0, A1, A2);
10414}
10415bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10416 if (!isActive()) return true;
10417 CurrentSource = L;
10418 return CopyArray<PT_Sint32>(S, OpPC, A0, A1, A2);
10419}
10420bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10421 if (!isActive()) return true;
10422 CurrentSource = L;
10423 return CopyArray<PT_Uint32>(S, OpPC, A0, A1, A2);
10424}
10425bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10426 if (!isActive()) return true;
10427 CurrentSource = L;
10428 return CopyArray<PT_Sint64>(S, OpPC, A0, A1, A2);
10429}
10430bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10431 if (!isActive()) return true;
10432 CurrentSource = L;
10433 return CopyArray<PT_Uint64>(S, OpPC, A0, A1, A2);
10434}
10435bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10436 if (!isActive()) return true;
10437 CurrentSource = L;
10438 return CopyArray<PT_IntAP>(S, OpPC, A0, A1, A2);
10439}
10440bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10441 if (!isActive()) return true;
10442 CurrentSource = L;
10443 return CopyArray<PT_IntAPS>(S, OpPC, A0, A1, A2);
10444}
10445bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10446 if (!isActive()) return true;
10447 CurrentSource = L;
10448 return CopyArray<PT_Bool>(S, OpPC, A0, A1, A2);
10449}
10450bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10451 if (!isActive()) return true;
10452 CurrentSource = L;
10453 return CopyArray<PT_FixedPoint>(S, OpPC, A0, A1, A2);
10454}
10455bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10456 if (!isActive()) return true;
10457 CurrentSource = L;
10458 return CopyArray<PT_Ptr>(S, OpPC, A0, A1, A2);
10459}
10460bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10461 if (!isActive()) return true;
10462 CurrentSource = L;
10463 return CopyArray<PT_MemberPtr>(S, OpPC, A0, A1, A2);
10464}
10465bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10466 if (!isActive()) return true;
10467 CurrentSource = L;
10468 return CopyArray<PT_Float>(S, OpPC, A0, A1, A2);
10469}
10470#endif
10471#ifdef GET_OPCODE_NAMES
10472OP_CtorCheck,
10473#endif
10474#ifdef GET_INTERP
10475case OP_CtorCheck: {
10476 if (!CtorCheck(S, OpPC))
10477 return false;
10478 continue;
10479}
10480#endif
10481#ifdef GET_DISASM
10482case OP_CtorCheck:
10483 Text.Op = PrintName("CtorCheck");
10484 break;
10485#endif
10486#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10487bool emitCtorCheck(SourceInfo);
10488#endif
10489#ifdef GET_LINK_IMPL
10490bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
10491 return emitOp<>(OP_CtorCheck, L);
10492}
10493#endif
10494#ifdef GET_EVAL_IMPL
10495bool EvalEmitter::emitCtorCheck(SourceInfo L) {
10496 if (!isActive()) return true;
10497 CurrentSource = L;
10498 return CtorCheck(S, OpPC);
10499}
10500#endif
10501#ifdef GET_OPCODE_NAMES
10502OP_DecSint8,
10503OP_DecUint8,
10504OP_DecSint16,
10505OP_DecUint16,
10506OP_DecSint32,
10507OP_DecUint32,
10508OP_DecSint64,
10509OP_DecUint64,
10510OP_DecIntAP,
10511OP_DecIntAPS,
10512OP_DecBool,
10513OP_DecFixedPoint,
10514#endif
10515#ifdef GET_INTERP
10516case OP_DecSint8: {
10517 const auto V0 = ReadArg<bool>(S, PC);
10518 if (!Dec<PT_Sint8>(S, OpPC, V0))
10519 return false;
10520 continue;
10521}
10522case OP_DecUint8: {
10523 const auto V0 = ReadArg<bool>(S, PC);
10524 if (!Dec<PT_Uint8>(S, OpPC, V0))
10525 return false;
10526 continue;
10527}
10528case OP_DecSint16: {
10529 const auto V0 = ReadArg<bool>(S, PC);
10530 if (!Dec<PT_Sint16>(S, OpPC, V0))
10531 return false;
10532 continue;
10533}
10534case OP_DecUint16: {
10535 const auto V0 = ReadArg<bool>(S, PC);
10536 if (!Dec<PT_Uint16>(S, OpPC, V0))
10537 return false;
10538 continue;
10539}
10540case OP_DecSint32: {
10541 const auto V0 = ReadArg<bool>(S, PC);
10542 if (!Dec<PT_Sint32>(S, OpPC, V0))
10543 return false;
10544 continue;
10545}
10546case OP_DecUint32: {
10547 const auto V0 = ReadArg<bool>(S, PC);
10548 if (!Dec<PT_Uint32>(S, OpPC, V0))
10549 return false;
10550 continue;
10551}
10552case OP_DecSint64: {
10553 const auto V0 = ReadArg<bool>(S, PC);
10554 if (!Dec<PT_Sint64>(S, OpPC, V0))
10555 return false;
10556 continue;
10557}
10558case OP_DecUint64: {
10559 const auto V0 = ReadArg<bool>(S, PC);
10560 if (!Dec<PT_Uint64>(S, OpPC, V0))
10561 return false;
10562 continue;
10563}
10564case OP_DecIntAP: {
10565 const auto V0 = ReadArg<bool>(S, PC);
10566 if (!Dec<PT_IntAP>(S, OpPC, V0))
10567 return false;
10568 continue;
10569}
10570case OP_DecIntAPS: {
10571 const auto V0 = ReadArg<bool>(S, PC);
10572 if (!Dec<PT_IntAPS>(S, OpPC, V0))
10573 return false;
10574 continue;
10575}
10576case OP_DecBool: {
10577 const auto V0 = ReadArg<bool>(S, PC);
10578 if (!Dec<PT_Bool>(S, OpPC, V0))
10579 return false;
10580 continue;
10581}
10582case OP_DecFixedPoint: {
10583 const auto V0 = ReadArg<bool>(S, PC);
10584 if (!Dec<PT_FixedPoint>(S, OpPC, V0))
10585 return false;
10586 continue;
10587}
10588#endif
10589#ifdef GET_DISASM
10590case OP_DecSint8:
10591 Text.Op = PrintName("DecSint8");
10592 Text.Args.push_back(printArg<bool>(P, PC));
10593 break;
10594case OP_DecUint8:
10595 Text.Op = PrintName("DecUint8");
10596 Text.Args.push_back(printArg<bool>(P, PC));
10597 break;
10598case OP_DecSint16:
10599 Text.Op = PrintName("DecSint16");
10600 Text.Args.push_back(printArg<bool>(P, PC));
10601 break;
10602case OP_DecUint16:
10603 Text.Op = PrintName("DecUint16");
10604 Text.Args.push_back(printArg<bool>(P, PC));
10605 break;
10606case OP_DecSint32:
10607 Text.Op = PrintName("DecSint32");
10608 Text.Args.push_back(printArg<bool>(P, PC));
10609 break;
10610case OP_DecUint32:
10611 Text.Op = PrintName("DecUint32");
10612 Text.Args.push_back(printArg<bool>(P, PC));
10613 break;
10614case OP_DecSint64:
10615 Text.Op = PrintName("DecSint64");
10616 Text.Args.push_back(printArg<bool>(P, PC));
10617 break;
10618case OP_DecUint64:
10619 Text.Op = PrintName("DecUint64");
10620 Text.Args.push_back(printArg<bool>(P, PC));
10621 break;
10622case OP_DecIntAP:
10623 Text.Op = PrintName("DecIntAP");
10624 Text.Args.push_back(printArg<bool>(P, PC));
10625 break;
10626case OP_DecIntAPS:
10627 Text.Op = PrintName("DecIntAPS");
10628 Text.Args.push_back(printArg<bool>(P, PC));
10629 break;
10630case OP_DecBool:
10631 Text.Op = PrintName("DecBool");
10632 Text.Args.push_back(printArg<bool>(P, PC));
10633 break;
10634case OP_DecFixedPoint:
10635 Text.Op = PrintName("DecFixedPoint");
10636 Text.Args.push_back(printArg<bool>(P, PC));
10637 break;
10638#endif
10639#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10640bool emitDecSint8( bool , SourceInfo);
10641bool emitDecUint8( bool , SourceInfo);
10642bool emitDecSint16( bool , SourceInfo);
10643bool emitDecUint16( bool , SourceInfo);
10644bool emitDecSint32( bool , SourceInfo);
10645bool emitDecUint32( bool , SourceInfo);
10646bool emitDecSint64( bool , SourceInfo);
10647bool emitDecUint64( bool , SourceInfo);
10648bool emitDecIntAP( bool , SourceInfo);
10649bool emitDecIntAPS( bool , SourceInfo);
10650bool emitDecBool( bool , SourceInfo);
10651bool emitDecFixedPoint( bool , SourceInfo);
10652#endif
10653#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10654[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
10655#endif
10656#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10657bool
10658#if defined(GET_EVAL_IMPL)
10659EvalEmitter
10660#else
10661ByteCodeEmitter
10662#endif
10663::emitDec(PrimType T0, bool A0, SourceInfo I) {
10664 switch (T0) {
10665 case PT_Sint8:
10666 return emitDecSint8(A0, I);
10667 case PT_Uint8:
10668 return emitDecUint8(A0, I);
10669 case PT_Sint16:
10670 return emitDecSint16(A0, I);
10671 case PT_Uint16:
10672 return emitDecUint16(A0, I);
10673 case PT_Sint32:
10674 return emitDecSint32(A0, I);
10675 case PT_Uint32:
10676 return emitDecUint32(A0, I);
10677 case PT_Sint64:
10678 return emitDecSint64(A0, I);
10679 case PT_Uint64:
10680 return emitDecUint64(A0, I);
10681 case PT_IntAP:
10682 return emitDecIntAP(A0, I);
10683 case PT_IntAPS:
10684 return emitDecIntAPS(A0, I);
10685 case PT_Bool:
10686 return emitDecBool(A0, I);
10687 case PT_FixedPoint:
10688 return emitDecFixedPoint(A0, I);
10689 default: llvm_unreachable("invalid type: emitDec");
10690 }
10691 llvm_unreachable("invalid enum value");
10692}
10693#endif
10694#ifdef GET_LINK_IMPL
10695bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
10696 return emitOp<bool>(OP_DecSint8, A0, L);
10697}
10698bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
10699 return emitOp<bool>(OP_DecUint8, A0, L);
10700}
10701bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
10702 return emitOp<bool>(OP_DecSint16, A0, L);
10703}
10704bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
10705 return emitOp<bool>(OP_DecUint16, A0, L);
10706}
10707bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
10708 return emitOp<bool>(OP_DecSint32, A0, L);
10709}
10710bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
10711 return emitOp<bool>(OP_DecUint32, A0, L);
10712}
10713bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
10714 return emitOp<bool>(OP_DecSint64, A0, L);
10715}
10716bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
10717 return emitOp<bool>(OP_DecUint64, A0, L);
10718}
10719bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
10720 return emitOp<bool>(OP_DecIntAP, A0, L);
10721}
10722bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
10723 return emitOp<bool>(OP_DecIntAPS, A0, L);
10724}
10725bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
10726 return emitOp<bool>(OP_DecBool, A0, L);
10727}
10728bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
10729 return emitOp<bool>(OP_DecFixedPoint, A0, L);
10730}
10731#endif
10732#ifdef GET_EVAL_IMPL
10733bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
10734 if (!isActive()) return true;
10735 CurrentSource = L;
10736 return Dec<PT_Sint8>(S, OpPC, A0);
10737}
10738bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
10739 if (!isActive()) return true;
10740 CurrentSource = L;
10741 return Dec<PT_Uint8>(S, OpPC, A0);
10742}
10743bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
10744 if (!isActive()) return true;
10745 CurrentSource = L;
10746 return Dec<PT_Sint16>(S, OpPC, A0);
10747}
10748bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
10749 if (!isActive()) return true;
10750 CurrentSource = L;
10751 return Dec<PT_Uint16>(S, OpPC, A0);
10752}
10753bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
10754 if (!isActive()) return true;
10755 CurrentSource = L;
10756 return Dec<PT_Sint32>(S, OpPC, A0);
10757}
10758bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
10759 if (!isActive()) return true;
10760 CurrentSource = L;
10761 return Dec<PT_Uint32>(S, OpPC, A0);
10762}
10763bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
10764 if (!isActive()) return true;
10765 CurrentSource = L;
10766 return Dec<PT_Sint64>(S, OpPC, A0);
10767}
10768bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
10769 if (!isActive()) return true;
10770 CurrentSource = L;
10771 return Dec<PT_Uint64>(S, OpPC, A0);
10772}
10773bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
10774 if (!isActive()) return true;
10775 CurrentSource = L;
10776 return Dec<PT_IntAP>(S, OpPC, A0);
10777}
10778bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
10779 if (!isActive()) return true;
10780 CurrentSource = L;
10781 return Dec<PT_IntAPS>(S, OpPC, A0);
10782}
10783bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
10784 if (!isActive()) return true;
10785 CurrentSource = L;
10786 return Dec<PT_Bool>(S, OpPC, A0);
10787}
10788bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
10789 if (!isActive()) return true;
10790 CurrentSource = L;
10791 return Dec<PT_FixedPoint>(S, OpPC, A0);
10792}
10793#endif
10794#ifdef GET_OPCODE_NAMES
10795OP_DecBitfieldSint8,
10796OP_DecBitfieldUint8,
10797OP_DecBitfieldSint16,
10798OP_DecBitfieldUint16,
10799OP_DecBitfieldSint32,
10800OP_DecBitfieldUint32,
10801OP_DecBitfieldSint64,
10802OP_DecBitfieldUint64,
10803OP_DecBitfieldIntAP,
10804OP_DecBitfieldIntAPS,
10805OP_DecBitfieldBool,
10806OP_DecBitfieldFixedPoint,
10807#endif
10808#ifdef GET_INTERP
10809case OP_DecBitfieldSint8: {
10810 const auto V0 = ReadArg<bool>(S, PC);
10811 const auto V1 = ReadArg<uint32_t>(S, PC);
10812 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1))
10813 return false;
10814 continue;
10815}
10816case OP_DecBitfieldUint8: {
10817 const auto V0 = ReadArg<bool>(S, PC);
10818 const auto V1 = ReadArg<uint32_t>(S, PC);
10819 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1))
10820 return false;
10821 continue;
10822}
10823case OP_DecBitfieldSint16: {
10824 const auto V0 = ReadArg<bool>(S, PC);
10825 const auto V1 = ReadArg<uint32_t>(S, PC);
10826 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1))
10827 return false;
10828 continue;
10829}
10830case OP_DecBitfieldUint16: {
10831 const auto V0 = ReadArg<bool>(S, PC);
10832 const auto V1 = ReadArg<uint32_t>(S, PC);
10833 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1))
10834 return false;
10835 continue;
10836}
10837case OP_DecBitfieldSint32: {
10838 const auto V0 = ReadArg<bool>(S, PC);
10839 const auto V1 = ReadArg<uint32_t>(S, PC);
10840 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1))
10841 return false;
10842 continue;
10843}
10844case OP_DecBitfieldUint32: {
10845 const auto V0 = ReadArg<bool>(S, PC);
10846 const auto V1 = ReadArg<uint32_t>(S, PC);
10847 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1))
10848 return false;
10849 continue;
10850}
10851case OP_DecBitfieldSint64: {
10852 const auto V0 = ReadArg<bool>(S, PC);
10853 const auto V1 = ReadArg<uint32_t>(S, PC);
10854 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1))
10855 return false;
10856 continue;
10857}
10858case OP_DecBitfieldUint64: {
10859 const auto V0 = ReadArg<bool>(S, PC);
10860 const auto V1 = ReadArg<uint32_t>(S, PC);
10861 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1))
10862 return false;
10863 continue;
10864}
10865case OP_DecBitfieldIntAP: {
10866 const auto V0 = ReadArg<bool>(S, PC);
10867 const auto V1 = ReadArg<uint32_t>(S, PC);
10868 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1))
10869 return false;
10870 continue;
10871}
10872case OP_DecBitfieldIntAPS: {
10873 const auto V0 = ReadArg<bool>(S, PC);
10874 const auto V1 = ReadArg<uint32_t>(S, PC);
10875 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
10876 return false;
10877 continue;
10878}
10879case OP_DecBitfieldBool: {
10880 const auto V0 = ReadArg<bool>(S, PC);
10881 const auto V1 = ReadArg<uint32_t>(S, PC);
10882 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1))
10883 return false;
10884 continue;
10885}
10886case OP_DecBitfieldFixedPoint: {
10887 const auto V0 = ReadArg<bool>(S, PC);
10888 const auto V1 = ReadArg<uint32_t>(S, PC);
10889 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
10890 return false;
10891 continue;
10892}
10893#endif
10894#ifdef GET_DISASM
10895case OP_DecBitfieldSint8:
10896 Text.Op = PrintName("DecBitfieldSint8");
10897 Text.Args.push_back(printArg<bool>(P, PC));
10898 Text.Args.push_back(printArg<uint32_t>(P, PC));
10899 break;
10900case OP_DecBitfieldUint8:
10901 Text.Op = PrintName("DecBitfieldUint8");
10902 Text.Args.push_back(printArg<bool>(P, PC));
10903 Text.Args.push_back(printArg<uint32_t>(P, PC));
10904 break;
10905case OP_DecBitfieldSint16:
10906 Text.Op = PrintName("DecBitfieldSint16");
10907 Text.Args.push_back(printArg<bool>(P, PC));
10908 Text.Args.push_back(printArg<uint32_t>(P, PC));
10909 break;
10910case OP_DecBitfieldUint16:
10911 Text.Op = PrintName("DecBitfieldUint16");
10912 Text.Args.push_back(printArg<bool>(P, PC));
10913 Text.Args.push_back(printArg<uint32_t>(P, PC));
10914 break;
10915case OP_DecBitfieldSint32:
10916 Text.Op = PrintName("DecBitfieldSint32");
10917 Text.Args.push_back(printArg<bool>(P, PC));
10918 Text.Args.push_back(printArg<uint32_t>(P, PC));
10919 break;
10920case OP_DecBitfieldUint32:
10921 Text.Op = PrintName("DecBitfieldUint32");
10922 Text.Args.push_back(printArg<bool>(P, PC));
10923 Text.Args.push_back(printArg<uint32_t>(P, PC));
10924 break;
10925case OP_DecBitfieldSint64:
10926 Text.Op = PrintName("DecBitfieldSint64");
10927 Text.Args.push_back(printArg<bool>(P, PC));
10928 Text.Args.push_back(printArg<uint32_t>(P, PC));
10929 break;
10930case OP_DecBitfieldUint64:
10931 Text.Op = PrintName("DecBitfieldUint64");
10932 Text.Args.push_back(printArg<bool>(P, PC));
10933 Text.Args.push_back(printArg<uint32_t>(P, PC));
10934 break;
10935case OP_DecBitfieldIntAP:
10936 Text.Op = PrintName("DecBitfieldIntAP");
10937 Text.Args.push_back(printArg<bool>(P, PC));
10938 Text.Args.push_back(printArg<uint32_t>(P, PC));
10939 break;
10940case OP_DecBitfieldIntAPS:
10941 Text.Op = PrintName("DecBitfieldIntAPS");
10942 Text.Args.push_back(printArg<bool>(P, PC));
10943 Text.Args.push_back(printArg<uint32_t>(P, PC));
10944 break;
10945case OP_DecBitfieldBool:
10946 Text.Op = PrintName("DecBitfieldBool");
10947 Text.Args.push_back(printArg<bool>(P, PC));
10948 Text.Args.push_back(printArg<uint32_t>(P, PC));
10949 break;
10950case OP_DecBitfieldFixedPoint:
10951 Text.Op = PrintName("DecBitfieldFixedPoint");
10952 Text.Args.push_back(printArg<bool>(P, PC));
10953 Text.Args.push_back(printArg<uint32_t>(P, PC));
10954 break;
10955#endif
10956#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10957bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
10958bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
10959bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
10960bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
10961bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
10962bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
10963bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
10964bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
10965bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
10966bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
10967bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
10968bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
10969#endif
10970#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10971[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
10972#endif
10973#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10974bool
10975#if defined(GET_EVAL_IMPL)
10976EvalEmitter
10977#else
10978ByteCodeEmitter
10979#endif
10980::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
10981 switch (T0) {
10982 case PT_Sint8:
10983 return emitDecBitfieldSint8(A0, A1, I);
10984 case PT_Uint8:
10985 return emitDecBitfieldUint8(A0, A1, I);
10986 case PT_Sint16:
10987 return emitDecBitfieldSint16(A0, A1, I);
10988 case PT_Uint16:
10989 return emitDecBitfieldUint16(A0, A1, I);
10990 case PT_Sint32:
10991 return emitDecBitfieldSint32(A0, A1, I);
10992 case PT_Uint32:
10993 return emitDecBitfieldUint32(A0, A1, I);
10994 case PT_Sint64:
10995 return emitDecBitfieldSint64(A0, A1, I);
10996 case PT_Uint64:
10997 return emitDecBitfieldUint64(A0, A1, I);
10998 case PT_IntAP:
10999 return emitDecBitfieldIntAP(A0, A1, I);
11000 case PT_IntAPS:
11001 return emitDecBitfieldIntAPS(A0, A1, I);
11002 case PT_Bool:
11003 return emitDecBitfieldBool(A0, A1, I);
11004 case PT_FixedPoint:
11005 return emitDecBitfieldFixedPoint(A0, A1, I);
11006 default: llvm_unreachable("invalid type: emitDecBitfield");
11007 }
11008 llvm_unreachable("invalid enum value");
11009}
11010#endif
11011#ifdef GET_LINK_IMPL
11012bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11013 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
11014}
11015bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11016 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
11017}
11018bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11019 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
11020}
11021bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11022 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
11023}
11024bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11025 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
11026}
11027bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11028 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
11029}
11030bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11031 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
11032}
11033bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11034 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
11035}
11036bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11037 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
11038}
11039bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11040 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
11041}
11042bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11043 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
11044}
11045bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11046 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
11047}
11048#endif
11049#ifdef GET_EVAL_IMPL
11050bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11051 if (!isActive()) return true;
11052 CurrentSource = L;
11053 return DecBitfield<PT_Sint8>(S, OpPC, A0, A1);
11054}
11055bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11056 if (!isActive()) return true;
11057 CurrentSource = L;
11058 return DecBitfield<PT_Uint8>(S, OpPC, A0, A1);
11059}
11060bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11061 if (!isActive()) return true;
11062 CurrentSource = L;
11063 return DecBitfield<PT_Sint16>(S, OpPC, A0, A1);
11064}
11065bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11066 if (!isActive()) return true;
11067 CurrentSource = L;
11068 return DecBitfield<PT_Uint16>(S, OpPC, A0, A1);
11069}
11070bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11071 if (!isActive()) return true;
11072 CurrentSource = L;
11073 return DecBitfield<PT_Sint32>(S, OpPC, A0, A1);
11074}
11075bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11076 if (!isActive()) return true;
11077 CurrentSource = L;
11078 return DecBitfield<PT_Uint32>(S, OpPC, A0, A1);
11079}
11080bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11081 if (!isActive()) return true;
11082 CurrentSource = L;
11083 return DecBitfield<PT_Sint64>(S, OpPC, A0, A1);
11084}
11085bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11086 if (!isActive()) return true;
11087 CurrentSource = L;
11088 return DecBitfield<PT_Uint64>(S, OpPC, A0, A1);
11089}
11090bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11091 if (!isActive()) return true;
11092 CurrentSource = L;
11093 return DecBitfield<PT_IntAP>(S, OpPC, A0, A1);
11094}
11095bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11096 if (!isActive()) return true;
11097 CurrentSource = L;
11098 return DecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
11099}
11100bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11101 if (!isActive()) return true;
11102 CurrentSource = L;
11103 return DecBitfield<PT_Bool>(S, OpPC, A0, A1);
11104}
11105bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11106 if (!isActive()) return true;
11107 CurrentSource = L;
11108 return DecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
11109}
11110#endif
11111#ifdef GET_OPCODE_NAMES
11112OP_DecPopSint8,
11113OP_DecPopUint8,
11114OP_DecPopSint16,
11115OP_DecPopUint16,
11116OP_DecPopSint32,
11117OP_DecPopUint32,
11118OP_DecPopSint64,
11119OP_DecPopUint64,
11120OP_DecPopIntAP,
11121OP_DecPopIntAPS,
11122OP_DecPopBool,
11123OP_DecPopFixedPoint,
11124#endif
11125#ifdef GET_INTERP
11126case OP_DecPopSint8: {
11127 const auto V0 = ReadArg<bool>(S, PC);
11128 if (!DecPop<PT_Sint8>(S, OpPC, V0))
11129 return false;
11130 continue;
11131}
11132case OP_DecPopUint8: {
11133 const auto V0 = ReadArg<bool>(S, PC);
11134 if (!DecPop<PT_Uint8>(S, OpPC, V0))
11135 return false;
11136 continue;
11137}
11138case OP_DecPopSint16: {
11139 const auto V0 = ReadArg<bool>(S, PC);
11140 if (!DecPop<PT_Sint16>(S, OpPC, V0))
11141 return false;
11142 continue;
11143}
11144case OP_DecPopUint16: {
11145 const auto V0 = ReadArg<bool>(S, PC);
11146 if (!DecPop<PT_Uint16>(S, OpPC, V0))
11147 return false;
11148 continue;
11149}
11150case OP_DecPopSint32: {
11151 const auto V0 = ReadArg<bool>(S, PC);
11152 if (!DecPop<PT_Sint32>(S, OpPC, V0))
11153 return false;
11154 continue;
11155}
11156case OP_DecPopUint32: {
11157 const auto V0 = ReadArg<bool>(S, PC);
11158 if (!DecPop<PT_Uint32>(S, OpPC, V0))
11159 return false;
11160 continue;
11161}
11162case OP_DecPopSint64: {
11163 const auto V0 = ReadArg<bool>(S, PC);
11164 if (!DecPop<PT_Sint64>(S, OpPC, V0))
11165 return false;
11166 continue;
11167}
11168case OP_DecPopUint64: {
11169 const auto V0 = ReadArg<bool>(S, PC);
11170 if (!DecPop<PT_Uint64>(S, OpPC, V0))
11171 return false;
11172 continue;
11173}
11174case OP_DecPopIntAP: {
11175 const auto V0 = ReadArg<bool>(S, PC);
11176 if (!DecPop<PT_IntAP>(S, OpPC, V0))
11177 return false;
11178 continue;
11179}
11180case OP_DecPopIntAPS: {
11181 const auto V0 = ReadArg<bool>(S, PC);
11182 if (!DecPop<PT_IntAPS>(S, OpPC, V0))
11183 return false;
11184 continue;
11185}
11186case OP_DecPopBool: {
11187 const auto V0 = ReadArg<bool>(S, PC);
11188 if (!DecPop<PT_Bool>(S, OpPC, V0))
11189 return false;
11190 continue;
11191}
11192case OP_DecPopFixedPoint: {
11193 const auto V0 = ReadArg<bool>(S, PC);
11194 if (!DecPop<PT_FixedPoint>(S, OpPC, V0))
11195 return false;
11196 continue;
11197}
11198#endif
11199#ifdef GET_DISASM
11200case OP_DecPopSint8:
11201 Text.Op = PrintName("DecPopSint8");
11202 Text.Args.push_back(printArg<bool>(P, PC));
11203 break;
11204case OP_DecPopUint8:
11205 Text.Op = PrintName("DecPopUint8");
11206 Text.Args.push_back(printArg<bool>(P, PC));
11207 break;
11208case OP_DecPopSint16:
11209 Text.Op = PrintName("DecPopSint16");
11210 Text.Args.push_back(printArg<bool>(P, PC));
11211 break;
11212case OP_DecPopUint16:
11213 Text.Op = PrintName("DecPopUint16");
11214 Text.Args.push_back(printArg<bool>(P, PC));
11215 break;
11216case OP_DecPopSint32:
11217 Text.Op = PrintName("DecPopSint32");
11218 Text.Args.push_back(printArg<bool>(P, PC));
11219 break;
11220case OP_DecPopUint32:
11221 Text.Op = PrintName("DecPopUint32");
11222 Text.Args.push_back(printArg<bool>(P, PC));
11223 break;
11224case OP_DecPopSint64:
11225 Text.Op = PrintName("DecPopSint64");
11226 Text.Args.push_back(printArg<bool>(P, PC));
11227 break;
11228case OP_DecPopUint64:
11229 Text.Op = PrintName("DecPopUint64");
11230 Text.Args.push_back(printArg<bool>(P, PC));
11231 break;
11232case OP_DecPopIntAP:
11233 Text.Op = PrintName("DecPopIntAP");
11234 Text.Args.push_back(printArg<bool>(P, PC));
11235 break;
11236case OP_DecPopIntAPS:
11237 Text.Op = PrintName("DecPopIntAPS");
11238 Text.Args.push_back(printArg<bool>(P, PC));
11239 break;
11240case OP_DecPopBool:
11241 Text.Op = PrintName("DecPopBool");
11242 Text.Args.push_back(printArg<bool>(P, PC));
11243 break;
11244case OP_DecPopFixedPoint:
11245 Text.Op = PrintName("DecPopFixedPoint");
11246 Text.Args.push_back(printArg<bool>(P, PC));
11247 break;
11248#endif
11249#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11250bool emitDecPopSint8( bool , SourceInfo);
11251bool emitDecPopUint8( bool , SourceInfo);
11252bool emitDecPopSint16( bool , SourceInfo);
11253bool emitDecPopUint16( bool , SourceInfo);
11254bool emitDecPopSint32( bool , SourceInfo);
11255bool emitDecPopUint32( bool , SourceInfo);
11256bool emitDecPopSint64( bool , SourceInfo);
11257bool emitDecPopUint64( bool , SourceInfo);
11258bool emitDecPopIntAP( bool , SourceInfo);
11259bool emitDecPopIntAPS( bool , SourceInfo);
11260bool emitDecPopBool( bool , SourceInfo);
11261bool emitDecPopFixedPoint( bool , SourceInfo);
11262#endif
11263#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11264[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
11265#endif
11266#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11267bool
11268#if defined(GET_EVAL_IMPL)
11269EvalEmitter
11270#else
11271ByteCodeEmitter
11272#endif
11273::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
11274 switch (T0) {
11275 case PT_Sint8:
11276 return emitDecPopSint8(A0, I);
11277 case PT_Uint8:
11278 return emitDecPopUint8(A0, I);
11279 case PT_Sint16:
11280 return emitDecPopSint16(A0, I);
11281 case PT_Uint16:
11282 return emitDecPopUint16(A0, I);
11283 case PT_Sint32:
11284 return emitDecPopSint32(A0, I);
11285 case PT_Uint32:
11286 return emitDecPopUint32(A0, I);
11287 case PT_Sint64:
11288 return emitDecPopSint64(A0, I);
11289 case PT_Uint64:
11290 return emitDecPopUint64(A0, I);
11291 case PT_IntAP:
11292 return emitDecPopIntAP(A0, I);
11293 case PT_IntAPS:
11294 return emitDecPopIntAPS(A0, I);
11295 case PT_Bool:
11296 return emitDecPopBool(A0, I);
11297 case PT_FixedPoint:
11298 return emitDecPopFixedPoint(A0, I);
11299 default: llvm_unreachable("invalid type: emitDecPop");
11300 }
11301 llvm_unreachable("invalid enum value");
11302}
11303#endif
11304#ifdef GET_LINK_IMPL
11305bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
11306 return emitOp<bool>(OP_DecPopSint8, A0, L);
11307}
11308bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
11309 return emitOp<bool>(OP_DecPopUint8, A0, L);
11310}
11311bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
11312 return emitOp<bool>(OP_DecPopSint16, A0, L);
11313}
11314bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
11315 return emitOp<bool>(OP_DecPopUint16, A0, L);
11316}
11317bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
11318 return emitOp<bool>(OP_DecPopSint32, A0, L);
11319}
11320bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
11321 return emitOp<bool>(OP_DecPopUint32, A0, L);
11322}
11323bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
11324 return emitOp<bool>(OP_DecPopSint64, A0, L);
11325}
11326bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
11327 return emitOp<bool>(OP_DecPopUint64, A0, L);
11328}
11329bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
11330 return emitOp<bool>(OP_DecPopIntAP, A0, L);
11331}
11332bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
11333 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
11334}
11335bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
11336 return emitOp<bool>(OP_DecPopBool, A0, L);
11337}
11338bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
11339 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
11340}
11341#endif
11342#ifdef GET_EVAL_IMPL
11343bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
11344 if (!isActive()) return true;
11345 CurrentSource = L;
11346 return DecPop<PT_Sint8>(S, OpPC, A0);
11347}
11348bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
11349 if (!isActive()) return true;
11350 CurrentSource = L;
11351 return DecPop<PT_Uint8>(S, OpPC, A0);
11352}
11353bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
11354 if (!isActive()) return true;
11355 CurrentSource = L;
11356 return DecPop<PT_Sint16>(S, OpPC, A0);
11357}
11358bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
11359 if (!isActive()) return true;
11360 CurrentSource = L;
11361 return DecPop<PT_Uint16>(S, OpPC, A0);
11362}
11363bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
11364 if (!isActive()) return true;
11365 CurrentSource = L;
11366 return DecPop<PT_Sint32>(S, OpPC, A0);
11367}
11368bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
11369 if (!isActive()) return true;
11370 CurrentSource = L;
11371 return DecPop<PT_Uint32>(S, OpPC, A0);
11372}
11373bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
11374 if (!isActive()) return true;
11375 CurrentSource = L;
11376 return DecPop<PT_Sint64>(S, OpPC, A0);
11377}
11378bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
11379 if (!isActive()) return true;
11380 CurrentSource = L;
11381 return DecPop<PT_Uint64>(S, OpPC, A0);
11382}
11383bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
11384 if (!isActive()) return true;
11385 CurrentSource = L;
11386 return DecPop<PT_IntAP>(S, OpPC, A0);
11387}
11388bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
11389 if (!isActive()) return true;
11390 CurrentSource = L;
11391 return DecPop<PT_IntAPS>(S, OpPC, A0);
11392}
11393bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
11394 if (!isActive()) return true;
11395 CurrentSource = L;
11396 return DecPop<PT_Bool>(S, OpPC, A0);
11397}
11398bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
11399 if (!isActive()) return true;
11400 CurrentSource = L;
11401 return DecPop<PT_FixedPoint>(S, OpPC, A0);
11402}
11403#endif
11404#ifdef GET_OPCODE_NAMES
11405OP_DecPopBitfieldSint8,
11406OP_DecPopBitfieldUint8,
11407OP_DecPopBitfieldSint16,
11408OP_DecPopBitfieldUint16,
11409OP_DecPopBitfieldSint32,
11410OP_DecPopBitfieldUint32,
11411OP_DecPopBitfieldSint64,
11412OP_DecPopBitfieldUint64,
11413OP_DecPopBitfieldIntAP,
11414OP_DecPopBitfieldIntAPS,
11415OP_DecPopBitfieldBool,
11416OP_DecPopBitfieldFixedPoint,
11417#endif
11418#ifdef GET_INTERP
11419case OP_DecPopBitfieldSint8: {
11420 const auto V0 = ReadArg<bool>(S, PC);
11421 const auto V1 = ReadArg<uint32_t>(S, PC);
11422 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
11423 return false;
11424 continue;
11425}
11426case OP_DecPopBitfieldUint8: {
11427 const auto V0 = ReadArg<bool>(S, PC);
11428 const auto V1 = ReadArg<uint32_t>(S, PC);
11429 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
11430 return false;
11431 continue;
11432}
11433case OP_DecPopBitfieldSint16: {
11434 const auto V0 = ReadArg<bool>(S, PC);
11435 const auto V1 = ReadArg<uint32_t>(S, PC);
11436 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
11437 return false;
11438 continue;
11439}
11440case OP_DecPopBitfieldUint16: {
11441 const auto V0 = ReadArg<bool>(S, PC);
11442 const auto V1 = ReadArg<uint32_t>(S, PC);
11443 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
11444 return false;
11445 continue;
11446}
11447case OP_DecPopBitfieldSint32: {
11448 const auto V0 = ReadArg<bool>(S, PC);
11449 const auto V1 = ReadArg<uint32_t>(S, PC);
11450 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
11451 return false;
11452 continue;
11453}
11454case OP_DecPopBitfieldUint32: {
11455 const auto V0 = ReadArg<bool>(S, PC);
11456 const auto V1 = ReadArg<uint32_t>(S, PC);
11457 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
11458 return false;
11459 continue;
11460}
11461case OP_DecPopBitfieldSint64: {
11462 const auto V0 = ReadArg<bool>(S, PC);
11463 const auto V1 = ReadArg<uint32_t>(S, PC);
11464 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
11465 return false;
11466 continue;
11467}
11468case OP_DecPopBitfieldUint64: {
11469 const auto V0 = ReadArg<bool>(S, PC);
11470 const auto V1 = ReadArg<uint32_t>(S, PC);
11471 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
11472 return false;
11473 continue;
11474}
11475case OP_DecPopBitfieldIntAP: {
11476 const auto V0 = ReadArg<bool>(S, PC);
11477 const auto V1 = ReadArg<uint32_t>(S, PC);
11478 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
11479 return false;
11480 continue;
11481}
11482case OP_DecPopBitfieldIntAPS: {
11483 const auto V0 = ReadArg<bool>(S, PC);
11484 const auto V1 = ReadArg<uint32_t>(S, PC);
11485 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
11486 return false;
11487 continue;
11488}
11489case OP_DecPopBitfieldBool: {
11490 const auto V0 = ReadArg<bool>(S, PC);
11491 const auto V1 = ReadArg<uint32_t>(S, PC);
11492 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1))
11493 return false;
11494 continue;
11495}
11496case OP_DecPopBitfieldFixedPoint: {
11497 const auto V0 = ReadArg<bool>(S, PC);
11498 const auto V1 = ReadArg<uint32_t>(S, PC);
11499 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
11500 return false;
11501 continue;
11502}
11503#endif
11504#ifdef GET_DISASM
11505case OP_DecPopBitfieldSint8:
11506 Text.Op = PrintName("DecPopBitfieldSint8");
11507 Text.Args.push_back(printArg<bool>(P, PC));
11508 Text.Args.push_back(printArg<uint32_t>(P, PC));
11509 break;
11510case OP_DecPopBitfieldUint8:
11511 Text.Op = PrintName("DecPopBitfieldUint8");
11512 Text.Args.push_back(printArg<bool>(P, PC));
11513 Text.Args.push_back(printArg<uint32_t>(P, PC));
11514 break;
11515case OP_DecPopBitfieldSint16:
11516 Text.Op = PrintName("DecPopBitfieldSint16");
11517 Text.Args.push_back(printArg<bool>(P, PC));
11518 Text.Args.push_back(printArg<uint32_t>(P, PC));
11519 break;
11520case OP_DecPopBitfieldUint16:
11521 Text.Op = PrintName("DecPopBitfieldUint16");
11522 Text.Args.push_back(printArg<bool>(P, PC));
11523 Text.Args.push_back(printArg<uint32_t>(P, PC));
11524 break;
11525case OP_DecPopBitfieldSint32:
11526 Text.Op = PrintName("DecPopBitfieldSint32");
11527 Text.Args.push_back(printArg<bool>(P, PC));
11528 Text.Args.push_back(printArg<uint32_t>(P, PC));
11529 break;
11530case OP_DecPopBitfieldUint32:
11531 Text.Op = PrintName("DecPopBitfieldUint32");
11532 Text.Args.push_back(printArg<bool>(P, PC));
11533 Text.Args.push_back(printArg<uint32_t>(P, PC));
11534 break;
11535case OP_DecPopBitfieldSint64:
11536 Text.Op = PrintName("DecPopBitfieldSint64");
11537 Text.Args.push_back(printArg<bool>(P, PC));
11538 Text.Args.push_back(printArg<uint32_t>(P, PC));
11539 break;
11540case OP_DecPopBitfieldUint64:
11541 Text.Op = PrintName("DecPopBitfieldUint64");
11542 Text.Args.push_back(printArg<bool>(P, PC));
11543 Text.Args.push_back(printArg<uint32_t>(P, PC));
11544 break;
11545case OP_DecPopBitfieldIntAP:
11546 Text.Op = PrintName("DecPopBitfieldIntAP");
11547 Text.Args.push_back(printArg<bool>(P, PC));
11548 Text.Args.push_back(printArg<uint32_t>(P, PC));
11549 break;
11550case OP_DecPopBitfieldIntAPS:
11551 Text.Op = PrintName("DecPopBitfieldIntAPS");
11552 Text.Args.push_back(printArg<bool>(P, PC));
11553 Text.Args.push_back(printArg<uint32_t>(P, PC));
11554 break;
11555case OP_DecPopBitfieldBool:
11556 Text.Op = PrintName("DecPopBitfieldBool");
11557 Text.Args.push_back(printArg<bool>(P, PC));
11558 Text.Args.push_back(printArg<uint32_t>(P, PC));
11559 break;
11560case OP_DecPopBitfieldFixedPoint:
11561 Text.Op = PrintName("DecPopBitfieldFixedPoint");
11562 Text.Args.push_back(printArg<bool>(P, PC));
11563 Text.Args.push_back(printArg<uint32_t>(P, PC));
11564 break;
11565#endif
11566#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11567bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
11568bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
11569bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
11570bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
11571bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
11572bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
11573bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
11574bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
11575bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
11576bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
11577bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
11578bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
11579#endif
11580#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11581[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
11582#endif
11583#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11584bool
11585#if defined(GET_EVAL_IMPL)
11586EvalEmitter
11587#else
11588ByteCodeEmitter
11589#endif
11590::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
11591 switch (T0) {
11592 case PT_Sint8:
11593 return emitDecPopBitfieldSint8(A0, A1, I);
11594 case PT_Uint8:
11595 return emitDecPopBitfieldUint8(A0, A1, I);
11596 case PT_Sint16:
11597 return emitDecPopBitfieldSint16(A0, A1, I);
11598 case PT_Uint16:
11599 return emitDecPopBitfieldUint16(A0, A1, I);
11600 case PT_Sint32:
11601 return emitDecPopBitfieldSint32(A0, A1, I);
11602 case PT_Uint32:
11603 return emitDecPopBitfieldUint32(A0, A1, I);
11604 case PT_Sint64:
11605 return emitDecPopBitfieldSint64(A0, A1, I);
11606 case PT_Uint64:
11607 return emitDecPopBitfieldUint64(A0, A1, I);
11608 case PT_IntAP:
11609 return emitDecPopBitfieldIntAP(A0, A1, I);
11610 case PT_IntAPS:
11611 return emitDecPopBitfieldIntAPS(A0, A1, I);
11612 case PT_Bool:
11613 return emitDecPopBitfieldBool(A0, A1, I);
11614 case PT_FixedPoint:
11615 return emitDecPopBitfieldFixedPoint(A0, A1, I);
11616 default: llvm_unreachable("invalid type: emitDecPopBitfield");
11617 }
11618 llvm_unreachable("invalid enum value");
11619}
11620#endif
11621#ifdef GET_LINK_IMPL
11622bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11623 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
11624}
11625bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11626 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
11627}
11628bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11629 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
11630}
11631bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11632 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
11633}
11634bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11635 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
11636}
11637bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11638 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
11639}
11640bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11641 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
11642}
11643bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11644 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
11645}
11646bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11647 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
11648}
11649bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11650 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
11651}
11652bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11653 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
11654}
11655bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11656 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
11657}
11658#endif
11659#ifdef GET_EVAL_IMPL
11660bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11661 if (!isActive()) return true;
11662 CurrentSource = L;
11663 return DecPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
11664}
11665bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11666 if (!isActive()) return true;
11667 CurrentSource = L;
11668 return DecPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
11669}
11670bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11671 if (!isActive()) return true;
11672 CurrentSource = L;
11673 return DecPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
11674}
11675bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11676 if (!isActive()) return true;
11677 CurrentSource = L;
11678 return DecPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
11679}
11680bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11681 if (!isActive()) return true;
11682 CurrentSource = L;
11683 return DecPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
11684}
11685bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11686 if (!isActive()) return true;
11687 CurrentSource = L;
11688 return DecPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
11689}
11690bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11691 if (!isActive()) return true;
11692 CurrentSource = L;
11693 return DecPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
11694}
11695bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11696 if (!isActive()) return true;
11697 CurrentSource = L;
11698 return DecPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
11699}
11700bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11701 if (!isActive()) return true;
11702 CurrentSource = L;
11703 return DecPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
11704}
11705bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11706 if (!isActive()) return true;
11707 CurrentSource = L;
11708 return DecPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
11709}
11710bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11711 if (!isActive()) return true;
11712 CurrentSource = L;
11713 return DecPopBitfield<PT_Bool>(S, OpPC, A0, A1);
11714}
11715bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11716 if (!isActive()) return true;
11717 CurrentSource = L;
11718 return DecPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
11719}
11720#endif
11721#ifdef GET_OPCODE_NAMES
11722OP_DecPtr,
11723#endif
11724#ifdef GET_INTERP
11725case OP_DecPtr: {
11726 if (!DecPtr(S, OpPC))
11727 return false;
11728 continue;
11729}
11730#endif
11731#ifdef GET_DISASM
11732case OP_DecPtr:
11733 Text.Op = PrintName("DecPtr");
11734 break;
11735#endif
11736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11737bool emitDecPtr(SourceInfo);
11738#endif
11739#ifdef GET_LINK_IMPL
11740bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
11741 return emitOp<>(OP_DecPtr, L);
11742}
11743#endif
11744#ifdef GET_EVAL_IMPL
11745bool EvalEmitter::emitDecPtr(SourceInfo L) {
11746 if (!isActive()) return true;
11747 CurrentSource = L;
11748 return DecPtr(S, OpPC);
11749}
11750#endif
11751#ifdef GET_OPCODE_NAMES
11752OP_DecayPtrPtrPtr,
11753OP_DecayPtrPtrMemberPtr,
11754OP_DecayPtrMemberPtrPtr,
11755OP_DecayPtrMemberPtrMemberPtr,
11756#endif
11757#ifdef GET_INTERP
11758case OP_DecayPtrPtrPtr: {
11759 if (!DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC))
11760 return false;
11761 continue;
11762}
11763case OP_DecayPtrPtrMemberPtr: {
11764 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC))
11765 return false;
11766 continue;
11767}
11768case OP_DecayPtrMemberPtrPtr: {
11769 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC))
11770 return false;
11771 continue;
11772}
11773case OP_DecayPtrMemberPtrMemberPtr: {
11774 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC))
11775 return false;
11776 continue;
11777}
11778#endif
11779#ifdef GET_DISASM
11780case OP_DecayPtrPtrPtr:
11781 Text.Op = PrintName("DecayPtrPtrPtr");
11782 break;
11783case OP_DecayPtrPtrMemberPtr:
11784 Text.Op = PrintName("DecayPtrPtrMemberPtr");
11785 break;
11786case OP_DecayPtrMemberPtrPtr:
11787 Text.Op = PrintName("DecayPtrMemberPtrPtr");
11788 break;
11789case OP_DecayPtrMemberPtrMemberPtr:
11790 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
11791 break;
11792#endif
11793#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11794bool emitDecayPtrPtrPtr(SourceInfo);
11795bool emitDecayPtrPtrMemberPtr(SourceInfo);
11796bool emitDecayPtrMemberPtrPtr(SourceInfo);
11797bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
11798#endif
11799#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11800[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
11801#endif
11802#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11803bool
11804#if defined(GET_EVAL_IMPL)
11805EvalEmitter
11806#else
11807ByteCodeEmitter
11808#endif
11809::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
11810 switch (T0) {
11811 case PT_Ptr:
11812 switch (T1) {
11813 case PT_Ptr:
11814 return emitDecayPtrPtrPtr(I);
11815 case PT_MemberPtr:
11816 return emitDecayPtrPtrMemberPtr(I);
11817 default: llvm_unreachable("invalid type: emitDecayPtr");
11818 }
11819 llvm_unreachable("invalid enum value");
11820 case PT_MemberPtr:
11821 switch (T1) {
11822 case PT_Ptr:
11823 return emitDecayPtrMemberPtrPtr(I);
11824 case PT_MemberPtr:
11825 return emitDecayPtrMemberPtrMemberPtr(I);
11826 default: llvm_unreachable("invalid type: emitDecayPtr");
11827 }
11828 llvm_unreachable("invalid enum value");
11829 default: llvm_unreachable("invalid type: emitDecayPtr");
11830 }
11831 llvm_unreachable("invalid enum value");
11832}
11833#endif
11834#ifdef GET_LINK_IMPL
11835bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
11836 return emitOp<>(OP_DecayPtrPtrPtr, L);
11837}
11838bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
11839 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
11840}
11841bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
11842 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
11843}
11844bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
11845 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
11846}
11847#endif
11848#ifdef GET_EVAL_IMPL
11849bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
11850 if (!isActive()) return true;
11851 CurrentSource = L;
11852 return DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC);
11853}
11854bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
11855 if (!isActive()) return true;
11856 CurrentSource = L;
11857 return DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC);
11858}
11859bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
11860 if (!isActive()) return true;
11861 CurrentSource = L;
11862 return DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC);
11863}
11864bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
11865 if (!isActive()) return true;
11866 CurrentSource = L;
11867 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
11868}
11869#endif
11870#ifdef GET_OPCODE_NAMES
11871OP_Decf,
11872#endif
11873#ifdef GET_INTERP
11874case OP_Decf: {
11875 const auto V0 = ReadArg<uint32_t>(S, PC);
11876 if (!Decf(S, OpPC, V0))
11877 return false;
11878 continue;
11879}
11880#endif
11881#ifdef GET_DISASM
11882case OP_Decf:
11883 Text.Op = PrintName("Decf");
11884 Text.Args.push_back(printArg<uint32_t>(P, PC));
11885 break;
11886#endif
11887#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11888bool emitDecf( uint32_t , SourceInfo);
11889#endif
11890#ifdef GET_LINK_IMPL
11891bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
11892 return emitOp<uint32_t>(OP_Decf, A0, L);
11893}
11894#endif
11895#ifdef GET_EVAL_IMPL
11896bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
11897 if (!isActive()) return true;
11898 CurrentSource = L;
11899 return Decf(S, OpPC, A0);
11900}
11901#endif
11902#ifdef GET_OPCODE_NAMES
11903OP_DecfPop,
11904#endif
11905#ifdef GET_INTERP
11906case OP_DecfPop: {
11907 const auto V0 = ReadArg<uint32_t>(S, PC);
11908 if (!DecfPop(S, OpPC, V0))
11909 return false;
11910 continue;
11911}
11912#endif
11913#ifdef GET_DISASM
11914case OP_DecfPop:
11915 Text.Op = PrintName("DecfPop");
11916 Text.Args.push_back(printArg<uint32_t>(P, PC));
11917 break;
11918#endif
11919#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11920bool emitDecfPop( uint32_t , SourceInfo);
11921#endif
11922#ifdef GET_LINK_IMPL
11923bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
11924 return emitOp<uint32_t>(OP_DecfPop, A0, L);
11925}
11926#endif
11927#ifdef GET_EVAL_IMPL
11928bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
11929 if (!isActive()) return true;
11930 CurrentSource = L;
11931 return DecfPop(S, OpPC, A0);
11932}
11933#endif
11934#ifdef GET_OPCODE_NAMES
11935OP_Destroy,
11936#endif
11937#ifdef GET_INTERP
11938case OP_Destroy: {
11939 const auto V0 = ReadArg<uint32_t>(S, PC);
11940 if (!Destroy(S, OpPC, V0))
11941 return false;
11942 continue;
11943}
11944#endif
11945#ifdef GET_DISASM
11946case OP_Destroy:
11947 Text.Op = PrintName("Destroy");
11948 Text.Args.push_back(printArg<uint32_t>(P, PC));
11949 break;
11950#endif
11951#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11952bool emitDestroy( uint32_t , SourceInfo);
11953#endif
11954#ifdef GET_LINK_IMPL
11955bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
11956 return emitOp<uint32_t>(OP_Destroy, A0, L);
11957}
11958#endif
11959#ifdef GET_OPCODE_NAMES
11960OP_DiagTypeid,
11961#endif
11962#ifdef GET_INTERP
11963case OP_DiagTypeid: {
11964 if (!DiagTypeid(S, OpPC))
11965 return false;
11966 continue;
11967}
11968#endif
11969#ifdef GET_DISASM
11970case OP_DiagTypeid:
11971 Text.Op = PrintName("DiagTypeid");
11972 break;
11973#endif
11974#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11975bool emitDiagTypeid(SourceInfo);
11976#endif
11977#ifdef GET_LINK_IMPL
11978bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
11979 return emitOp<>(OP_DiagTypeid, L);
11980}
11981#endif
11982#ifdef GET_EVAL_IMPL
11983bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
11984 if (!isActive()) return true;
11985 CurrentSource = L;
11986 return DiagTypeid(S, OpPC);
11987}
11988#endif
11989#ifdef GET_OPCODE_NAMES
11990OP_DivSint8,
11991OP_DivUint8,
11992OP_DivSint16,
11993OP_DivUint16,
11994OP_DivSint32,
11995OP_DivUint32,
11996OP_DivSint64,
11997OP_DivUint64,
11998OP_DivIntAP,
11999OP_DivIntAPS,
12000OP_DivFixedPoint,
12001#endif
12002#ifdef GET_INTERP
12003case OP_DivSint8: {
12004 if (!Div<PT_Sint8>(S, OpPC))
12005 return false;
12006 continue;
12007}
12008case OP_DivUint8: {
12009 if (!Div<PT_Uint8>(S, OpPC))
12010 return false;
12011 continue;
12012}
12013case OP_DivSint16: {
12014 if (!Div<PT_Sint16>(S, OpPC))
12015 return false;
12016 continue;
12017}
12018case OP_DivUint16: {
12019 if (!Div<PT_Uint16>(S, OpPC))
12020 return false;
12021 continue;
12022}
12023case OP_DivSint32: {
12024 if (!Div<PT_Sint32>(S, OpPC))
12025 return false;
12026 continue;
12027}
12028case OP_DivUint32: {
12029 if (!Div<PT_Uint32>(S, OpPC))
12030 return false;
12031 continue;
12032}
12033case OP_DivSint64: {
12034 if (!Div<PT_Sint64>(S, OpPC))
12035 return false;
12036 continue;
12037}
12038case OP_DivUint64: {
12039 if (!Div<PT_Uint64>(S, OpPC))
12040 return false;
12041 continue;
12042}
12043case OP_DivIntAP: {
12044 if (!Div<PT_IntAP>(S, OpPC))
12045 return false;
12046 continue;
12047}
12048case OP_DivIntAPS: {
12049 if (!Div<PT_IntAPS>(S, OpPC))
12050 return false;
12051 continue;
12052}
12053case OP_DivFixedPoint: {
12054 if (!Div<PT_FixedPoint>(S, OpPC))
12055 return false;
12056 continue;
12057}
12058#endif
12059#ifdef GET_DISASM
12060case OP_DivSint8:
12061 Text.Op = PrintName("DivSint8");
12062 break;
12063case OP_DivUint8:
12064 Text.Op = PrintName("DivUint8");
12065 break;
12066case OP_DivSint16:
12067 Text.Op = PrintName("DivSint16");
12068 break;
12069case OP_DivUint16:
12070 Text.Op = PrintName("DivUint16");
12071 break;
12072case OP_DivSint32:
12073 Text.Op = PrintName("DivSint32");
12074 break;
12075case OP_DivUint32:
12076 Text.Op = PrintName("DivUint32");
12077 break;
12078case OP_DivSint64:
12079 Text.Op = PrintName("DivSint64");
12080 break;
12081case OP_DivUint64:
12082 Text.Op = PrintName("DivUint64");
12083 break;
12084case OP_DivIntAP:
12085 Text.Op = PrintName("DivIntAP");
12086 break;
12087case OP_DivIntAPS:
12088 Text.Op = PrintName("DivIntAPS");
12089 break;
12090case OP_DivFixedPoint:
12091 Text.Op = PrintName("DivFixedPoint");
12092 break;
12093#endif
12094#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12095bool emitDivSint8(SourceInfo);
12096bool emitDivUint8(SourceInfo);
12097bool emitDivSint16(SourceInfo);
12098bool emitDivUint16(SourceInfo);
12099bool emitDivSint32(SourceInfo);
12100bool emitDivUint32(SourceInfo);
12101bool emitDivSint64(SourceInfo);
12102bool emitDivUint64(SourceInfo);
12103bool emitDivIntAP(SourceInfo);
12104bool emitDivIntAPS(SourceInfo);
12105bool emitDivFixedPoint(SourceInfo);
12106#endif
12107#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12108[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
12109#endif
12110#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12111bool
12112#if defined(GET_EVAL_IMPL)
12113EvalEmitter
12114#else
12115ByteCodeEmitter
12116#endif
12117::emitDiv(PrimType T0, SourceInfo I) {
12118 switch (T0) {
12119 case PT_Sint8:
12120 return emitDivSint8(I);
12121 case PT_Uint8:
12122 return emitDivUint8(I);
12123 case PT_Sint16:
12124 return emitDivSint16(I);
12125 case PT_Uint16:
12126 return emitDivUint16(I);
12127 case PT_Sint32:
12128 return emitDivSint32(I);
12129 case PT_Uint32:
12130 return emitDivUint32(I);
12131 case PT_Sint64:
12132 return emitDivSint64(I);
12133 case PT_Uint64:
12134 return emitDivUint64(I);
12135 case PT_IntAP:
12136 return emitDivIntAP(I);
12137 case PT_IntAPS:
12138 return emitDivIntAPS(I);
12139 case PT_FixedPoint:
12140 return emitDivFixedPoint(I);
12141 default: llvm_unreachable("invalid type: emitDiv");
12142 }
12143 llvm_unreachable("invalid enum value");
12144}
12145#endif
12146#ifdef GET_LINK_IMPL
12147bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
12148 return emitOp<>(OP_DivSint8, L);
12149}
12150bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
12151 return emitOp<>(OP_DivUint8, L);
12152}
12153bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
12154 return emitOp<>(OP_DivSint16, L);
12155}
12156bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
12157 return emitOp<>(OP_DivUint16, L);
12158}
12159bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
12160 return emitOp<>(OP_DivSint32, L);
12161}
12162bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
12163 return emitOp<>(OP_DivUint32, L);
12164}
12165bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
12166 return emitOp<>(OP_DivSint64, L);
12167}
12168bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
12169 return emitOp<>(OP_DivUint64, L);
12170}
12171bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
12172 return emitOp<>(OP_DivIntAP, L);
12173}
12174bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
12175 return emitOp<>(OP_DivIntAPS, L);
12176}
12177bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
12178 return emitOp<>(OP_DivFixedPoint, L);
12179}
12180#endif
12181#ifdef GET_EVAL_IMPL
12182bool EvalEmitter::emitDivSint8(SourceInfo L) {
12183 if (!isActive()) return true;
12184 CurrentSource = L;
12185 return Div<PT_Sint8>(S, OpPC);
12186}
12187bool EvalEmitter::emitDivUint8(SourceInfo L) {
12188 if (!isActive()) return true;
12189 CurrentSource = L;
12190 return Div<PT_Uint8>(S, OpPC);
12191}
12192bool EvalEmitter::emitDivSint16(SourceInfo L) {
12193 if (!isActive()) return true;
12194 CurrentSource = L;
12195 return Div<PT_Sint16>(S, OpPC);
12196}
12197bool EvalEmitter::emitDivUint16(SourceInfo L) {
12198 if (!isActive()) return true;
12199 CurrentSource = L;
12200 return Div<PT_Uint16>(S, OpPC);
12201}
12202bool EvalEmitter::emitDivSint32(SourceInfo L) {
12203 if (!isActive()) return true;
12204 CurrentSource = L;
12205 return Div<PT_Sint32>(S, OpPC);
12206}
12207bool EvalEmitter::emitDivUint32(SourceInfo L) {
12208 if (!isActive()) return true;
12209 CurrentSource = L;
12210 return Div<PT_Uint32>(S, OpPC);
12211}
12212bool EvalEmitter::emitDivSint64(SourceInfo L) {
12213 if (!isActive()) return true;
12214 CurrentSource = L;
12215 return Div<PT_Sint64>(S, OpPC);
12216}
12217bool EvalEmitter::emitDivUint64(SourceInfo L) {
12218 if (!isActive()) return true;
12219 CurrentSource = L;
12220 return Div<PT_Uint64>(S, OpPC);
12221}
12222bool EvalEmitter::emitDivIntAP(SourceInfo L) {
12223 if (!isActive()) return true;
12224 CurrentSource = L;
12225 return Div<PT_IntAP>(S, OpPC);
12226}
12227bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
12228 if (!isActive()) return true;
12229 CurrentSource = L;
12230 return Div<PT_IntAPS>(S, OpPC);
12231}
12232bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
12233 if (!isActive()) return true;
12234 CurrentSource = L;
12235 return Div<PT_FixedPoint>(S, OpPC);
12236}
12237#endif
12238#ifdef GET_OPCODE_NAMES
12239OP_DivcSint8,
12240OP_DivcUint8,
12241OP_DivcSint16,
12242OP_DivcUint16,
12243OP_DivcSint32,
12244OP_DivcUint32,
12245OP_DivcSint64,
12246OP_DivcUint64,
12247OP_DivcIntAP,
12248OP_DivcIntAPS,
12249OP_DivcFloat,
12250#endif
12251#ifdef GET_INTERP
12252case OP_DivcSint8: {
12253 if (!Divc<PT_Sint8>(S, OpPC))
12254 return false;
12255 continue;
12256}
12257case OP_DivcUint8: {
12258 if (!Divc<PT_Uint8>(S, OpPC))
12259 return false;
12260 continue;
12261}
12262case OP_DivcSint16: {
12263 if (!Divc<PT_Sint16>(S, OpPC))
12264 return false;
12265 continue;
12266}
12267case OP_DivcUint16: {
12268 if (!Divc<PT_Uint16>(S, OpPC))
12269 return false;
12270 continue;
12271}
12272case OP_DivcSint32: {
12273 if (!Divc<PT_Sint32>(S, OpPC))
12274 return false;
12275 continue;
12276}
12277case OP_DivcUint32: {
12278 if (!Divc<PT_Uint32>(S, OpPC))
12279 return false;
12280 continue;
12281}
12282case OP_DivcSint64: {
12283 if (!Divc<PT_Sint64>(S, OpPC))
12284 return false;
12285 continue;
12286}
12287case OP_DivcUint64: {
12288 if (!Divc<PT_Uint64>(S, OpPC))
12289 return false;
12290 continue;
12291}
12292case OP_DivcIntAP: {
12293 if (!Divc<PT_IntAP>(S, OpPC))
12294 return false;
12295 continue;
12296}
12297case OP_DivcIntAPS: {
12298 if (!Divc<PT_IntAPS>(S, OpPC))
12299 return false;
12300 continue;
12301}
12302case OP_DivcFloat: {
12303 if (!Divc<PT_Float>(S, OpPC))
12304 return false;
12305 continue;
12306}
12307#endif
12308#ifdef GET_DISASM
12309case OP_DivcSint8:
12310 Text.Op = PrintName("DivcSint8");
12311 break;
12312case OP_DivcUint8:
12313 Text.Op = PrintName("DivcUint8");
12314 break;
12315case OP_DivcSint16:
12316 Text.Op = PrintName("DivcSint16");
12317 break;
12318case OP_DivcUint16:
12319 Text.Op = PrintName("DivcUint16");
12320 break;
12321case OP_DivcSint32:
12322 Text.Op = PrintName("DivcSint32");
12323 break;
12324case OP_DivcUint32:
12325 Text.Op = PrintName("DivcUint32");
12326 break;
12327case OP_DivcSint64:
12328 Text.Op = PrintName("DivcSint64");
12329 break;
12330case OP_DivcUint64:
12331 Text.Op = PrintName("DivcUint64");
12332 break;
12333case OP_DivcIntAP:
12334 Text.Op = PrintName("DivcIntAP");
12335 break;
12336case OP_DivcIntAPS:
12337 Text.Op = PrintName("DivcIntAPS");
12338 break;
12339case OP_DivcFloat:
12340 Text.Op = PrintName("DivcFloat");
12341 break;
12342#endif
12343#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12344bool emitDivcSint8(SourceInfo);
12345bool emitDivcUint8(SourceInfo);
12346bool emitDivcSint16(SourceInfo);
12347bool emitDivcUint16(SourceInfo);
12348bool emitDivcSint32(SourceInfo);
12349bool emitDivcUint32(SourceInfo);
12350bool emitDivcSint64(SourceInfo);
12351bool emitDivcUint64(SourceInfo);
12352bool emitDivcIntAP(SourceInfo);
12353bool emitDivcIntAPS(SourceInfo);
12354bool emitDivcFloat(SourceInfo);
12355#endif
12356#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12357[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
12358#endif
12359#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12360bool
12361#if defined(GET_EVAL_IMPL)
12362EvalEmitter
12363#else
12364ByteCodeEmitter
12365#endif
12366::emitDivc(PrimType T0, SourceInfo I) {
12367 switch (T0) {
12368 case PT_Sint8:
12369 return emitDivcSint8(I);
12370 case PT_Uint8:
12371 return emitDivcUint8(I);
12372 case PT_Sint16:
12373 return emitDivcSint16(I);
12374 case PT_Uint16:
12375 return emitDivcUint16(I);
12376 case PT_Sint32:
12377 return emitDivcSint32(I);
12378 case PT_Uint32:
12379 return emitDivcUint32(I);
12380 case PT_Sint64:
12381 return emitDivcSint64(I);
12382 case PT_Uint64:
12383 return emitDivcUint64(I);
12384 case PT_IntAP:
12385 return emitDivcIntAP(I);
12386 case PT_IntAPS:
12387 return emitDivcIntAPS(I);
12388 case PT_Float:
12389 return emitDivcFloat(I);
12390 default: llvm_unreachable("invalid type: emitDivc");
12391 }
12392 llvm_unreachable("invalid enum value");
12393}
12394#endif
12395#ifdef GET_LINK_IMPL
12396bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
12397 return emitOp<>(OP_DivcSint8, L);
12398}
12399bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
12400 return emitOp<>(OP_DivcUint8, L);
12401}
12402bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
12403 return emitOp<>(OP_DivcSint16, L);
12404}
12405bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
12406 return emitOp<>(OP_DivcUint16, L);
12407}
12408bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
12409 return emitOp<>(OP_DivcSint32, L);
12410}
12411bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
12412 return emitOp<>(OP_DivcUint32, L);
12413}
12414bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
12415 return emitOp<>(OP_DivcSint64, L);
12416}
12417bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
12418 return emitOp<>(OP_DivcUint64, L);
12419}
12420bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
12421 return emitOp<>(OP_DivcIntAP, L);
12422}
12423bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
12424 return emitOp<>(OP_DivcIntAPS, L);
12425}
12426bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
12427 return emitOp<>(OP_DivcFloat, L);
12428}
12429#endif
12430#ifdef GET_EVAL_IMPL
12431bool EvalEmitter::emitDivcSint8(SourceInfo L) {
12432 if (!isActive()) return true;
12433 CurrentSource = L;
12434 return Divc<PT_Sint8>(S, OpPC);
12435}
12436bool EvalEmitter::emitDivcUint8(SourceInfo L) {
12437 if (!isActive()) return true;
12438 CurrentSource = L;
12439 return Divc<PT_Uint8>(S, OpPC);
12440}
12441bool EvalEmitter::emitDivcSint16(SourceInfo L) {
12442 if (!isActive()) return true;
12443 CurrentSource = L;
12444 return Divc<PT_Sint16>(S, OpPC);
12445}
12446bool EvalEmitter::emitDivcUint16(SourceInfo L) {
12447 if (!isActive()) return true;
12448 CurrentSource = L;
12449 return Divc<PT_Uint16>(S, OpPC);
12450}
12451bool EvalEmitter::emitDivcSint32(SourceInfo L) {
12452 if (!isActive()) return true;
12453 CurrentSource = L;
12454 return Divc<PT_Sint32>(S, OpPC);
12455}
12456bool EvalEmitter::emitDivcUint32(SourceInfo L) {
12457 if (!isActive()) return true;
12458 CurrentSource = L;
12459 return Divc<PT_Uint32>(S, OpPC);
12460}
12461bool EvalEmitter::emitDivcSint64(SourceInfo L) {
12462 if (!isActive()) return true;
12463 CurrentSource = L;
12464 return Divc<PT_Sint64>(S, OpPC);
12465}
12466bool EvalEmitter::emitDivcUint64(SourceInfo L) {
12467 if (!isActive()) return true;
12468 CurrentSource = L;
12469 return Divc<PT_Uint64>(S, OpPC);
12470}
12471bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
12472 if (!isActive()) return true;
12473 CurrentSource = L;
12474 return Divc<PT_IntAP>(S, OpPC);
12475}
12476bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
12477 if (!isActive()) return true;
12478 CurrentSource = L;
12479 return Divc<PT_IntAPS>(S, OpPC);
12480}
12481bool EvalEmitter::emitDivcFloat(SourceInfo L) {
12482 if (!isActive()) return true;
12483 CurrentSource = L;
12484 return Divc<PT_Float>(S, OpPC);
12485}
12486#endif
12487#ifdef GET_OPCODE_NAMES
12488OP_Divf,
12489#endif
12490#ifdef GET_INTERP
12491case OP_Divf: {
12492 const auto V0 = ReadArg<uint32_t>(S, PC);
12493 if (!Divf(S, OpPC, V0))
12494 return false;
12495 continue;
12496}
12497#endif
12498#ifdef GET_DISASM
12499case OP_Divf:
12500 Text.Op = PrintName("Divf");
12501 Text.Args.push_back(printArg<uint32_t>(P, PC));
12502 break;
12503#endif
12504#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12505bool emitDivf( uint32_t , SourceInfo);
12506#endif
12507#ifdef GET_LINK_IMPL
12508bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
12509 return emitOp<uint32_t>(OP_Divf, A0, L);
12510}
12511#endif
12512#ifdef GET_EVAL_IMPL
12513bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
12514 if (!isActive()) return true;
12515 CurrentSource = L;
12516 return Divf(S, OpPC, A0);
12517}
12518#endif
12519#ifdef GET_OPCODE_NAMES
12520OP_Dump,
12521#endif
12522#ifdef GET_INTERP
12523case OP_Dump: {
12524 if (!Dump(S, OpPC))
12525 return false;
12526 continue;
12527}
12528#endif
12529#ifdef GET_DISASM
12530case OP_Dump:
12531 Text.Op = PrintName("Dump");
12532 break;
12533#endif
12534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12535bool emitDump(SourceInfo);
12536#endif
12537#ifdef GET_LINK_IMPL
12538bool ByteCodeEmitter::emitDump(SourceInfo L) {
12539 return emitOp<>(OP_Dump, L);
12540}
12541#endif
12542#ifdef GET_EVAL_IMPL
12543bool EvalEmitter::emitDump(SourceInfo L) {
12544 if (!isActive()) return true;
12545 CurrentSource = L;
12546 return Dump(S, OpPC);
12547}
12548#endif
12549#ifdef GET_OPCODE_NAMES
12550OP_DupSint8,
12551OP_DupUint8,
12552OP_DupSint16,
12553OP_DupUint16,
12554OP_DupSint32,
12555OP_DupUint32,
12556OP_DupSint64,
12557OP_DupUint64,
12558OP_DupIntAP,
12559OP_DupIntAPS,
12560OP_DupBool,
12561OP_DupFixedPoint,
12562OP_DupPtr,
12563OP_DupMemberPtr,
12564OP_DupFloat,
12565#endif
12566#ifdef GET_INTERP
12567case OP_DupSint8: {
12568 if (!Dup<PT_Sint8>(S, OpPC))
12569 return false;
12570 continue;
12571}
12572case OP_DupUint8: {
12573 if (!Dup<PT_Uint8>(S, OpPC))
12574 return false;
12575 continue;
12576}
12577case OP_DupSint16: {
12578 if (!Dup<PT_Sint16>(S, OpPC))
12579 return false;
12580 continue;
12581}
12582case OP_DupUint16: {
12583 if (!Dup<PT_Uint16>(S, OpPC))
12584 return false;
12585 continue;
12586}
12587case OP_DupSint32: {
12588 if (!Dup<PT_Sint32>(S, OpPC))
12589 return false;
12590 continue;
12591}
12592case OP_DupUint32: {
12593 if (!Dup<PT_Uint32>(S, OpPC))
12594 return false;
12595 continue;
12596}
12597case OP_DupSint64: {
12598 if (!Dup<PT_Sint64>(S, OpPC))
12599 return false;
12600 continue;
12601}
12602case OP_DupUint64: {
12603 if (!Dup<PT_Uint64>(S, OpPC))
12604 return false;
12605 continue;
12606}
12607case OP_DupIntAP: {
12608 if (!Dup<PT_IntAP>(S, OpPC))
12609 return false;
12610 continue;
12611}
12612case OP_DupIntAPS: {
12613 if (!Dup<PT_IntAPS>(S, OpPC))
12614 return false;
12615 continue;
12616}
12617case OP_DupBool: {
12618 if (!Dup<PT_Bool>(S, OpPC))
12619 return false;
12620 continue;
12621}
12622case OP_DupFixedPoint: {
12623 if (!Dup<PT_FixedPoint>(S, OpPC))
12624 return false;
12625 continue;
12626}
12627case OP_DupPtr: {
12628 if (!Dup<PT_Ptr>(S, OpPC))
12629 return false;
12630 continue;
12631}
12632case OP_DupMemberPtr: {
12633 if (!Dup<PT_MemberPtr>(S, OpPC))
12634 return false;
12635 continue;
12636}
12637case OP_DupFloat: {
12638 if (!Dup<PT_Float>(S, OpPC))
12639 return false;
12640 continue;
12641}
12642#endif
12643#ifdef GET_DISASM
12644case OP_DupSint8:
12645 Text.Op = PrintName("DupSint8");
12646 break;
12647case OP_DupUint8:
12648 Text.Op = PrintName("DupUint8");
12649 break;
12650case OP_DupSint16:
12651 Text.Op = PrintName("DupSint16");
12652 break;
12653case OP_DupUint16:
12654 Text.Op = PrintName("DupUint16");
12655 break;
12656case OP_DupSint32:
12657 Text.Op = PrintName("DupSint32");
12658 break;
12659case OP_DupUint32:
12660 Text.Op = PrintName("DupUint32");
12661 break;
12662case OP_DupSint64:
12663 Text.Op = PrintName("DupSint64");
12664 break;
12665case OP_DupUint64:
12666 Text.Op = PrintName("DupUint64");
12667 break;
12668case OP_DupIntAP:
12669 Text.Op = PrintName("DupIntAP");
12670 break;
12671case OP_DupIntAPS:
12672 Text.Op = PrintName("DupIntAPS");
12673 break;
12674case OP_DupBool:
12675 Text.Op = PrintName("DupBool");
12676 break;
12677case OP_DupFixedPoint:
12678 Text.Op = PrintName("DupFixedPoint");
12679 break;
12680case OP_DupPtr:
12681 Text.Op = PrintName("DupPtr");
12682 break;
12683case OP_DupMemberPtr:
12684 Text.Op = PrintName("DupMemberPtr");
12685 break;
12686case OP_DupFloat:
12687 Text.Op = PrintName("DupFloat");
12688 break;
12689#endif
12690#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12691bool emitDupSint8(SourceInfo);
12692bool emitDupUint8(SourceInfo);
12693bool emitDupSint16(SourceInfo);
12694bool emitDupUint16(SourceInfo);
12695bool emitDupSint32(SourceInfo);
12696bool emitDupUint32(SourceInfo);
12697bool emitDupSint64(SourceInfo);
12698bool emitDupUint64(SourceInfo);
12699bool emitDupIntAP(SourceInfo);
12700bool emitDupIntAPS(SourceInfo);
12701bool emitDupBool(SourceInfo);
12702bool emitDupFixedPoint(SourceInfo);
12703bool emitDupPtr(SourceInfo);
12704bool emitDupMemberPtr(SourceInfo);
12705bool emitDupFloat(SourceInfo);
12706#endif
12707#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12708[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
12709#endif
12710#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12711bool
12712#if defined(GET_EVAL_IMPL)
12713EvalEmitter
12714#else
12715ByteCodeEmitter
12716#endif
12717::emitDup(PrimType T0, SourceInfo I) {
12718 switch (T0) {
12719 case PT_Sint8:
12720 return emitDupSint8(I);
12721 case PT_Uint8:
12722 return emitDupUint8(I);
12723 case PT_Sint16:
12724 return emitDupSint16(I);
12725 case PT_Uint16:
12726 return emitDupUint16(I);
12727 case PT_Sint32:
12728 return emitDupSint32(I);
12729 case PT_Uint32:
12730 return emitDupUint32(I);
12731 case PT_Sint64:
12732 return emitDupSint64(I);
12733 case PT_Uint64:
12734 return emitDupUint64(I);
12735 case PT_IntAP:
12736 return emitDupIntAP(I);
12737 case PT_IntAPS:
12738 return emitDupIntAPS(I);
12739 case PT_Bool:
12740 return emitDupBool(I);
12741 case PT_FixedPoint:
12742 return emitDupFixedPoint(I);
12743 case PT_Ptr:
12744 return emitDupPtr(I);
12745 case PT_MemberPtr:
12746 return emitDupMemberPtr(I);
12747 case PT_Float:
12748 return emitDupFloat(I);
12749 }
12750 llvm_unreachable("invalid enum value");
12751}
12752#endif
12753#ifdef GET_LINK_IMPL
12754bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
12755 return emitOp<>(OP_DupSint8, L);
12756}
12757bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
12758 return emitOp<>(OP_DupUint8, L);
12759}
12760bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
12761 return emitOp<>(OP_DupSint16, L);
12762}
12763bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
12764 return emitOp<>(OP_DupUint16, L);
12765}
12766bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
12767 return emitOp<>(OP_DupSint32, L);
12768}
12769bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
12770 return emitOp<>(OP_DupUint32, L);
12771}
12772bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
12773 return emitOp<>(OP_DupSint64, L);
12774}
12775bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
12776 return emitOp<>(OP_DupUint64, L);
12777}
12778bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
12779 return emitOp<>(OP_DupIntAP, L);
12780}
12781bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
12782 return emitOp<>(OP_DupIntAPS, L);
12783}
12784bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
12785 return emitOp<>(OP_DupBool, L);
12786}
12787bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
12788 return emitOp<>(OP_DupFixedPoint, L);
12789}
12790bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
12791 return emitOp<>(OP_DupPtr, L);
12792}
12793bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
12794 return emitOp<>(OP_DupMemberPtr, L);
12795}
12796bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
12797 return emitOp<>(OP_DupFloat, L);
12798}
12799#endif
12800#ifdef GET_EVAL_IMPL
12801bool EvalEmitter::emitDupSint8(SourceInfo L) {
12802 if (!isActive()) return true;
12803 CurrentSource = L;
12804 return Dup<PT_Sint8>(S, OpPC);
12805}
12806bool EvalEmitter::emitDupUint8(SourceInfo L) {
12807 if (!isActive()) return true;
12808 CurrentSource = L;
12809 return Dup<PT_Uint8>(S, OpPC);
12810}
12811bool EvalEmitter::emitDupSint16(SourceInfo L) {
12812 if (!isActive()) return true;
12813 CurrentSource = L;
12814 return Dup<PT_Sint16>(S, OpPC);
12815}
12816bool EvalEmitter::emitDupUint16(SourceInfo L) {
12817 if (!isActive()) return true;
12818 CurrentSource = L;
12819 return Dup<PT_Uint16>(S, OpPC);
12820}
12821bool EvalEmitter::emitDupSint32(SourceInfo L) {
12822 if (!isActive()) return true;
12823 CurrentSource = L;
12824 return Dup<PT_Sint32>(S, OpPC);
12825}
12826bool EvalEmitter::emitDupUint32(SourceInfo L) {
12827 if (!isActive()) return true;
12828 CurrentSource = L;
12829 return Dup<PT_Uint32>(S, OpPC);
12830}
12831bool EvalEmitter::emitDupSint64(SourceInfo L) {
12832 if (!isActive()) return true;
12833 CurrentSource = L;
12834 return Dup<PT_Sint64>(S, OpPC);
12835}
12836bool EvalEmitter::emitDupUint64(SourceInfo L) {
12837 if (!isActive()) return true;
12838 CurrentSource = L;
12839 return Dup<PT_Uint64>(S, OpPC);
12840}
12841bool EvalEmitter::emitDupIntAP(SourceInfo L) {
12842 if (!isActive()) return true;
12843 CurrentSource = L;
12844 return Dup<PT_IntAP>(S, OpPC);
12845}
12846bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
12847 if (!isActive()) return true;
12848 CurrentSource = L;
12849 return Dup<PT_IntAPS>(S, OpPC);
12850}
12851bool EvalEmitter::emitDupBool(SourceInfo L) {
12852 if (!isActive()) return true;
12853 CurrentSource = L;
12854 return Dup<PT_Bool>(S, OpPC);
12855}
12856bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
12857 if (!isActive()) return true;
12858 CurrentSource = L;
12859 return Dup<PT_FixedPoint>(S, OpPC);
12860}
12861bool EvalEmitter::emitDupPtr(SourceInfo L) {
12862 if (!isActive()) return true;
12863 CurrentSource = L;
12864 return Dup<PT_Ptr>(S, OpPC);
12865}
12866bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
12867 if (!isActive()) return true;
12868 CurrentSource = L;
12869 return Dup<PT_MemberPtr>(S, OpPC);
12870}
12871bool EvalEmitter::emitDupFloat(SourceInfo L) {
12872 if (!isActive()) return true;
12873 CurrentSource = L;
12874 return Dup<PT_Float>(S, OpPC);
12875}
12876#endif
12877#ifdef GET_OPCODE_NAMES
12878OP_EQSint8,
12879OP_EQUint8,
12880OP_EQSint16,
12881OP_EQUint16,
12882OP_EQSint32,
12883OP_EQUint32,
12884OP_EQSint64,
12885OP_EQUint64,
12886OP_EQIntAP,
12887OP_EQIntAPS,
12888OP_EQBool,
12889OP_EQFixedPoint,
12890OP_EQPtr,
12891OP_EQMemberPtr,
12892OP_EQFloat,
12893#endif
12894#ifdef GET_INTERP
12895case OP_EQSint8: {
12896 if (!EQ<PT_Sint8>(S, OpPC))
12897 return false;
12898 continue;
12899}
12900case OP_EQUint8: {
12901 if (!EQ<PT_Uint8>(S, OpPC))
12902 return false;
12903 continue;
12904}
12905case OP_EQSint16: {
12906 if (!EQ<PT_Sint16>(S, OpPC))
12907 return false;
12908 continue;
12909}
12910case OP_EQUint16: {
12911 if (!EQ<PT_Uint16>(S, OpPC))
12912 return false;
12913 continue;
12914}
12915case OP_EQSint32: {
12916 if (!EQ<PT_Sint32>(S, OpPC))
12917 return false;
12918 continue;
12919}
12920case OP_EQUint32: {
12921 if (!EQ<PT_Uint32>(S, OpPC))
12922 return false;
12923 continue;
12924}
12925case OP_EQSint64: {
12926 if (!EQ<PT_Sint64>(S, OpPC))
12927 return false;
12928 continue;
12929}
12930case OP_EQUint64: {
12931 if (!EQ<PT_Uint64>(S, OpPC))
12932 return false;
12933 continue;
12934}
12935case OP_EQIntAP: {
12936 if (!EQ<PT_IntAP>(S, OpPC))
12937 return false;
12938 continue;
12939}
12940case OP_EQIntAPS: {
12941 if (!EQ<PT_IntAPS>(S, OpPC))
12942 return false;
12943 continue;
12944}
12945case OP_EQBool: {
12946 if (!EQ<PT_Bool>(S, OpPC))
12947 return false;
12948 continue;
12949}
12950case OP_EQFixedPoint: {
12951 if (!EQ<PT_FixedPoint>(S, OpPC))
12952 return false;
12953 continue;
12954}
12955case OP_EQPtr: {
12956 if (!EQ<PT_Ptr>(S, OpPC))
12957 return false;
12958 continue;
12959}
12960case OP_EQMemberPtr: {
12961 if (!EQ<PT_MemberPtr>(S, OpPC))
12962 return false;
12963 continue;
12964}
12965case OP_EQFloat: {
12966 if (!EQ<PT_Float>(S, OpPC))
12967 return false;
12968 continue;
12969}
12970#endif
12971#ifdef GET_DISASM
12972case OP_EQSint8:
12973 Text.Op = PrintName("EQSint8");
12974 break;
12975case OP_EQUint8:
12976 Text.Op = PrintName("EQUint8");
12977 break;
12978case OP_EQSint16:
12979 Text.Op = PrintName("EQSint16");
12980 break;
12981case OP_EQUint16:
12982 Text.Op = PrintName("EQUint16");
12983 break;
12984case OP_EQSint32:
12985 Text.Op = PrintName("EQSint32");
12986 break;
12987case OP_EQUint32:
12988 Text.Op = PrintName("EQUint32");
12989 break;
12990case OP_EQSint64:
12991 Text.Op = PrintName("EQSint64");
12992 break;
12993case OP_EQUint64:
12994 Text.Op = PrintName("EQUint64");
12995 break;
12996case OP_EQIntAP:
12997 Text.Op = PrintName("EQIntAP");
12998 break;
12999case OP_EQIntAPS:
13000 Text.Op = PrintName("EQIntAPS");
13001 break;
13002case OP_EQBool:
13003 Text.Op = PrintName("EQBool");
13004 break;
13005case OP_EQFixedPoint:
13006 Text.Op = PrintName("EQFixedPoint");
13007 break;
13008case OP_EQPtr:
13009 Text.Op = PrintName("EQPtr");
13010 break;
13011case OP_EQMemberPtr:
13012 Text.Op = PrintName("EQMemberPtr");
13013 break;
13014case OP_EQFloat:
13015 Text.Op = PrintName("EQFloat");
13016 break;
13017#endif
13018#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13019bool emitEQSint8(SourceInfo);
13020bool emitEQUint8(SourceInfo);
13021bool emitEQSint16(SourceInfo);
13022bool emitEQUint16(SourceInfo);
13023bool emitEQSint32(SourceInfo);
13024bool emitEQUint32(SourceInfo);
13025bool emitEQSint64(SourceInfo);
13026bool emitEQUint64(SourceInfo);
13027bool emitEQIntAP(SourceInfo);
13028bool emitEQIntAPS(SourceInfo);
13029bool emitEQBool(SourceInfo);
13030bool emitEQFixedPoint(SourceInfo);
13031bool emitEQPtr(SourceInfo);
13032bool emitEQMemberPtr(SourceInfo);
13033bool emitEQFloat(SourceInfo);
13034#endif
13035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13036[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
13037#endif
13038#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13039bool
13040#if defined(GET_EVAL_IMPL)
13041EvalEmitter
13042#else
13043ByteCodeEmitter
13044#endif
13045::emitEQ(PrimType T0, SourceInfo I) {
13046 switch (T0) {
13047 case PT_Sint8:
13048 return emitEQSint8(I);
13049 case PT_Uint8:
13050 return emitEQUint8(I);
13051 case PT_Sint16:
13052 return emitEQSint16(I);
13053 case PT_Uint16:
13054 return emitEQUint16(I);
13055 case PT_Sint32:
13056 return emitEQSint32(I);
13057 case PT_Uint32:
13058 return emitEQUint32(I);
13059 case PT_Sint64:
13060 return emitEQSint64(I);
13061 case PT_Uint64:
13062 return emitEQUint64(I);
13063 case PT_IntAP:
13064 return emitEQIntAP(I);
13065 case PT_IntAPS:
13066 return emitEQIntAPS(I);
13067 case PT_Bool:
13068 return emitEQBool(I);
13069 case PT_FixedPoint:
13070 return emitEQFixedPoint(I);
13071 case PT_Ptr:
13072 return emitEQPtr(I);
13073 case PT_MemberPtr:
13074 return emitEQMemberPtr(I);
13075 case PT_Float:
13076 return emitEQFloat(I);
13077 }
13078 llvm_unreachable("invalid enum value");
13079}
13080#endif
13081#ifdef GET_LINK_IMPL
13082bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
13083 return emitOp<>(OP_EQSint8, L);
13084}
13085bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
13086 return emitOp<>(OP_EQUint8, L);
13087}
13088bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
13089 return emitOp<>(OP_EQSint16, L);
13090}
13091bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
13092 return emitOp<>(OP_EQUint16, L);
13093}
13094bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
13095 return emitOp<>(OP_EQSint32, L);
13096}
13097bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
13098 return emitOp<>(OP_EQUint32, L);
13099}
13100bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
13101 return emitOp<>(OP_EQSint64, L);
13102}
13103bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
13104 return emitOp<>(OP_EQUint64, L);
13105}
13106bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
13107 return emitOp<>(OP_EQIntAP, L);
13108}
13109bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
13110 return emitOp<>(OP_EQIntAPS, L);
13111}
13112bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
13113 return emitOp<>(OP_EQBool, L);
13114}
13115bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
13116 return emitOp<>(OP_EQFixedPoint, L);
13117}
13118bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
13119 return emitOp<>(OP_EQPtr, L);
13120}
13121bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
13122 return emitOp<>(OP_EQMemberPtr, L);
13123}
13124bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
13125 return emitOp<>(OP_EQFloat, L);
13126}
13127#endif
13128#ifdef GET_EVAL_IMPL
13129bool EvalEmitter::emitEQSint8(SourceInfo L) {
13130 if (!isActive()) return true;
13131 CurrentSource = L;
13132 return EQ<PT_Sint8>(S, OpPC);
13133}
13134bool EvalEmitter::emitEQUint8(SourceInfo L) {
13135 if (!isActive()) return true;
13136 CurrentSource = L;
13137 return EQ<PT_Uint8>(S, OpPC);
13138}
13139bool EvalEmitter::emitEQSint16(SourceInfo L) {
13140 if (!isActive()) return true;
13141 CurrentSource = L;
13142 return EQ<PT_Sint16>(S, OpPC);
13143}
13144bool EvalEmitter::emitEQUint16(SourceInfo L) {
13145 if (!isActive()) return true;
13146 CurrentSource = L;
13147 return EQ<PT_Uint16>(S, OpPC);
13148}
13149bool EvalEmitter::emitEQSint32(SourceInfo L) {
13150 if (!isActive()) return true;
13151 CurrentSource = L;
13152 return EQ<PT_Sint32>(S, OpPC);
13153}
13154bool EvalEmitter::emitEQUint32(SourceInfo L) {
13155 if (!isActive()) return true;
13156 CurrentSource = L;
13157 return EQ<PT_Uint32>(S, OpPC);
13158}
13159bool EvalEmitter::emitEQSint64(SourceInfo L) {
13160 if (!isActive()) return true;
13161 CurrentSource = L;
13162 return EQ<PT_Sint64>(S, OpPC);
13163}
13164bool EvalEmitter::emitEQUint64(SourceInfo L) {
13165 if (!isActive()) return true;
13166 CurrentSource = L;
13167 return EQ<PT_Uint64>(S, OpPC);
13168}
13169bool EvalEmitter::emitEQIntAP(SourceInfo L) {
13170 if (!isActive()) return true;
13171 CurrentSource = L;
13172 return EQ<PT_IntAP>(S, OpPC);
13173}
13174bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
13175 if (!isActive()) return true;
13176 CurrentSource = L;
13177 return EQ<PT_IntAPS>(S, OpPC);
13178}
13179bool EvalEmitter::emitEQBool(SourceInfo L) {
13180 if (!isActive()) return true;
13181 CurrentSource = L;
13182 return EQ<PT_Bool>(S, OpPC);
13183}
13184bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
13185 if (!isActive()) return true;
13186 CurrentSource = L;
13187 return EQ<PT_FixedPoint>(S, OpPC);
13188}
13189bool EvalEmitter::emitEQPtr(SourceInfo L) {
13190 if (!isActive()) return true;
13191 CurrentSource = L;
13192 return EQ<PT_Ptr>(S, OpPC);
13193}
13194bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
13195 if (!isActive()) return true;
13196 CurrentSource = L;
13197 return EQ<PT_MemberPtr>(S, OpPC);
13198}
13199bool EvalEmitter::emitEQFloat(SourceInfo L) {
13200 if (!isActive()) return true;
13201 CurrentSource = L;
13202 return EQ<PT_Float>(S, OpPC);
13203}
13204#endif
13205#ifdef GET_OPCODE_NAMES
13206OP_EnableLocal,
13207#endif
13208#ifdef GET_INTERP
13209case OP_EnableLocal: {
13210 const auto V0 = ReadArg<uint32_t>(S, PC);
13211 if (!EnableLocal(S, OpPC, V0))
13212 return false;
13213 continue;
13214}
13215#endif
13216#ifdef GET_DISASM
13217case OP_EnableLocal:
13218 Text.Op = PrintName("EnableLocal");
13219 Text.Args.push_back(printArg<uint32_t>(P, PC));
13220 break;
13221#endif
13222#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13223bool emitEnableLocal( uint32_t , SourceInfo);
13224#endif
13225#ifdef GET_LINK_IMPL
13226bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
13227 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
13228}
13229#endif
13230#ifdef GET_OPCODE_NAMES
13231OP_EndLifetime,
13232#endif
13233#ifdef GET_INTERP
13234case OP_EndLifetime: {
13235 if (!EndLifetime(S, OpPC))
13236 return false;
13237 continue;
13238}
13239#endif
13240#ifdef GET_DISASM
13241case OP_EndLifetime:
13242 Text.Op = PrintName("EndLifetime");
13243 break;
13244#endif
13245#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13246bool emitEndLifetime(SourceInfo);
13247#endif
13248#ifdef GET_LINK_IMPL
13249bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
13250 return emitOp<>(OP_EndLifetime, L);
13251}
13252#endif
13253#ifdef GET_EVAL_IMPL
13254bool EvalEmitter::emitEndLifetime(SourceInfo L) {
13255 if (!isActive()) return true;
13256 CurrentSource = L;
13257 return EndLifetime(S, OpPC);
13258}
13259#endif
13260#ifdef GET_OPCODE_NAMES
13261OP_EndLifetimePop,
13262#endif
13263#ifdef GET_INTERP
13264case OP_EndLifetimePop: {
13265 if (!EndLifetimePop(S, OpPC))
13266 return false;
13267 continue;
13268}
13269#endif
13270#ifdef GET_DISASM
13271case OP_EndLifetimePop:
13272 Text.Op = PrintName("EndLifetimePop");
13273 break;
13274#endif
13275#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13276bool emitEndLifetimePop(SourceInfo);
13277#endif
13278#ifdef GET_LINK_IMPL
13279bool ByteCodeEmitter::emitEndLifetimePop(SourceInfo L) {
13280 return emitOp<>(OP_EndLifetimePop, L);
13281}
13282#endif
13283#ifdef GET_EVAL_IMPL
13284bool EvalEmitter::emitEndLifetimePop(SourceInfo L) {
13285 if (!isActive()) return true;
13286 CurrentSource = L;
13287 return EndLifetimePop(S, OpPC);
13288}
13289#endif
13290#ifdef GET_OPCODE_NAMES
13291OP_EndSpeculation,
13292#endif
13293#ifdef GET_INTERP
13294case OP_EndSpeculation: {
13295 if (!EndSpeculation(S, OpPC))
13296 return false;
13297 continue;
13298}
13299#endif
13300#ifdef GET_DISASM
13301case OP_EndSpeculation:
13302 Text.Op = PrintName("EndSpeculation");
13303 break;
13304#endif
13305#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13306bool emitEndSpeculation(SourceInfo);
13307#endif
13308#ifdef GET_LINK_IMPL
13309bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
13310 return emitOp<>(OP_EndSpeculation, L);
13311}
13312#endif
13313#ifdef GET_EVAL_IMPL
13314bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
13315 if (!isActive()) return true;
13316 CurrentSource = L;
13317 return EndSpeculation(S, OpPC);
13318}
13319#endif
13320#ifdef GET_OPCODE_NAMES
13321OP_Error,
13322#endif
13323#ifdef GET_INTERP
13324case OP_Error: {
13325 if (!Error(S, OpPC))
13326 return false;
13327 continue;
13328}
13329#endif
13330#ifdef GET_DISASM
13331case OP_Error:
13332 Text.Op = PrintName("Error");
13333 break;
13334#endif
13335#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13336bool emitError(SourceInfo);
13337#endif
13338#ifdef GET_LINK_IMPL
13339bool ByteCodeEmitter::emitError(SourceInfo L) {
13340 return emitOp<>(OP_Error, L);
13341}
13342#endif
13343#ifdef GET_EVAL_IMPL
13344bool EvalEmitter::emitError(SourceInfo L) {
13345 if (!isActive()) return true;
13346 CurrentSource = L;
13347 return Error(S, OpPC);
13348}
13349#endif
13350#ifdef GET_OPCODE_NAMES
13351OP_ExpandPtr,
13352#endif
13353#ifdef GET_INTERP
13354case OP_ExpandPtr: {
13355 if (!ExpandPtr(S, OpPC))
13356 return false;
13357 continue;
13358}
13359#endif
13360#ifdef GET_DISASM
13361case OP_ExpandPtr:
13362 Text.Op = PrintName("ExpandPtr");
13363 break;
13364#endif
13365#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13366bool emitExpandPtr(SourceInfo);
13367#endif
13368#ifdef GET_LINK_IMPL
13369bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
13370 return emitOp<>(OP_ExpandPtr, L);
13371}
13372#endif
13373#ifdef GET_EVAL_IMPL
13374bool EvalEmitter::emitExpandPtr(SourceInfo L) {
13375 if (!isActive()) return true;
13376 CurrentSource = L;
13377 return ExpandPtr(S, OpPC);
13378}
13379#endif
13380#ifdef GET_OPCODE_NAMES
13381OP_FinishInit,
13382#endif
13383#ifdef GET_INTERP
13384case OP_FinishInit: {
13385 if (!FinishInit(S, OpPC))
13386 return false;
13387 continue;
13388}
13389#endif
13390#ifdef GET_DISASM
13391case OP_FinishInit:
13392 Text.Op = PrintName("FinishInit");
13393 break;
13394#endif
13395#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13396bool emitFinishInit(SourceInfo);
13397#endif
13398#ifdef GET_LINK_IMPL
13399bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
13400 return emitOp<>(OP_FinishInit, L);
13401}
13402#endif
13403#ifdef GET_EVAL_IMPL
13404bool EvalEmitter::emitFinishInit(SourceInfo L) {
13405 if (!isActive()) return true;
13406 CurrentSource = L;
13407 return FinishInit(S, OpPC);
13408}
13409#endif
13410#ifdef GET_OPCODE_NAMES
13411OP_FinishInitActivate,
13412#endif
13413#ifdef GET_INTERP
13414case OP_FinishInitActivate: {
13415 if (!FinishInitActivate(S, OpPC))
13416 return false;
13417 continue;
13418}
13419#endif
13420#ifdef GET_DISASM
13421case OP_FinishInitActivate:
13422 Text.Op = PrintName("FinishInitActivate");
13423 break;
13424#endif
13425#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13426bool emitFinishInitActivate(SourceInfo);
13427#endif
13428#ifdef GET_LINK_IMPL
13429bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
13430 return emitOp<>(OP_FinishInitActivate, L);
13431}
13432#endif
13433#ifdef GET_EVAL_IMPL
13434bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
13435 if (!isActive()) return true;
13436 CurrentSource = L;
13437 return FinishInitActivate(S, OpPC);
13438}
13439#endif
13440#ifdef GET_OPCODE_NAMES
13441OP_FinishInitActivatePop,
13442#endif
13443#ifdef GET_INTERP
13444case OP_FinishInitActivatePop: {
13445 if (!FinishInitActivatePop(S, OpPC))
13446 return false;
13447 continue;
13448}
13449#endif
13450#ifdef GET_DISASM
13451case OP_FinishInitActivatePop:
13452 Text.Op = PrintName("FinishInitActivatePop");
13453 break;
13454#endif
13455#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13456bool emitFinishInitActivatePop(SourceInfo);
13457#endif
13458#ifdef GET_LINK_IMPL
13459bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
13460 return emitOp<>(OP_FinishInitActivatePop, L);
13461}
13462#endif
13463#ifdef GET_EVAL_IMPL
13464bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
13465 if (!isActive()) return true;
13466 CurrentSource = L;
13467 return FinishInitActivatePop(S, OpPC);
13468}
13469#endif
13470#ifdef GET_OPCODE_NAMES
13471OP_FinishInitGlobal,
13472#endif
13473#ifdef GET_INTERP
13474case OP_FinishInitGlobal: {
13475 if (!FinishInitGlobal(S, OpPC))
13476 return false;
13477 continue;
13478}
13479#endif
13480#ifdef GET_DISASM
13481case OP_FinishInitGlobal:
13482 Text.Op = PrintName("FinishInitGlobal");
13483 break;
13484#endif
13485#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13486bool emitFinishInitGlobal(SourceInfo);
13487#endif
13488#ifdef GET_LINK_IMPL
13489bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
13490 return emitOp<>(OP_FinishInitGlobal, L);
13491}
13492#endif
13493#ifdef GET_EVAL_IMPL
13494bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
13495 if (!isActive()) return true;
13496 CurrentSource = L;
13497 return FinishInitGlobal(S, OpPC);
13498}
13499#endif
13500#ifdef GET_OPCODE_NAMES
13501OP_FinishInitPop,
13502#endif
13503#ifdef GET_INTERP
13504case OP_FinishInitPop: {
13505 if (!FinishInitPop(S, OpPC))
13506 return false;
13507 continue;
13508}
13509#endif
13510#ifdef GET_DISASM
13511case OP_FinishInitPop:
13512 Text.Op = PrintName("FinishInitPop");
13513 break;
13514#endif
13515#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13516bool emitFinishInitPop(SourceInfo);
13517#endif
13518#ifdef GET_LINK_IMPL
13519bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
13520 return emitOp<>(OP_FinishInitPop, L);
13521}
13522#endif
13523#ifdef GET_EVAL_IMPL
13524bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
13525 if (!isActive()) return true;
13526 CurrentSource = L;
13527 return FinishInitPop(S, OpPC);
13528}
13529#endif
13530#ifdef GET_OPCODE_NAMES
13531OP_FlipSint8Sint8,
13532OP_FlipSint8Uint8,
13533OP_FlipSint8Sint16,
13534OP_FlipSint8Uint16,
13535OP_FlipSint8Sint32,
13536OP_FlipSint8Uint32,
13537OP_FlipSint8Sint64,
13538OP_FlipSint8Uint64,
13539OP_FlipSint8IntAP,
13540OP_FlipSint8IntAPS,
13541OP_FlipSint8Bool,
13542OP_FlipSint8FixedPoint,
13543OP_FlipSint8Ptr,
13544OP_FlipSint8MemberPtr,
13545OP_FlipSint8Float,
13546OP_FlipUint8Sint8,
13547OP_FlipUint8Uint8,
13548OP_FlipUint8Sint16,
13549OP_FlipUint8Uint16,
13550OP_FlipUint8Sint32,
13551OP_FlipUint8Uint32,
13552OP_FlipUint8Sint64,
13553OP_FlipUint8Uint64,
13554OP_FlipUint8IntAP,
13555OP_FlipUint8IntAPS,
13556OP_FlipUint8Bool,
13557OP_FlipUint8FixedPoint,
13558OP_FlipUint8Ptr,
13559OP_FlipUint8MemberPtr,
13560OP_FlipUint8Float,
13561OP_FlipSint16Sint8,
13562OP_FlipSint16Uint8,
13563OP_FlipSint16Sint16,
13564OP_FlipSint16Uint16,
13565OP_FlipSint16Sint32,
13566OP_FlipSint16Uint32,
13567OP_FlipSint16Sint64,
13568OP_FlipSint16Uint64,
13569OP_FlipSint16IntAP,
13570OP_FlipSint16IntAPS,
13571OP_FlipSint16Bool,
13572OP_FlipSint16FixedPoint,
13573OP_FlipSint16Ptr,
13574OP_FlipSint16MemberPtr,
13575OP_FlipSint16Float,
13576OP_FlipUint16Sint8,
13577OP_FlipUint16Uint8,
13578OP_FlipUint16Sint16,
13579OP_FlipUint16Uint16,
13580OP_FlipUint16Sint32,
13581OP_FlipUint16Uint32,
13582OP_FlipUint16Sint64,
13583OP_FlipUint16Uint64,
13584OP_FlipUint16IntAP,
13585OP_FlipUint16IntAPS,
13586OP_FlipUint16Bool,
13587OP_FlipUint16FixedPoint,
13588OP_FlipUint16Ptr,
13589OP_FlipUint16MemberPtr,
13590OP_FlipUint16Float,
13591OP_FlipSint32Sint8,
13592OP_FlipSint32Uint8,
13593OP_FlipSint32Sint16,
13594OP_FlipSint32Uint16,
13595OP_FlipSint32Sint32,
13596OP_FlipSint32Uint32,
13597OP_FlipSint32Sint64,
13598OP_FlipSint32Uint64,
13599OP_FlipSint32IntAP,
13600OP_FlipSint32IntAPS,
13601OP_FlipSint32Bool,
13602OP_FlipSint32FixedPoint,
13603OP_FlipSint32Ptr,
13604OP_FlipSint32MemberPtr,
13605OP_FlipSint32Float,
13606OP_FlipUint32Sint8,
13607OP_FlipUint32Uint8,
13608OP_FlipUint32Sint16,
13609OP_FlipUint32Uint16,
13610OP_FlipUint32Sint32,
13611OP_FlipUint32Uint32,
13612OP_FlipUint32Sint64,
13613OP_FlipUint32Uint64,
13614OP_FlipUint32IntAP,
13615OP_FlipUint32IntAPS,
13616OP_FlipUint32Bool,
13617OP_FlipUint32FixedPoint,
13618OP_FlipUint32Ptr,
13619OP_FlipUint32MemberPtr,
13620OP_FlipUint32Float,
13621OP_FlipSint64Sint8,
13622OP_FlipSint64Uint8,
13623OP_FlipSint64Sint16,
13624OP_FlipSint64Uint16,
13625OP_FlipSint64Sint32,
13626OP_FlipSint64Uint32,
13627OP_FlipSint64Sint64,
13628OP_FlipSint64Uint64,
13629OP_FlipSint64IntAP,
13630OP_FlipSint64IntAPS,
13631OP_FlipSint64Bool,
13632OP_FlipSint64FixedPoint,
13633OP_FlipSint64Ptr,
13634OP_FlipSint64MemberPtr,
13635OP_FlipSint64Float,
13636OP_FlipUint64Sint8,
13637OP_FlipUint64Uint8,
13638OP_FlipUint64Sint16,
13639OP_FlipUint64Uint16,
13640OP_FlipUint64Sint32,
13641OP_FlipUint64Uint32,
13642OP_FlipUint64Sint64,
13643OP_FlipUint64Uint64,
13644OP_FlipUint64IntAP,
13645OP_FlipUint64IntAPS,
13646OP_FlipUint64Bool,
13647OP_FlipUint64FixedPoint,
13648OP_FlipUint64Ptr,
13649OP_FlipUint64MemberPtr,
13650OP_FlipUint64Float,
13651OP_FlipIntAPSint8,
13652OP_FlipIntAPUint8,
13653OP_FlipIntAPSint16,
13654OP_FlipIntAPUint16,
13655OP_FlipIntAPSint32,
13656OP_FlipIntAPUint32,
13657OP_FlipIntAPSint64,
13658OP_FlipIntAPUint64,
13659OP_FlipIntAPIntAP,
13660OP_FlipIntAPIntAPS,
13661OP_FlipIntAPBool,
13662OP_FlipIntAPFixedPoint,
13663OP_FlipIntAPPtr,
13664OP_FlipIntAPMemberPtr,
13665OP_FlipIntAPFloat,
13666OP_FlipIntAPSSint8,
13667OP_FlipIntAPSUint8,
13668OP_FlipIntAPSSint16,
13669OP_FlipIntAPSUint16,
13670OP_FlipIntAPSSint32,
13671OP_FlipIntAPSUint32,
13672OP_FlipIntAPSSint64,
13673OP_FlipIntAPSUint64,
13674OP_FlipIntAPSIntAP,
13675OP_FlipIntAPSIntAPS,
13676OP_FlipIntAPSBool,
13677OP_FlipIntAPSFixedPoint,
13678OP_FlipIntAPSPtr,
13679OP_FlipIntAPSMemberPtr,
13680OP_FlipIntAPSFloat,
13681OP_FlipBoolSint8,
13682OP_FlipBoolUint8,
13683OP_FlipBoolSint16,
13684OP_FlipBoolUint16,
13685OP_FlipBoolSint32,
13686OP_FlipBoolUint32,
13687OP_FlipBoolSint64,
13688OP_FlipBoolUint64,
13689OP_FlipBoolIntAP,
13690OP_FlipBoolIntAPS,
13691OP_FlipBoolBool,
13692OP_FlipBoolFixedPoint,
13693OP_FlipBoolPtr,
13694OP_FlipBoolMemberPtr,
13695OP_FlipBoolFloat,
13696OP_FlipFixedPointSint8,
13697OP_FlipFixedPointUint8,
13698OP_FlipFixedPointSint16,
13699OP_FlipFixedPointUint16,
13700OP_FlipFixedPointSint32,
13701OP_FlipFixedPointUint32,
13702OP_FlipFixedPointSint64,
13703OP_FlipFixedPointUint64,
13704OP_FlipFixedPointIntAP,
13705OP_FlipFixedPointIntAPS,
13706OP_FlipFixedPointBool,
13707OP_FlipFixedPointFixedPoint,
13708OP_FlipFixedPointPtr,
13709OP_FlipFixedPointMemberPtr,
13710OP_FlipFixedPointFloat,
13711OP_FlipPtrSint8,
13712OP_FlipPtrUint8,
13713OP_FlipPtrSint16,
13714OP_FlipPtrUint16,
13715OP_FlipPtrSint32,
13716OP_FlipPtrUint32,
13717OP_FlipPtrSint64,
13718OP_FlipPtrUint64,
13719OP_FlipPtrIntAP,
13720OP_FlipPtrIntAPS,
13721OP_FlipPtrBool,
13722OP_FlipPtrFixedPoint,
13723OP_FlipPtrPtr,
13724OP_FlipPtrMemberPtr,
13725OP_FlipPtrFloat,
13726OP_FlipMemberPtrSint8,
13727OP_FlipMemberPtrUint8,
13728OP_FlipMemberPtrSint16,
13729OP_FlipMemberPtrUint16,
13730OP_FlipMemberPtrSint32,
13731OP_FlipMemberPtrUint32,
13732OP_FlipMemberPtrSint64,
13733OP_FlipMemberPtrUint64,
13734OP_FlipMemberPtrIntAP,
13735OP_FlipMemberPtrIntAPS,
13736OP_FlipMemberPtrBool,
13737OP_FlipMemberPtrFixedPoint,
13738OP_FlipMemberPtrPtr,
13739OP_FlipMemberPtrMemberPtr,
13740OP_FlipMemberPtrFloat,
13741OP_FlipFloatSint8,
13742OP_FlipFloatUint8,
13743OP_FlipFloatSint16,
13744OP_FlipFloatUint16,
13745OP_FlipFloatSint32,
13746OP_FlipFloatUint32,
13747OP_FlipFloatSint64,
13748OP_FlipFloatUint64,
13749OP_FlipFloatIntAP,
13750OP_FlipFloatIntAPS,
13751OP_FlipFloatBool,
13752OP_FlipFloatFixedPoint,
13753OP_FlipFloatPtr,
13754OP_FlipFloatMemberPtr,
13755OP_FlipFloatFloat,
13756#endif
13757#ifdef GET_INTERP
13758case OP_FlipSint8Sint8: {
13759 if (!Flip<PT_Sint8, PT_Sint8>(S, OpPC))
13760 return false;
13761 continue;
13762}
13763case OP_FlipSint8Uint8: {
13764 if (!Flip<PT_Sint8, PT_Uint8>(S, OpPC))
13765 return false;
13766 continue;
13767}
13768case OP_FlipSint8Sint16: {
13769 if (!Flip<PT_Sint8, PT_Sint16>(S, OpPC))
13770 return false;
13771 continue;
13772}
13773case OP_FlipSint8Uint16: {
13774 if (!Flip<PT_Sint8, PT_Uint16>(S, OpPC))
13775 return false;
13776 continue;
13777}
13778case OP_FlipSint8Sint32: {
13779 if (!Flip<PT_Sint8, PT_Sint32>(S, OpPC))
13780 return false;
13781 continue;
13782}
13783case OP_FlipSint8Uint32: {
13784 if (!Flip<PT_Sint8, PT_Uint32>(S, OpPC))
13785 return false;
13786 continue;
13787}
13788case OP_FlipSint8Sint64: {
13789 if (!Flip<PT_Sint8, PT_Sint64>(S, OpPC))
13790 return false;
13791 continue;
13792}
13793case OP_FlipSint8Uint64: {
13794 if (!Flip<PT_Sint8, PT_Uint64>(S, OpPC))
13795 return false;
13796 continue;
13797}
13798case OP_FlipSint8IntAP: {
13799 if (!Flip<PT_Sint8, PT_IntAP>(S, OpPC))
13800 return false;
13801 continue;
13802}
13803case OP_FlipSint8IntAPS: {
13804 if (!Flip<PT_Sint8, PT_IntAPS>(S, OpPC))
13805 return false;
13806 continue;
13807}
13808case OP_FlipSint8Bool: {
13809 if (!Flip<PT_Sint8, PT_Bool>(S, OpPC))
13810 return false;
13811 continue;
13812}
13813case OP_FlipSint8FixedPoint: {
13814 if (!Flip<PT_Sint8, PT_FixedPoint>(S, OpPC))
13815 return false;
13816 continue;
13817}
13818case OP_FlipSint8Ptr: {
13819 if (!Flip<PT_Sint8, PT_Ptr>(S, OpPC))
13820 return false;
13821 continue;
13822}
13823case OP_FlipSint8MemberPtr: {
13824 if (!Flip<PT_Sint8, PT_MemberPtr>(S, OpPC))
13825 return false;
13826 continue;
13827}
13828case OP_FlipSint8Float: {
13829 if (!Flip<PT_Sint8, PT_Float>(S, OpPC))
13830 return false;
13831 continue;
13832}
13833case OP_FlipUint8Sint8: {
13834 if (!Flip<PT_Uint8, PT_Sint8>(S, OpPC))
13835 return false;
13836 continue;
13837}
13838case OP_FlipUint8Uint8: {
13839 if (!Flip<PT_Uint8, PT_Uint8>(S, OpPC))
13840 return false;
13841 continue;
13842}
13843case OP_FlipUint8Sint16: {
13844 if (!Flip<PT_Uint8, PT_Sint16>(S, OpPC))
13845 return false;
13846 continue;
13847}
13848case OP_FlipUint8Uint16: {
13849 if (!Flip<PT_Uint8, PT_Uint16>(S, OpPC))
13850 return false;
13851 continue;
13852}
13853case OP_FlipUint8Sint32: {
13854 if (!Flip<PT_Uint8, PT_Sint32>(S, OpPC))
13855 return false;
13856 continue;
13857}
13858case OP_FlipUint8Uint32: {
13859 if (!Flip<PT_Uint8, PT_Uint32>(S, OpPC))
13860 return false;
13861 continue;
13862}
13863case OP_FlipUint8Sint64: {
13864 if (!Flip<PT_Uint8, PT_Sint64>(S, OpPC))
13865 return false;
13866 continue;
13867}
13868case OP_FlipUint8Uint64: {
13869 if (!Flip<PT_Uint8, PT_Uint64>(S, OpPC))
13870 return false;
13871 continue;
13872}
13873case OP_FlipUint8IntAP: {
13874 if (!Flip<PT_Uint8, PT_IntAP>(S, OpPC))
13875 return false;
13876 continue;
13877}
13878case OP_FlipUint8IntAPS: {
13879 if (!Flip<PT_Uint8, PT_IntAPS>(S, OpPC))
13880 return false;
13881 continue;
13882}
13883case OP_FlipUint8Bool: {
13884 if (!Flip<PT_Uint8, PT_Bool>(S, OpPC))
13885 return false;
13886 continue;
13887}
13888case OP_FlipUint8FixedPoint: {
13889 if (!Flip<PT_Uint8, PT_FixedPoint>(S, OpPC))
13890 return false;
13891 continue;
13892}
13893case OP_FlipUint8Ptr: {
13894 if (!Flip<PT_Uint8, PT_Ptr>(S, OpPC))
13895 return false;
13896 continue;
13897}
13898case OP_FlipUint8MemberPtr: {
13899 if (!Flip<PT_Uint8, PT_MemberPtr>(S, OpPC))
13900 return false;
13901 continue;
13902}
13903case OP_FlipUint8Float: {
13904 if (!Flip<PT_Uint8, PT_Float>(S, OpPC))
13905 return false;
13906 continue;
13907}
13908case OP_FlipSint16Sint8: {
13909 if (!Flip<PT_Sint16, PT_Sint8>(S, OpPC))
13910 return false;
13911 continue;
13912}
13913case OP_FlipSint16Uint8: {
13914 if (!Flip<PT_Sint16, PT_Uint8>(S, OpPC))
13915 return false;
13916 continue;
13917}
13918case OP_FlipSint16Sint16: {
13919 if (!Flip<PT_Sint16, PT_Sint16>(S, OpPC))
13920 return false;
13921 continue;
13922}
13923case OP_FlipSint16Uint16: {
13924 if (!Flip<PT_Sint16, PT_Uint16>(S, OpPC))
13925 return false;
13926 continue;
13927}
13928case OP_FlipSint16Sint32: {
13929 if (!Flip<PT_Sint16, PT_Sint32>(S, OpPC))
13930 return false;
13931 continue;
13932}
13933case OP_FlipSint16Uint32: {
13934 if (!Flip<PT_Sint16, PT_Uint32>(S, OpPC))
13935 return false;
13936 continue;
13937}
13938case OP_FlipSint16Sint64: {
13939 if (!Flip<PT_Sint16, PT_Sint64>(S, OpPC))
13940 return false;
13941 continue;
13942}
13943case OP_FlipSint16Uint64: {
13944 if (!Flip<PT_Sint16, PT_Uint64>(S, OpPC))
13945 return false;
13946 continue;
13947}
13948case OP_FlipSint16IntAP: {
13949 if (!Flip<PT_Sint16, PT_IntAP>(S, OpPC))
13950 return false;
13951 continue;
13952}
13953case OP_FlipSint16IntAPS: {
13954 if (!Flip<PT_Sint16, PT_IntAPS>(S, OpPC))
13955 return false;
13956 continue;
13957}
13958case OP_FlipSint16Bool: {
13959 if (!Flip<PT_Sint16, PT_Bool>(S, OpPC))
13960 return false;
13961 continue;
13962}
13963case OP_FlipSint16FixedPoint: {
13964 if (!Flip<PT_Sint16, PT_FixedPoint>(S, OpPC))
13965 return false;
13966 continue;
13967}
13968case OP_FlipSint16Ptr: {
13969 if (!Flip<PT_Sint16, PT_Ptr>(S, OpPC))
13970 return false;
13971 continue;
13972}
13973case OP_FlipSint16MemberPtr: {
13974 if (!Flip<PT_Sint16, PT_MemberPtr>(S, OpPC))
13975 return false;
13976 continue;
13977}
13978case OP_FlipSint16Float: {
13979 if (!Flip<PT_Sint16, PT_Float>(S, OpPC))
13980 return false;
13981 continue;
13982}
13983case OP_FlipUint16Sint8: {
13984 if (!Flip<PT_Uint16, PT_Sint8>(S, OpPC))
13985 return false;
13986 continue;
13987}
13988case OP_FlipUint16Uint8: {
13989 if (!Flip<PT_Uint16, PT_Uint8>(S, OpPC))
13990 return false;
13991 continue;
13992}
13993case OP_FlipUint16Sint16: {
13994 if (!Flip<PT_Uint16, PT_Sint16>(S, OpPC))
13995 return false;
13996 continue;
13997}
13998case OP_FlipUint16Uint16: {
13999 if (!Flip<PT_Uint16, PT_Uint16>(S, OpPC))
14000 return false;
14001 continue;
14002}
14003case OP_FlipUint16Sint32: {
14004 if (!Flip<PT_Uint16, PT_Sint32>(S, OpPC))
14005 return false;
14006 continue;
14007}
14008case OP_FlipUint16Uint32: {
14009 if (!Flip<PT_Uint16, PT_Uint32>(S, OpPC))
14010 return false;
14011 continue;
14012}
14013case OP_FlipUint16Sint64: {
14014 if (!Flip<PT_Uint16, PT_Sint64>(S, OpPC))
14015 return false;
14016 continue;
14017}
14018case OP_FlipUint16Uint64: {
14019 if (!Flip<PT_Uint16, PT_Uint64>(S, OpPC))
14020 return false;
14021 continue;
14022}
14023case OP_FlipUint16IntAP: {
14024 if (!Flip<PT_Uint16, PT_IntAP>(S, OpPC))
14025 return false;
14026 continue;
14027}
14028case OP_FlipUint16IntAPS: {
14029 if (!Flip<PT_Uint16, PT_IntAPS>(S, OpPC))
14030 return false;
14031 continue;
14032}
14033case OP_FlipUint16Bool: {
14034 if (!Flip<PT_Uint16, PT_Bool>(S, OpPC))
14035 return false;
14036 continue;
14037}
14038case OP_FlipUint16FixedPoint: {
14039 if (!Flip<PT_Uint16, PT_FixedPoint>(S, OpPC))
14040 return false;
14041 continue;
14042}
14043case OP_FlipUint16Ptr: {
14044 if (!Flip<PT_Uint16, PT_Ptr>(S, OpPC))
14045 return false;
14046 continue;
14047}
14048case OP_FlipUint16MemberPtr: {
14049 if (!Flip<PT_Uint16, PT_MemberPtr>(S, OpPC))
14050 return false;
14051 continue;
14052}
14053case OP_FlipUint16Float: {
14054 if (!Flip<PT_Uint16, PT_Float>(S, OpPC))
14055 return false;
14056 continue;
14057}
14058case OP_FlipSint32Sint8: {
14059 if (!Flip<PT_Sint32, PT_Sint8>(S, OpPC))
14060 return false;
14061 continue;
14062}
14063case OP_FlipSint32Uint8: {
14064 if (!Flip<PT_Sint32, PT_Uint8>(S, OpPC))
14065 return false;
14066 continue;
14067}
14068case OP_FlipSint32Sint16: {
14069 if (!Flip<PT_Sint32, PT_Sint16>(S, OpPC))
14070 return false;
14071 continue;
14072}
14073case OP_FlipSint32Uint16: {
14074 if (!Flip<PT_Sint32, PT_Uint16>(S, OpPC))
14075 return false;
14076 continue;
14077}
14078case OP_FlipSint32Sint32: {
14079 if (!Flip<PT_Sint32, PT_Sint32>(S, OpPC))
14080 return false;
14081 continue;
14082}
14083case OP_FlipSint32Uint32: {
14084 if (!Flip<PT_Sint32, PT_Uint32>(S, OpPC))
14085 return false;
14086 continue;
14087}
14088case OP_FlipSint32Sint64: {
14089 if (!Flip<PT_Sint32, PT_Sint64>(S, OpPC))
14090 return false;
14091 continue;
14092}
14093case OP_FlipSint32Uint64: {
14094 if (!Flip<PT_Sint32, PT_Uint64>(S, OpPC))
14095 return false;
14096 continue;
14097}
14098case OP_FlipSint32IntAP: {
14099 if (!Flip<PT_Sint32, PT_IntAP>(S, OpPC))
14100 return false;
14101 continue;
14102}
14103case OP_FlipSint32IntAPS: {
14104 if (!Flip<PT_Sint32, PT_IntAPS>(S, OpPC))
14105 return false;
14106 continue;
14107}
14108case OP_FlipSint32Bool: {
14109 if (!Flip<PT_Sint32, PT_Bool>(S, OpPC))
14110 return false;
14111 continue;
14112}
14113case OP_FlipSint32FixedPoint: {
14114 if (!Flip<PT_Sint32, PT_FixedPoint>(S, OpPC))
14115 return false;
14116 continue;
14117}
14118case OP_FlipSint32Ptr: {
14119 if (!Flip<PT_Sint32, PT_Ptr>(S, OpPC))
14120 return false;
14121 continue;
14122}
14123case OP_FlipSint32MemberPtr: {
14124 if (!Flip<PT_Sint32, PT_MemberPtr>(S, OpPC))
14125 return false;
14126 continue;
14127}
14128case OP_FlipSint32Float: {
14129 if (!Flip<PT_Sint32, PT_Float>(S, OpPC))
14130 return false;
14131 continue;
14132}
14133case OP_FlipUint32Sint8: {
14134 if (!Flip<PT_Uint32, PT_Sint8>(S, OpPC))
14135 return false;
14136 continue;
14137}
14138case OP_FlipUint32Uint8: {
14139 if (!Flip<PT_Uint32, PT_Uint8>(S, OpPC))
14140 return false;
14141 continue;
14142}
14143case OP_FlipUint32Sint16: {
14144 if (!Flip<PT_Uint32, PT_Sint16>(S, OpPC))
14145 return false;
14146 continue;
14147}
14148case OP_FlipUint32Uint16: {
14149 if (!Flip<PT_Uint32, PT_Uint16>(S, OpPC))
14150 return false;
14151 continue;
14152}
14153case OP_FlipUint32Sint32: {
14154 if (!Flip<PT_Uint32, PT_Sint32>(S, OpPC))
14155 return false;
14156 continue;
14157}
14158case OP_FlipUint32Uint32: {
14159 if (!Flip<PT_Uint32, PT_Uint32>(S, OpPC))
14160 return false;
14161 continue;
14162}
14163case OP_FlipUint32Sint64: {
14164 if (!Flip<PT_Uint32, PT_Sint64>(S, OpPC))
14165 return false;
14166 continue;
14167}
14168case OP_FlipUint32Uint64: {
14169 if (!Flip<PT_Uint32, PT_Uint64>(S, OpPC))
14170 return false;
14171 continue;
14172}
14173case OP_FlipUint32IntAP: {
14174 if (!Flip<PT_Uint32, PT_IntAP>(S, OpPC))
14175 return false;
14176 continue;
14177}
14178case OP_FlipUint32IntAPS: {
14179 if (!Flip<PT_Uint32, PT_IntAPS>(S, OpPC))
14180 return false;
14181 continue;
14182}
14183case OP_FlipUint32Bool: {
14184 if (!Flip<PT_Uint32, PT_Bool>(S, OpPC))
14185 return false;
14186 continue;
14187}
14188case OP_FlipUint32FixedPoint: {
14189 if (!Flip<PT_Uint32, PT_FixedPoint>(S, OpPC))
14190 return false;
14191 continue;
14192}
14193case OP_FlipUint32Ptr: {
14194 if (!Flip<PT_Uint32, PT_Ptr>(S, OpPC))
14195 return false;
14196 continue;
14197}
14198case OP_FlipUint32MemberPtr: {
14199 if (!Flip<PT_Uint32, PT_MemberPtr>(S, OpPC))
14200 return false;
14201 continue;
14202}
14203case OP_FlipUint32Float: {
14204 if (!Flip<PT_Uint32, PT_Float>(S, OpPC))
14205 return false;
14206 continue;
14207}
14208case OP_FlipSint64Sint8: {
14209 if (!Flip<PT_Sint64, PT_Sint8>(S, OpPC))
14210 return false;
14211 continue;
14212}
14213case OP_FlipSint64Uint8: {
14214 if (!Flip<PT_Sint64, PT_Uint8>(S, OpPC))
14215 return false;
14216 continue;
14217}
14218case OP_FlipSint64Sint16: {
14219 if (!Flip<PT_Sint64, PT_Sint16>(S, OpPC))
14220 return false;
14221 continue;
14222}
14223case OP_FlipSint64Uint16: {
14224 if (!Flip<PT_Sint64, PT_Uint16>(S, OpPC))
14225 return false;
14226 continue;
14227}
14228case OP_FlipSint64Sint32: {
14229 if (!Flip<PT_Sint64, PT_Sint32>(S, OpPC))
14230 return false;
14231 continue;
14232}
14233case OP_FlipSint64Uint32: {
14234 if (!Flip<PT_Sint64, PT_Uint32>(S, OpPC))
14235 return false;
14236 continue;
14237}
14238case OP_FlipSint64Sint64: {
14239 if (!Flip<PT_Sint64, PT_Sint64>(S, OpPC))
14240 return false;
14241 continue;
14242}
14243case OP_FlipSint64Uint64: {
14244 if (!Flip<PT_Sint64, PT_Uint64>(S, OpPC))
14245 return false;
14246 continue;
14247}
14248case OP_FlipSint64IntAP: {
14249 if (!Flip<PT_Sint64, PT_IntAP>(S, OpPC))
14250 return false;
14251 continue;
14252}
14253case OP_FlipSint64IntAPS: {
14254 if (!Flip<PT_Sint64, PT_IntAPS>(S, OpPC))
14255 return false;
14256 continue;
14257}
14258case OP_FlipSint64Bool: {
14259 if (!Flip<PT_Sint64, PT_Bool>(S, OpPC))
14260 return false;
14261 continue;
14262}
14263case OP_FlipSint64FixedPoint: {
14264 if (!Flip<PT_Sint64, PT_FixedPoint>(S, OpPC))
14265 return false;
14266 continue;
14267}
14268case OP_FlipSint64Ptr: {
14269 if (!Flip<PT_Sint64, PT_Ptr>(S, OpPC))
14270 return false;
14271 continue;
14272}
14273case OP_FlipSint64MemberPtr: {
14274 if (!Flip<PT_Sint64, PT_MemberPtr>(S, OpPC))
14275 return false;
14276 continue;
14277}
14278case OP_FlipSint64Float: {
14279 if (!Flip<PT_Sint64, PT_Float>(S, OpPC))
14280 return false;
14281 continue;
14282}
14283case OP_FlipUint64Sint8: {
14284 if (!Flip<PT_Uint64, PT_Sint8>(S, OpPC))
14285 return false;
14286 continue;
14287}
14288case OP_FlipUint64Uint8: {
14289 if (!Flip<PT_Uint64, PT_Uint8>(S, OpPC))
14290 return false;
14291 continue;
14292}
14293case OP_FlipUint64Sint16: {
14294 if (!Flip<PT_Uint64, PT_Sint16>(S, OpPC))
14295 return false;
14296 continue;
14297}
14298case OP_FlipUint64Uint16: {
14299 if (!Flip<PT_Uint64, PT_Uint16>(S, OpPC))
14300 return false;
14301 continue;
14302}
14303case OP_FlipUint64Sint32: {
14304 if (!Flip<PT_Uint64, PT_Sint32>(S, OpPC))
14305 return false;
14306 continue;
14307}
14308case OP_FlipUint64Uint32: {
14309 if (!Flip<PT_Uint64, PT_Uint32>(S, OpPC))
14310 return false;
14311 continue;
14312}
14313case OP_FlipUint64Sint64: {
14314 if (!Flip<PT_Uint64, PT_Sint64>(S, OpPC))
14315 return false;
14316 continue;
14317}
14318case OP_FlipUint64Uint64: {
14319 if (!Flip<PT_Uint64, PT_Uint64>(S, OpPC))
14320 return false;
14321 continue;
14322}
14323case OP_FlipUint64IntAP: {
14324 if (!Flip<PT_Uint64, PT_IntAP>(S, OpPC))
14325 return false;
14326 continue;
14327}
14328case OP_FlipUint64IntAPS: {
14329 if (!Flip<PT_Uint64, PT_IntAPS>(S, OpPC))
14330 return false;
14331 continue;
14332}
14333case OP_FlipUint64Bool: {
14334 if (!Flip<PT_Uint64, PT_Bool>(S, OpPC))
14335 return false;
14336 continue;
14337}
14338case OP_FlipUint64FixedPoint: {
14339 if (!Flip<PT_Uint64, PT_FixedPoint>(S, OpPC))
14340 return false;
14341 continue;
14342}
14343case OP_FlipUint64Ptr: {
14344 if (!Flip<PT_Uint64, PT_Ptr>(S, OpPC))
14345 return false;
14346 continue;
14347}
14348case OP_FlipUint64MemberPtr: {
14349 if (!Flip<PT_Uint64, PT_MemberPtr>(S, OpPC))
14350 return false;
14351 continue;
14352}
14353case OP_FlipUint64Float: {
14354 if (!Flip<PT_Uint64, PT_Float>(S, OpPC))
14355 return false;
14356 continue;
14357}
14358case OP_FlipIntAPSint8: {
14359 if (!Flip<PT_IntAP, PT_Sint8>(S, OpPC))
14360 return false;
14361 continue;
14362}
14363case OP_FlipIntAPUint8: {
14364 if (!Flip<PT_IntAP, PT_Uint8>(S, OpPC))
14365 return false;
14366 continue;
14367}
14368case OP_FlipIntAPSint16: {
14369 if (!Flip<PT_IntAP, PT_Sint16>(S, OpPC))
14370 return false;
14371 continue;
14372}
14373case OP_FlipIntAPUint16: {
14374 if (!Flip<PT_IntAP, PT_Uint16>(S, OpPC))
14375 return false;
14376 continue;
14377}
14378case OP_FlipIntAPSint32: {
14379 if (!Flip<PT_IntAP, PT_Sint32>(S, OpPC))
14380 return false;
14381 continue;
14382}
14383case OP_FlipIntAPUint32: {
14384 if (!Flip<PT_IntAP, PT_Uint32>(S, OpPC))
14385 return false;
14386 continue;
14387}
14388case OP_FlipIntAPSint64: {
14389 if (!Flip<PT_IntAP, PT_Sint64>(S, OpPC))
14390 return false;
14391 continue;
14392}
14393case OP_FlipIntAPUint64: {
14394 if (!Flip<PT_IntAP, PT_Uint64>(S, OpPC))
14395 return false;
14396 continue;
14397}
14398case OP_FlipIntAPIntAP: {
14399 if (!Flip<PT_IntAP, PT_IntAP>(S, OpPC))
14400 return false;
14401 continue;
14402}
14403case OP_FlipIntAPIntAPS: {
14404 if (!Flip<PT_IntAP, PT_IntAPS>(S, OpPC))
14405 return false;
14406 continue;
14407}
14408case OP_FlipIntAPBool: {
14409 if (!Flip<PT_IntAP, PT_Bool>(S, OpPC))
14410 return false;
14411 continue;
14412}
14413case OP_FlipIntAPFixedPoint: {
14414 if (!Flip<PT_IntAP, PT_FixedPoint>(S, OpPC))
14415 return false;
14416 continue;
14417}
14418case OP_FlipIntAPPtr: {
14419 if (!Flip<PT_IntAP, PT_Ptr>(S, OpPC))
14420 return false;
14421 continue;
14422}
14423case OP_FlipIntAPMemberPtr: {
14424 if (!Flip<PT_IntAP, PT_MemberPtr>(S, OpPC))
14425 return false;
14426 continue;
14427}
14428case OP_FlipIntAPFloat: {
14429 if (!Flip<PT_IntAP, PT_Float>(S, OpPC))
14430 return false;
14431 continue;
14432}
14433case OP_FlipIntAPSSint8: {
14434 if (!Flip<PT_IntAPS, PT_Sint8>(S, OpPC))
14435 return false;
14436 continue;
14437}
14438case OP_FlipIntAPSUint8: {
14439 if (!Flip<PT_IntAPS, PT_Uint8>(S, OpPC))
14440 return false;
14441 continue;
14442}
14443case OP_FlipIntAPSSint16: {
14444 if (!Flip<PT_IntAPS, PT_Sint16>(S, OpPC))
14445 return false;
14446 continue;
14447}
14448case OP_FlipIntAPSUint16: {
14449 if (!Flip<PT_IntAPS, PT_Uint16>(S, OpPC))
14450 return false;
14451 continue;
14452}
14453case OP_FlipIntAPSSint32: {
14454 if (!Flip<PT_IntAPS, PT_Sint32>(S, OpPC))
14455 return false;
14456 continue;
14457}
14458case OP_FlipIntAPSUint32: {
14459 if (!Flip<PT_IntAPS, PT_Uint32>(S, OpPC))
14460 return false;
14461 continue;
14462}
14463case OP_FlipIntAPSSint64: {
14464 if (!Flip<PT_IntAPS, PT_Sint64>(S, OpPC))
14465 return false;
14466 continue;
14467}
14468case OP_FlipIntAPSUint64: {
14469 if (!Flip<PT_IntAPS, PT_Uint64>(S, OpPC))
14470 return false;
14471 continue;
14472}
14473case OP_FlipIntAPSIntAP: {
14474 if (!Flip<PT_IntAPS, PT_IntAP>(S, OpPC))
14475 return false;
14476 continue;
14477}
14478case OP_FlipIntAPSIntAPS: {
14479 if (!Flip<PT_IntAPS, PT_IntAPS>(S, OpPC))
14480 return false;
14481 continue;
14482}
14483case OP_FlipIntAPSBool: {
14484 if (!Flip<PT_IntAPS, PT_Bool>(S, OpPC))
14485 return false;
14486 continue;
14487}
14488case OP_FlipIntAPSFixedPoint: {
14489 if (!Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC))
14490 return false;
14491 continue;
14492}
14493case OP_FlipIntAPSPtr: {
14494 if (!Flip<PT_IntAPS, PT_Ptr>(S, OpPC))
14495 return false;
14496 continue;
14497}
14498case OP_FlipIntAPSMemberPtr: {
14499 if (!Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC))
14500 return false;
14501 continue;
14502}
14503case OP_FlipIntAPSFloat: {
14504 if (!Flip<PT_IntAPS, PT_Float>(S, OpPC))
14505 return false;
14506 continue;
14507}
14508case OP_FlipBoolSint8: {
14509 if (!Flip<PT_Bool, PT_Sint8>(S, OpPC))
14510 return false;
14511 continue;
14512}
14513case OP_FlipBoolUint8: {
14514 if (!Flip<PT_Bool, PT_Uint8>(S, OpPC))
14515 return false;
14516 continue;
14517}
14518case OP_FlipBoolSint16: {
14519 if (!Flip<PT_Bool, PT_Sint16>(S, OpPC))
14520 return false;
14521 continue;
14522}
14523case OP_FlipBoolUint16: {
14524 if (!Flip<PT_Bool, PT_Uint16>(S, OpPC))
14525 return false;
14526 continue;
14527}
14528case OP_FlipBoolSint32: {
14529 if (!Flip<PT_Bool, PT_Sint32>(S, OpPC))
14530 return false;
14531 continue;
14532}
14533case OP_FlipBoolUint32: {
14534 if (!Flip<PT_Bool, PT_Uint32>(S, OpPC))
14535 return false;
14536 continue;
14537}
14538case OP_FlipBoolSint64: {
14539 if (!Flip<PT_Bool, PT_Sint64>(S, OpPC))
14540 return false;
14541 continue;
14542}
14543case OP_FlipBoolUint64: {
14544 if (!Flip<PT_Bool, PT_Uint64>(S, OpPC))
14545 return false;
14546 continue;
14547}
14548case OP_FlipBoolIntAP: {
14549 if (!Flip<PT_Bool, PT_IntAP>(S, OpPC))
14550 return false;
14551 continue;
14552}
14553case OP_FlipBoolIntAPS: {
14554 if (!Flip<PT_Bool, PT_IntAPS>(S, OpPC))
14555 return false;
14556 continue;
14557}
14558case OP_FlipBoolBool: {
14559 if (!Flip<PT_Bool, PT_Bool>(S, OpPC))
14560 return false;
14561 continue;
14562}
14563case OP_FlipBoolFixedPoint: {
14564 if (!Flip<PT_Bool, PT_FixedPoint>(S, OpPC))
14565 return false;
14566 continue;
14567}
14568case OP_FlipBoolPtr: {
14569 if (!Flip<PT_Bool, PT_Ptr>(S, OpPC))
14570 return false;
14571 continue;
14572}
14573case OP_FlipBoolMemberPtr: {
14574 if (!Flip<PT_Bool, PT_MemberPtr>(S, OpPC))
14575 return false;
14576 continue;
14577}
14578case OP_FlipBoolFloat: {
14579 if (!Flip<PT_Bool, PT_Float>(S, OpPC))
14580 return false;
14581 continue;
14582}
14583case OP_FlipFixedPointSint8: {
14584 if (!Flip<PT_FixedPoint, PT_Sint8>(S, OpPC))
14585 return false;
14586 continue;
14587}
14588case OP_FlipFixedPointUint8: {
14589 if (!Flip<PT_FixedPoint, PT_Uint8>(S, OpPC))
14590 return false;
14591 continue;
14592}
14593case OP_FlipFixedPointSint16: {
14594 if (!Flip<PT_FixedPoint, PT_Sint16>(S, OpPC))
14595 return false;
14596 continue;
14597}
14598case OP_FlipFixedPointUint16: {
14599 if (!Flip<PT_FixedPoint, PT_Uint16>(S, OpPC))
14600 return false;
14601 continue;
14602}
14603case OP_FlipFixedPointSint32: {
14604 if (!Flip<PT_FixedPoint, PT_Sint32>(S, OpPC))
14605 return false;
14606 continue;
14607}
14608case OP_FlipFixedPointUint32: {
14609 if (!Flip<PT_FixedPoint, PT_Uint32>(S, OpPC))
14610 return false;
14611 continue;
14612}
14613case OP_FlipFixedPointSint64: {
14614 if (!Flip<PT_FixedPoint, PT_Sint64>(S, OpPC))
14615 return false;
14616 continue;
14617}
14618case OP_FlipFixedPointUint64: {
14619 if (!Flip<PT_FixedPoint, PT_Uint64>(S, OpPC))
14620 return false;
14621 continue;
14622}
14623case OP_FlipFixedPointIntAP: {
14624 if (!Flip<PT_FixedPoint, PT_IntAP>(S, OpPC))
14625 return false;
14626 continue;
14627}
14628case OP_FlipFixedPointIntAPS: {
14629 if (!Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC))
14630 return false;
14631 continue;
14632}
14633case OP_FlipFixedPointBool: {
14634 if (!Flip<PT_FixedPoint, PT_Bool>(S, OpPC))
14635 return false;
14636 continue;
14637}
14638case OP_FlipFixedPointFixedPoint: {
14639 if (!Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC))
14640 return false;
14641 continue;
14642}
14643case OP_FlipFixedPointPtr: {
14644 if (!Flip<PT_FixedPoint, PT_Ptr>(S, OpPC))
14645 return false;
14646 continue;
14647}
14648case OP_FlipFixedPointMemberPtr: {
14649 if (!Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC))
14650 return false;
14651 continue;
14652}
14653case OP_FlipFixedPointFloat: {
14654 if (!Flip<PT_FixedPoint, PT_Float>(S, OpPC))
14655 return false;
14656 continue;
14657}
14658case OP_FlipPtrSint8: {
14659 if (!Flip<PT_Ptr, PT_Sint8>(S, OpPC))
14660 return false;
14661 continue;
14662}
14663case OP_FlipPtrUint8: {
14664 if (!Flip<PT_Ptr, PT_Uint8>(S, OpPC))
14665 return false;
14666 continue;
14667}
14668case OP_FlipPtrSint16: {
14669 if (!Flip<PT_Ptr, PT_Sint16>(S, OpPC))
14670 return false;
14671 continue;
14672}
14673case OP_FlipPtrUint16: {
14674 if (!Flip<PT_Ptr, PT_Uint16>(S, OpPC))
14675 return false;
14676 continue;
14677}
14678case OP_FlipPtrSint32: {
14679 if (!Flip<PT_Ptr, PT_Sint32>(S, OpPC))
14680 return false;
14681 continue;
14682}
14683case OP_FlipPtrUint32: {
14684 if (!Flip<PT_Ptr, PT_Uint32>(S, OpPC))
14685 return false;
14686 continue;
14687}
14688case OP_FlipPtrSint64: {
14689 if (!Flip<PT_Ptr, PT_Sint64>(S, OpPC))
14690 return false;
14691 continue;
14692}
14693case OP_FlipPtrUint64: {
14694 if (!Flip<PT_Ptr, PT_Uint64>(S, OpPC))
14695 return false;
14696 continue;
14697}
14698case OP_FlipPtrIntAP: {
14699 if (!Flip<PT_Ptr, PT_IntAP>(S, OpPC))
14700 return false;
14701 continue;
14702}
14703case OP_FlipPtrIntAPS: {
14704 if (!Flip<PT_Ptr, PT_IntAPS>(S, OpPC))
14705 return false;
14706 continue;
14707}
14708case OP_FlipPtrBool: {
14709 if (!Flip<PT_Ptr, PT_Bool>(S, OpPC))
14710 return false;
14711 continue;
14712}
14713case OP_FlipPtrFixedPoint: {
14714 if (!Flip<PT_Ptr, PT_FixedPoint>(S, OpPC))
14715 return false;
14716 continue;
14717}
14718case OP_FlipPtrPtr: {
14719 if (!Flip<PT_Ptr, PT_Ptr>(S, OpPC))
14720 return false;
14721 continue;
14722}
14723case OP_FlipPtrMemberPtr: {
14724 if (!Flip<PT_Ptr, PT_MemberPtr>(S, OpPC))
14725 return false;
14726 continue;
14727}
14728case OP_FlipPtrFloat: {
14729 if (!Flip<PT_Ptr, PT_Float>(S, OpPC))
14730 return false;
14731 continue;
14732}
14733case OP_FlipMemberPtrSint8: {
14734 if (!Flip<PT_MemberPtr, PT_Sint8>(S, OpPC))
14735 return false;
14736 continue;
14737}
14738case OP_FlipMemberPtrUint8: {
14739 if (!Flip<PT_MemberPtr, PT_Uint8>(S, OpPC))
14740 return false;
14741 continue;
14742}
14743case OP_FlipMemberPtrSint16: {
14744 if (!Flip<PT_MemberPtr, PT_Sint16>(S, OpPC))
14745 return false;
14746 continue;
14747}
14748case OP_FlipMemberPtrUint16: {
14749 if (!Flip<PT_MemberPtr, PT_Uint16>(S, OpPC))
14750 return false;
14751 continue;
14752}
14753case OP_FlipMemberPtrSint32: {
14754 if (!Flip<PT_MemberPtr, PT_Sint32>(S, OpPC))
14755 return false;
14756 continue;
14757}
14758case OP_FlipMemberPtrUint32: {
14759 if (!Flip<PT_MemberPtr, PT_Uint32>(S, OpPC))
14760 return false;
14761 continue;
14762}
14763case OP_FlipMemberPtrSint64: {
14764 if (!Flip<PT_MemberPtr, PT_Sint64>(S, OpPC))
14765 return false;
14766 continue;
14767}
14768case OP_FlipMemberPtrUint64: {
14769 if (!Flip<PT_MemberPtr, PT_Uint64>(S, OpPC))
14770 return false;
14771 continue;
14772}
14773case OP_FlipMemberPtrIntAP: {
14774 if (!Flip<PT_MemberPtr, PT_IntAP>(S, OpPC))
14775 return false;
14776 continue;
14777}
14778case OP_FlipMemberPtrIntAPS: {
14779 if (!Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC))
14780 return false;
14781 continue;
14782}
14783case OP_FlipMemberPtrBool: {
14784 if (!Flip<PT_MemberPtr, PT_Bool>(S, OpPC))
14785 return false;
14786 continue;
14787}
14788case OP_FlipMemberPtrFixedPoint: {
14789 if (!Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC))
14790 return false;
14791 continue;
14792}
14793case OP_FlipMemberPtrPtr: {
14794 if (!Flip<PT_MemberPtr, PT_Ptr>(S, OpPC))
14795 return false;
14796 continue;
14797}
14798case OP_FlipMemberPtrMemberPtr: {
14799 if (!Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC))
14800 return false;
14801 continue;
14802}
14803case OP_FlipMemberPtrFloat: {
14804 if (!Flip<PT_MemberPtr, PT_Float>(S, OpPC))
14805 return false;
14806 continue;
14807}
14808case OP_FlipFloatSint8: {
14809 if (!Flip<PT_Float, PT_Sint8>(S, OpPC))
14810 return false;
14811 continue;
14812}
14813case OP_FlipFloatUint8: {
14814 if (!Flip<PT_Float, PT_Uint8>(S, OpPC))
14815 return false;
14816 continue;
14817}
14818case OP_FlipFloatSint16: {
14819 if (!Flip<PT_Float, PT_Sint16>(S, OpPC))
14820 return false;
14821 continue;
14822}
14823case OP_FlipFloatUint16: {
14824 if (!Flip<PT_Float, PT_Uint16>(S, OpPC))
14825 return false;
14826 continue;
14827}
14828case OP_FlipFloatSint32: {
14829 if (!Flip<PT_Float, PT_Sint32>(S, OpPC))
14830 return false;
14831 continue;
14832}
14833case OP_FlipFloatUint32: {
14834 if (!Flip<PT_Float, PT_Uint32>(S, OpPC))
14835 return false;
14836 continue;
14837}
14838case OP_FlipFloatSint64: {
14839 if (!Flip<PT_Float, PT_Sint64>(S, OpPC))
14840 return false;
14841 continue;
14842}
14843case OP_FlipFloatUint64: {
14844 if (!Flip<PT_Float, PT_Uint64>(S, OpPC))
14845 return false;
14846 continue;
14847}
14848case OP_FlipFloatIntAP: {
14849 if (!Flip<PT_Float, PT_IntAP>(S, OpPC))
14850 return false;
14851 continue;
14852}
14853case OP_FlipFloatIntAPS: {
14854 if (!Flip<PT_Float, PT_IntAPS>(S, OpPC))
14855 return false;
14856 continue;
14857}
14858case OP_FlipFloatBool: {
14859 if (!Flip<PT_Float, PT_Bool>(S, OpPC))
14860 return false;
14861 continue;
14862}
14863case OP_FlipFloatFixedPoint: {
14864 if (!Flip<PT_Float, PT_FixedPoint>(S, OpPC))
14865 return false;
14866 continue;
14867}
14868case OP_FlipFloatPtr: {
14869 if (!Flip<PT_Float, PT_Ptr>(S, OpPC))
14870 return false;
14871 continue;
14872}
14873case OP_FlipFloatMemberPtr: {
14874 if (!Flip<PT_Float, PT_MemberPtr>(S, OpPC))
14875 return false;
14876 continue;
14877}
14878case OP_FlipFloatFloat: {
14879 if (!Flip<PT_Float, PT_Float>(S, OpPC))
14880 return false;
14881 continue;
14882}
14883#endif
14884#ifdef GET_DISASM
14885case OP_FlipSint8Sint8:
14886 Text.Op = PrintName("FlipSint8Sint8");
14887 break;
14888case OP_FlipSint8Uint8:
14889 Text.Op = PrintName("FlipSint8Uint8");
14890 break;
14891case OP_FlipSint8Sint16:
14892 Text.Op = PrintName("FlipSint8Sint16");
14893 break;
14894case OP_FlipSint8Uint16:
14895 Text.Op = PrintName("FlipSint8Uint16");
14896 break;
14897case OP_FlipSint8Sint32:
14898 Text.Op = PrintName("FlipSint8Sint32");
14899 break;
14900case OP_FlipSint8Uint32:
14901 Text.Op = PrintName("FlipSint8Uint32");
14902 break;
14903case OP_FlipSint8Sint64:
14904 Text.Op = PrintName("FlipSint8Sint64");
14905 break;
14906case OP_FlipSint8Uint64:
14907 Text.Op = PrintName("FlipSint8Uint64");
14908 break;
14909case OP_FlipSint8IntAP:
14910 Text.Op = PrintName("FlipSint8IntAP");
14911 break;
14912case OP_FlipSint8IntAPS:
14913 Text.Op = PrintName("FlipSint8IntAPS");
14914 break;
14915case OP_FlipSint8Bool:
14916 Text.Op = PrintName("FlipSint8Bool");
14917 break;
14918case OP_FlipSint8FixedPoint:
14919 Text.Op = PrintName("FlipSint8FixedPoint");
14920 break;
14921case OP_FlipSint8Ptr:
14922 Text.Op = PrintName("FlipSint8Ptr");
14923 break;
14924case OP_FlipSint8MemberPtr:
14925 Text.Op = PrintName("FlipSint8MemberPtr");
14926 break;
14927case OP_FlipSint8Float:
14928 Text.Op = PrintName("FlipSint8Float");
14929 break;
14930case OP_FlipUint8Sint8:
14931 Text.Op = PrintName("FlipUint8Sint8");
14932 break;
14933case OP_FlipUint8Uint8:
14934 Text.Op = PrintName("FlipUint8Uint8");
14935 break;
14936case OP_FlipUint8Sint16:
14937 Text.Op = PrintName("FlipUint8Sint16");
14938 break;
14939case OP_FlipUint8Uint16:
14940 Text.Op = PrintName("FlipUint8Uint16");
14941 break;
14942case OP_FlipUint8Sint32:
14943 Text.Op = PrintName("FlipUint8Sint32");
14944 break;
14945case OP_FlipUint8Uint32:
14946 Text.Op = PrintName("FlipUint8Uint32");
14947 break;
14948case OP_FlipUint8Sint64:
14949 Text.Op = PrintName("FlipUint8Sint64");
14950 break;
14951case OP_FlipUint8Uint64:
14952 Text.Op = PrintName("FlipUint8Uint64");
14953 break;
14954case OP_FlipUint8IntAP:
14955 Text.Op = PrintName("FlipUint8IntAP");
14956 break;
14957case OP_FlipUint8IntAPS:
14958 Text.Op = PrintName("FlipUint8IntAPS");
14959 break;
14960case OP_FlipUint8Bool:
14961 Text.Op = PrintName("FlipUint8Bool");
14962 break;
14963case OP_FlipUint8FixedPoint:
14964 Text.Op = PrintName("FlipUint8FixedPoint");
14965 break;
14966case OP_FlipUint8Ptr:
14967 Text.Op = PrintName("FlipUint8Ptr");
14968 break;
14969case OP_FlipUint8MemberPtr:
14970 Text.Op = PrintName("FlipUint8MemberPtr");
14971 break;
14972case OP_FlipUint8Float:
14973 Text.Op = PrintName("FlipUint8Float");
14974 break;
14975case OP_FlipSint16Sint8:
14976 Text.Op = PrintName("FlipSint16Sint8");
14977 break;
14978case OP_FlipSint16Uint8:
14979 Text.Op = PrintName("FlipSint16Uint8");
14980 break;
14981case OP_FlipSint16Sint16:
14982 Text.Op = PrintName("FlipSint16Sint16");
14983 break;
14984case OP_FlipSint16Uint16:
14985 Text.Op = PrintName("FlipSint16Uint16");
14986 break;
14987case OP_FlipSint16Sint32:
14988 Text.Op = PrintName("FlipSint16Sint32");
14989 break;
14990case OP_FlipSint16Uint32:
14991 Text.Op = PrintName("FlipSint16Uint32");
14992 break;
14993case OP_FlipSint16Sint64:
14994 Text.Op = PrintName("FlipSint16Sint64");
14995 break;
14996case OP_FlipSint16Uint64:
14997 Text.Op = PrintName("FlipSint16Uint64");
14998 break;
14999case OP_FlipSint16IntAP:
15000 Text.Op = PrintName("FlipSint16IntAP");
15001 break;
15002case OP_FlipSint16IntAPS:
15003 Text.Op = PrintName("FlipSint16IntAPS");
15004 break;
15005case OP_FlipSint16Bool:
15006 Text.Op = PrintName("FlipSint16Bool");
15007 break;
15008case OP_FlipSint16FixedPoint:
15009 Text.Op = PrintName("FlipSint16FixedPoint");
15010 break;
15011case OP_FlipSint16Ptr:
15012 Text.Op = PrintName("FlipSint16Ptr");
15013 break;
15014case OP_FlipSint16MemberPtr:
15015 Text.Op = PrintName("FlipSint16MemberPtr");
15016 break;
15017case OP_FlipSint16Float:
15018 Text.Op = PrintName("FlipSint16Float");
15019 break;
15020case OP_FlipUint16Sint8:
15021 Text.Op = PrintName("FlipUint16Sint8");
15022 break;
15023case OP_FlipUint16Uint8:
15024 Text.Op = PrintName("FlipUint16Uint8");
15025 break;
15026case OP_FlipUint16Sint16:
15027 Text.Op = PrintName("FlipUint16Sint16");
15028 break;
15029case OP_FlipUint16Uint16:
15030 Text.Op = PrintName("FlipUint16Uint16");
15031 break;
15032case OP_FlipUint16Sint32:
15033 Text.Op = PrintName("FlipUint16Sint32");
15034 break;
15035case OP_FlipUint16Uint32:
15036 Text.Op = PrintName("FlipUint16Uint32");
15037 break;
15038case OP_FlipUint16Sint64:
15039 Text.Op = PrintName("FlipUint16Sint64");
15040 break;
15041case OP_FlipUint16Uint64:
15042 Text.Op = PrintName("FlipUint16Uint64");
15043 break;
15044case OP_FlipUint16IntAP:
15045 Text.Op = PrintName("FlipUint16IntAP");
15046 break;
15047case OP_FlipUint16IntAPS:
15048 Text.Op = PrintName("FlipUint16IntAPS");
15049 break;
15050case OP_FlipUint16Bool:
15051 Text.Op = PrintName("FlipUint16Bool");
15052 break;
15053case OP_FlipUint16FixedPoint:
15054 Text.Op = PrintName("FlipUint16FixedPoint");
15055 break;
15056case OP_FlipUint16Ptr:
15057 Text.Op = PrintName("FlipUint16Ptr");
15058 break;
15059case OP_FlipUint16MemberPtr:
15060 Text.Op = PrintName("FlipUint16MemberPtr");
15061 break;
15062case OP_FlipUint16Float:
15063 Text.Op = PrintName("FlipUint16Float");
15064 break;
15065case OP_FlipSint32Sint8:
15066 Text.Op = PrintName("FlipSint32Sint8");
15067 break;
15068case OP_FlipSint32Uint8:
15069 Text.Op = PrintName("FlipSint32Uint8");
15070 break;
15071case OP_FlipSint32Sint16:
15072 Text.Op = PrintName("FlipSint32Sint16");
15073 break;
15074case OP_FlipSint32Uint16:
15075 Text.Op = PrintName("FlipSint32Uint16");
15076 break;
15077case OP_FlipSint32Sint32:
15078 Text.Op = PrintName("FlipSint32Sint32");
15079 break;
15080case OP_FlipSint32Uint32:
15081 Text.Op = PrintName("FlipSint32Uint32");
15082 break;
15083case OP_FlipSint32Sint64:
15084 Text.Op = PrintName("FlipSint32Sint64");
15085 break;
15086case OP_FlipSint32Uint64:
15087 Text.Op = PrintName("FlipSint32Uint64");
15088 break;
15089case OP_FlipSint32IntAP:
15090 Text.Op = PrintName("FlipSint32IntAP");
15091 break;
15092case OP_FlipSint32IntAPS:
15093 Text.Op = PrintName("FlipSint32IntAPS");
15094 break;
15095case OP_FlipSint32Bool:
15096 Text.Op = PrintName("FlipSint32Bool");
15097 break;
15098case OP_FlipSint32FixedPoint:
15099 Text.Op = PrintName("FlipSint32FixedPoint");
15100 break;
15101case OP_FlipSint32Ptr:
15102 Text.Op = PrintName("FlipSint32Ptr");
15103 break;
15104case OP_FlipSint32MemberPtr:
15105 Text.Op = PrintName("FlipSint32MemberPtr");
15106 break;
15107case OP_FlipSint32Float:
15108 Text.Op = PrintName("FlipSint32Float");
15109 break;
15110case OP_FlipUint32Sint8:
15111 Text.Op = PrintName("FlipUint32Sint8");
15112 break;
15113case OP_FlipUint32Uint8:
15114 Text.Op = PrintName("FlipUint32Uint8");
15115 break;
15116case OP_FlipUint32Sint16:
15117 Text.Op = PrintName("FlipUint32Sint16");
15118 break;
15119case OP_FlipUint32Uint16:
15120 Text.Op = PrintName("FlipUint32Uint16");
15121 break;
15122case OP_FlipUint32Sint32:
15123 Text.Op = PrintName("FlipUint32Sint32");
15124 break;
15125case OP_FlipUint32Uint32:
15126 Text.Op = PrintName("FlipUint32Uint32");
15127 break;
15128case OP_FlipUint32Sint64:
15129 Text.Op = PrintName("FlipUint32Sint64");
15130 break;
15131case OP_FlipUint32Uint64:
15132 Text.Op = PrintName("FlipUint32Uint64");
15133 break;
15134case OP_FlipUint32IntAP:
15135 Text.Op = PrintName("FlipUint32IntAP");
15136 break;
15137case OP_FlipUint32IntAPS:
15138 Text.Op = PrintName("FlipUint32IntAPS");
15139 break;
15140case OP_FlipUint32Bool:
15141 Text.Op = PrintName("FlipUint32Bool");
15142 break;
15143case OP_FlipUint32FixedPoint:
15144 Text.Op = PrintName("FlipUint32FixedPoint");
15145 break;
15146case OP_FlipUint32Ptr:
15147 Text.Op = PrintName("FlipUint32Ptr");
15148 break;
15149case OP_FlipUint32MemberPtr:
15150 Text.Op = PrintName("FlipUint32MemberPtr");
15151 break;
15152case OP_FlipUint32Float:
15153 Text.Op = PrintName("FlipUint32Float");
15154 break;
15155case OP_FlipSint64Sint8:
15156 Text.Op = PrintName("FlipSint64Sint8");
15157 break;
15158case OP_FlipSint64Uint8:
15159 Text.Op = PrintName("FlipSint64Uint8");
15160 break;
15161case OP_FlipSint64Sint16:
15162 Text.Op = PrintName("FlipSint64Sint16");
15163 break;
15164case OP_FlipSint64Uint16:
15165 Text.Op = PrintName("FlipSint64Uint16");
15166 break;
15167case OP_FlipSint64Sint32:
15168 Text.Op = PrintName("FlipSint64Sint32");
15169 break;
15170case OP_FlipSint64Uint32:
15171 Text.Op = PrintName("FlipSint64Uint32");
15172 break;
15173case OP_FlipSint64Sint64:
15174 Text.Op = PrintName("FlipSint64Sint64");
15175 break;
15176case OP_FlipSint64Uint64:
15177 Text.Op = PrintName("FlipSint64Uint64");
15178 break;
15179case OP_FlipSint64IntAP:
15180 Text.Op = PrintName("FlipSint64IntAP");
15181 break;
15182case OP_FlipSint64IntAPS:
15183 Text.Op = PrintName("FlipSint64IntAPS");
15184 break;
15185case OP_FlipSint64Bool:
15186 Text.Op = PrintName("FlipSint64Bool");
15187 break;
15188case OP_FlipSint64FixedPoint:
15189 Text.Op = PrintName("FlipSint64FixedPoint");
15190 break;
15191case OP_FlipSint64Ptr:
15192 Text.Op = PrintName("FlipSint64Ptr");
15193 break;
15194case OP_FlipSint64MemberPtr:
15195 Text.Op = PrintName("FlipSint64MemberPtr");
15196 break;
15197case OP_FlipSint64Float:
15198 Text.Op = PrintName("FlipSint64Float");
15199 break;
15200case OP_FlipUint64Sint8:
15201 Text.Op = PrintName("FlipUint64Sint8");
15202 break;
15203case OP_FlipUint64Uint8:
15204 Text.Op = PrintName("FlipUint64Uint8");
15205 break;
15206case OP_FlipUint64Sint16:
15207 Text.Op = PrintName("FlipUint64Sint16");
15208 break;
15209case OP_FlipUint64Uint16:
15210 Text.Op = PrintName("FlipUint64Uint16");
15211 break;
15212case OP_FlipUint64Sint32:
15213 Text.Op = PrintName("FlipUint64Sint32");
15214 break;
15215case OP_FlipUint64Uint32:
15216 Text.Op = PrintName("FlipUint64Uint32");
15217 break;
15218case OP_FlipUint64Sint64:
15219 Text.Op = PrintName("FlipUint64Sint64");
15220 break;
15221case OP_FlipUint64Uint64:
15222 Text.Op = PrintName("FlipUint64Uint64");
15223 break;
15224case OP_FlipUint64IntAP:
15225 Text.Op = PrintName("FlipUint64IntAP");
15226 break;
15227case OP_FlipUint64IntAPS:
15228 Text.Op = PrintName("FlipUint64IntAPS");
15229 break;
15230case OP_FlipUint64Bool:
15231 Text.Op = PrintName("FlipUint64Bool");
15232 break;
15233case OP_FlipUint64FixedPoint:
15234 Text.Op = PrintName("FlipUint64FixedPoint");
15235 break;
15236case OP_FlipUint64Ptr:
15237 Text.Op = PrintName("FlipUint64Ptr");
15238 break;
15239case OP_FlipUint64MemberPtr:
15240 Text.Op = PrintName("FlipUint64MemberPtr");
15241 break;
15242case OP_FlipUint64Float:
15243 Text.Op = PrintName("FlipUint64Float");
15244 break;
15245case OP_FlipIntAPSint8:
15246 Text.Op = PrintName("FlipIntAPSint8");
15247 break;
15248case OP_FlipIntAPUint8:
15249 Text.Op = PrintName("FlipIntAPUint8");
15250 break;
15251case OP_FlipIntAPSint16:
15252 Text.Op = PrintName("FlipIntAPSint16");
15253 break;
15254case OP_FlipIntAPUint16:
15255 Text.Op = PrintName("FlipIntAPUint16");
15256 break;
15257case OP_FlipIntAPSint32:
15258 Text.Op = PrintName("FlipIntAPSint32");
15259 break;
15260case OP_FlipIntAPUint32:
15261 Text.Op = PrintName("FlipIntAPUint32");
15262 break;
15263case OP_FlipIntAPSint64:
15264 Text.Op = PrintName("FlipIntAPSint64");
15265 break;
15266case OP_FlipIntAPUint64:
15267 Text.Op = PrintName("FlipIntAPUint64");
15268 break;
15269case OP_FlipIntAPIntAP:
15270 Text.Op = PrintName("FlipIntAPIntAP");
15271 break;
15272case OP_FlipIntAPIntAPS:
15273 Text.Op = PrintName("FlipIntAPIntAPS");
15274 break;
15275case OP_FlipIntAPBool:
15276 Text.Op = PrintName("FlipIntAPBool");
15277 break;
15278case OP_FlipIntAPFixedPoint:
15279 Text.Op = PrintName("FlipIntAPFixedPoint");
15280 break;
15281case OP_FlipIntAPPtr:
15282 Text.Op = PrintName("FlipIntAPPtr");
15283 break;
15284case OP_FlipIntAPMemberPtr:
15285 Text.Op = PrintName("FlipIntAPMemberPtr");
15286 break;
15287case OP_FlipIntAPFloat:
15288 Text.Op = PrintName("FlipIntAPFloat");
15289 break;
15290case OP_FlipIntAPSSint8:
15291 Text.Op = PrintName("FlipIntAPSSint8");
15292 break;
15293case OP_FlipIntAPSUint8:
15294 Text.Op = PrintName("FlipIntAPSUint8");
15295 break;
15296case OP_FlipIntAPSSint16:
15297 Text.Op = PrintName("FlipIntAPSSint16");
15298 break;
15299case OP_FlipIntAPSUint16:
15300 Text.Op = PrintName("FlipIntAPSUint16");
15301 break;
15302case OP_FlipIntAPSSint32:
15303 Text.Op = PrintName("FlipIntAPSSint32");
15304 break;
15305case OP_FlipIntAPSUint32:
15306 Text.Op = PrintName("FlipIntAPSUint32");
15307 break;
15308case OP_FlipIntAPSSint64:
15309 Text.Op = PrintName("FlipIntAPSSint64");
15310 break;
15311case OP_FlipIntAPSUint64:
15312 Text.Op = PrintName("FlipIntAPSUint64");
15313 break;
15314case OP_FlipIntAPSIntAP:
15315 Text.Op = PrintName("FlipIntAPSIntAP");
15316 break;
15317case OP_FlipIntAPSIntAPS:
15318 Text.Op = PrintName("FlipIntAPSIntAPS");
15319 break;
15320case OP_FlipIntAPSBool:
15321 Text.Op = PrintName("FlipIntAPSBool");
15322 break;
15323case OP_FlipIntAPSFixedPoint:
15324 Text.Op = PrintName("FlipIntAPSFixedPoint");
15325 break;
15326case OP_FlipIntAPSPtr:
15327 Text.Op = PrintName("FlipIntAPSPtr");
15328 break;
15329case OP_FlipIntAPSMemberPtr:
15330 Text.Op = PrintName("FlipIntAPSMemberPtr");
15331 break;
15332case OP_FlipIntAPSFloat:
15333 Text.Op = PrintName("FlipIntAPSFloat");
15334 break;
15335case OP_FlipBoolSint8:
15336 Text.Op = PrintName("FlipBoolSint8");
15337 break;
15338case OP_FlipBoolUint8:
15339 Text.Op = PrintName("FlipBoolUint8");
15340 break;
15341case OP_FlipBoolSint16:
15342 Text.Op = PrintName("FlipBoolSint16");
15343 break;
15344case OP_FlipBoolUint16:
15345 Text.Op = PrintName("FlipBoolUint16");
15346 break;
15347case OP_FlipBoolSint32:
15348 Text.Op = PrintName("FlipBoolSint32");
15349 break;
15350case OP_FlipBoolUint32:
15351 Text.Op = PrintName("FlipBoolUint32");
15352 break;
15353case OP_FlipBoolSint64:
15354 Text.Op = PrintName("FlipBoolSint64");
15355 break;
15356case OP_FlipBoolUint64:
15357 Text.Op = PrintName("FlipBoolUint64");
15358 break;
15359case OP_FlipBoolIntAP:
15360 Text.Op = PrintName("FlipBoolIntAP");
15361 break;
15362case OP_FlipBoolIntAPS:
15363 Text.Op = PrintName("FlipBoolIntAPS");
15364 break;
15365case OP_FlipBoolBool:
15366 Text.Op = PrintName("FlipBoolBool");
15367 break;
15368case OP_FlipBoolFixedPoint:
15369 Text.Op = PrintName("FlipBoolFixedPoint");
15370 break;
15371case OP_FlipBoolPtr:
15372 Text.Op = PrintName("FlipBoolPtr");
15373 break;
15374case OP_FlipBoolMemberPtr:
15375 Text.Op = PrintName("FlipBoolMemberPtr");
15376 break;
15377case OP_FlipBoolFloat:
15378 Text.Op = PrintName("FlipBoolFloat");
15379 break;
15380case OP_FlipFixedPointSint8:
15381 Text.Op = PrintName("FlipFixedPointSint8");
15382 break;
15383case OP_FlipFixedPointUint8:
15384 Text.Op = PrintName("FlipFixedPointUint8");
15385 break;
15386case OP_FlipFixedPointSint16:
15387 Text.Op = PrintName("FlipFixedPointSint16");
15388 break;
15389case OP_FlipFixedPointUint16:
15390 Text.Op = PrintName("FlipFixedPointUint16");
15391 break;
15392case OP_FlipFixedPointSint32:
15393 Text.Op = PrintName("FlipFixedPointSint32");
15394 break;
15395case OP_FlipFixedPointUint32:
15396 Text.Op = PrintName("FlipFixedPointUint32");
15397 break;
15398case OP_FlipFixedPointSint64:
15399 Text.Op = PrintName("FlipFixedPointSint64");
15400 break;
15401case OP_FlipFixedPointUint64:
15402 Text.Op = PrintName("FlipFixedPointUint64");
15403 break;
15404case OP_FlipFixedPointIntAP:
15405 Text.Op = PrintName("FlipFixedPointIntAP");
15406 break;
15407case OP_FlipFixedPointIntAPS:
15408 Text.Op = PrintName("FlipFixedPointIntAPS");
15409 break;
15410case OP_FlipFixedPointBool:
15411 Text.Op = PrintName("FlipFixedPointBool");
15412 break;
15413case OP_FlipFixedPointFixedPoint:
15414 Text.Op = PrintName("FlipFixedPointFixedPoint");
15415 break;
15416case OP_FlipFixedPointPtr:
15417 Text.Op = PrintName("FlipFixedPointPtr");
15418 break;
15419case OP_FlipFixedPointMemberPtr:
15420 Text.Op = PrintName("FlipFixedPointMemberPtr");
15421 break;
15422case OP_FlipFixedPointFloat:
15423 Text.Op = PrintName("FlipFixedPointFloat");
15424 break;
15425case OP_FlipPtrSint8:
15426 Text.Op = PrintName("FlipPtrSint8");
15427 break;
15428case OP_FlipPtrUint8:
15429 Text.Op = PrintName("FlipPtrUint8");
15430 break;
15431case OP_FlipPtrSint16:
15432 Text.Op = PrintName("FlipPtrSint16");
15433 break;
15434case OP_FlipPtrUint16:
15435 Text.Op = PrintName("FlipPtrUint16");
15436 break;
15437case OP_FlipPtrSint32:
15438 Text.Op = PrintName("FlipPtrSint32");
15439 break;
15440case OP_FlipPtrUint32:
15441 Text.Op = PrintName("FlipPtrUint32");
15442 break;
15443case OP_FlipPtrSint64:
15444 Text.Op = PrintName("FlipPtrSint64");
15445 break;
15446case OP_FlipPtrUint64:
15447 Text.Op = PrintName("FlipPtrUint64");
15448 break;
15449case OP_FlipPtrIntAP:
15450 Text.Op = PrintName("FlipPtrIntAP");
15451 break;
15452case OP_FlipPtrIntAPS:
15453 Text.Op = PrintName("FlipPtrIntAPS");
15454 break;
15455case OP_FlipPtrBool:
15456 Text.Op = PrintName("FlipPtrBool");
15457 break;
15458case OP_FlipPtrFixedPoint:
15459 Text.Op = PrintName("FlipPtrFixedPoint");
15460 break;
15461case OP_FlipPtrPtr:
15462 Text.Op = PrintName("FlipPtrPtr");
15463 break;
15464case OP_FlipPtrMemberPtr:
15465 Text.Op = PrintName("FlipPtrMemberPtr");
15466 break;
15467case OP_FlipPtrFloat:
15468 Text.Op = PrintName("FlipPtrFloat");
15469 break;
15470case OP_FlipMemberPtrSint8:
15471 Text.Op = PrintName("FlipMemberPtrSint8");
15472 break;
15473case OP_FlipMemberPtrUint8:
15474 Text.Op = PrintName("FlipMemberPtrUint8");
15475 break;
15476case OP_FlipMemberPtrSint16:
15477 Text.Op = PrintName("FlipMemberPtrSint16");
15478 break;
15479case OP_FlipMemberPtrUint16:
15480 Text.Op = PrintName("FlipMemberPtrUint16");
15481 break;
15482case OP_FlipMemberPtrSint32:
15483 Text.Op = PrintName("FlipMemberPtrSint32");
15484 break;
15485case OP_FlipMemberPtrUint32:
15486 Text.Op = PrintName("FlipMemberPtrUint32");
15487 break;
15488case OP_FlipMemberPtrSint64:
15489 Text.Op = PrintName("FlipMemberPtrSint64");
15490 break;
15491case OP_FlipMemberPtrUint64:
15492 Text.Op = PrintName("FlipMemberPtrUint64");
15493 break;
15494case OP_FlipMemberPtrIntAP:
15495 Text.Op = PrintName("FlipMemberPtrIntAP");
15496 break;
15497case OP_FlipMemberPtrIntAPS:
15498 Text.Op = PrintName("FlipMemberPtrIntAPS");
15499 break;
15500case OP_FlipMemberPtrBool:
15501 Text.Op = PrintName("FlipMemberPtrBool");
15502 break;
15503case OP_FlipMemberPtrFixedPoint:
15504 Text.Op = PrintName("FlipMemberPtrFixedPoint");
15505 break;
15506case OP_FlipMemberPtrPtr:
15507 Text.Op = PrintName("FlipMemberPtrPtr");
15508 break;
15509case OP_FlipMemberPtrMemberPtr:
15510 Text.Op = PrintName("FlipMemberPtrMemberPtr");
15511 break;
15512case OP_FlipMemberPtrFloat:
15513 Text.Op = PrintName("FlipMemberPtrFloat");
15514 break;
15515case OP_FlipFloatSint8:
15516 Text.Op = PrintName("FlipFloatSint8");
15517 break;
15518case OP_FlipFloatUint8:
15519 Text.Op = PrintName("FlipFloatUint8");
15520 break;
15521case OP_FlipFloatSint16:
15522 Text.Op = PrintName("FlipFloatSint16");
15523 break;
15524case OP_FlipFloatUint16:
15525 Text.Op = PrintName("FlipFloatUint16");
15526 break;
15527case OP_FlipFloatSint32:
15528 Text.Op = PrintName("FlipFloatSint32");
15529 break;
15530case OP_FlipFloatUint32:
15531 Text.Op = PrintName("FlipFloatUint32");
15532 break;
15533case OP_FlipFloatSint64:
15534 Text.Op = PrintName("FlipFloatSint64");
15535 break;
15536case OP_FlipFloatUint64:
15537 Text.Op = PrintName("FlipFloatUint64");
15538 break;
15539case OP_FlipFloatIntAP:
15540 Text.Op = PrintName("FlipFloatIntAP");
15541 break;
15542case OP_FlipFloatIntAPS:
15543 Text.Op = PrintName("FlipFloatIntAPS");
15544 break;
15545case OP_FlipFloatBool:
15546 Text.Op = PrintName("FlipFloatBool");
15547 break;
15548case OP_FlipFloatFixedPoint:
15549 Text.Op = PrintName("FlipFloatFixedPoint");
15550 break;
15551case OP_FlipFloatPtr:
15552 Text.Op = PrintName("FlipFloatPtr");
15553 break;
15554case OP_FlipFloatMemberPtr:
15555 Text.Op = PrintName("FlipFloatMemberPtr");
15556 break;
15557case OP_FlipFloatFloat:
15558 Text.Op = PrintName("FlipFloatFloat");
15559 break;
15560#endif
15561#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15562bool emitFlipSint8Sint8(SourceInfo);
15563bool emitFlipSint8Uint8(SourceInfo);
15564bool emitFlipSint8Sint16(SourceInfo);
15565bool emitFlipSint8Uint16(SourceInfo);
15566bool emitFlipSint8Sint32(SourceInfo);
15567bool emitFlipSint8Uint32(SourceInfo);
15568bool emitFlipSint8Sint64(SourceInfo);
15569bool emitFlipSint8Uint64(SourceInfo);
15570bool emitFlipSint8IntAP(SourceInfo);
15571bool emitFlipSint8IntAPS(SourceInfo);
15572bool emitFlipSint8Bool(SourceInfo);
15573bool emitFlipSint8FixedPoint(SourceInfo);
15574bool emitFlipSint8Ptr(SourceInfo);
15575bool emitFlipSint8MemberPtr(SourceInfo);
15576bool emitFlipSint8Float(SourceInfo);
15577bool emitFlipUint8Sint8(SourceInfo);
15578bool emitFlipUint8Uint8(SourceInfo);
15579bool emitFlipUint8Sint16(SourceInfo);
15580bool emitFlipUint8Uint16(SourceInfo);
15581bool emitFlipUint8Sint32(SourceInfo);
15582bool emitFlipUint8Uint32(SourceInfo);
15583bool emitFlipUint8Sint64(SourceInfo);
15584bool emitFlipUint8Uint64(SourceInfo);
15585bool emitFlipUint8IntAP(SourceInfo);
15586bool emitFlipUint8IntAPS(SourceInfo);
15587bool emitFlipUint8Bool(SourceInfo);
15588bool emitFlipUint8FixedPoint(SourceInfo);
15589bool emitFlipUint8Ptr(SourceInfo);
15590bool emitFlipUint8MemberPtr(SourceInfo);
15591bool emitFlipUint8Float(SourceInfo);
15592bool emitFlipSint16Sint8(SourceInfo);
15593bool emitFlipSint16Uint8(SourceInfo);
15594bool emitFlipSint16Sint16(SourceInfo);
15595bool emitFlipSint16Uint16(SourceInfo);
15596bool emitFlipSint16Sint32(SourceInfo);
15597bool emitFlipSint16Uint32(SourceInfo);
15598bool emitFlipSint16Sint64(SourceInfo);
15599bool emitFlipSint16Uint64(SourceInfo);
15600bool emitFlipSint16IntAP(SourceInfo);
15601bool emitFlipSint16IntAPS(SourceInfo);
15602bool emitFlipSint16Bool(SourceInfo);
15603bool emitFlipSint16FixedPoint(SourceInfo);
15604bool emitFlipSint16Ptr(SourceInfo);
15605bool emitFlipSint16MemberPtr(SourceInfo);
15606bool emitFlipSint16Float(SourceInfo);
15607bool emitFlipUint16Sint8(SourceInfo);
15608bool emitFlipUint16Uint8(SourceInfo);
15609bool emitFlipUint16Sint16(SourceInfo);
15610bool emitFlipUint16Uint16(SourceInfo);
15611bool emitFlipUint16Sint32(SourceInfo);
15612bool emitFlipUint16Uint32(SourceInfo);
15613bool emitFlipUint16Sint64(SourceInfo);
15614bool emitFlipUint16Uint64(SourceInfo);
15615bool emitFlipUint16IntAP(SourceInfo);
15616bool emitFlipUint16IntAPS(SourceInfo);
15617bool emitFlipUint16Bool(SourceInfo);
15618bool emitFlipUint16FixedPoint(SourceInfo);
15619bool emitFlipUint16Ptr(SourceInfo);
15620bool emitFlipUint16MemberPtr(SourceInfo);
15621bool emitFlipUint16Float(SourceInfo);
15622bool emitFlipSint32Sint8(SourceInfo);
15623bool emitFlipSint32Uint8(SourceInfo);
15624bool emitFlipSint32Sint16(SourceInfo);
15625bool emitFlipSint32Uint16(SourceInfo);
15626bool emitFlipSint32Sint32(SourceInfo);
15627bool emitFlipSint32Uint32(SourceInfo);
15628bool emitFlipSint32Sint64(SourceInfo);
15629bool emitFlipSint32Uint64(SourceInfo);
15630bool emitFlipSint32IntAP(SourceInfo);
15631bool emitFlipSint32IntAPS(SourceInfo);
15632bool emitFlipSint32Bool(SourceInfo);
15633bool emitFlipSint32FixedPoint(SourceInfo);
15634bool emitFlipSint32Ptr(SourceInfo);
15635bool emitFlipSint32MemberPtr(SourceInfo);
15636bool emitFlipSint32Float(SourceInfo);
15637bool emitFlipUint32Sint8(SourceInfo);
15638bool emitFlipUint32Uint8(SourceInfo);
15639bool emitFlipUint32Sint16(SourceInfo);
15640bool emitFlipUint32Uint16(SourceInfo);
15641bool emitFlipUint32Sint32(SourceInfo);
15642bool emitFlipUint32Uint32(SourceInfo);
15643bool emitFlipUint32Sint64(SourceInfo);
15644bool emitFlipUint32Uint64(SourceInfo);
15645bool emitFlipUint32IntAP(SourceInfo);
15646bool emitFlipUint32IntAPS(SourceInfo);
15647bool emitFlipUint32Bool(SourceInfo);
15648bool emitFlipUint32FixedPoint(SourceInfo);
15649bool emitFlipUint32Ptr(SourceInfo);
15650bool emitFlipUint32MemberPtr(SourceInfo);
15651bool emitFlipUint32Float(SourceInfo);
15652bool emitFlipSint64Sint8(SourceInfo);
15653bool emitFlipSint64Uint8(SourceInfo);
15654bool emitFlipSint64Sint16(SourceInfo);
15655bool emitFlipSint64Uint16(SourceInfo);
15656bool emitFlipSint64Sint32(SourceInfo);
15657bool emitFlipSint64Uint32(SourceInfo);
15658bool emitFlipSint64Sint64(SourceInfo);
15659bool emitFlipSint64Uint64(SourceInfo);
15660bool emitFlipSint64IntAP(SourceInfo);
15661bool emitFlipSint64IntAPS(SourceInfo);
15662bool emitFlipSint64Bool(SourceInfo);
15663bool emitFlipSint64FixedPoint(SourceInfo);
15664bool emitFlipSint64Ptr(SourceInfo);
15665bool emitFlipSint64MemberPtr(SourceInfo);
15666bool emitFlipSint64Float(SourceInfo);
15667bool emitFlipUint64Sint8(SourceInfo);
15668bool emitFlipUint64Uint8(SourceInfo);
15669bool emitFlipUint64Sint16(SourceInfo);
15670bool emitFlipUint64Uint16(SourceInfo);
15671bool emitFlipUint64Sint32(SourceInfo);
15672bool emitFlipUint64Uint32(SourceInfo);
15673bool emitFlipUint64Sint64(SourceInfo);
15674bool emitFlipUint64Uint64(SourceInfo);
15675bool emitFlipUint64IntAP(SourceInfo);
15676bool emitFlipUint64IntAPS(SourceInfo);
15677bool emitFlipUint64Bool(SourceInfo);
15678bool emitFlipUint64FixedPoint(SourceInfo);
15679bool emitFlipUint64Ptr(SourceInfo);
15680bool emitFlipUint64MemberPtr(SourceInfo);
15681bool emitFlipUint64Float(SourceInfo);
15682bool emitFlipIntAPSint8(SourceInfo);
15683bool emitFlipIntAPUint8(SourceInfo);
15684bool emitFlipIntAPSint16(SourceInfo);
15685bool emitFlipIntAPUint16(SourceInfo);
15686bool emitFlipIntAPSint32(SourceInfo);
15687bool emitFlipIntAPUint32(SourceInfo);
15688bool emitFlipIntAPSint64(SourceInfo);
15689bool emitFlipIntAPUint64(SourceInfo);
15690bool emitFlipIntAPIntAP(SourceInfo);
15691bool emitFlipIntAPIntAPS(SourceInfo);
15692bool emitFlipIntAPBool(SourceInfo);
15693bool emitFlipIntAPFixedPoint(SourceInfo);
15694bool emitFlipIntAPPtr(SourceInfo);
15695bool emitFlipIntAPMemberPtr(SourceInfo);
15696bool emitFlipIntAPFloat(SourceInfo);
15697bool emitFlipIntAPSSint8(SourceInfo);
15698bool emitFlipIntAPSUint8(SourceInfo);
15699bool emitFlipIntAPSSint16(SourceInfo);
15700bool emitFlipIntAPSUint16(SourceInfo);
15701bool emitFlipIntAPSSint32(SourceInfo);
15702bool emitFlipIntAPSUint32(SourceInfo);
15703bool emitFlipIntAPSSint64(SourceInfo);
15704bool emitFlipIntAPSUint64(SourceInfo);
15705bool emitFlipIntAPSIntAP(SourceInfo);
15706bool emitFlipIntAPSIntAPS(SourceInfo);
15707bool emitFlipIntAPSBool(SourceInfo);
15708bool emitFlipIntAPSFixedPoint(SourceInfo);
15709bool emitFlipIntAPSPtr(SourceInfo);
15710bool emitFlipIntAPSMemberPtr(SourceInfo);
15711bool emitFlipIntAPSFloat(SourceInfo);
15712bool emitFlipBoolSint8(SourceInfo);
15713bool emitFlipBoolUint8(SourceInfo);
15714bool emitFlipBoolSint16(SourceInfo);
15715bool emitFlipBoolUint16(SourceInfo);
15716bool emitFlipBoolSint32(SourceInfo);
15717bool emitFlipBoolUint32(SourceInfo);
15718bool emitFlipBoolSint64(SourceInfo);
15719bool emitFlipBoolUint64(SourceInfo);
15720bool emitFlipBoolIntAP(SourceInfo);
15721bool emitFlipBoolIntAPS(SourceInfo);
15722bool emitFlipBoolBool(SourceInfo);
15723bool emitFlipBoolFixedPoint(SourceInfo);
15724bool emitFlipBoolPtr(SourceInfo);
15725bool emitFlipBoolMemberPtr(SourceInfo);
15726bool emitFlipBoolFloat(SourceInfo);
15727bool emitFlipFixedPointSint8(SourceInfo);
15728bool emitFlipFixedPointUint8(SourceInfo);
15729bool emitFlipFixedPointSint16(SourceInfo);
15730bool emitFlipFixedPointUint16(SourceInfo);
15731bool emitFlipFixedPointSint32(SourceInfo);
15732bool emitFlipFixedPointUint32(SourceInfo);
15733bool emitFlipFixedPointSint64(SourceInfo);
15734bool emitFlipFixedPointUint64(SourceInfo);
15735bool emitFlipFixedPointIntAP(SourceInfo);
15736bool emitFlipFixedPointIntAPS(SourceInfo);
15737bool emitFlipFixedPointBool(SourceInfo);
15738bool emitFlipFixedPointFixedPoint(SourceInfo);
15739bool emitFlipFixedPointPtr(SourceInfo);
15740bool emitFlipFixedPointMemberPtr(SourceInfo);
15741bool emitFlipFixedPointFloat(SourceInfo);
15742bool emitFlipPtrSint8(SourceInfo);
15743bool emitFlipPtrUint8(SourceInfo);
15744bool emitFlipPtrSint16(SourceInfo);
15745bool emitFlipPtrUint16(SourceInfo);
15746bool emitFlipPtrSint32(SourceInfo);
15747bool emitFlipPtrUint32(SourceInfo);
15748bool emitFlipPtrSint64(SourceInfo);
15749bool emitFlipPtrUint64(SourceInfo);
15750bool emitFlipPtrIntAP(SourceInfo);
15751bool emitFlipPtrIntAPS(SourceInfo);
15752bool emitFlipPtrBool(SourceInfo);
15753bool emitFlipPtrFixedPoint(SourceInfo);
15754bool emitFlipPtrPtr(SourceInfo);
15755bool emitFlipPtrMemberPtr(SourceInfo);
15756bool emitFlipPtrFloat(SourceInfo);
15757bool emitFlipMemberPtrSint8(SourceInfo);
15758bool emitFlipMemberPtrUint8(SourceInfo);
15759bool emitFlipMemberPtrSint16(SourceInfo);
15760bool emitFlipMemberPtrUint16(SourceInfo);
15761bool emitFlipMemberPtrSint32(SourceInfo);
15762bool emitFlipMemberPtrUint32(SourceInfo);
15763bool emitFlipMemberPtrSint64(SourceInfo);
15764bool emitFlipMemberPtrUint64(SourceInfo);
15765bool emitFlipMemberPtrIntAP(SourceInfo);
15766bool emitFlipMemberPtrIntAPS(SourceInfo);
15767bool emitFlipMemberPtrBool(SourceInfo);
15768bool emitFlipMemberPtrFixedPoint(SourceInfo);
15769bool emitFlipMemberPtrPtr(SourceInfo);
15770bool emitFlipMemberPtrMemberPtr(SourceInfo);
15771bool emitFlipMemberPtrFloat(SourceInfo);
15772bool emitFlipFloatSint8(SourceInfo);
15773bool emitFlipFloatUint8(SourceInfo);
15774bool emitFlipFloatSint16(SourceInfo);
15775bool emitFlipFloatUint16(SourceInfo);
15776bool emitFlipFloatSint32(SourceInfo);
15777bool emitFlipFloatUint32(SourceInfo);
15778bool emitFlipFloatSint64(SourceInfo);
15779bool emitFlipFloatUint64(SourceInfo);
15780bool emitFlipFloatIntAP(SourceInfo);
15781bool emitFlipFloatIntAPS(SourceInfo);
15782bool emitFlipFloatBool(SourceInfo);
15783bool emitFlipFloatFixedPoint(SourceInfo);
15784bool emitFlipFloatPtr(SourceInfo);
15785bool emitFlipFloatMemberPtr(SourceInfo);
15786bool emitFlipFloatFloat(SourceInfo);
15787#endif
15788#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15789[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
15790#endif
15791#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15792bool
15793#if defined(GET_EVAL_IMPL)
15794EvalEmitter
15795#else
15796ByteCodeEmitter
15797#endif
15798::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
15799 switch (T0) {
15800 case PT_Sint8:
15801 switch (T1) {
15802 case PT_Sint8:
15803 return emitFlipSint8Sint8(I);
15804 case PT_Uint8:
15805 return emitFlipSint8Uint8(I);
15806 case PT_Sint16:
15807 return emitFlipSint8Sint16(I);
15808 case PT_Uint16:
15809 return emitFlipSint8Uint16(I);
15810 case PT_Sint32:
15811 return emitFlipSint8Sint32(I);
15812 case PT_Uint32:
15813 return emitFlipSint8Uint32(I);
15814 case PT_Sint64:
15815 return emitFlipSint8Sint64(I);
15816 case PT_Uint64:
15817 return emitFlipSint8Uint64(I);
15818 case PT_IntAP:
15819 return emitFlipSint8IntAP(I);
15820 case PT_IntAPS:
15821 return emitFlipSint8IntAPS(I);
15822 case PT_Bool:
15823 return emitFlipSint8Bool(I);
15824 case PT_FixedPoint:
15825 return emitFlipSint8FixedPoint(I);
15826 case PT_Ptr:
15827 return emitFlipSint8Ptr(I);
15828 case PT_MemberPtr:
15829 return emitFlipSint8MemberPtr(I);
15830 case PT_Float:
15831 return emitFlipSint8Float(I);
15832 }
15833 llvm_unreachable("invalid enum value");
15834 case PT_Uint8:
15835 switch (T1) {
15836 case PT_Sint8:
15837 return emitFlipUint8Sint8(I);
15838 case PT_Uint8:
15839 return emitFlipUint8Uint8(I);
15840 case PT_Sint16:
15841 return emitFlipUint8Sint16(I);
15842 case PT_Uint16:
15843 return emitFlipUint8Uint16(I);
15844 case PT_Sint32:
15845 return emitFlipUint8Sint32(I);
15846 case PT_Uint32:
15847 return emitFlipUint8Uint32(I);
15848 case PT_Sint64:
15849 return emitFlipUint8Sint64(I);
15850 case PT_Uint64:
15851 return emitFlipUint8Uint64(I);
15852 case PT_IntAP:
15853 return emitFlipUint8IntAP(I);
15854 case PT_IntAPS:
15855 return emitFlipUint8IntAPS(I);
15856 case PT_Bool:
15857 return emitFlipUint8Bool(I);
15858 case PT_FixedPoint:
15859 return emitFlipUint8FixedPoint(I);
15860 case PT_Ptr:
15861 return emitFlipUint8Ptr(I);
15862 case PT_MemberPtr:
15863 return emitFlipUint8MemberPtr(I);
15864 case PT_Float:
15865 return emitFlipUint8Float(I);
15866 }
15867 llvm_unreachable("invalid enum value");
15868 case PT_Sint16:
15869 switch (T1) {
15870 case PT_Sint8:
15871 return emitFlipSint16Sint8(I);
15872 case PT_Uint8:
15873 return emitFlipSint16Uint8(I);
15874 case PT_Sint16:
15875 return emitFlipSint16Sint16(I);
15876 case PT_Uint16:
15877 return emitFlipSint16Uint16(I);
15878 case PT_Sint32:
15879 return emitFlipSint16Sint32(I);
15880 case PT_Uint32:
15881 return emitFlipSint16Uint32(I);
15882 case PT_Sint64:
15883 return emitFlipSint16Sint64(I);
15884 case PT_Uint64:
15885 return emitFlipSint16Uint64(I);
15886 case PT_IntAP:
15887 return emitFlipSint16IntAP(I);
15888 case PT_IntAPS:
15889 return emitFlipSint16IntAPS(I);
15890 case PT_Bool:
15891 return emitFlipSint16Bool(I);
15892 case PT_FixedPoint:
15893 return emitFlipSint16FixedPoint(I);
15894 case PT_Ptr:
15895 return emitFlipSint16Ptr(I);
15896 case PT_MemberPtr:
15897 return emitFlipSint16MemberPtr(I);
15898 case PT_Float:
15899 return emitFlipSint16Float(I);
15900 }
15901 llvm_unreachable("invalid enum value");
15902 case PT_Uint16:
15903 switch (T1) {
15904 case PT_Sint8:
15905 return emitFlipUint16Sint8(I);
15906 case PT_Uint8:
15907 return emitFlipUint16Uint8(I);
15908 case PT_Sint16:
15909 return emitFlipUint16Sint16(I);
15910 case PT_Uint16:
15911 return emitFlipUint16Uint16(I);
15912 case PT_Sint32:
15913 return emitFlipUint16Sint32(I);
15914 case PT_Uint32:
15915 return emitFlipUint16Uint32(I);
15916 case PT_Sint64:
15917 return emitFlipUint16Sint64(I);
15918 case PT_Uint64:
15919 return emitFlipUint16Uint64(I);
15920 case PT_IntAP:
15921 return emitFlipUint16IntAP(I);
15922 case PT_IntAPS:
15923 return emitFlipUint16IntAPS(I);
15924 case PT_Bool:
15925 return emitFlipUint16Bool(I);
15926 case PT_FixedPoint:
15927 return emitFlipUint16FixedPoint(I);
15928 case PT_Ptr:
15929 return emitFlipUint16Ptr(I);
15930 case PT_MemberPtr:
15931 return emitFlipUint16MemberPtr(I);
15932 case PT_Float:
15933 return emitFlipUint16Float(I);
15934 }
15935 llvm_unreachable("invalid enum value");
15936 case PT_Sint32:
15937 switch (T1) {
15938 case PT_Sint8:
15939 return emitFlipSint32Sint8(I);
15940 case PT_Uint8:
15941 return emitFlipSint32Uint8(I);
15942 case PT_Sint16:
15943 return emitFlipSint32Sint16(I);
15944 case PT_Uint16:
15945 return emitFlipSint32Uint16(I);
15946 case PT_Sint32:
15947 return emitFlipSint32Sint32(I);
15948 case PT_Uint32:
15949 return emitFlipSint32Uint32(I);
15950 case PT_Sint64:
15951 return emitFlipSint32Sint64(I);
15952 case PT_Uint64:
15953 return emitFlipSint32Uint64(I);
15954 case PT_IntAP:
15955 return emitFlipSint32IntAP(I);
15956 case PT_IntAPS:
15957 return emitFlipSint32IntAPS(I);
15958 case PT_Bool:
15959 return emitFlipSint32Bool(I);
15960 case PT_FixedPoint:
15961 return emitFlipSint32FixedPoint(I);
15962 case PT_Ptr:
15963 return emitFlipSint32Ptr(I);
15964 case PT_MemberPtr:
15965 return emitFlipSint32MemberPtr(I);
15966 case PT_Float:
15967 return emitFlipSint32Float(I);
15968 }
15969 llvm_unreachable("invalid enum value");
15970 case PT_Uint32:
15971 switch (T1) {
15972 case PT_Sint8:
15973 return emitFlipUint32Sint8(I);
15974 case PT_Uint8:
15975 return emitFlipUint32Uint8(I);
15976 case PT_Sint16:
15977 return emitFlipUint32Sint16(I);
15978 case PT_Uint16:
15979 return emitFlipUint32Uint16(I);
15980 case PT_Sint32:
15981 return emitFlipUint32Sint32(I);
15982 case PT_Uint32:
15983 return emitFlipUint32Uint32(I);
15984 case PT_Sint64:
15985 return emitFlipUint32Sint64(I);
15986 case PT_Uint64:
15987 return emitFlipUint32Uint64(I);
15988 case PT_IntAP:
15989 return emitFlipUint32IntAP(I);
15990 case PT_IntAPS:
15991 return emitFlipUint32IntAPS(I);
15992 case PT_Bool:
15993 return emitFlipUint32Bool(I);
15994 case PT_FixedPoint:
15995 return emitFlipUint32FixedPoint(I);
15996 case PT_Ptr:
15997 return emitFlipUint32Ptr(I);
15998 case PT_MemberPtr:
15999 return emitFlipUint32MemberPtr(I);
16000 case PT_Float:
16001 return emitFlipUint32Float(I);
16002 }
16003 llvm_unreachable("invalid enum value");
16004 case PT_Sint64:
16005 switch (T1) {
16006 case PT_Sint8:
16007 return emitFlipSint64Sint8(I);
16008 case PT_Uint8:
16009 return emitFlipSint64Uint8(I);
16010 case PT_Sint16:
16011 return emitFlipSint64Sint16(I);
16012 case PT_Uint16:
16013 return emitFlipSint64Uint16(I);
16014 case PT_Sint32:
16015 return emitFlipSint64Sint32(I);
16016 case PT_Uint32:
16017 return emitFlipSint64Uint32(I);
16018 case PT_Sint64:
16019 return emitFlipSint64Sint64(I);
16020 case PT_Uint64:
16021 return emitFlipSint64Uint64(I);
16022 case PT_IntAP:
16023 return emitFlipSint64IntAP(I);
16024 case PT_IntAPS:
16025 return emitFlipSint64IntAPS(I);
16026 case PT_Bool:
16027 return emitFlipSint64Bool(I);
16028 case PT_FixedPoint:
16029 return emitFlipSint64FixedPoint(I);
16030 case PT_Ptr:
16031 return emitFlipSint64Ptr(I);
16032 case PT_MemberPtr:
16033 return emitFlipSint64MemberPtr(I);
16034 case PT_Float:
16035 return emitFlipSint64Float(I);
16036 }
16037 llvm_unreachable("invalid enum value");
16038 case PT_Uint64:
16039 switch (T1) {
16040 case PT_Sint8:
16041 return emitFlipUint64Sint8(I);
16042 case PT_Uint8:
16043 return emitFlipUint64Uint8(I);
16044 case PT_Sint16:
16045 return emitFlipUint64Sint16(I);
16046 case PT_Uint16:
16047 return emitFlipUint64Uint16(I);
16048 case PT_Sint32:
16049 return emitFlipUint64Sint32(I);
16050 case PT_Uint32:
16051 return emitFlipUint64Uint32(I);
16052 case PT_Sint64:
16053 return emitFlipUint64Sint64(I);
16054 case PT_Uint64:
16055 return emitFlipUint64Uint64(I);
16056 case PT_IntAP:
16057 return emitFlipUint64IntAP(I);
16058 case PT_IntAPS:
16059 return emitFlipUint64IntAPS(I);
16060 case PT_Bool:
16061 return emitFlipUint64Bool(I);
16062 case PT_FixedPoint:
16063 return emitFlipUint64FixedPoint(I);
16064 case PT_Ptr:
16065 return emitFlipUint64Ptr(I);
16066 case PT_MemberPtr:
16067 return emitFlipUint64MemberPtr(I);
16068 case PT_Float:
16069 return emitFlipUint64Float(I);
16070 }
16071 llvm_unreachable("invalid enum value");
16072 case PT_IntAP:
16073 switch (T1) {
16074 case PT_Sint8:
16075 return emitFlipIntAPSint8(I);
16076 case PT_Uint8:
16077 return emitFlipIntAPUint8(I);
16078 case PT_Sint16:
16079 return emitFlipIntAPSint16(I);
16080 case PT_Uint16:
16081 return emitFlipIntAPUint16(I);
16082 case PT_Sint32:
16083 return emitFlipIntAPSint32(I);
16084 case PT_Uint32:
16085 return emitFlipIntAPUint32(I);
16086 case PT_Sint64:
16087 return emitFlipIntAPSint64(I);
16088 case PT_Uint64:
16089 return emitFlipIntAPUint64(I);
16090 case PT_IntAP:
16091 return emitFlipIntAPIntAP(I);
16092 case PT_IntAPS:
16093 return emitFlipIntAPIntAPS(I);
16094 case PT_Bool:
16095 return emitFlipIntAPBool(I);
16096 case PT_FixedPoint:
16097 return emitFlipIntAPFixedPoint(I);
16098 case PT_Ptr:
16099 return emitFlipIntAPPtr(I);
16100 case PT_MemberPtr:
16101 return emitFlipIntAPMemberPtr(I);
16102 case PT_Float:
16103 return emitFlipIntAPFloat(I);
16104 }
16105 llvm_unreachable("invalid enum value");
16106 case PT_IntAPS:
16107 switch (T1) {
16108 case PT_Sint8:
16109 return emitFlipIntAPSSint8(I);
16110 case PT_Uint8:
16111 return emitFlipIntAPSUint8(I);
16112 case PT_Sint16:
16113 return emitFlipIntAPSSint16(I);
16114 case PT_Uint16:
16115 return emitFlipIntAPSUint16(I);
16116 case PT_Sint32:
16117 return emitFlipIntAPSSint32(I);
16118 case PT_Uint32:
16119 return emitFlipIntAPSUint32(I);
16120 case PT_Sint64:
16121 return emitFlipIntAPSSint64(I);
16122 case PT_Uint64:
16123 return emitFlipIntAPSUint64(I);
16124 case PT_IntAP:
16125 return emitFlipIntAPSIntAP(I);
16126 case PT_IntAPS:
16127 return emitFlipIntAPSIntAPS(I);
16128 case PT_Bool:
16129 return emitFlipIntAPSBool(I);
16130 case PT_FixedPoint:
16131 return emitFlipIntAPSFixedPoint(I);
16132 case PT_Ptr:
16133 return emitFlipIntAPSPtr(I);
16134 case PT_MemberPtr:
16135 return emitFlipIntAPSMemberPtr(I);
16136 case PT_Float:
16137 return emitFlipIntAPSFloat(I);
16138 }
16139 llvm_unreachable("invalid enum value");
16140 case PT_Bool:
16141 switch (T1) {
16142 case PT_Sint8:
16143 return emitFlipBoolSint8(I);
16144 case PT_Uint8:
16145 return emitFlipBoolUint8(I);
16146 case PT_Sint16:
16147 return emitFlipBoolSint16(I);
16148 case PT_Uint16:
16149 return emitFlipBoolUint16(I);
16150 case PT_Sint32:
16151 return emitFlipBoolSint32(I);
16152 case PT_Uint32:
16153 return emitFlipBoolUint32(I);
16154 case PT_Sint64:
16155 return emitFlipBoolSint64(I);
16156 case PT_Uint64:
16157 return emitFlipBoolUint64(I);
16158 case PT_IntAP:
16159 return emitFlipBoolIntAP(I);
16160 case PT_IntAPS:
16161 return emitFlipBoolIntAPS(I);
16162 case PT_Bool:
16163 return emitFlipBoolBool(I);
16164 case PT_FixedPoint:
16165 return emitFlipBoolFixedPoint(I);
16166 case PT_Ptr:
16167 return emitFlipBoolPtr(I);
16168 case PT_MemberPtr:
16169 return emitFlipBoolMemberPtr(I);
16170 case PT_Float:
16171 return emitFlipBoolFloat(I);
16172 }
16173 llvm_unreachable("invalid enum value");
16174 case PT_FixedPoint:
16175 switch (T1) {
16176 case PT_Sint8:
16177 return emitFlipFixedPointSint8(I);
16178 case PT_Uint8:
16179 return emitFlipFixedPointUint8(I);
16180 case PT_Sint16:
16181 return emitFlipFixedPointSint16(I);
16182 case PT_Uint16:
16183 return emitFlipFixedPointUint16(I);
16184 case PT_Sint32:
16185 return emitFlipFixedPointSint32(I);
16186 case PT_Uint32:
16187 return emitFlipFixedPointUint32(I);
16188 case PT_Sint64:
16189 return emitFlipFixedPointSint64(I);
16190 case PT_Uint64:
16191 return emitFlipFixedPointUint64(I);
16192 case PT_IntAP:
16193 return emitFlipFixedPointIntAP(I);
16194 case PT_IntAPS:
16195 return emitFlipFixedPointIntAPS(I);
16196 case PT_Bool:
16197 return emitFlipFixedPointBool(I);
16198 case PT_FixedPoint:
16199 return emitFlipFixedPointFixedPoint(I);
16200 case PT_Ptr:
16201 return emitFlipFixedPointPtr(I);
16202 case PT_MemberPtr:
16203 return emitFlipFixedPointMemberPtr(I);
16204 case PT_Float:
16205 return emitFlipFixedPointFloat(I);
16206 }
16207 llvm_unreachable("invalid enum value");
16208 case PT_Ptr:
16209 switch (T1) {
16210 case PT_Sint8:
16211 return emitFlipPtrSint8(I);
16212 case PT_Uint8:
16213 return emitFlipPtrUint8(I);
16214 case PT_Sint16:
16215 return emitFlipPtrSint16(I);
16216 case PT_Uint16:
16217 return emitFlipPtrUint16(I);
16218 case PT_Sint32:
16219 return emitFlipPtrSint32(I);
16220 case PT_Uint32:
16221 return emitFlipPtrUint32(I);
16222 case PT_Sint64:
16223 return emitFlipPtrSint64(I);
16224 case PT_Uint64:
16225 return emitFlipPtrUint64(I);
16226 case PT_IntAP:
16227 return emitFlipPtrIntAP(I);
16228 case PT_IntAPS:
16229 return emitFlipPtrIntAPS(I);
16230 case PT_Bool:
16231 return emitFlipPtrBool(I);
16232 case PT_FixedPoint:
16233 return emitFlipPtrFixedPoint(I);
16234 case PT_Ptr:
16235 return emitFlipPtrPtr(I);
16236 case PT_MemberPtr:
16237 return emitFlipPtrMemberPtr(I);
16238 case PT_Float:
16239 return emitFlipPtrFloat(I);
16240 }
16241 llvm_unreachable("invalid enum value");
16242 case PT_MemberPtr:
16243 switch (T1) {
16244 case PT_Sint8:
16245 return emitFlipMemberPtrSint8(I);
16246 case PT_Uint8:
16247 return emitFlipMemberPtrUint8(I);
16248 case PT_Sint16:
16249 return emitFlipMemberPtrSint16(I);
16250 case PT_Uint16:
16251 return emitFlipMemberPtrUint16(I);
16252 case PT_Sint32:
16253 return emitFlipMemberPtrSint32(I);
16254 case PT_Uint32:
16255 return emitFlipMemberPtrUint32(I);
16256 case PT_Sint64:
16257 return emitFlipMemberPtrSint64(I);
16258 case PT_Uint64:
16259 return emitFlipMemberPtrUint64(I);
16260 case PT_IntAP:
16261 return emitFlipMemberPtrIntAP(I);
16262 case PT_IntAPS:
16263 return emitFlipMemberPtrIntAPS(I);
16264 case PT_Bool:
16265 return emitFlipMemberPtrBool(I);
16266 case PT_FixedPoint:
16267 return emitFlipMemberPtrFixedPoint(I);
16268 case PT_Ptr:
16269 return emitFlipMemberPtrPtr(I);
16270 case PT_MemberPtr:
16271 return emitFlipMemberPtrMemberPtr(I);
16272 case PT_Float:
16273 return emitFlipMemberPtrFloat(I);
16274 }
16275 llvm_unreachable("invalid enum value");
16276 case PT_Float:
16277 switch (T1) {
16278 case PT_Sint8:
16279 return emitFlipFloatSint8(I);
16280 case PT_Uint8:
16281 return emitFlipFloatUint8(I);
16282 case PT_Sint16:
16283 return emitFlipFloatSint16(I);
16284 case PT_Uint16:
16285 return emitFlipFloatUint16(I);
16286 case PT_Sint32:
16287 return emitFlipFloatSint32(I);
16288 case PT_Uint32:
16289 return emitFlipFloatUint32(I);
16290 case PT_Sint64:
16291 return emitFlipFloatSint64(I);
16292 case PT_Uint64:
16293 return emitFlipFloatUint64(I);
16294 case PT_IntAP:
16295 return emitFlipFloatIntAP(I);
16296 case PT_IntAPS:
16297 return emitFlipFloatIntAPS(I);
16298 case PT_Bool:
16299 return emitFlipFloatBool(I);
16300 case PT_FixedPoint:
16301 return emitFlipFloatFixedPoint(I);
16302 case PT_Ptr:
16303 return emitFlipFloatPtr(I);
16304 case PT_MemberPtr:
16305 return emitFlipFloatMemberPtr(I);
16306 case PT_Float:
16307 return emitFlipFloatFloat(I);
16308 }
16309 llvm_unreachable("invalid enum value");
16310 }
16311 llvm_unreachable("invalid enum value");
16312}
16313#endif
16314#ifdef GET_LINK_IMPL
16315bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
16316 return emitOp<>(OP_FlipSint8Sint8, L);
16317}
16318bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
16319 return emitOp<>(OP_FlipSint8Uint8, L);
16320}
16321bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
16322 return emitOp<>(OP_FlipSint8Sint16, L);
16323}
16324bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
16325 return emitOp<>(OP_FlipSint8Uint16, L);
16326}
16327bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
16328 return emitOp<>(OP_FlipSint8Sint32, L);
16329}
16330bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
16331 return emitOp<>(OP_FlipSint8Uint32, L);
16332}
16333bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
16334 return emitOp<>(OP_FlipSint8Sint64, L);
16335}
16336bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
16337 return emitOp<>(OP_FlipSint8Uint64, L);
16338}
16339bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
16340 return emitOp<>(OP_FlipSint8IntAP, L);
16341}
16342bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
16343 return emitOp<>(OP_FlipSint8IntAPS, L);
16344}
16345bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
16346 return emitOp<>(OP_FlipSint8Bool, L);
16347}
16348bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
16349 return emitOp<>(OP_FlipSint8FixedPoint, L);
16350}
16351bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
16352 return emitOp<>(OP_FlipSint8Ptr, L);
16353}
16354bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
16355 return emitOp<>(OP_FlipSint8MemberPtr, L);
16356}
16357bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
16358 return emitOp<>(OP_FlipSint8Float, L);
16359}
16360bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
16361 return emitOp<>(OP_FlipUint8Sint8, L);
16362}
16363bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
16364 return emitOp<>(OP_FlipUint8Uint8, L);
16365}
16366bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
16367 return emitOp<>(OP_FlipUint8Sint16, L);
16368}
16369bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
16370 return emitOp<>(OP_FlipUint8Uint16, L);
16371}
16372bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
16373 return emitOp<>(OP_FlipUint8Sint32, L);
16374}
16375bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
16376 return emitOp<>(OP_FlipUint8Uint32, L);
16377}
16378bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
16379 return emitOp<>(OP_FlipUint8Sint64, L);
16380}
16381bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
16382 return emitOp<>(OP_FlipUint8Uint64, L);
16383}
16384bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
16385 return emitOp<>(OP_FlipUint8IntAP, L);
16386}
16387bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
16388 return emitOp<>(OP_FlipUint8IntAPS, L);
16389}
16390bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
16391 return emitOp<>(OP_FlipUint8Bool, L);
16392}
16393bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
16394 return emitOp<>(OP_FlipUint8FixedPoint, L);
16395}
16396bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
16397 return emitOp<>(OP_FlipUint8Ptr, L);
16398}
16399bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
16400 return emitOp<>(OP_FlipUint8MemberPtr, L);
16401}
16402bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
16403 return emitOp<>(OP_FlipUint8Float, L);
16404}
16405bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
16406 return emitOp<>(OP_FlipSint16Sint8, L);
16407}
16408bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
16409 return emitOp<>(OP_FlipSint16Uint8, L);
16410}
16411bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
16412 return emitOp<>(OP_FlipSint16Sint16, L);
16413}
16414bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
16415 return emitOp<>(OP_FlipSint16Uint16, L);
16416}
16417bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
16418 return emitOp<>(OP_FlipSint16Sint32, L);
16419}
16420bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
16421 return emitOp<>(OP_FlipSint16Uint32, L);
16422}
16423bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
16424 return emitOp<>(OP_FlipSint16Sint64, L);
16425}
16426bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
16427 return emitOp<>(OP_FlipSint16Uint64, L);
16428}
16429bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
16430 return emitOp<>(OP_FlipSint16IntAP, L);
16431}
16432bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
16433 return emitOp<>(OP_FlipSint16IntAPS, L);
16434}
16435bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
16436 return emitOp<>(OP_FlipSint16Bool, L);
16437}
16438bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
16439 return emitOp<>(OP_FlipSint16FixedPoint, L);
16440}
16441bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
16442 return emitOp<>(OP_FlipSint16Ptr, L);
16443}
16444bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
16445 return emitOp<>(OP_FlipSint16MemberPtr, L);
16446}
16447bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
16448 return emitOp<>(OP_FlipSint16Float, L);
16449}
16450bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
16451 return emitOp<>(OP_FlipUint16Sint8, L);
16452}
16453bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
16454 return emitOp<>(OP_FlipUint16Uint8, L);
16455}
16456bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
16457 return emitOp<>(OP_FlipUint16Sint16, L);
16458}
16459bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
16460 return emitOp<>(OP_FlipUint16Uint16, L);
16461}
16462bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
16463 return emitOp<>(OP_FlipUint16Sint32, L);
16464}
16465bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
16466 return emitOp<>(OP_FlipUint16Uint32, L);
16467}
16468bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
16469 return emitOp<>(OP_FlipUint16Sint64, L);
16470}
16471bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
16472 return emitOp<>(OP_FlipUint16Uint64, L);
16473}
16474bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
16475 return emitOp<>(OP_FlipUint16IntAP, L);
16476}
16477bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
16478 return emitOp<>(OP_FlipUint16IntAPS, L);
16479}
16480bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
16481 return emitOp<>(OP_FlipUint16Bool, L);
16482}
16483bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
16484 return emitOp<>(OP_FlipUint16FixedPoint, L);
16485}
16486bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
16487 return emitOp<>(OP_FlipUint16Ptr, L);
16488}
16489bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
16490 return emitOp<>(OP_FlipUint16MemberPtr, L);
16491}
16492bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
16493 return emitOp<>(OP_FlipUint16Float, L);
16494}
16495bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
16496 return emitOp<>(OP_FlipSint32Sint8, L);
16497}
16498bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
16499 return emitOp<>(OP_FlipSint32Uint8, L);
16500}
16501bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
16502 return emitOp<>(OP_FlipSint32Sint16, L);
16503}
16504bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
16505 return emitOp<>(OP_FlipSint32Uint16, L);
16506}
16507bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
16508 return emitOp<>(OP_FlipSint32Sint32, L);
16509}
16510bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
16511 return emitOp<>(OP_FlipSint32Uint32, L);
16512}
16513bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
16514 return emitOp<>(OP_FlipSint32Sint64, L);
16515}
16516bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
16517 return emitOp<>(OP_FlipSint32Uint64, L);
16518}
16519bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
16520 return emitOp<>(OP_FlipSint32IntAP, L);
16521}
16522bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
16523 return emitOp<>(OP_FlipSint32IntAPS, L);
16524}
16525bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
16526 return emitOp<>(OP_FlipSint32Bool, L);
16527}
16528bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
16529 return emitOp<>(OP_FlipSint32FixedPoint, L);
16530}
16531bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
16532 return emitOp<>(OP_FlipSint32Ptr, L);
16533}
16534bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
16535 return emitOp<>(OP_FlipSint32MemberPtr, L);
16536}
16537bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
16538 return emitOp<>(OP_FlipSint32Float, L);
16539}
16540bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
16541 return emitOp<>(OP_FlipUint32Sint8, L);
16542}
16543bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
16544 return emitOp<>(OP_FlipUint32Uint8, L);
16545}
16546bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
16547 return emitOp<>(OP_FlipUint32Sint16, L);
16548}
16549bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
16550 return emitOp<>(OP_FlipUint32Uint16, L);
16551}
16552bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
16553 return emitOp<>(OP_FlipUint32Sint32, L);
16554}
16555bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
16556 return emitOp<>(OP_FlipUint32Uint32, L);
16557}
16558bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
16559 return emitOp<>(OP_FlipUint32Sint64, L);
16560}
16561bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
16562 return emitOp<>(OP_FlipUint32Uint64, L);
16563}
16564bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
16565 return emitOp<>(OP_FlipUint32IntAP, L);
16566}
16567bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
16568 return emitOp<>(OP_FlipUint32IntAPS, L);
16569}
16570bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
16571 return emitOp<>(OP_FlipUint32Bool, L);
16572}
16573bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
16574 return emitOp<>(OP_FlipUint32FixedPoint, L);
16575}
16576bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
16577 return emitOp<>(OP_FlipUint32Ptr, L);
16578}
16579bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
16580 return emitOp<>(OP_FlipUint32MemberPtr, L);
16581}
16582bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
16583 return emitOp<>(OP_FlipUint32Float, L);
16584}
16585bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
16586 return emitOp<>(OP_FlipSint64Sint8, L);
16587}
16588bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
16589 return emitOp<>(OP_FlipSint64Uint8, L);
16590}
16591bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
16592 return emitOp<>(OP_FlipSint64Sint16, L);
16593}
16594bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
16595 return emitOp<>(OP_FlipSint64Uint16, L);
16596}
16597bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
16598 return emitOp<>(OP_FlipSint64Sint32, L);
16599}
16600bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
16601 return emitOp<>(OP_FlipSint64Uint32, L);
16602}
16603bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
16604 return emitOp<>(OP_FlipSint64Sint64, L);
16605}
16606bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
16607 return emitOp<>(OP_FlipSint64Uint64, L);
16608}
16609bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
16610 return emitOp<>(OP_FlipSint64IntAP, L);
16611}
16612bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
16613 return emitOp<>(OP_FlipSint64IntAPS, L);
16614}
16615bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
16616 return emitOp<>(OP_FlipSint64Bool, L);
16617}
16618bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
16619 return emitOp<>(OP_FlipSint64FixedPoint, L);
16620}
16621bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
16622 return emitOp<>(OP_FlipSint64Ptr, L);
16623}
16624bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
16625 return emitOp<>(OP_FlipSint64MemberPtr, L);
16626}
16627bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
16628 return emitOp<>(OP_FlipSint64Float, L);
16629}
16630bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
16631 return emitOp<>(OP_FlipUint64Sint8, L);
16632}
16633bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
16634 return emitOp<>(OP_FlipUint64Uint8, L);
16635}
16636bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
16637 return emitOp<>(OP_FlipUint64Sint16, L);
16638}
16639bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
16640 return emitOp<>(OP_FlipUint64Uint16, L);
16641}
16642bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
16643 return emitOp<>(OP_FlipUint64Sint32, L);
16644}
16645bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
16646 return emitOp<>(OP_FlipUint64Uint32, L);
16647}
16648bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
16649 return emitOp<>(OP_FlipUint64Sint64, L);
16650}
16651bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
16652 return emitOp<>(OP_FlipUint64Uint64, L);
16653}
16654bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
16655 return emitOp<>(OP_FlipUint64IntAP, L);
16656}
16657bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
16658 return emitOp<>(OP_FlipUint64IntAPS, L);
16659}
16660bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
16661 return emitOp<>(OP_FlipUint64Bool, L);
16662}
16663bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
16664 return emitOp<>(OP_FlipUint64FixedPoint, L);
16665}
16666bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
16667 return emitOp<>(OP_FlipUint64Ptr, L);
16668}
16669bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
16670 return emitOp<>(OP_FlipUint64MemberPtr, L);
16671}
16672bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
16673 return emitOp<>(OP_FlipUint64Float, L);
16674}
16675bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
16676 return emitOp<>(OP_FlipIntAPSint8, L);
16677}
16678bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
16679 return emitOp<>(OP_FlipIntAPUint8, L);
16680}
16681bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
16682 return emitOp<>(OP_FlipIntAPSint16, L);
16683}
16684bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
16685 return emitOp<>(OP_FlipIntAPUint16, L);
16686}
16687bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
16688 return emitOp<>(OP_FlipIntAPSint32, L);
16689}
16690bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
16691 return emitOp<>(OP_FlipIntAPUint32, L);
16692}
16693bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
16694 return emitOp<>(OP_FlipIntAPSint64, L);
16695}
16696bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
16697 return emitOp<>(OP_FlipIntAPUint64, L);
16698}
16699bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
16700 return emitOp<>(OP_FlipIntAPIntAP, L);
16701}
16702bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
16703 return emitOp<>(OP_FlipIntAPIntAPS, L);
16704}
16705bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
16706 return emitOp<>(OP_FlipIntAPBool, L);
16707}
16708bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
16709 return emitOp<>(OP_FlipIntAPFixedPoint, L);
16710}
16711bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
16712 return emitOp<>(OP_FlipIntAPPtr, L);
16713}
16714bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
16715 return emitOp<>(OP_FlipIntAPMemberPtr, L);
16716}
16717bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
16718 return emitOp<>(OP_FlipIntAPFloat, L);
16719}
16720bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
16721 return emitOp<>(OP_FlipIntAPSSint8, L);
16722}
16723bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
16724 return emitOp<>(OP_FlipIntAPSUint8, L);
16725}
16726bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
16727 return emitOp<>(OP_FlipIntAPSSint16, L);
16728}
16729bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
16730 return emitOp<>(OP_FlipIntAPSUint16, L);
16731}
16732bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
16733 return emitOp<>(OP_FlipIntAPSSint32, L);
16734}
16735bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
16736 return emitOp<>(OP_FlipIntAPSUint32, L);
16737}
16738bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
16739 return emitOp<>(OP_FlipIntAPSSint64, L);
16740}
16741bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
16742 return emitOp<>(OP_FlipIntAPSUint64, L);
16743}
16744bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
16745 return emitOp<>(OP_FlipIntAPSIntAP, L);
16746}
16747bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
16748 return emitOp<>(OP_FlipIntAPSIntAPS, L);
16749}
16750bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
16751 return emitOp<>(OP_FlipIntAPSBool, L);
16752}
16753bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
16754 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
16755}
16756bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
16757 return emitOp<>(OP_FlipIntAPSPtr, L);
16758}
16759bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
16760 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
16761}
16762bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
16763 return emitOp<>(OP_FlipIntAPSFloat, L);
16764}
16765bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
16766 return emitOp<>(OP_FlipBoolSint8, L);
16767}
16768bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
16769 return emitOp<>(OP_FlipBoolUint8, L);
16770}
16771bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
16772 return emitOp<>(OP_FlipBoolSint16, L);
16773}
16774bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
16775 return emitOp<>(OP_FlipBoolUint16, L);
16776}
16777bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
16778 return emitOp<>(OP_FlipBoolSint32, L);
16779}
16780bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
16781 return emitOp<>(OP_FlipBoolUint32, L);
16782}
16783bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
16784 return emitOp<>(OP_FlipBoolSint64, L);
16785}
16786bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
16787 return emitOp<>(OP_FlipBoolUint64, L);
16788}
16789bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
16790 return emitOp<>(OP_FlipBoolIntAP, L);
16791}
16792bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
16793 return emitOp<>(OP_FlipBoolIntAPS, L);
16794}
16795bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
16796 return emitOp<>(OP_FlipBoolBool, L);
16797}
16798bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
16799 return emitOp<>(OP_FlipBoolFixedPoint, L);
16800}
16801bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
16802 return emitOp<>(OP_FlipBoolPtr, L);
16803}
16804bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
16805 return emitOp<>(OP_FlipBoolMemberPtr, L);
16806}
16807bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
16808 return emitOp<>(OP_FlipBoolFloat, L);
16809}
16810bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
16811 return emitOp<>(OP_FlipFixedPointSint8, L);
16812}
16813bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
16814 return emitOp<>(OP_FlipFixedPointUint8, L);
16815}
16816bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
16817 return emitOp<>(OP_FlipFixedPointSint16, L);
16818}
16819bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
16820 return emitOp<>(OP_FlipFixedPointUint16, L);
16821}
16822bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
16823 return emitOp<>(OP_FlipFixedPointSint32, L);
16824}
16825bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
16826 return emitOp<>(OP_FlipFixedPointUint32, L);
16827}
16828bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
16829 return emitOp<>(OP_FlipFixedPointSint64, L);
16830}
16831bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
16832 return emitOp<>(OP_FlipFixedPointUint64, L);
16833}
16834bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
16835 return emitOp<>(OP_FlipFixedPointIntAP, L);
16836}
16837bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
16838 return emitOp<>(OP_FlipFixedPointIntAPS, L);
16839}
16840bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
16841 return emitOp<>(OP_FlipFixedPointBool, L);
16842}
16843bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
16844 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
16845}
16846bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
16847 return emitOp<>(OP_FlipFixedPointPtr, L);
16848}
16849bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
16850 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
16851}
16852bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
16853 return emitOp<>(OP_FlipFixedPointFloat, L);
16854}
16855bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
16856 return emitOp<>(OP_FlipPtrSint8, L);
16857}
16858bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
16859 return emitOp<>(OP_FlipPtrUint8, L);
16860}
16861bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
16862 return emitOp<>(OP_FlipPtrSint16, L);
16863}
16864bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
16865 return emitOp<>(OP_FlipPtrUint16, L);
16866}
16867bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
16868 return emitOp<>(OP_FlipPtrSint32, L);
16869}
16870bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
16871 return emitOp<>(OP_FlipPtrUint32, L);
16872}
16873bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
16874 return emitOp<>(OP_FlipPtrSint64, L);
16875}
16876bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
16877 return emitOp<>(OP_FlipPtrUint64, L);
16878}
16879bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
16880 return emitOp<>(OP_FlipPtrIntAP, L);
16881}
16882bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
16883 return emitOp<>(OP_FlipPtrIntAPS, L);
16884}
16885bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
16886 return emitOp<>(OP_FlipPtrBool, L);
16887}
16888bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
16889 return emitOp<>(OP_FlipPtrFixedPoint, L);
16890}
16891bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
16892 return emitOp<>(OP_FlipPtrPtr, L);
16893}
16894bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
16895 return emitOp<>(OP_FlipPtrMemberPtr, L);
16896}
16897bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
16898 return emitOp<>(OP_FlipPtrFloat, L);
16899}
16900bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
16901 return emitOp<>(OP_FlipMemberPtrSint8, L);
16902}
16903bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
16904 return emitOp<>(OP_FlipMemberPtrUint8, L);
16905}
16906bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
16907 return emitOp<>(OP_FlipMemberPtrSint16, L);
16908}
16909bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
16910 return emitOp<>(OP_FlipMemberPtrUint16, L);
16911}
16912bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
16913 return emitOp<>(OP_FlipMemberPtrSint32, L);
16914}
16915bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
16916 return emitOp<>(OP_FlipMemberPtrUint32, L);
16917}
16918bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
16919 return emitOp<>(OP_FlipMemberPtrSint64, L);
16920}
16921bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
16922 return emitOp<>(OP_FlipMemberPtrUint64, L);
16923}
16924bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
16925 return emitOp<>(OP_FlipMemberPtrIntAP, L);
16926}
16927bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
16928 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
16929}
16930bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
16931 return emitOp<>(OP_FlipMemberPtrBool, L);
16932}
16933bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
16934 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
16935}
16936bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
16937 return emitOp<>(OP_FlipMemberPtrPtr, L);
16938}
16939bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
16940 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
16941}
16942bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
16943 return emitOp<>(OP_FlipMemberPtrFloat, L);
16944}
16945bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
16946 return emitOp<>(OP_FlipFloatSint8, L);
16947}
16948bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
16949 return emitOp<>(OP_FlipFloatUint8, L);
16950}
16951bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
16952 return emitOp<>(OP_FlipFloatSint16, L);
16953}
16954bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
16955 return emitOp<>(OP_FlipFloatUint16, L);
16956}
16957bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
16958 return emitOp<>(OP_FlipFloatSint32, L);
16959}
16960bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
16961 return emitOp<>(OP_FlipFloatUint32, L);
16962}
16963bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
16964 return emitOp<>(OP_FlipFloatSint64, L);
16965}
16966bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
16967 return emitOp<>(OP_FlipFloatUint64, L);
16968}
16969bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
16970 return emitOp<>(OP_FlipFloatIntAP, L);
16971}
16972bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
16973 return emitOp<>(OP_FlipFloatIntAPS, L);
16974}
16975bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
16976 return emitOp<>(OP_FlipFloatBool, L);
16977}
16978bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
16979 return emitOp<>(OP_FlipFloatFixedPoint, L);
16980}
16981bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
16982 return emitOp<>(OP_FlipFloatPtr, L);
16983}
16984bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
16985 return emitOp<>(OP_FlipFloatMemberPtr, L);
16986}
16987bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
16988 return emitOp<>(OP_FlipFloatFloat, L);
16989}
16990#endif
16991#ifdef GET_EVAL_IMPL
16992bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
16993 if (!isActive()) return true;
16994 CurrentSource = L;
16995 return Flip<PT_Sint8, PT_Sint8>(S, OpPC);
16996}
16997bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
16998 if (!isActive()) return true;
16999 CurrentSource = L;
17000 return Flip<PT_Sint8, PT_Uint8>(S, OpPC);
17001}
17002bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
17003 if (!isActive()) return true;
17004 CurrentSource = L;
17005 return Flip<PT_Sint8, PT_Sint16>(S, OpPC);
17006}
17007bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
17008 if (!isActive()) return true;
17009 CurrentSource = L;
17010 return Flip<PT_Sint8, PT_Uint16>(S, OpPC);
17011}
17012bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
17013 if (!isActive()) return true;
17014 CurrentSource = L;
17015 return Flip<PT_Sint8, PT_Sint32>(S, OpPC);
17016}
17017bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
17018 if (!isActive()) return true;
17019 CurrentSource = L;
17020 return Flip<PT_Sint8, PT_Uint32>(S, OpPC);
17021}
17022bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
17023 if (!isActive()) return true;
17024 CurrentSource = L;
17025 return Flip<PT_Sint8, PT_Sint64>(S, OpPC);
17026}
17027bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
17028 if (!isActive()) return true;
17029 CurrentSource = L;
17030 return Flip<PT_Sint8, PT_Uint64>(S, OpPC);
17031}
17032bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
17033 if (!isActive()) return true;
17034 CurrentSource = L;
17035 return Flip<PT_Sint8, PT_IntAP>(S, OpPC);
17036}
17037bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
17038 if (!isActive()) return true;
17039 CurrentSource = L;
17040 return Flip<PT_Sint8, PT_IntAPS>(S, OpPC);
17041}
17042bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
17043 if (!isActive()) return true;
17044 CurrentSource = L;
17045 return Flip<PT_Sint8, PT_Bool>(S, OpPC);
17046}
17047bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
17048 if (!isActive()) return true;
17049 CurrentSource = L;
17050 return Flip<PT_Sint8, PT_FixedPoint>(S, OpPC);
17051}
17052bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
17053 if (!isActive()) return true;
17054 CurrentSource = L;
17055 return Flip<PT_Sint8, PT_Ptr>(S, OpPC);
17056}
17057bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
17058 if (!isActive()) return true;
17059 CurrentSource = L;
17060 return Flip<PT_Sint8, PT_MemberPtr>(S, OpPC);
17061}
17062bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
17063 if (!isActive()) return true;
17064 CurrentSource = L;
17065 return Flip<PT_Sint8, PT_Float>(S, OpPC);
17066}
17067bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
17068 if (!isActive()) return true;
17069 CurrentSource = L;
17070 return Flip<PT_Uint8, PT_Sint8>(S, OpPC);
17071}
17072bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
17073 if (!isActive()) return true;
17074 CurrentSource = L;
17075 return Flip<PT_Uint8, PT_Uint8>(S, OpPC);
17076}
17077bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
17078 if (!isActive()) return true;
17079 CurrentSource = L;
17080 return Flip<PT_Uint8, PT_Sint16>(S, OpPC);
17081}
17082bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
17083 if (!isActive()) return true;
17084 CurrentSource = L;
17085 return Flip<PT_Uint8, PT_Uint16>(S, OpPC);
17086}
17087bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
17088 if (!isActive()) return true;
17089 CurrentSource = L;
17090 return Flip<PT_Uint8, PT_Sint32>(S, OpPC);
17091}
17092bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
17093 if (!isActive()) return true;
17094 CurrentSource = L;
17095 return Flip<PT_Uint8, PT_Uint32>(S, OpPC);
17096}
17097bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
17098 if (!isActive()) return true;
17099 CurrentSource = L;
17100 return Flip<PT_Uint8, PT_Sint64>(S, OpPC);
17101}
17102bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
17103 if (!isActive()) return true;
17104 CurrentSource = L;
17105 return Flip<PT_Uint8, PT_Uint64>(S, OpPC);
17106}
17107bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
17108 if (!isActive()) return true;
17109 CurrentSource = L;
17110 return Flip<PT_Uint8, PT_IntAP>(S, OpPC);
17111}
17112bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
17113 if (!isActive()) return true;
17114 CurrentSource = L;
17115 return Flip<PT_Uint8, PT_IntAPS>(S, OpPC);
17116}
17117bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
17118 if (!isActive()) return true;
17119 CurrentSource = L;
17120 return Flip<PT_Uint8, PT_Bool>(S, OpPC);
17121}
17122bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
17123 if (!isActive()) return true;
17124 CurrentSource = L;
17125 return Flip<PT_Uint8, PT_FixedPoint>(S, OpPC);
17126}
17127bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
17128 if (!isActive()) return true;
17129 CurrentSource = L;
17130 return Flip<PT_Uint8, PT_Ptr>(S, OpPC);
17131}
17132bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
17133 if (!isActive()) return true;
17134 CurrentSource = L;
17135 return Flip<PT_Uint8, PT_MemberPtr>(S, OpPC);
17136}
17137bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
17138 if (!isActive()) return true;
17139 CurrentSource = L;
17140 return Flip<PT_Uint8, PT_Float>(S, OpPC);
17141}
17142bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
17143 if (!isActive()) return true;
17144 CurrentSource = L;
17145 return Flip<PT_Sint16, PT_Sint8>(S, OpPC);
17146}
17147bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
17148 if (!isActive()) return true;
17149 CurrentSource = L;
17150 return Flip<PT_Sint16, PT_Uint8>(S, OpPC);
17151}
17152bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
17153 if (!isActive()) return true;
17154 CurrentSource = L;
17155 return Flip<PT_Sint16, PT_Sint16>(S, OpPC);
17156}
17157bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
17158 if (!isActive()) return true;
17159 CurrentSource = L;
17160 return Flip<PT_Sint16, PT_Uint16>(S, OpPC);
17161}
17162bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
17163 if (!isActive()) return true;
17164 CurrentSource = L;
17165 return Flip<PT_Sint16, PT_Sint32>(S, OpPC);
17166}
17167bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
17168 if (!isActive()) return true;
17169 CurrentSource = L;
17170 return Flip<PT_Sint16, PT_Uint32>(S, OpPC);
17171}
17172bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
17173 if (!isActive()) return true;
17174 CurrentSource = L;
17175 return Flip<PT_Sint16, PT_Sint64>(S, OpPC);
17176}
17177bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
17178 if (!isActive()) return true;
17179 CurrentSource = L;
17180 return Flip<PT_Sint16, PT_Uint64>(S, OpPC);
17181}
17182bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
17183 if (!isActive()) return true;
17184 CurrentSource = L;
17185 return Flip<PT_Sint16, PT_IntAP>(S, OpPC);
17186}
17187bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
17188 if (!isActive()) return true;
17189 CurrentSource = L;
17190 return Flip<PT_Sint16, PT_IntAPS>(S, OpPC);
17191}
17192bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
17193 if (!isActive()) return true;
17194 CurrentSource = L;
17195 return Flip<PT_Sint16, PT_Bool>(S, OpPC);
17196}
17197bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
17198 if (!isActive()) return true;
17199 CurrentSource = L;
17200 return Flip<PT_Sint16, PT_FixedPoint>(S, OpPC);
17201}
17202bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
17203 if (!isActive()) return true;
17204 CurrentSource = L;
17205 return Flip<PT_Sint16, PT_Ptr>(S, OpPC);
17206}
17207bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
17208 if (!isActive()) return true;
17209 CurrentSource = L;
17210 return Flip<PT_Sint16, PT_MemberPtr>(S, OpPC);
17211}
17212bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
17213 if (!isActive()) return true;
17214 CurrentSource = L;
17215 return Flip<PT_Sint16, PT_Float>(S, OpPC);
17216}
17217bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
17218 if (!isActive()) return true;
17219 CurrentSource = L;
17220 return Flip<PT_Uint16, PT_Sint8>(S, OpPC);
17221}
17222bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
17223 if (!isActive()) return true;
17224 CurrentSource = L;
17225 return Flip<PT_Uint16, PT_Uint8>(S, OpPC);
17226}
17227bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
17228 if (!isActive()) return true;
17229 CurrentSource = L;
17230 return Flip<PT_Uint16, PT_Sint16>(S, OpPC);
17231}
17232bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
17233 if (!isActive()) return true;
17234 CurrentSource = L;
17235 return Flip<PT_Uint16, PT_Uint16>(S, OpPC);
17236}
17237bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
17238 if (!isActive()) return true;
17239 CurrentSource = L;
17240 return Flip<PT_Uint16, PT_Sint32>(S, OpPC);
17241}
17242bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
17243 if (!isActive()) return true;
17244 CurrentSource = L;
17245 return Flip<PT_Uint16, PT_Uint32>(S, OpPC);
17246}
17247bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
17248 if (!isActive()) return true;
17249 CurrentSource = L;
17250 return Flip<PT_Uint16, PT_Sint64>(S, OpPC);
17251}
17252bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
17253 if (!isActive()) return true;
17254 CurrentSource = L;
17255 return Flip<PT_Uint16, PT_Uint64>(S, OpPC);
17256}
17257bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
17258 if (!isActive()) return true;
17259 CurrentSource = L;
17260 return Flip<PT_Uint16, PT_IntAP>(S, OpPC);
17261}
17262bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
17263 if (!isActive()) return true;
17264 CurrentSource = L;
17265 return Flip<PT_Uint16, PT_IntAPS>(S, OpPC);
17266}
17267bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
17268 if (!isActive()) return true;
17269 CurrentSource = L;
17270 return Flip<PT_Uint16, PT_Bool>(S, OpPC);
17271}
17272bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
17273 if (!isActive()) return true;
17274 CurrentSource = L;
17275 return Flip<PT_Uint16, PT_FixedPoint>(S, OpPC);
17276}
17277bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
17278 if (!isActive()) return true;
17279 CurrentSource = L;
17280 return Flip<PT_Uint16, PT_Ptr>(S, OpPC);
17281}
17282bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
17283 if (!isActive()) return true;
17284 CurrentSource = L;
17285 return Flip<PT_Uint16, PT_MemberPtr>(S, OpPC);
17286}
17287bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
17288 if (!isActive()) return true;
17289 CurrentSource = L;
17290 return Flip<PT_Uint16, PT_Float>(S, OpPC);
17291}
17292bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
17293 if (!isActive()) return true;
17294 CurrentSource = L;
17295 return Flip<PT_Sint32, PT_Sint8>(S, OpPC);
17296}
17297bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
17298 if (!isActive()) return true;
17299 CurrentSource = L;
17300 return Flip<PT_Sint32, PT_Uint8>(S, OpPC);
17301}
17302bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
17303 if (!isActive()) return true;
17304 CurrentSource = L;
17305 return Flip<PT_Sint32, PT_Sint16>(S, OpPC);
17306}
17307bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
17308 if (!isActive()) return true;
17309 CurrentSource = L;
17310 return Flip<PT_Sint32, PT_Uint16>(S, OpPC);
17311}
17312bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
17313 if (!isActive()) return true;
17314 CurrentSource = L;
17315 return Flip<PT_Sint32, PT_Sint32>(S, OpPC);
17316}
17317bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
17318 if (!isActive()) return true;
17319 CurrentSource = L;
17320 return Flip<PT_Sint32, PT_Uint32>(S, OpPC);
17321}
17322bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
17323 if (!isActive()) return true;
17324 CurrentSource = L;
17325 return Flip<PT_Sint32, PT_Sint64>(S, OpPC);
17326}
17327bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
17328 if (!isActive()) return true;
17329 CurrentSource = L;
17330 return Flip<PT_Sint32, PT_Uint64>(S, OpPC);
17331}
17332bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
17333 if (!isActive()) return true;
17334 CurrentSource = L;
17335 return Flip<PT_Sint32, PT_IntAP>(S, OpPC);
17336}
17337bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
17338 if (!isActive()) return true;
17339 CurrentSource = L;
17340 return Flip<PT_Sint32, PT_IntAPS>(S, OpPC);
17341}
17342bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
17343 if (!isActive()) return true;
17344 CurrentSource = L;
17345 return Flip<PT_Sint32, PT_Bool>(S, OpPC);
17346}
17347bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
17348 if (!isActive()) return true;
17349 CurrentSource = L;
17350 return Flip<PT_Sint32, PT_FixedPoint>(S, OpPC);
17351}
17352bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
17353 if (!isActive()) return true;
17354 CurrentSource = L;
17355 return Flip<PT_Sint32, PT_Ptr>(S, OpPC);
17356}
17357bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
17358 if (!isActive()) return true;
17359 CurrentSource = L;
17360 return Flip<PT_Sint32, PT_MemberPtr>(S, OpPC);
17361}
17362bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
17363 if (!isActive()) return true;
17364 CurrentSource = L;
17365 return Flip<PT_Sint32, PT_Float>(S, OpPC);
17366}
17367bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
17368 if (!isActive()) return true;
17369 CurrentSource = L;
17370 return Flip<PT_Uint32, PT_Sint8>(S, OpPC);
17371}
17372bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
17373 if (!isActive()) return true;
17374 CurrentSource = L;
17375 return Flip<PT_Uint32, PT_Uint8>(S, OpPC);
17376}
17377bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
17378 if (!isActive()) return true;
17379 CurrentSource = L;
17380 return Flip<PT_Uint32, PT_Sint16>(S, OpPC);
17381}
17382bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
17383 if (!isActive()) return true;
17384 CurrentSource = L;
17385 return Flip<PT_Uint32, PT_Uint16>(S, OpPC);
17386}
17387bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
17388 if (!isActive()) return true;
17389 CurrentSource = L;
17390 return Flip<PT_Uint32, PT_Sint32>(S, OpPC);
17391}
17392bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
17393 if (!isActive()) return true;
17394 CurrentSource = L;
17395 return Flip<PT_Uint32, PT_Uint32>(S, OpPC);
17396}
17397bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
17398 if (!isActive()) return true;
17399 CurrentSource = L;
17400 return Flip<PT_Uint32, PT_Sint64>(S, OpPC);
17401}
17402bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
17403 if (!isActive()) return true;
17404 CurrentSource = L;
17405 return Flip<PT_Uint32, PT_Uint64>(S, OpPC);
17406}
17407bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
17408 if (!isActive()) return true;
17409 CurrentSource = L;
17410 return Flip<PT_Uint32, PT_IntAP>(S, OpPC);
17411}
17412bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
17413 if (!isActive()) return true;
17414 CurrentSource = L;
17415 return Flip<PT_Uint32, PT_IntAPS>(S, OpPC);
17416}
17417bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
17418 if (!isActive()) return true;
17419 CurrentSource = L;
17420 return Flip<PT_Uint32, PT_Bool>(S, OpPC);
17421}
17422bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
17423 if (!isActive()) return true;
17424 CurrentSource = L;
17425 return Flip<PT_Uint32, PT_FixedPoint>(S, OpPC);
17426}
17427bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
17428 if (!isActive()) return true;
17429 CurrentSource = L;
17430 return Flip<PT_Uint32, PT_Ptr>(S, OpPC);
17431}
17432bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
17433 if (!isActive()) return true;
17434 CurrentSource = L;
17435 return Flip<PT_Uint32, PT_MemberPtr>(S, OpPC);
17436}
17437bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
17438 if (!isActive()) return true;
17439 CurrentSource = L;
17440 return Flip<PT_Uint32, PT_Float>(S, OpPC);
17441}
17442bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
17443 if (!isActive()) return true;
17444 CurrentSource = L;
17445 return Flip<PT_Sint64, PT_Sint8>(S, OpPC);
17446}
17447bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
17448 if (!isActive()) return true;
17449 CurrentSource = L;
17450 return Flip<PT_Sint64, PT_Uint8>(S, OpPC);
17451}
17452bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
17453 if (!isActive()) return true;
17454 CurrentSource = L;
17455 return Flip<PT_Sint64, PT_Sint16>(S, OpPC);
17456}
17457bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
17458 if (!isActive()) return true;
17459 CurrentSource = L;
17460 return Flip<PT_Sint64, PT_Uint16>(S, OpPC);
17461}
17462bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
17463 if (!isActive()) return true;
17464 CurrentSource = L;
17465 return Flip<PT_Sint64, PT_Sint32>(S, OpPC);
17466}
17467bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
17468 if (!isActive()) return true;
17469 CurrentSource = L;
17470 return Flip<PT_Sint64, PT_Uint32>(S, OpPC);
17471}
17472bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
17473 if (!isActive()) return true;
17474 CurrentSource = L;
17475 return Flip<PT_Sint64, PT_Sint64>(S, OpPC);
17476}
17477bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
17478 if (!isActive()) return true;
17479 CurrentSource = L;
17480 return Flip<PT_Sint64, PT_Uint64>(S, OpPC);
17481}
17482bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
17483 if (!isActive()) return true;
17484 CurrentSource = L;
17485 return Flip<PT_Sint64, PT_IntAP>(S, OpPC);
17486}
17487bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
17488 if (!isActive()) return true;
17489 CurrentSource = L;
17490 return Flip<PT_Sint64, PT_IntAPS>(S, OpPC);
17491}
17492bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
17493 if (!isActive()) return true;
17494 CurrentSource = L;
17495 return Flip<PT_Sint64, PT_Bool>(S, OpPC);
17496}
17497bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
17498 if (!isActive()) return true;
17499 CurrentSource = L;
17500 return Flip<PT_Sint64, PT_FixedPoint>(S, OpPC);
17501}
17502bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
17503 if (!isActive()) return true;
17504 CurrentSource = L;
17505 return Flip<PT_Sint64, PT_Ptr>(S, OpPC);
17506}
17507bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
17508 if (!isActive()) return true;
17509 CurrentSource = L;
17510 return Flip<PT_Sint64, PT_MemberPtr>(S, OpPC);
17511}
17512bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
17513 if (!isActive()) return true;
17514 CurrentSource = L;
17515 return Flip<PT_Sint64, PT_Float>(S, OpPC);
17516}
17517bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
17518 if (!isActive()) return true;
17519 CurrentSource = L;
17520 return Flip<PT_Uint64, PT_Sint8>(S, OpPC);
17521}
17522bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
17523 if (!isActive()) return true;
17524 CurrentSource = L;
17525 return Flip<PT_Uint64, PT_Uint8>(S, OpPC);
17526}
17527bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
17528 if (!isActive()) return true;
17529 CurrentSource = L;
17530 return Flip<PT_Uint64, PT_Sint16>(S, OpPC);
17531}
17532bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
17533 if (!isActive()) return true;
17534 CurrentSource = L;
17535 return Flip<PT_Uint64, PT_Uint16>(S, OpPC);
17536}
17537bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
17538 if (!isActive()) return true;
17539 CurrentSource = L;
17540 return Flip<PT_Uint64, PT_Sint32>(S, OpPC);
17541}
17542bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
17543 if (!isActive()) return true;
17544 CurrentSource = L;
17545 return Flip<PT_Uint64, PT_Uint32>(S, OpPC);
17546}
17547bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
17548 if (!isActive()) return true;
17549 CurrentSource = L;
17550 return Flip<PT_Uint64, PT_Sint64>(S, OpPC);
17551}
17552bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
17553 if (!isActive()) return true;
17554 CurrentSource = L;
17555 return Flip<PT_Uint64, PT_Uint64>(S, OpPC);
17556}
17557bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
17558 if (!isActive()) return true;
17559 CurrentSource = L;
17560 return Flip<PT_Uint64, PT_IntAP>(S, OpPC);
17561}
17562bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
17563 if (!isActive()) return true;
17564 CurrentSource = L;
17565 return Flip<PT_Uint64, PT_IntAPS>(S, OpPC);
17566}
17567bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
17568 if (!isActive()) return true;
17569 CurrentSource = L;
17570 return Flip<PT_Uint64, PT_Bool>(S, OpPC);
17571}
17572bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
17573 if (!isActive()) return true;
17574 CurrentSource = L;
17575 return Flip<PT_Uint64, PT_FixedPoint>(S, OpPC);
17576}
17577bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
17578 if (!isActive()) return true;
17579 CurrentSource = L;
17580 return Flip<PT_Uint64, PT_Ptr>(S, OpPC);
17581}
17582bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
17583 if (!isActive()) return true;
17584 CurrentSource = L;
17585 return Flip<PT_Uint64, PT_MemberPtr>(S, OpPC);
17586}
17587bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
17588 if (!isActive()) return true;
17589 CurrentSource = L;
17590 return Flip<PT_Uint64, PT_Float>(S, OpPC);
17591}
17592bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
17593 if (!isActive()) return true;
17594 CurrentSource = L;
17595 return Flip<PT_IntAP, PT_Sint8>(S, OpPC);
17596}
17597bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
17598 if (!isActive()) return true;
17599 CurrentSource = L;
17600 return Flip<PT_IntAP, PT_Uint8>(S, OpPC);
17601}
17602bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
17603 if (!isActive()) return true;
17604 CurrentSource = L;
17605 return Flip<PT_IntAP, PT_Sint16>(S, OpPC);
17606}
17607bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
17608 if (!isActive()) return true;
17609 CurrentSource = L;
17610 return Flip<PT_IntAP, PT_Uint16>(S, OpPC);
17611}
17612bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
17613 if (!isActive()) return true;
17614 CurrentSource = L;
17615 return Flip<PT_IntAP, PT_Sint32>(S, OpPC);
17616}
17617bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
17618 if (!isActive()) return true;
17619 CurrentSource = L;
17620 return Flip<PT_IntAP, PT_Uint32>(S, OpPC);
17621}
17622bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
17623 if (!isActive()) return true;
17624 CurrentSource = L;
17625 return Flip<PT_IntAP, PT_Sint64>(S, OpPC);
17626}
17627bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
17628 if (!isActive()) return true;
17629 CurrentSource = L;
17630 return Flip<PT_IntAP, PT_Uint64>(S, OpPC);
17631}
17632bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
17633 if (!isActive()) return true;
17634 CurrentSource = L;
17635 return Flip<PT_IntAP, PT_IntAP>(S, OpPC);
17636}
17637bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
17638 if (!isActive()) return true;
17639 CurrentSource = L;
17640 return Flip<PT_IntAP, PT_IntAPS>(S, OpPC);
17641}
17642bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
17643 if (!isActive()) return true;
17644 CurrentSource = L;
17645 return Flip<PT_IntAP, PT_Bool>(S, OpPC);
17646}
17647bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
17648 if (!isActive()) return true;
17649 CurrentSource = L;
17650 return Flip<PT_IntAP, PT_FixedPoint>(S, OpPC);
17651}
17652bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
17653 if (!isActive()) return true;
17654 CurrentSource = L;
17655 return Flip<PT_IntAP, PT_Ptr>(S, OpPC);
17656}
17657bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
17658 if (!isActive()) return true;
17659 CurrentSource = L;
17660 return Flip<PT_IntAP, PT_MemberPtr>(S, OpPC);
17661}
17662bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
17663 if (!isActive()) return true;
17664 CurrentSource = L;
17665 return Flip<PT_IntAP, PT_Float>(S, OpPC);
17666}
17667bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
17668 if (!isActive()) return true;
17669 CurrentSource = L;
17670 return Flip<PT_IntAPS, PT_Sint8>(S, OpPC);
17671}
17672bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
17673 if (!isActive()) return true;
17674 CurrentSource = L;
17675 return Flip<PT_IntAPS, PT_Uint8>(S, OpPC);
17676}
17677bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
17678 if (!isActive()) return true;
17679 CurrentSource = L;
17680 return Flip<PT_IntAPS, PT_Sint16>(S, OpPC);
17681}
17682bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
17683 if (!isActive()) return true;
17684 CurrentSource = L;
17685 return Flip<PT_IntAPS, PT_Uint16>(S, OpPC);
17686}
17687bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
17688 if (!isActive()) return true;
17689 CurrentSource = L;
17690 return Flip<PT_IntAPS, PT_Sint32>(S, OpPC);
17691}
17692bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
17693 if (!isActive()) return true;
17694 CurrentSource = L;
17695 return Flip<PT_IntAPS, PT_Uint32>(S, OpPC);
17696}
17697bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
17698 if (!isActive()) return true;
17699 CurrentSource = L;
17700 return Flip<PT_IntAPS, PT_Sint64>(S, OpPC);
17701}
17702bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
17703 if (!isActive()) return true;
17704 CurrentSource = L;
17705 return Flip<PT_IntAPS, PT_Uint64>(S, OpPC);
17706}
17707bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
17708 if (!isActive()) return true;
17709 CurrentSource = L;
17710 return Flip<PT_IntAPS, PT_IntAP>(S, OpPC);
17711}
17712bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
17713 if (!isActive()) return true;
17714 CurrentSource = L;
17715 return Flip<PT_IntAPS, PT_IntAPS>(S, OpPC);
17716}
17717bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
17718 if (!isActive()) return true;
17719 CurrentSource = L;
17720 return Flip<PT_IntAPS, PT_Bool>(S, OpPC);
17721}
17722bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
17723 if (!isActive()) return true;
17724 CurrentSource = L;
17725 return Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC);
17726}
17727bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
17728 if (!isActive()) return true;
17729 CurrentSource = L;
17730 return Flip<PT_IntAPS, PT_Ptr>(S, OpPC);
17731}
17732bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
17733 if (!isActive()) return true;
17734 CurrentSource = L;
17735 return Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC);
17736}
17737bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
17738 if (!isActive()) return true;
17739 CurrentSource = L;
17740 return Flip<PT_IntAPS, PT_Float>(S, OpPC);
17741}
17742bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
17743 if (!isActive()) return true;
17744 CurrentSource = L;
17745 return Flip<PT_Bool, PT_Sint8>(S, OpPC);
17746}
17747bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
17748 if (!isActive()) return true;
17749 CurrentSource = L;
17750 return Flip<PT_Bool, PT_Uint8>(S, OpPC);
17751}
17752bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
17753 if (!isActive()) return true;
17754 CurrentSource = L;
17755 return Flip<PT_Bool, PT_Sint16>(S, OpPC);
17756}
17757bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
17758 if (!isActive()) return true;
17759 CurrentSource = L;
17760 return Flip<PT_Bool, PT_Uint16>(S, OpPC);
17761}
17762bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
17763 if (!isActive()) return true;
17764 CurrentSource = L;
17765 return Flip<PT_Bool, PT_Sint32>(S, OpPC);
17766}
17767bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
17768 if (!isActive()) return true;
17769 CurrentSource = L;
17770 return Flip<PT_Bool, PT_Uint32>(S, OpPC);
17771}
17772bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
17773 if (!isActive()) return true;
17774 CurrentSource = L;
17775 return Flip<PT_Bool, PT_Sint64>(S, OpPC);
17776}
17777bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
17778 if (!isActive()) return true;
17779 CurrentSource = L;
17780 return Flip<PT_Bool, PT_Uint64>(S, OpPC);
17781}
17782bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
17783 if (!isActive()) return true;
17784 CurrentSource = L;
17785 return Flip<PT_Bool, PT_IntAP>(S, OpPC);
17786}
17787bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
17788 if (!isActive()) return true;
17789 CurrentSource = L;
17790 return Flip<PT_Bool, PT_IntAPS>(S, OpPC);
17791}
17792bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
17793 if (!isActive()) return true;
17794 CurrentSource = L;
17795 return Flip<PT_Bool, PT_Bool>(S, OpPC);
17796}
17797bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
17798 if (!isActive()) return true;
17799 CurrentSource = L;
17800 return Flip<PT_Bool, PT_FixedPoint>(S, OpPC);
17801}
17802bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
17803 if (!isActive()) return true;
17804 CurrentSource = L;
17805 return Flip<PT_Bool, PT_Ptr>(S, OpPC);
17806}
17807bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
17808 if (!isActive()) return true;
17809 CurrentSource = L;
17810 return Flip<PT_Bool, PT_MemberPtr>(S, OpPC);
17811}
17812bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
17813 if (!isActive()) return true;
17814 CurrentSource = L;
17815 return Flip<PT_Bool, PT_Float>(S, OpPC);
17816}
17817bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
17818 if (!isActive()) return true;
17819 CurrentSource = L;
17820 return Flip<PT_FixedPoint, PT_Sint8>(S, OpPC);
17821}
17822bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
17823 if (!isActive()) return true;
17824 CurrentSource = L;
17825 return Flip<PT_FixedPoint, PT_Uint8>(S, OpPC);
17826}
17827bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
17828 if (!isActive()) return true;
17829 CurrentSource = L;
17830 return Flip<PT_FixedPoint, PT_Sint16>(S, OpPC);
17831}
17832bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
17833 if (!isActive()) return true;
17834 CurrentSource = L;
17835 return Flip<PT_FixedPoint, PT_Uint16>(S, OpPC);
17836}
17837bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
17838 if (!isActive()) return true;
17839 CurrentSource = L;
17840 return Flip<PT_FixedPoint, PT_Sint32>(S, OpPC);
17841}
17842bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
17843 if (!isActive()) return true;
17844 CurrentSource = L;
17845 return Flip<PT_FixedPoint, PT_Uint32>(S, OpPC);
17846}
17847bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
17848 if (!isActive()) return true;
17849 CurrentSource = L;
17850 return Flip<PT_FixedPoint, PT_Sint64>(S, OpPC);
17851}
17852bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
17853 if (!isActive()) return true;
17854 CurrentSource = L;
17855 return Flip<PT_FixedPoint, PT_Uint64>(S, OpPC);
17856}
17857bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
17858 if (!isActive()) return true;
17859 CurrentSource = L;
17860 return Flip<PT_FixedPoint, PT_IntAP>(S, OpPC);
17861}
17862bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
17863 if (!isActive()) return true;
17864 CurrentSource = L;
17865 return Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC);
17866}
17867bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
17868 if (!isActive()) return true;
17869 CurrentSource = L;
17870 return Flip<PT_FixedPoint, PT_Bool>(S, OpPC);
17871}
17872bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
17873 if (!isActive()) return true;
17874 CurrentSource = L;
17875 return Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC);
17876}
17877bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
17878 if (!isActive()) return true;
17879 CurrentSource = L;
17880 return Flip<PT_FixedPoint, PT_Ptr>(S, OpPC);
17881}
17882bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
17883 if (!isActive()) return true;
17884 CurrentSource = L;
17885 return Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC);
17886}
17887bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
17888 if (!isActive()) return true;
17889 CurrentSource = L;
17890 return Flip<PT_FixedPoint, PT_Float>(S, OpPC);
17891}
17892bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
17893 if (!isActive()) return true;
17894 CurrentSource = L;
17895 return Flip<PT_Ptr, PT_Sint8>(S, OpPC);
17896}
17897bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
17898 if (!isActive()) return true;
17899 CurrentSource = L;
17900 return Flip<PT_Ptr, PT_Uint8>(S, OpPC);
17901}
17902bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
17903 if (!isActive()) return true;
17904 CurrentSource = L;
17905 return Flip<PT_Ptr, PT_Sint16>(S, OpPC);
17906}
17907bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
17908 if (!isActive()) return true;
17909 CurrentSource = L;
17910 return Flip<PT_Ptr, PT_Uint16>(S, OpPC);
17911}
17912bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
17913 if (!isActive()) return true;
17914 CurrentSource = L;
17915 return Flip<PT_Ptr, PT_Sint32>(S, OpPC);
17916}
17917bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
17918 if (!isActive()) return true;
17919 CurrentSource = L;
17920 return Flip<PT_Ptr, PT_Uint32>(S, OpPC);
17921}
17922bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
17923 if (!isActive()) return true;
17924 CurrentSource = L;
17925 return Flip<PT_Ptr, PT_Sint64>(S, OpPC);
17926}
17927bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
17928 if (!isActive()) return true;
17929 CurrentSource = L;
17930 return Flip<PT_Ptr, PT_Uint64>(S, OpPC);
17931}
17932bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
17933 if (!isActive()) return true;
17934 CurrentSource = L;
17935 return Flip<PT_Ptr, PT_IntAP>(S, OpPC);
17936}
17937bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
17938 if (!isActive()) return true;
17939 CurrentSource = L;
17940 return Flip<PT_Ptr, PT_IntAPS>(S, OpPC);
17941}
17942bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
17943 if (!isActive()) return true;
17944 CurrentSource = L;
17945 return Flip<PT_Ptr, PT_Bool>(S, OpPC);
17946}
17947bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
17948 if (!isActive()) return true;
17949 CurrentSource = L;
17950 return Flip<PT_Ptr, PT_FixedPoint>(S, OpPC);
17951}
17952bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
17953 if (!isActive()) return true;
17954 CurrentSource = L;
17955 return Flip<PT_Ptr, PT_Ptr>(S, OpPC);
17956}
17957bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
17958 if (!isActive()) return true;
17959 CurrentSource = L;
17960 return Flip<PT_Ptr, PT_MemberPtr>(S, OpPC);
17961}
17962bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
17963 if (!isActive()) return true;
17964 CurrentSource = L;
17965 return Flip<PT_Ptr, PT_Float>(S, OpPC);
17966}
17967bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
17968 if (!isActive()) return true;
17969 CurrentSource = L;
17970 return Flip<PT_MemberPtr, PT_Sint8>(S, OpPC);
17971}
17972bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
17973 if (!isActive()) return true;
17974 CurrentSource = L;
17975 return Flip<PT_MemberPtr, PT_Uint8>(S, OpPC);
17976}
17977bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
17978 if (!isActive()) return true;
17979 CurrentSource = L;
17980 return Flip<PT_MemberPtr, PT_Sint16>(S, OpPC);
17981}
17982bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
17983 if (!isActive()) return true;
17984 CurrentSource = L;
17985 return Flip<PT_MemberPtr, PT_Uint16>(S, OpPC);
17986}
17987bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
17988 if (!isActive()) return true;
17989 CurrentSource = L;
17990 return Flip<PT_MemberPtr, PT_Sint32>(S, OpPC);
17991}
17992bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
17993 if (!isActive()) return true;
17994 CurrentSource = L;
17995 return Flip<PT_MemberPtr, PT_Uint32>(S, OpPC);
17996}
17997bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
17998 if (!isActive()) return true;
17999 CurrentSource = L;
18000 return Flip<PT_MemberPtr, PT_Sint64>(S, OpPC);
18001}
18002bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
18003 if (!isActive()) return true;
18004 CurrentSource = L;
18005 return Flip<PT_MemberPtr, PT_Uint64>(S, OpPC);
18006}
18007bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
18008 if (!isActive()) return true;
18009 CurrentSource = L;
18010 return Flip<PT_MemberPtr, PT_IntAP>(S, OpPC);
18011}
18012bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
18013 if (!isActive()) return true;
18014 CurrentSource = L;
18015 return Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC);
18016}
18017bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
18018 if (!isActive()) return true;
18019 CurrentSource = L;
18020 return Flip<PT_MemberPtr, PT_Bool>(S, OpPC);
18021}
18022bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
18023 if (!isActive()) return true;
18024 CurrentSource = L;
18025 return Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC);
18026}
18027bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
18028 if (!isActive()) return true;
18029 CurrentSource = L;
18030 return Flip<PT_MemberPtr, PT_Ptr>(S, OpPC);
18031}
18032bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
18033 if (!isActive()) return true;
18034 CurrentSource = L;
18035 return Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
18036}
18037bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
18038 if (!isActive()) return true;
18039 CurrentSource = L;
18040 return Flip<PT_MemberPtr, PT_Float>(S, OpPC);
18041}
18042bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
18043 if (!isActive()) return true;
18044 CurrentSource = L;
18045 return Flip<PT_Float, PT_Sint8>(S, OpPC);
18046}
18047bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
18048 if (!isActive()) return true;
18049 CurrentSource = L;
18050 return Flip<PT_Float, PT_Uint8>(S, OpPC);
18051}
18052bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
18053 if (!isActive()) return true;
18054 CurrentSource = L;
18055 return Flip<PT_Float, PT_Sint16>(S, OpPC);
18056}
18057bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
18058 if (!isActive()) return true;
18059 CurrentSource = L;
18060 return Flip<PT_Float, PT_Uint16>(S, OpPC);
18061}
18062bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
18063 if (!isActive()) return true;
18064 CurrentSource = L;
18065 return Flip<PT_Float, PT_Sint32>(S, OpPC);
18066}
18067bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
18068 if (!isActive()) return true;
18069 CurrentSource = L;
18070 return Flip<PT_Float, PT_Uint32>(S, OpPC);
18071}
18072bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
18073 if (!isActive()) return true;
18074 CurrentSource = L;
18075 return Flip<PT_Float, PT_Sint64>(S, OpPC);
18076}
18077bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
18078 if (!isActive()) return true;
18079 CurrentSource = L;
18080 return Flip<PT_Float, PT_Uint64>(S, OpPC);
18081}
18082bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
18083 if (!isActive()) return true;
18084 CurrentSource = L;
18085 return Flip<PT_Float, PT_IntAP>(S, OpPC);
18086}
18087bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
18088 if (!isActive()) return true;
18089 CurrentSource = L;
18090 return Flip<PT_Float, PT_IntAPS>(S, OpPC);
18091}
18092bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
18093 if (!isActive()) return true;
18094 CurrentSource = L;
18095 return Flip<PT_Float, PT_Bool>(S, OpPC);
18096}
18097bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
18098 if (!isActive()) return true;
18099 CurrentSource = L;
18100 return Flip<PT_Float, PT_FixedPoint>(S, OpPC);
18101}
18102bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
18103 if (!isActive()) return true;
18104 CurrentSource = L;
18105 return Flip<PT_Float, PT_Ptr>(S, OpPC);
18106}
18107bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
18108 if (!isActive()) return true;
18109 CurrentSource = L;
18110 return Flip<PT_Float, PT_MemberPtr>(S, OpPC);
18111}
18112bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
18113 if (!isActive()) return true;
18114 CurrentSource = L;
18115 return Flip<PT_Float, PT_Float>(S, OpPC);
18116}
18117#endif
18118#ifdef GET_OPCODE_NAMES
18119OP_FnPtrCast,
18120#endif
18121#ifdef GET_INTERP
18122case OP_FnPtrCast: {
18123 if (!FnPtrCast(S, OpPC))
18124 return false;
18125 continue;
18126}
18127#endif
18128#ifdef GET_DISASM
18129case OP_FnPtrCast:
18130 Text.Op = PrintName("FnPtrCast");
18131 break;
18132#endif
18133#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18134bool emitFnPtrCast(SourceInfo);
18135#endif
18136#ifdef GET_LINK_IMPL
18137bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
18138 return emitOp<>(OP_FnPtrCast, L);
18139}
18140#endif
18141#ifdef GET_EVAL_IMPL
18142bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
18143 if (!isActive()) return true;
18144 CurrentSource = L;
18145 return FnPtrCast(S, OpPC);
18146}
18147#endif
18148#ifdef GET_OPCODE_NAMES
18149OP_Free,
18150#endif
18151#ifdef GET_INTERP
18152case OP_Free: {
18153 const auto V0 = ReadArg<bool>(S, PC);
18154 const auto V1 = ReadArg<bool>(S, PC);
18155 if (!Free(S, OpPC, V0, V1))
18156 return false;
18157 continue;
18158}
18159#endif
18160#ifdef GET_DISASM
18161case OP_Free:
18162 Text.Op = PrintName("Free");
18163 Text.Args.push_back(printArg<bool>(P, PC));
18164 Text.Args.push_back(printArg<bool>(P, PC));
18165 break;
18166#endif
18167#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18168bool emitFree( bool , bool , SourceInfo);
18169#endif
18170#ifdef GET_LINK_IMPL
18171bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
18172 return emitOp<bool, bool>(OP_Free, A0, A1, L);
18173}
18174#endif
18175#ifdef GET_EVAL_IMPL
18176bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
18177 if (!isActive()) return true;
18178 CurrentSource = L;
18179 return Free(S, OpPC, A0, A1);
18180}
18181#endif
18182#ifdef GET_OPCODE_NAMES
18183OP_GESint8,
18184OP_GEUint8,
18185OP_GESint16,
18186OP_GEUint16,
18187OP_GESint32,
18188OP_GEUint32,
18189OP_GESint64,
18190OP_GEUint64,
18191OP_GEIntAP,
18192OP_GEIntAPS,
18193OP_GEBool,
18194OP_GEFixedPoint,
18195OP_GEPtr,
18196OP_GEFloat,
18197#endif
18198#ifdef GET_INTERP
18199case OP_GESint8: {
18200 if (!GE<PT_Sint8>(S, OpPC))
18201 return false;
18202 continue;
18203}
18204case OP_GEUint8: {
18205 if (!GE<PT_Uint8>(S, OpPC))
18206 return false;
18207 continue;
18208}
18209case OP_GESint16: {
18210 if (!GE<PT_Sint16>(S, OpPC))
18211 return false;
18212 continue;
18213}
18214case OP_GEUint16: {
18215 if (!GE<PT_Uint16>(S, OpPC))
18216 return false;
18217 continue;
18218}
18219case OP_GESint32: {
18220 if (!GE<PT_Sint32>(S, OpPC))
18221 return false;
18222 continue;
18223}
18224case OP_GEUint32: {
18225 if (!GE<PT_Uint32>(S, OpPC))
18226 return false;
18227 continue;
18228}
18229case OP_GESint64: {
18230 if (!GE<PT_Sint64>(S, OpPC))
18231 return false;
18232 continue;
18233}
18234case OP_GEUint64: {
18235 if (!GE<PT_Uint64>(S, OpPC))
18236 return false;
18237 continue;
18238}
18239case OP_GEIntAP: {
18240 if (!GE<PT_IntAP>(S, OpPC))
18241 return false;
18242 continue;
18243}
18244case OP_GEIntAPS: {
18245 if (!GE<PT_IntAPS>(S, OpPC))
18246 return false;
18247 continue;
18248}
18249case OP_GEBool: {
18250 if (!GE<PT_Bool>(S, OpPC))
18251 return false;
18252 continue;
18253}
18254case OP_GEFixedPoint: {
18255 if (!GE<PT_FixedPoint>(S, OpPC))
18256 return false;
18257 continue;
18258}
18259case OP_GEPtr: {
18260 if (!GE<PT_Ptr>(S, OpPC))
18261 return false;
18262 continue;
18263}
18264case OP_GEFloat: {
18265 if (!GE<PT_Float>(S, OpPC))
18266 return false;
18267 continue;
18268}
18269#endif
18270#ifdef GET_DISASM
18271case OP_GESint8:
18272 Text.Op = PrintName("GESint8");
18273 break;
18274case OP_GEUint8:
18275 Text.Op = PrintName("GEUint8");
18276 break;
18277case OP_GESint16:
18278 Text.Op = PrintName("GESint16");
18279 break;
18280case OP_GEUint16:
18281 Text.Op = PrintName("GEUint16");
18282 break;
18283case OP_GESint32:
18284 Text.Op = PrintName("GESint32");
18285 break;
18286case OP_GEUint32:
18287 Text.Op = PrintName("GEUint32");
18288 break;
18289case OP_GESint64:
18290 Text.Op = PrintName("GESint64");
18291 break;
18292case OP_GEUint64:
18293 Text.Op = PrintName("GEUint64");
18294 break;
18295case OP_GEIntAP:
18296 Text.Op = PrintName("GEIntAP");
18297 break;
18298case OP_GEIntAPS:
18299 Text.Op = PrintName("GEIntAPS");
18300 break;
18301case OP_GEBool:
18302 Text.Op = PrintName("GEBool");
18303 break;
18304case OP_GEFixedPoint:
18305 Text.Op = PrintName("GEFixedPoint");
18306 break;
18307case OP_GEPtr:
18308 Text.Op = PrintName("GEPtr");
18309 break;
18310case OP_GEFloat:
18311 Text.Op = PrintName("GEFloat");
18312 break;
18313#endif
18314#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18315bool emitGESint8(SourceInfo);
18316bool emitGEUint8(SourceInfo);
18317bool emitGESint16(SourceInfo);
18318bool emitGEUint16(SourceInfo);
18319bool emitGESint32(SourceInfo);
18320bool emitGEUint32(SourceInfo);
18321bool emitGESint64(SourceInfo);
18322bool emitGEUint64(SourceInfo);
18323bool emitGEIntAP(SourceInfo);
18324bool emitGEIntAPS(SourceInfo);
18325bool emitGEBool(SourceInfo);
18326bool emitGEFixedPoint(SourceInfo);
18327bool emitGEPtr(SourceInfo);
18328bool emitGEFloat(SourceInfo);
18329#endif
18330#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18331[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
18332#endif
18333#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
18334bool
18335#if defined(GET_EVAL_IMPL)
18336EvalEmitter
18337#else
18338ByteCodeEmitter
18339#endif
18340::emitGE(PrimType T0, SourceInfo I) {
18341 switch (T0) {
18342 case PT_Sint8:
18343 return emitGESint8(I);
18344 case PT_Uint8:
18345 return emitGEUint8(I);
18346 case PT_Sint16:
18347 return emitGESint16(I);
18348 case PT_Uint16:
18349 return emitGEUint16(I);
18350 case PT_Sint32:
18351 return emitGESint32(I);
18352 case PT_Uint32:
18353 return emitGEUint32(I);
18354 case PT_Sint64:
18355 return emitGESint64(I);
18356 case PT_Uint64:
18357 return emitGEUint64(I);
18358 case PT_IntAP:
18359 return emitGEIntAP(I);
18360 case PT_IntAPS:
18361 return emitGEIntAPS(I);
18362 case PT_Bool:
18363 return emitGEBool(I);
18364 case PT_FixedPoint:
18365 return emitGEFixedPoint(I);
18366 case PT_Ptr:
18367 return emitGEPtr(I);
18368 case PT_Float:
18369 return emitGEFloat(I);
18370 default: llvm_unreachable("invalid type: emitGE");
18371 }
18372 llvm_unreachable("invalid enum value");
18373}
18374#endif
18375#ifdef GET_LINK_IMPL
18376bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
18377 return emitOp<>(OP_GESint8, L);
18378}
18379bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
18380 return emitOp<>(OP_GEUint8, L);
18381}
18382bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
18383 return emitOp<>(OP_GESint16, L);
18384}
18385bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
18386 return emitOp<>(OP_GEUint16, L);
18387}
18388bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
18389 return emitOp<>(OP_GESint32, L);
18390}
18391bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
18392 return emitOp<>(OP_GEUint32, L);
18393}
18394bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
18395 return emitOp<>(OP_GESint64, L);
18396}
18397bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
18398 return emitOp<>(OP_GEUint64, L);
18399}
18400bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
18401 return emitOp<>(OP_GEIntAP, L);
18402}
18403bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
18404 return emitOp<>(OP_GEIntAPS, L);
18405}
18406bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
18407 return emitOp<>(OP_GEBool, L);
18408}
18409bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
18410 return emitOp<>(OP_GEFixedPoint, L);
18411}
18412bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
18413 return emitOp<>(OP_GEPtr, L);
18414}
18415bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
18416 return emitOp<>(OP_GEFloat, L);
18417}
18418#endif
18419#ifdef GET_EVAL_IMPL
18420bool EvalEmitter::emitGESint8(SourceInfo L) {
18421 if (!isActive()) return true;
18422 CurrentSource = L;
18423 return GE<PT_Sint8>(S, OpPC);
18424}
18425bool EvalEmitter::emitGEUint8(SourceInfo L) {
18426 if (!isActive()) return true;
18427 CurrentSource = L;
18428 return GE<PT_Uint8>(S, OpPC);
18429}
18430bool EvalEmitter::emitGESint16(SourceInfo L) {
18431 if (!isActive()) return true;
18432 CurrentSource = L;
18433 return GE<PT_Sint16>(S, OpPC);
18434}
18435bool EvalEmitter::emitGEUint16(SourceInfo L) {
18436 if (!isActive()) return true;
18437 CurrentSource = L;
18438 return GE<PT_Uint16>(S, OpPC);
18439}
18440bool EvalEmitter::emitGESint32(SourceInfo L) {
18441 if (!isActive()) return true;
18442 CurrentSource = L;
18443 return GE<PT_Sint32>(S, OpPC);
18444}
18445bool EvalEmitter::emitGEUint32(SourceInfo L) {
18446 if (!isActive()) return true;
18447 CurrentSource = L;
18448 return GE<PT_Uint32>(S, OpPC);
18449}
18450bool EvalEmitter::emitGESint64(SourceInfo L) {
18451 if (!isActive()) return true;
18452 CurrentSource = L;
18453 return GE<PT_Sint64>(S, OpPC);
18454}
18455bool EvalEmitter::emitGEUint64(SourceInfo L) {
18456 if (!isActive()) return true;
18457 CurrentSource = L;
18458 return GE<PT_Uint64>(S, OpPC);
18459}
18460bool EvalEmitter::emitGEIntAP(SourceInfo L) {
18461 if (!isActive()) return true;
18462 CurrentSource = L;
18463 return GE<PT_IntAP>(S, OpPC);
18464}
18465bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
18466 if (!isActive()) return true;
18467 CurrentSource = L;
18468 return GE<PT_IntAPS>(S, OpPC);
18469}
18470bool EvalEmitter::emitGEBool(SourceInfo L) {
18471 if (!isActive()) return true;
18472 CurrentSource = L;
18473 return GE<PT_Bool>(S, OpPC);
18474}
18475bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
18476 if (!isActive()) return true;
18477 CurrentSource = L;
18478 return GE<PT_FixedPoint>(S, OpPC);
18479}
18480bool EvalEmitter::emitGEPtr(SourceInfo L) {
18481 if (!isActive()) return true;
18482 CurrentSource = L;
18483 return GE<PT_Ptr>(S, OpPC);
18484}
18485bool EvalEmitter::emitGEFloat(SourceInfo L) {
18486 if (!isActive()) return true;
18487 CurrentSource = L;
18488 return GE<PT_Float>(S, OpPC);
18489}
18490#endif
18491#ifdef GET_OPCODE_NAMES
18492OP_GTSint8,
18493OP_GTUint8,
18494OP_GTSint16,
18495OP_GTUint16,
18496OP_GTSint32,
18497OP_GTUint32,
18498OP_GTSint64,
18499OP_GTUint64,
18500OP_GTIntAP,
18501OP_GTIntAPS,
18502OP_GTBool,
18503OP_GTFixedPoint,
18504OP_GTPtr,
18505OP_GTFloat,
18506#endif
18507#ifdef GET_INTERP
18508case OP_GTSint8: {
18509 if (!GT<PT_Sint8>(S, OpPC))
18510 return false;
18511 continue;
18512}
18513case OP_GTUint8: {
18514 if (!GT<PT_Uint8>(S, OpPC))
18515 return false;
18516 continue;
18517}
18518case OP_GTSint16: {
18519 if (!GT<PT_Sint16>(S, OpPC))
18520 return false;
18521 continue;
18522}
18523case OP_GTUint16: {
18524 if (!GT<PT_Uint16>(S, OpPC))
18525 return false;
18526 continue;
18527}
18528case OP_GTSint32: {
18529 if (!GT<PT_Sint32>(S, OpPC))
18530 return false;
18531 continue;
18532}
18533case OP_GTUint32: {
18534 if (!GT<PT_Uint32>(S, OpPC))
18535 return false;
18536 continue;
18537}
18538case OP_GTSint64: {
18539 if (!GT<PT_Sint64>(S, OpPC))
18540 return false;
18541 continue;
18542}
18543case OP_GTUint64: {
18544 if (!GT<PT_Uint64>(S, OpPC))
18545 return false;
18546 continue;
18547}
18548case OP_GTIntAP: {
18549 if (!GT<PT_IntAP>(S, OpPC))
18550 return false;
18551 continue;
18552}
18553case OP_GTIntAPS: {
18554 if (!GT<PT_IntAPS>(S, OpPC))
18555 return false;
18556 continue;
18557}
18558case OP_GTBool: {
18559 if (!GT<PT_Bool>(S, OpPC))
18560 return false;
18561 continue;
18562}
18563case OP_GTFixedPoint: {
18564 if (!GT<PT_FixedPoint>(S, OpPC))
18565 return false;
18566 continue;
18567}
18568case OP_GTPtr: {
18569 if (!GT<PT_Ptr>(S, OpPC))
18570 return false;
18571 continue;
18572}
18573case OP_GTFloat: {
18574 if (!GT<PT_Float>(S, OpPC))
18575 return false;
18576 continue;
18577}
18578#endif
18579#ifdef GET_DISASM
18580case OP_GTSint8:
18581 Text.Op = PrintName("GTSint8");
18582 break;
18583case OP_GTUint8:
18584 Text.Op = PrintName("GTUint8");
18585 break;
18586case OP_GTSint16:
18587 Text.Op = PrintName("GTSint16");
18588 break;
18589case OP_GTUint16:
18590 Text.Op = PrintName("GTUint16");
18591 break;
18592case OP_GTSint32:
18593 Text.Op = PrintName("GTSint32");
18594 break;
18595case OP_GTUint32:
18596 Text.Op = PrintName("GTUint32");
18597 break;
18598case OP_GTSint64:
18599 Text.Op = PrintName("GTSint64");
18600 break;
18601case OP_GTUint64:
18602 Text.Op = PrintName("GTUint64");
18603 break;
18604case OP_GTIntAP:
18605 Text.Op = PrintName("GTIntAP");
18606 break;
18607case OP_GTIntAPS:
18608 Text.Op = PrintName("GTIntAPS");
18609 break;
18610case OP_GTBool:
18611 Text.Op = PrintName("GTBool");
18612 break;
18613case OP_GTFixedPoint:
18614 Text.Op = PrintName("GTFixedPoint");
18615 break;
18616case OP_GTPtr:
18617 Text.Op = PrintName("GTPtr");
18618 break;
18619case OP_GTFloat:
18620 Text.Op = PrintName("GTFloat");
18621 break;
18622#endif
18623#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18624bool emitGTSint8(SourceInfo);
18625bool emitGTUint8(SourceInfo);
18626bool emitGTSint16(SourceInfo);
18627bool emitGTUint16(SourceInfo);
18628bool emitGTSint32(SourceInfo);
18629bool emitGTUint32(SourceInfo);
18630bool emitGTSint64(SourceInfo);
18631bool emitGTUint64(SourceInfo);
18632bool emitGTIntAP(SourceInfo);
18633bool emitGTIntAPS(SourceInfo);
18634bool emitGTBool(SourceInfo);
18635bool emitGTFixedPoint(SourceInfo);
18636bool emitGTPtr(SourceInfo);
18637bool emitGTFloat(SourceInfo);
18638#endif
18639#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18640[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
18641#endif
18642#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
18643bool
18644#if defined(GET_EVAL_IMPL)
18645EvalEmitter
18646#else
18647ByteCodeEmitter
18648#endif
18649::emitGT(PrimType T0, SourceInfo I) {
18650 switch (T0) {
18651 case PT_Sint8:
18652 return emitGTSint8(I);
18653 case PT_Uint8:
18654 return emitGTUint8(I);
18655 case PT_Sint16:
18656 return emitGTSint16(I);
18657 case PT_Uint16:
18658 return emitGTUint16(I);
18659 case PT_Sint32:
18660 return emitGTSint32(I);
18661 case PT_Uint32:
18662 return emitGTUint32(I);
18663 case PT_Sint64:
18664 return emitGTSint64(I);
18665 case PT_Uint64:
18666 return emitGTUint64(I);
18667 case PT_IntAP:
18668 return emitGTIntAP(I);
18669 case PT_IntAPS:
18670 return emitGTIntAPS(I);
18671 case PT_Bool:
18672 return emitGTBool(I);
18673 case PT_FixedPoint:
18674 return emitGTFixedPoint(I);
18675 case PT_Ptr:
18676 return emitGTPtr(I);
18677 case PT_Float:
18678 return emitGTFloat(I);
18679 default: llvm_unreachable("invalid type: emitGT");
18680 }
18681 llvm_unreachable("invalid enum value");
18682}
18683#endif
18684#ifdef GET_LINK_IMPL
18685bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
18686 return emitOp<>(OP_GTSint8, L);
18687}
18688bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
18689 return emitOp<>(OP_GTUint8, L);
18690}
18691bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
18692 return emitOp<>(OP_GTSint16, L);
18693}
18694bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
18695 return emitOp<>(OP_GTUint16, L);
18696}
18697bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
18698 return emitOp<>(OP_GTSint32, L);
18699}
18700bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
18701 return emitOp<>(OP_GTUint32, L);
18702}
18703bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
18704 return emitOp<>(OP_GTSint64, L);
18705}
18706bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
18707 return emitOp<>(OP_GTUint64, L);
18708}
18709bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
18710 return emitOp<>(OP_GTIntAP, L);
18711}
18712bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
18713 return emitOp<>(OP_GTIntAPS, L);
18714}
18715bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
18716 return emitOp<>(OP_GTBool, L);
18717}
18718bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
18719 return emitOp<>(OP_GTFixedPoint, L);
18720}
18721bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
18722 return emitOp<>(OP_GTPtr, L);
18723}
18724bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
18725 return emitOp<>(OP_GTFloat, L);
18726}
18727#endif
18728#ifdef GET_EVAL_IMPL
18729bool EvalEmitter::emitGTSint8(SourceInfo L) {
18730 if (!isActive()) return true;
18731 CurrentSource = L;
18732 return GT<PT_Sint8>(S, OpPC);
18733}
18734bool EvalEmitter::emitGTUint8(SourceInfo L) {
18735 if (!isActive()) return true;
18736 CurrentSource = L;
18737 return GT<PT_Uint8>(S, OpPC);
18738}
18739bool EvalEmitter::emitGTSint16(SourceInfo L) {
18740 if (!isActive()) return true;
18741 CurrentSource = L;
18742 return GT<PT_Sint16>(S, OpPC);
18743}
18744bool EvalEmitter::emitGTUint16(SourceInfo L) {
18745 if (!isActive()) return true;
18746 CurrentSource = L;
18747 return GT<PT_Uint16>(S, OpPC);
18748}
18749bool EvalEmitter::emitGTSint32(SourceInfo L) {
18750 if (!isActive()) return true;
18751 CurrentSource = L;
18752 return GT<PT_Sint32>(S, OpPC);
18753}
18754bool EvalEmitter::emitGTUint32(SourceInfo L) {
18755 if (!isActive()) return true;
18756 CurrentSource = L;
18757 return GT<PT_Uint32>(S, OpPC);
18758}
18759bool EvalEmitter::emitGTSint64(SourceInfo L) {
18760 if (!isActive()) return true;
18761 CurrentSource = L;
18762 return GT<PT_Sint64>(S, OpPC);
18763}
18764bool EvalEmitter::emitGTUint64(SourceInfo L) {
18765 if (!isActive()) return true;
18766 CurrentSource = L;
18767 return GT<PT_Uint64>(S, OpPC);
18768}
18769bool EvalEmitter::emitGTIntAP(SourceInfo L) {
18770 if (!isActive()) return true;
18771 CurrentSource = L;
18772 return GT<PT_IntAP>(S, OpPC);
18773}
18774bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
18775 if (!isActive()) return true;
18776 CurrentSource = L;
18777 return GT<PT_IntAPS>(S, OpPC);
18778}
18779bool EvalEmitter::emitGTBool(SourceInfo L) {
18780 if (!isActive()) return true;
18781 CurrentSource = L;
18782 return GT<PT_Bool>(S, OpPC);
18783}
18784bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
18785 if (!isActive()) return true;
18786 CurrentSource = L;
18787 return GT<PT_FixedPoint>(S, OpPC);
18788}
18789bool EvalEmitter::emitGTPtr(SourceInfo L) {
18790 if (!isActive()) return true;
18791 CurrentSource = L;
18792 return GT<PT_Ptr>(S, OpPC);
18793}
18794bool EvalEmitter::emitGTFloat(SourceInfo L) {
18795 if (!isActive()) return true;
18796 CurrentSource = L;
18797 return GT<PT_Float>(S, OpPC);
18798}
18799#endif
18800#ifdef GET_OPCODE_NAMES
18801OP_GetFieldSint8,
18802OP_GetFieldUint8,
18803OP_GetFieldSint16,
18804OP_GetFieldUint16,
18805OP_GetFieldSint32,
18806OP_GetFieldUint32,
18807OP_GetFieldSint64,
18808OP_GetFieldUint64,
18809OP_GetFieldIntAP,
18810OP_GetFieldIntAPS,
18811OP_GetFieldBool,
18812OP_GetFieldFixedPoint,
18813OP_GetFieldPtr,
18814OP_GetFieldMemberPtr,
18815OP_GetFieldFloat,
18816#endif
18817#ifdef GET_INTERP
18818case OP_GetFieldSint8: {
18819 const auto V0 = ReadArg<uint32_t>(S, PC);
18820 if (!GetField<PT_Sint8>(S, OpPC, V0))
18821 return false;
18822 continue;
18823}
18824case OP_GetFieldUint8: {
18825 const auto V0 = ReadArg<uint32_t>(S, PC);
18826 if (!GetField<PT_Uint8>(S, OpPC, V0))
18827 return false;
18828 continue;
18829}
18830case OP_GetFieldSint16: {
18831 const auto V0 = ReadArg<uint32_t>(S, PC);
18832 if (!GetField<PT_Sint16>(S, OpPC, V0))
18833 return false;
18834 continue;
18835}
18836case OP_GetFieldUint16: {
18837 const auto V0 = ReadArg<uint32_t>(S, PC);
18838 if (!GetField<PT_Uint16>(S, OpPC, V0))
18839 return false;
18840 continue;
18841}
18842case OP_GetFieldSint32: {
18843 const auto V0 = ReadArg<uint32_t>(S, PC);
18844 if (!GetField<PT_Sint32>(S, OpPC, V0))
18845 return false;
18846 continue;
18847}
18848case OP_GetFieldUint32: {
18849 const auto V0 = ReadArg<uint32_t>(S, PC);
18850 if (!GetField<PT_Uint32>(S, OpPC, V0))
18851 return false;
18852 continue;
18853}
18854case OP_GetFieldSint64: {
18855 const auto V0 = ReadArg<uint32_t>(S, PC);
18856 if (!GetField<PT_Sint64>(S, OpPC, V0))
18857 return false;
18858 continue;
18859}
18860case OP_GetFieldUint64: {
18861 const auto V0 = ReadArg<uint32_t>(S, PC);
18862 if (!GetField<PT_Uint64>(S, OpPC, V0))
18863 return false;
18864 continue;
18865}
18866case OP_GetFieldIntAP: {
18867 const auto V0 = ReadArg<uint32_t>(S, PC);
18868 if (!GetField<PT_IntAP>(S, OpPC, V0))
18869 return false;
18870 continue;
18871}
18872case OP_GetFieldIntAPS: {
18873 const auto V0 = ReadArg<uint32_t>(S, PC);
18874 if (!GetField<PT_IntAPS>(S, OpPC, V0))
18875 return false;
18876 continue;
18877}
18878case OP_GetFieldBool: {
18879 const auto V0 = ReadArg<uint32_t>(S, PC);
18880 if (!GetField<PT_Bool>(S, OpPC, V0))
18881 return false;
18882 continue;
18883}
18884case OP_GetFieldFixedPoint: {
18885 const auto V0 = ReadArg<uint32_t>(S, PC);
18886 if (!GetField<PT_FixedPoint>(S, OpPC, V0))
18887 return false;
18888 continue;
18889}
18890case OP_GetFieldPtr: {
18891 const auto V0 = ReadArg<uint32_t>(S, PC);
18892 if (!GetField<PT_Ptr>(S, OpPC, V0))
18893 return false;
18894 continue;
18895}
18896case OP_GetFieldMemberPtr: {
18897 const auto V0 = ReadArg<uint32_t>(S, PC);
18898 if (!GetField<PT_MemberPtr>(S, OpPC, V0))
18899 return false;
18900 continue;
18901}
18902case OP_GetFieldFloat: {
18903 const auto V0 = ReadArg<uint32_t>(S, PC);
18904 if (!GetField<PT_Float>(S, OpPC, V0))
18905 return false;
18906 continue;
18907}
18908#endif
18909#ifdef GET_DISASM
18910case OP_GetFieldSint8:
18911 Text.Op = PrintName("GetFieldSint8");
18912 Text.Args.push_back(printArg<uint32_t>(P, PC));
18913 break;
18914case OP_GetFieldUint8:
18915 Text.Op = PrintName("GetFieldUint8");
18916 Text.Args.push_back(printArg<uint32_t>(P, PC));
18917 break;
18918case OP_GetFieldSint16:
18919 Text.Op = PrintName("GetFieldSint16");
18920 Text.Args.push_back(printArg<uint32_t>(P, PC));
18921 break;
18922case OP_GetFieldUint16:
18923 Text.Op = PrintName("GetFieldUint16");
18924 Text.Args.push_back(printArg<uint32_t>(P, PC));
18925 break;
18926case OP_GetFieldSint32:
18927 Text.Op = PrintName("GetFieldSint32");
18928 Text.Args.push_back(printArg<uint32_t>(P, PC));
18929 break;
18930case OP_GetFieldUint32:
18931 Text.Op = PrintName("GetFieldUint32");
18932 Text.Args.push_back(printArg<uint32_t>(P, PC));
18933 break;
18934case OP_GetFieldSint64:
18935 Text.Op = PrintName("GetFieldSint64");
18936 Text.Args.push_back(printArg<uint32_t>(P, PC));
18937 break;
18938case OP_GetFieldUint64:
18939 Text.Op = PrintName("GetFieldUint64");
18940 Text.Args.push_back(printArg<uint32_t>(P, PC));
18941 break;
18942case OP_GetFieldIntAP:
18943 Text.Op = PrintName("GetFieldIntAP");
18944 Text.Args.push_back(printArg<uint32_t>(P, PC));
18945 break;
18946case OP_GetFieldIntAPS:
18947 Text.Op = PrintName("GetFieldIntAPS");
18948 Text.Args.push_back(printArg<uint32_t>(P, PC));
18949 break;
18950case OP_GetFieldBool:
18951 Text.Op = PrintName("GetFieldBool");
18952 Text.Args.push_back(printArg<uint32_t>(P, PC));
18953 break;
18954case OP_GetFieldFixedPoint:
18955 Text.Op = PrintName("GetFieldFixedPoint");
18956 Text.Args.push_back(printArg<uint32_t>(P, PC));
18957 break;
18958case OP_GetFieldPtr:
18959 Text.Op = PrintName("GetFieldPtr");
18960 Text.Args.push_back(printArg<uint32_t>(P, PC));
18961 break;
18962case OP_GetFieldMemberPtr:
18963 Text.Op = PrintName("GetFieldMemberPtr");
18964 Text.Args.push_back(printArg<uint32_t>(P, PC));
18965 break;
18966case OP_GetFieldFloat:
18967 Text.Op = PrintName("GetFieldFloat");
18968 Text.Args.push_back(printArg<uint32_t>(P, PC));
18969 break;
18970#endif
18971#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18972bool emitGetFieldSint8( uint32_t , SourceInfo);
18973bool emitGetFieldUint8( uint32_t , SourceInfo);
18974bool emitGetFieldSint16( uint32_t , SourceInfo);
18975bool emitGetFieldUint16( uint32_t , SourceInfo);
18976bool emitGetFieldSint32( uint32_t , SourceInfo);
18977bool emitGetFieldUint32( uint32_t , SourceInfo);
18978bool emitGetFieldSint64( uint32_t , SourceInfo);
18979bool emitGetFieldUint64( uint32_t , SourceInfo);
18980bool emitGetFieldIntAP( uint32_t , SourceInfo);
18981bool emitGetFieldIntAPS( uint32_t , SourceInfo);
18982bool emitGetFieldBool( uint32_t , SourceInfo);
18983bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
18984bool emitGetFieldPtr( uint32_t , SourceInfo);
18985bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
18986bool emitGetFieldFloat( uint32_t , SourceInfo);
18987#endif
18988#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18989[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
18990#endif
18991#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
18992bool
18993#if defined(GET_EVAL_IMPL)
18994EvalEmitter
18995#else
18996ByteCodeEmitter
18997#endif
18998::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
18999 switch (T0) {
19000 case PT_Sint8:
19001 return emitGetFieldSint8(A0, I);
19002 case PT_Uint8:
19003 return emitGetFieldUint8(A0, I);
19004 case PT_Sint16:
19005 return emitGetFieldSint16(A0, I);
19006 case PT_Uint16:
19007 return emitGetFieldUint16(A0, I);
19008 case PT_Sint32:
19009 return emitGetFieldSint32(A0, I);
19010 case PT_Uint32:
19011 return emitGetFieldUint32(A0, I);
19012 case PT_Sint64:
19013 return emitGetFieldSint64(A0, I);
19014 case PT_Uint64:
19015 return emitGetFieldUint64(A0, I);
19016 case PT_IntAP:
19017 return emitGetFieldIntAP(A0, I);
19018 case PT_IntAPS:
19019 return emitGetFieldIntAPS(A0, I);
19020 case PT_Bool:
19021 return emitGetFieldBool(A0, I);
19022 case PT_FixedPoint:
19023 return emitGetFieldFixedPoint(A0, I);
19024 case PT_Ptr:
19025 return emitGetFieldPtr(A0, I);
19026 case PT_MemberPtr:
19027 return emitGetFieldMemberPtr(A0, I);
19028 case PT_Float:
19029 return emitGetFieldFloat(A0, I);
19030 }
19031 llvm_unreachable("invalid enum value");
19032}
19033#endif
19034#ifdef GET_LINK_IMPL
19035bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
19036 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
19037}
19038bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
19039 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
19040}
19041bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
19042 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
19043}
19044bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
19045 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
19046}
19047bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
19048 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
19049}
19050bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
19051 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
19052}
19053bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
19054 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
19055}
19056bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
19057 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
19058}
19059bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
19060 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
19061}
19062bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
19063 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
19064}
19065bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
19066 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
19067}
19068bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
19069 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
19070}
19071bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
19072 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
19073}
19074bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
19075 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
19076}
19077bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
19078 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
19079}
19080#endif
19081#ifdef GET_EVAL_IMPL
19082bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
19083 if (!isActive()) return true;
19084 CurrentSource = L;
19085 return GetField<PT_Sint8>(S, OpPC, A0);
19086}
19087bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
19088 if (!isActive()) return true;
19089 CurrentSource = L;
19090 return GetField<PT_Uint8>(S, OpPC, A0);
19091}
19092bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
19093 if (!isActive()) return true;
19094 CurrentSource = L;
19095 return GetField<PT_Sint16>(S, OpPC, A0);
19096}
19097bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
19098 if (!isActive()) return true;
19099 CurrentSource = L;
19100 return GetField<PT_Uint16>(S, OpPC, A0);
19101}
19102bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
19103 if (!isActive()) return true;
19104 CurrentSource = L;
19105 return GetField<PT_Sint32>(S, OpPC, A0);
19106}
19107bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
19108 if (!isActive()) return true;
19109 CurrentSource = L;
19110 return GetField<PT_Uint32>(S, OpPC, A0);
19111}
19112bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
19113 if (!isActive()) return true;
19114 CurrentSource = L;
19115 return GetField<PT_Sint64>(S, OpPC, A0);
19116}
19117bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
19118 if (!isActive()) return true;
19119 CurrentSource = L;
19120 return GetField<PT_Uint64>(S, OpPC, A0);
19121}
19122bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
19123 if (!isActive()) return true;
19124 CurrentSource = L;
19125 return GetField<PT_IntAP>(S, OpPC, A0);
19126}
19127bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
19128 if (!isActive()) return true;
19129 CurrentSource = L;
19130 return GetField<PT_IntAPS>(S, OpPC, A0);
19131}
19132bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
19133 if (!isActive()) return true;
19134 CurrentSource = L;
19135 return GetField<PT_Bool>(S, OpPC, A0);
19136}
19137bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
19138 if (!isActive()) return true;
19139 CurrentSource = L;
19140 return GetField<PT_FixedPoint>(S, OpPC, A0);
19141}
19142bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
19143 if (!isActive()) return true;
19144 CurrentSource = L;
19145 return GetField<PT_Ptr>(S, OpPC, A0);
19146}
19147bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
19148 if (!isActive()) return true;
19149 CurrentSource = L;
19150 return GetField<PT_MemberPtr>(S, OpPC, A0);
19151}
19152bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
19153 if (!isActive()) return true;
19154 CurrentSource = L;
19155 return GetField<PT_Float>(S, OpPC, A0);
19156}
19157#endif
19158#ifdef GET_OPCODE_NAMES
19159OP_GetFieldPopSint8,
19160OP_GetFieldPopUint8,
19161OP_GetFieldPopSint16,
19162OP_GetFieldPopUint16,
19163OP_GetFieldPopSint32,
19164OP_GetFieldPopUint32,
19165OP_GetFieldPopSint64,
19166OP_GetFieldPopUint64,
19167OP_GetFieldPopIntAP,
19168OP_GetFieldPopIntAPS,
19169OP_GetFieldPopBool,
19170OP_GetFieldPopFixedPoint,
19171OP_GetFieldPopPtr,
19172OP_GetFieldPopMemberPtr,
19173OP_GetFieldPopFloat,
19174#endif
19175#ifdef GET_INTERP
19176case OP_GetFieldPopSint8: {
19177 const auto V0 = ReadArg<uint32_t>(S, PC);
19178 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0))
19179 return false;
19180 continue;
19181}
19182case OP_GetFieldPopUint8: {
19183 const auto V0 = ReadArg<uint32_t>(S, PC);
19184 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0))
19185 return false;
19186 continue;
19187}
19188case OP_GetFieldPopSint16: {
19189 const auto V0 = ReadArg<uint32_t>(S, PC);
19190 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0))
19191 return false;
19192 continue;
19193}
19194case OP_GetFieldPopUint16: {
19195 const auto V0 = ReadArg<uint32_t>(S, PC);
19196 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0))
19197 return false;
19198 continue;
19199}
19200case OP_GetFieldPopSint32: {
19201 const auto V0 = ReadArg<uint32_t>(S, PC);
19202 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0))
19203 return false;
19204 continue;
19205}
19206case OP_GetFieldPopUint32: {
19207 const auto V0 = ReadArg<uint32_t>(S, PC);
19208 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0))
19209 return false;
19210 continue;
19211}
19212case OP_GetFieldPopSint64: {
19213 const auto V0 = ReadArg<uint32_t>(S, PC);
19214 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0))
19215 return false;
19216 continue;
19217}
19218case OP_GetFieldPopUint64: {
19219 const auto V0 = ReadArg<uint32_t>(S, PC);
19220 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0))
19221 return false;
19222 continue;
19223}
19224case OP_GetFieldPopIntAP: {
19225 const auto V0 = ReadArg<uint32_t>(S, PC);
19226 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0))
19227 return false;
19228 continue;
19229}
19230case OP_GetFieldPopIntAPS: {
19231 const auto V0 = ReadArg<uint32_t>(S, PC);
19232 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0))
19233 return false;
19234 continue;
19235}
19236case OP_GetFieldPopBool: {
19237 const auto V0 = ReadArg<uint32_t>(S, PC);
19238 if (!GetFieldPop<PT_Bool>(S, OpPC, V0))
19239 return false;
19240 continue;
19241}
19242case OP_GetFieldPopFixedPoint: {
19243 const auto V0 = ReadArg<uint32_t>(S, PC);
19244 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0))
19245 return false;
19246 continue;
19247}
19248case OP_GetFieldPopPtr: {
19249 const auto V0 = ReadArg<uint32_t>(S, PC);
19250 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0))
19251 return false;
19252 continue;
19253}
19254case OP_GetFieldPopMemberPtr: {
19255 const auto V0 = ReadArg<uint32_t>(S, PC);
19256 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0))
19257 return false;
19258 continue;
19259}
19260case OP_GetFieldPopFloat: {
19261 const auto V0 = ReadArg<uint32_t>(S, PC);
19262 if (!GetFieldPop<PT_Float>(S, OpPC, V0))
19263 return false;
19264 continue;
19265}
19266#endif
19267#ifdef GET_DISASM
19268case OP_GetFieldPopSint8:
19269 Text.Op = PrintName("GetFieldPopSint8");
19270 Text.Args.push_back(printArg<uint32_t>(P, PC));
19271 break;
19272case OP_GetFieldPopUint8:
19273 Text.Op = PrintName("GetFieldPopUint8");
19274 Text.Args.push_back(printArg<uint32_t>(P, PC));
19275 break;
19276case OP_GetFieldPopSint16:
19277 Text.Op = PrintName("GetFieldPopSint16");
19278 Text.Args.push_back(printArg<uint32_t>(P, PC));
19279 break;
19280case OP_GetFieldPopUint16:
19281 Text.Op = PrintName("GetFieldPopUint16");
19282 Text.Args.push_back(printArg<uint32_t>(P, PC));
19283 break;
19284case OP_GetFieldPopSint32:
19285 Text.Op = PrintName("GetFieldPopSint32");
19286 Text.Args.push_back(printArg<uint32_t>(P, PC));
19287 break;
19288case OP_GetFieldPopUint32:
19289 Text.Op = PrintName("GetFieldPopUint32");
19290 Text.Args.push_back(printArg<uint32_t>(P, PC));
19291 break;
19292case OP_GetFieldPopSint64:
19293 Text.Op = PrintName("GetFieldPopSint64");
19294 Text.Args.push_back(printArg<uint32_t>(P, PC));
19295 break;
19296case OP_GetFieldPopUint64:
19297 Text.Op = PrintName("GetFieldPopUint64");
19298 Text.Args.push_back(printArg<uint32_t>(P, PC));
19299 break;
19300case OP_GetFieldPopIntAP:
19301 Text.Op = PrintName("GetFieldPopIntAP");
19302 Text.Args.push_back(printArg<uint32_t>(P, PC));
19303 break;
19304case OP_GetFieldPopIntAPS:
19305 Text.Op = PrintName("GetFieldPopIntAPS");
19306 Text.Args.push_back(printArg<uint32_t>(P, PC));
19307 break;
19308case OP_GetFieldPopBool:
19309 Text.Op = PrintName("GetFieldPopBool");
19310 Text.Args.push_back(printArg<uint32_t>(P, PC));
19311 break;
19312case OP_GetFieldPopFixedPoint:
19313 Text.Op = PrintName("GetFieldPopFixedPoint");
19314 Text.Args.push_back(printArg<uint32_t>(P, PC));
19315 break;
19316case OP_GetFieldPopPtr:
19317 Text.Op = PrintName("GetFieldPopPtr");
19318 Text.Args.push_back(printArg<uint32_t>(P, PC));
19319 break;
19320case OP_GetFieldPopMemberPtr:
19321 Text.Op = PrintName("GetFieldPopMemberPtr");
19322 Text.Args.push_back(printArg<uint32_t>(P, PC));
19323 break;
19324case OP_GetFieldPopFloat:
19325 Text.Op = PrintName("GetFieldPopFloat");
19326 Text.Args.push_back(printArg<uint32_t>(P, PC));
19327 break;
19328#endif
19329#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19330bool emitGetFieldPopSint8( uint32_t , SourceInfo);
19331bool emitGetFieldPopUint8( uint32_t , SourceInfo);
19332bool emitGetFieldPopSint16( uint32_t , SourceInfo);
19333bool emitGetFieldPopUint16( uint32_t , SourceInfo);
19334bool emitGetFieldPopSint32( uint32_t , SourceInfo);
19335bool emitGetFieldPopUint32( uint32_t , SourceInfo);
19336bool emitGetFieldPopSint64( uint32_t , SourceInfo);
19337bool emitGetFieldPopUint64( uint32_t , SourceInfo);
19338bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
19339bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
19340bool emitGetFieldPopBool( uint32_t , SourceInfo);
19341bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
19342bool emitGetFieldPopPtr( uint32_t , SourceInfo);
19343bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
19344bool emitGetFieldPopFloat( uint32_t , SourceInfo);
19345#endif
19346#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19347[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
19348#endif
19349#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
19350bool
19351#if defined(GET_EVAL_IMPL)
19352EvalEmitter
19353#else
19354ByteCodeEmitter
19355#endif
19356::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
19357 switch (T0) {
19358 case PT_Sint8:
19359 return emitGetFieldPopSint8(A0, I);
19360 case PT_Uint8:
19361 return emitGetFieldPopUint8(A0, I);
19362 case PT_Sint16:
19363 return emitGetFieldPopSint16(A0, I);
19364 case PT_Uint16:
19365 return emitGetFieldPopUint16(A0, I);
19366 case PT_Sint32:
19367 return emitGetFieldPopSint32(A0, I);
19368 case PT_Uint32:
19369 return emitGetFieldPopUint32(A0, I);
19370 case PT_Sint64:
19371 return emitGetFieldPopSint64(A0, I);
19372 case PT_Uint64:
19373 return emitGetFieldPopUint64(A0, I);
19374 case PT_IntAP:
19375 return emitGetFieldPopIntAP(A0, I);
19376 case PT_IntAPS:
19377 return emitGetFieldPopIntAPS(A0, I);
19378 case PT_Bool:
19379 return emitGetFieldPopBool(A0, I);
19380 case PT_FixedPoint:
19381 return emitGetFieldPopFixedPoint(A0, I);
19382 case PT_Ptr:
19383 return emitGetFieldPopPtr(A0, I);
19384 case PT_MemberPtr:
19385 return emitGetFieldPopMemberPtr(A0, I);
19386 case PT_Float:
19387 return emitGetFieldPopFloat(A0, I);
19388 }
19389 llvm_unreachable("invalid enum value");
19390}
19391#endif
19392#ifdef GET_LINK_IMPL
19393bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
19394 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
19395}
19396bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
19397 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
19398}
19399bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
19400 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
19401}
19402bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
19403 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
19404}
19405bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
19406 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
19407}
19408bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
19409 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
19410}
19411bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
19412 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
19413}
19414bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
19415 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
19416}
19417bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
19418 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
19419}
19420bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
19421 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
19422}
19423bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
19424 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
19425}
19426bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
19427 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
19428}
19429bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
19430 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
19431}
19432bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
19433 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
19434}
19435bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
19436 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
19437}
19438#endif
19439#ifdef GET_EVAL_IMPL
19440bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
19441 if (!isActive()) return true;
19442 CurrentSource = L;
19443 return GetFieldPop<PT_Sint8>(S, OpPC, A0);
19444}
19445bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
19446 if (!isActive()) return true;
19447 CurrentSource = L;
19448 return GetFieldPop<PT_Uint8>(S, OpPC, A0);
19449}
19450bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
19451 if (!isActive()) return true;
19452 CurrentSource = L;
19453 return GetFieldPop<PT_Sint16>(S, OpPC, A0);
19454}
19455bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
19456 if (!isActive()) return true;
19457 CurrentSource = L;
19458 return GetFieldPop<PT_Uint16>(S, OpPC, A0);
19459}
19460bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
19461 if (!isActive()) return true;
19462 CurrentSource = L;
19463 return GetFieldPop<PT_Sint32>(S, OpPC, A0);
19464}
19465bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
19466 if (!isActive()) return true;
19467 CurrentSource = L;
19468 return GetFieldPop<PT_Uint32>(S, OpPC, A0);
19469}
19470bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
19471 if (!isActive()) return true;
19472 CurrentSource = L;
19473 return GetFieldPop<PT_Sint64>(S, OpPC, A0);
19474}
19475bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
19476 if (!isActive()) return true;
19477 CurrentSource = L;
19478 return GetFieldPop<PT_Uint64>(S, OpPC, A0);
19479}
19480bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
19481 if (!isActive()) return true;
19482 CurrentSource = L;
19483 return GetFieldPop<PT_IntAP>(S, OpPC, A0);
19484}
19485bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
19486 if (!isActive()) return true;
19487 CurrentSource = L;
19488 return GetFieldPop<PT_IntAPS>(S, OpPC, A0);
19489}
19490bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
19491 if (!isActive()) return true;
19492 CurrentSource = L;
19493 return GetFieldPop<PT_Bool>(S, OpPC, A0);
19494}
19495bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
19496 if (!isActive()) return true;
19497 CurrentSource = L;
19498 return GetFieldPop<PT_FixedPoint>(S, OpPC, A0);
19499}
19500bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
19501 if (!isActive()) return true;
19502 CurrentSource = L;
19503 return GetFieldPop<PT_Ptr>(S, OpPC, A0);
19504}
19505bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
19506 if (!isActive()) return true;
19507 CurrentSource = L;
19508 return GetFieldPop<PT_MemberPtr>(S, OpPC, A0);
19509}
19510bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
19511 if (!isActive()) return true;
19512 CurrentSource = L;
19513 return GetFieldPop<PT_Float>(S, OpPC, A0);
19514}
19515#endif
19516#ifdef GET_OPCODE_NAMES
19517OP_GetFnPtr,
19518#endif
19519#ifdef GET_INTERP
19520case OP_GetFnPtr: {
19521 const auto V0 = ReadArg<const Function *>(S, PC);
19522 if (!GetFnPtr(S, OpPC, V0))
19523 return false;
19524 continue;
19525}
19526#endif
19527#ifdef GET_DISASM
19528case OP_GetFnPtr:
19529 Text.Op = PrintName("GetFnPtr");
19530 Text.Args.push_back(printArg<const Function *>(P, PC));
19531 break;
19532#endif
19533#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19534bool emitGetFnPtr( const Function * , SourceInfo);
19535#endif
19536#ifdef GET_LINK_IMPL
19537bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
19538 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
19539}
19540#endif
19541#ifdef GET_EVAL_IMPL
19542bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
19543 if (!isActive()) return true;
19544 CurrentSource = L;
19545 return GetFnPtr(S, OpPC, A0);
19546}
19547#endif
19548#ifdef GET_OPCODE_NAMES
19549OP_GetGlobalSint8,
19550OP_GetGlobalUint8,
19551OP_GetGlobalSint16,
19552OP_GetGlobalUint16,
19553OP_GetGlobalSint32,
19554OP_GetGlobalUint32,
19555OP_GetGlobalSint64,
19556OP_GetGlobalUint64,
19557OP_GetGlobalIntAP,
19558OP_GetGlobalIntAPS,
19559OP_GetGlobalBool,
19560OP_GetGlobalFixedPoint,
19561OP_GetGlobalPtr,
19562OP_GetGlobalMemberPtr,
19563OP_GetGlobalFloat,
19564#endif
19565#ifdef GET_INTERP
19566case OP_GetGlobalSint8: {
19567 const auto V0 = ReadArg<uint32_t>(S, PC);
19568 if (!GetGlobal<PT_Sint8>(S, OpPC, V0))
19569 return false;
19570 continue;
19571}
19572case OP_GetGlobalUint8: {
19573 const auto V0 = ReadArg<uint32_t>(S, PC);
19574 if (!GetGlobal<PT_Uint8>(S, OpPC, V0))
19575 return false;
19576 continue;
19577}
19578case OP_GetGlobalSint16: {
19579 const auto V0 = ReadArg<uint32_t>(S, PC);
19580 if (!GetGlobal<PT_Sint16>(S, OpPC, V0))
19581 return false;
19582 continue;
19583}
19584case OP_GetGlobalUint16: {
19585 const auto V0 = ReadArg<uint32_t>(S, PC);
19586 if (!GetGlobal<PT_Uint16>(S, OpPC, V0))
19587 return false;
19588 continue;
19589}
19590case OP_GetGlobalSint32: {
19591 const auto V0 = ReadArg<uint32_t>(S, PC);
19592 if (!GetGlobal<PT_Sint32>(S, OpPC, V0))
19593 return false;
19594 continue;
19595}
19596case OP_GetGlobalUint32: {
19597 const auto V0 = ReadArg<uint32_t>(S, PC);
19598 if (!GetGlobal<PT_Uint32>(S, OpPC, V0))
19599 return false;
19600 continue;
19601}
19602case OP_GetGlobalSint64: {
19603 const auto V0 = ReadArg<uint32_t>(S, PC);
19604 if (!GetGlobal<PT_Sint64>(S, OpPC, V0))
19605 return false;
19606 continue;
19607}
19608case OP_GetGlobalUint64: {
19609 const auto V0 = ReadArg<uint32_t>(S, PC);
19610 if (!GetGlobal<PT_Uint64>(S, OpPC, V0))
19611 return false;
19612 continue;
19613}
19614case OP_GetGlobalIntAP: {
19615 const auto V0 = ReadArg<uint32_t>(S, PC);
19616 if (!GetGlobal<PT_IntAP>(S, OpPC, V0))
19617 return false;
19618 continue;
19619}
19620case OP_GetGlobalIntAPS: {
19621 const auto V0 = ReadArg<uint32_t>(S, PC);
19622 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0))
19623 return false;
19624 continue;
19625}
19626case OP_GetGlobalBool: {
19627 const auto V0 = ReadArg<uint32_t>(S, PC);
19628 if (!GetGlobal<PT_Bool>(S, OpPC, V0))
19629 return false;
19630 continue;
19631}
19632case OP_GetGlobalFixedPoint: {
19633 const auto V0 = ReadArg<uint32_t>(S, PC);
19634 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0))
19635 return false;
19636 continue;
19637}
19638case OP_GetGlobalPtr: {
19639 const auto V0 = ReadArg<uint32_t>(S, PC);
19640 if (!GetGlobal<PT_Ptr>(S, OpPC, V0))
19641 return false;
19642 continue;
19643}
19644case OP_GetGlobalMemberPtr: {
19645 const auto V0 = ReadArg<uint32_t>(S, PC);
19646 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0))
19647 return false;
19648 continue;
19649}
19650case OP_GetGlobalFloat: {
19651 const auto V0 = ReadArg<uint32_t>(S, PC);
19652 if (!GetGlobal<PT_Float>(S, OpPC, V0))
19653 return false;
19654 continue;
19655}
19656#endif
19657#ifdef GET_DISASM
19658case OP_GetGlobalSint8:
19659 Text.Op = PrintName("GetGlobalSint8");
19660 Text.Args.push_back(printArg<uint32_t>(P, PC));
19661 break;
19662case OP_GetGlobalUint8:
19663 Text.Op = PrintName("GetGlobalUint8");
19664 Text.Args.push_back(printArg<uint32_t>(P, PC));
19665 break;
19666case OP_GetGlobalSint16:
19667 Text.Op = PrintName("GetGlobalSint16");
19668 Text.Args.push_back(printArg<uint32_t>(P, PC));
19669 break;
19670case OP_GetGlobalUint16:
19671 Text.Op = PrintName("GetGlobalUint16");
19672 Text.Args.push_back(printArg<uint32_t>(P, PC));
19673 break;
19674case OP_GetGlobalSint32:
19675 Text.Op = PrintName("GetGlobalSint32");
19676 Text.Args.push_back(printArg<uint32_t>(P, PC));
19677 break;
19678case OP_GetGlobalUint32:
19679 Text.Op = PrintName("GetGlobalUint32");
19680 Text.Args.push_back(printArg<uint32_t>(P, PC));
19681 break;
19682case OP_GetGlobalSint64:
19683 Text.Op = PrintName("GetGlobalSint64");
19684 Text.Args.push_back(printArg<uint32_t>(P, PC));
19685 break;
19686case OP_GetGlobalUint64:
19687 Text.Op = PrintName("GetGlobalUint64");
19688 Text.Args.push_back(printArg<uint32_t>(P, PC));
19689 break;
19690case OP_GetGlobalIntAP:
19691 Text.Op = PrintName("GetGlobalIntAP");
19692 Text.Args.push_back(printArg<uint32_t>(P, PC));
19693 break;
19694case OP_GetGlobalIntAPS:
19695 Text.Op = PrintName("GetGlobalIntAPS");
19696 Text.Args.push_back(printArg<uint32_t>(P, PC));
19697 break;
19698case OP_GetGlobalBool:
19699 Text.Op = PrintName("GetGlobalBool");
19700 Text.Args.push_back(printArg<uint32_t>(P, PC));
19701 break;
19702case OP_GetGlobalFixedPoint:
19703 Text.Op = PrintName("GetGlobalFixedPoint");
19704 Text.Args.push_back(printArg<uint32_t>(P, PC));
19705 break;
19706case OP_GetGlobalPtr:
19707 Text.Op = PrintName("GetGlobalPtr");
19708 Text.Args.push_back(printArg<uint32_t>(P, PC));
19709 break;
19710case OP_GetGlobalMemberPtr:
19711 Text.Op = PrintName("GetGlobalMemberPtr");
19712 Text.Args.push_back(printArg<uint32_t>(P, PC));
19713 break;
19714case OP_GetGlobalFloat:
19715 Text.Op = PrintName("GetGlobalFloat");
19716 Text.Args.push_back(printArg<uint32_t>(P, PC));
19717 break;
19718#endif
19719#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19720bool emitGetGlobalSint8( uint32_t , SourceInfo);
19721bool emitGetGlobalUint8( uint32_t , SourceInfo);
19722bool emitGetGlobalSint16( uint32_t , SourceInfo);
19723bool emitGetGlobalUint16( uint32_t , SourceInfo);
19724bool emitGetGlobalSint32( uint32_t , SourceInfo);
19725bool emitGetGlobalUint32( uint32_t , SourceInfo);
19726bool emitGetGlobalSint64( uint32_t , SourceInfo);
19727bool emitGetGlobalUint64( uint32_t , SourceInfo);
19728bool emitGetGlobalIntAP( uint32_t , SourceInfo);
19729bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
19730bool emitGetGlobalBool( uint32_t , SourceInfo);
19731bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
19732bool emitGetGlobalPtr( uint32_t , SourceInfo);
19733bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
19734bool emitGetGlobalFloat( uint32_t , SourceInfo);
19735#endif
19736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19737[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
19738#endif
19739#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
19740bool
19741#if defined(GET_EVAL_IMPL)
19742EvalEmitter
19743#else
19744ByteCodeEmitter
19745#endif
19746::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
19747 switch (T0) {
19748 case PT_Sint8:
19749 return emitGetGlobalSint8(A0, I);
19750 case PT_Uint8:
19751 return emitGetGlobalUint8(A0, I);
19752 case PT_Sint16:
19753 return emitGetGlobalSint16(A0, I);
19754 case PT_Uint16:
19755 return emitGetGlobalUint16(A0, I);
19756 case PT_Sint32:
19757 return emitGetGlobalSint32(A0, I);
19758 case PT_Uint32:
19759 return emitGetGlobalUint32(A0, I);
19760 case PT_Sint64:
19761 return emitGetGlobalSint64(A0, I);
19762 case PT_Uint64:
19763 return emitGetGlobalUint64(A0, I);
19764 case PT_IntAP:
19765 return emitGetGlobalIntAP(A0, I);
19766 case PT_IntAPS:
19767 return emitGetGlobalIntAPS(A0, I);
19768 case PT_Bool:
19769 return emitGetGlobalBool(A0, I);
19770 case PT_FixedPoint:
19771 return emitGetGlobalFixedPoint(A0, I);
19772 case PT_Ptr:
19773 return emitGetGlobalPtr(A0, I);
19774 case PT_MemberPtr:
19775 return emitGetGlobalMemberPtr(A0, I);
19776 case PT_Float:
19777 return emitGetGlobalFloat(A0, I);
19778 }
19779 llvm_unreachable("invalid enum value");
19780}
19781#endif
19782#ifdef GET_LINK_IMPL
19783bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
19784 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
19785}
19786bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
19787 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
19788}
19789bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
19790 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
19791}
19792bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
19793 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
19794}
19795bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
19796 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
19797}
19798bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
19799 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
19800}
19801bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
19802 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
19803}
19804bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
19805 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
19806}
19807bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
19808 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
19809}
19810bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
19811 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
19812}
19813bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
19814 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
19815}
19816bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
19817 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
19818}
19819bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
19820 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
19821}
19822bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
19823 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
19824}
19825bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
19826 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
19827}
19828#endif
19829#ifdef GET_EVAL_IMPL
19830bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
19831 if (!isActive()) return true;
19832 CurrentSource = L;
19833 return GetGlobal<PT_Sint8>(S, OpPC, A0);
19834}
19835bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
19836 if (!isActive()) return true;
19837 CurrentSource = L;
19838 return GetGlobal<PT_Uint8>(S, OpPC, A0);
19839}
19840bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
19841 if (!isActive()) return true;
19842 CurrentSource = L;
19843 return GetGlobal<PT_Sint16>(S, OpPC, A0);
19844}
19845bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
19846 if (!isActive()) return true;
19847 CurrentSource = L;
19848 return GetGlobal<PT_Uint16>(S, OpPC, A0);
19849}
19850bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
19851 if (!isActive()) return true;
19852 CurrentSource = L;
19853 return GetGlobal<PT_Sint32>(S, OpPC, A0);
19854}
19855bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
19856 if (!isActive()) return true;
19857 CurrentSource = L;
19858 return GetGlobal<PT_Uint32>(S, OpPC, A0);
19859}
19860bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
19861 if (!isActive()) return true;
19862 CurrentSource = L;
19863 return GetGlobal<PT_Sint64>(S, OpPC, A0);
19864}
19865bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
19866 if (!isActive()) return true;
19867 CurrentSource = L;
19868 return GetGlobal<PT_Uint64>(S, OpPC, A0);
19869}
19870bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
19871 if (!isActive()) return true;
19872 CurrentSource = L;
19873 return GetGlobal<PT_IntAP>(S, OpPC, A0);
19874}
19875bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
19876 if (!isActive()) return true;
19877 CurrentSource = L;
19878 return GetGlobal<PT_IntAPS>(S, OpPC, A0);
19879}
19880bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
19881 if (!isActive()) return true;
19882 CurrentSource = L;
19883 return GetGlobal<PT_Bool>(S, OpPC, A0);
19884}
19885bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
19886 if (!isActive()) return true;
19887 CurrentSource = L;
19888 return GetGlobal<PT_FixedPoint>(S, OpPC, A0);
19889}
19890bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
19891 if (!isActive()) return true;
19892 CurrentSource = L;
19893 return GetGlobal<PT_Ptr>(S, OpPC, A0);
19894}
19895bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
19896 if (!isActive()) return true;
19897 CurrentSource = L;
19898 return GetGlobal<PT_MemberPtr>(S, OpPC, A0);
19899}
19900bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
19901 if (!isActive()) return true;
19902 CurrentSource = L;
19903 return GetGlobal<PT_Float>(S, OpPC, A0);
19904}
19905#endif
19906#ifdef GET_OPCODE_NAMES
19907OP_GetGlobalUncheckedSint8,
19908OP_GetGlobalUncheckedUint8,
19909OP_GetGlobalUncheckedSint16,
19910OP_GetGlobalUncheckedUint16,
19911OP_GetGlobalUncheckedSint32,
19912OP_GetGlobalUncheckedUint32,
19913OP_GetGlobalUncheckedSint64,
19914OP_GetGlobalUncheckedUint64,
19915OP_GetGlobalUncheckedIntAP,
19916OP_GetGlobalUncheckedIntAPS,
19917OP_GetGlobalUncheckedBool,
19918OP_GetGlobalUncheckedFixedPoint,
19919OP_GetGlobalUncheckedPtr,
19920OP_GetGlobalUncheckedMemberPtr,
19921OP_GetGlobalUncheckedFloat,
19922#endif
19923#ifdef GET_INTERP
19924case OP_GetGlobalUncheckedSint8: {
19925 const auto V0 = ReadArg<uint32_t>(S, PC);
19926 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0))
19927 return false;
19928 continue;
19929}
19930case OP_GetGlobalUncheckedUint8: {
19931 const auto V0 = ReadArg<uint32_t>(S, PC);
19932 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0))
19933 return false;
19934 continue;
19935}
19936case OP_GetGlobalUncheckedSint16: {
19937 const auto V0 = ReadArg<uint32_t>(S, PC);
19938 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0))
19939 return false;
19940 continue;
19941}
19942case OP_GetGlobalUncheckedUint16: {
19943 const auto V0 = ReadArg<uint32_t>(S, PC);
19944 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0))
19945 return false;
19946 continue;
19947}
19948case OP_GetGlobalUncheckedSint32: {
19949 const auto V0 = ReadArg<uint32_t>(S, PC);
19950 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0))
19951 return false;
19952 continue;
19953}
19954case OP_GetGlobalUncheckedUint32: {
19955 const auto V0 = ReadArg<uint32_t>(S, PC);
19956 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0))
19957 return false;
19958 continue;
19959}
19960case OP_GetGlobalUncheckedSint64: {
19961 const auto V0 = ReadArg<uint32_t>(S, PC);
19962 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0))
19963 return false;
19964 continue;
19965}
19966case OP_GetGlobalUncheckedUint64: {
19967 const auto V0 = ReadArg<uint32_t>(S, PC);
19968 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0))
19969 return false;
19970 continue;
19971}
19972case OP_GetGlobalUncheckedIntAP: {
19973 const auto V0 = ReadArg<uint32_t>(S, PC);
19974 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0))
19975 return false;
19976 continue;
19977}
19978case OP_GetGlobalUncheckedIntAPS: {
19979 const auto V0 = ReadArg<uint32_t>(S, PC);
19980 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0))
19981 return false;
19982 continue;
19983}
19984case OP_GetGlobalUncheckedBool: {
19985 const auto V0 = ReadArg<uint32_t>(S, PC);
19986 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0))
19987 return false;
19988 continue;
19989}
19990case OP_GetGlobalUncheckedFixedPoint: {
19991 const auto V0 = ReadArg<uint32_t>(S, PC);
19992 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0))
19993 return false;
19994 continue;
19995}
19996case OP_GetGlobalUncheckedPtr: {
19997 const auto V0 = ReadArg<uint32_t>(S, PC);
19998 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0))
19999 return false;
20000 continue;
20001}
20002case OP_GetGlobalUncheckedMemberPtr: {
20003 const auto V0 = ReadArg<uint32_t>(S, PC);
20004 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0))
20005 return false;
20006 continue;
20007}
20008case OP_GetGlobalUncheckedFloat: {
20009 const auto V0 = ReadArg<uint32_t>(S, PC);
20010 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0))
20011 return false;
20012 continue;
20013}
20014#endif
20015#ifdef GET_DISASM
20016case OP_GetGlobalUncheckedSint8:
20017 Text.Op = PrintName("GetGlobalUncheckedSint8");
20018 Text.Args.push_back(printArg<uint32_t>(P, PC));
20019 break;
20020case OP_GetGlobalUncheckedUint8:
20021 Text.Op = PrintName("GetGlobalUncheckedUint8");
20022 Text.Args.push_back(printArg<uint32_t>(P, PC));
20023 break;
20024case OP_GetGlobalUncheckedSint16:
20025 Text.Op = PrintName("GetGlobalUncheckedSint16");
20026 Text.Args.push_back(printArg<uint32_t>(P, PC));
20027 break;
20028case OP_GetGlobalUncheckedUint16:
20029 Text.Op = PrintName("GetGlobalUncheckedUint16");
20030 Text.Args.push_back(printArg<uint32_t>(P, PC));
20031 break;
20032case OP_GetGlobalUncheckedSint32:
20033 Text.Op = PrintName("GetGlobalUncheckedSint32");
20034 Text.Args.push_back(printArg<uint32_t>(P, PC));
20035 break;
20036case OP_GetGlobalUncheckedUint32:
20037 Text.Op = PrintName("GetGlobalUncheckedUint32");
20038 Text.Args.push_back(printArg<uint32_t>(P, PC));
20039 break;
20040case OP_GetGlobalUncheckedSint64:
20041 Text.Op = PrintName("GetGlobalUncheckedSint64");
20042 Text.Args.push_back(printArg<uint32_t>(P, PC));
20043 break;
20044case OP_GetGlobalUncheckedUint64:
20045 Text.Op = PrintName("GetGlobalUncheckedUint64");
20046 Text.Args.push_back(printArg<uint32_t>(P, PC));
20047 break;
20048case OP_GetGlobalUncheckedIntAP:
20049 Text.Op = PrintName("GetGlobalUncheckedIntAP");
20050 Text.Args.push_back(printArg<uint32_t>(P, PC));
20051 break;
20052case OP_GetGlobalUncheckedIntAPS:
20053 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
20054 Text.Args.push_back(printArg<uint32_t>(P, PC));
20055 break;
20056case OP_GetGlobalUncheckedBool:
20057 Text.Op = PrintName("GetGlobalUncheckedBool");
20058 Text.Args.push_back(printArg<uint32_t>(P, PC));
20059 break;
20060case OP_GetGlobalUncheckedFixedPoint:
20061 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
20062 Text.Args.push_back(printArg<uint32_t>(P, PC));
20063 break;
20064case OP_GetGlobalUncheckedPtr:
20065 Text.Op = PrintName("GetGlobalUncheckedPtr");
20066 Text.Args.push_back(printArg<uint32_t>(P, PC));
20067 break;
20068case OP_GetGlobalUncheckedMemberPtr:
20069 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
20070 Text.Args.push_back(printArg<uint32_t>(P, PC));
20071 break;
20072case OP_GetGlobalUncheckedFloat:
20073 Text.Op = PrintName("GetGlobalUncheckedFloat");
20074 Text.Args.push_back(printArg<uint32_t>(P, PC));
20075 break;
20076#endif
20077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20078bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
20079bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
20080bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
20081bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
20082bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
20083bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
20084bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
20085bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
20086bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
20087bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
20088bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
20089bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
20090bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
20091bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
20092bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
20093#endif
20094#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20095[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
20096#endif
20097#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20098bool
20099#if defined(GET_EVAL_IMPL)
20100EvalEmitter
20101#else
20102ByteCodeEmitter
20103#endif
20104::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
20105 switch (T0) {
20106 case PT_Sint8:
20107 return emitGetGlobalUncheckedSint8(A0, I);
20108 case PT_Uint8:
20109 return emitGetGlobalUncheckedUint8(A0, I);
20110 case PT_Sint16:
20111 return emitGetGlobalUncheckedSint16(A0, I);
20112 case PT_Uint16:
20113 return emitGetGlobalUncheckedUint16(A0, I);
20114 case PT_Sint32:
20115 return emitGetGlobalUncheckedSint32(A0, I);
20116 case PT_Uint32:
20117 return emitGetGlobalUncheckedUint32(A0, I);
20118 case PT_Sint64:
20119 return emitGetGlobalUncheckedSint64(A0, I);
20120 case PT_Uint64:
20121 return emitGetGlobalUncheckedUint64(A0, I);
20122 case PT_IntAP:
20123 return emitGetGlobalUncheckedIntAP(A0, I);
20124 case PT_IntAPS:
20125 return emitGetGlobalUncheckedIntAPS(A0, I);
20126 case PT_Bool:
20127 return emitGetGlobalUncheckedBool(A0, I);
20128 case PT_FixedPoint:
20129 return emitGetGlobalUncheckedFixedPoint(A0, I);
20130 case PT_Ptr:
20131 return emitGetGlobalUncheckedPtr(A0, I);
20132 case PT_MemberPtr:
20133 return emitGetGlobalUncheckedMemberPtr(A0, I);
20134 case PT_Float:
20135 return emitGetGlobalUncheckedFloat(A0, I);
20136 }
20137 llvm_unreachable("invalid enum value");
20138}
20139#endif
20140#ifdef GET_LINK_IMPL
20141bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
20142 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
20143}
20144bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
20145 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
20146}
20147bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
20148 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
20149}
20150bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
20151 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
20152}
20153bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
20154 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
20155}
20156bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
20157 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
20158}
20159bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
20160 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
20161}
20162bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
20163 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
20164}
20165bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
20166 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
20167}
20168bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
20169 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
20170}
20171bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
20172 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
20173}
20174bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
20175 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
20176}
20177bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
20178 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
20179}
20180bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
20181 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
20182}
20183bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
20184 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
20185}
20186#endif
20187#ifdef GET_EVAL_IMPL
20188bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
20189 if (!isActive()) return true;
20190 CurrentSource = L;
20191 return GetGlobalUnchecked<PT_Sint8>(S, OpPC, A0);
20192}
20193bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
20194 if (!isActive()) return true;
20195 CurrentSource = L;
20196 return GetGlobalUnchecked<PT_Uint8>(S, OpPC, A0);
20197}
20198bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
20199 if (!isActive()) return true;
20200 CurrentSource = L;
20201 return GetGlobalUnchecked<PT_Sint16>(S, OpPC, A0);
20202}
20203bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
20204 if (!isActive()) return true;
20205 CurrentSource = L;
20206 return GetGlobalUnchecked<PT_Uint16>(S, OpPC, A0);
20207}
20208bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
20209 if (!isActive()) return true;
20210 CurrentSource = L;
20211 return GetGlobalUnchecked<PT_Sint32>(S, OpPC, A0);
20212}
20213bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
20214 if (!isActive()) return true;
20215 CurrentSource = L;
20216 return GetGlobalUnchecked<PT_Uint32>(S, OpPC, A0);
20217}
20218bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
20219 if (!isActive()) return true;
20220 CurrentSource = L;
20221 return GetGlobalUnchecked<PT_Sint64>(S, OpPC, A0);
20222}
20223bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
20224 if (!isActive()) return true;
20225 CurrentSource = L;
20226 return GetGlobalUnchecked<PT_Uint64>(S, OpPC, A0);
20227}
20228bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
20229 if (!isActive()) return true;
20230 CurrentSource = L;
20231 return GetGlobalUnchecked<PT_IntAP>(S, OpPC, A0);
20232}
20233bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
20234 if (!isActive()) return true;
20235 CurrentSource = L;
20236 return GetGlobalUnchecked<PT_IntAPS>(S, OpPC, A0);
20237}
20238bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
20239 if (!isActive()) return true;
20240 CurrentSource = L;
20241 return GetGlobalUnchecked<PT_Bool>(S, OpPC, A0);
20242}
20243bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
20244 if (!isActive()) return true;
20245 CurrentSource = L;
20246 return GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, A0);
20247}
20248bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
20249 if (!isActive()) return true;
20250 CurrentSource = L;
20251 return GetGlobalUnchecked<PT_Ptr>(S, OpPC, A0);
20252}
20253bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
20254 if (!isActive()) return true;
20255 CurrentSource = L;
20256 return GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, A0);
20257}
20258bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
20259 if (!isActive()) return true;
20260 CurrentSource = L;
20261 return GetGlobalUnchecked<PT_Float>(S, OpPC, A0);
20262}
20263#endif
20264#ifdef GET_OPCODE_NAMES
20265OP_GetIntPtrSint8,
20266OP_GetIntPtrUint8,
20267OP_GetIntPtrSint16,
20268OP_GetIntPtrUint16,
20269OP_GetIntPtrSint32,
20270OP_GetIntPtrUint32,
20271OP_GetIntPtrSint64,
20272OP_GetIntPtrUint64,
20273OP_GetIntPtrIntAP,
20274OP_GetIntPtrIntAPS,
20275OP_GetIntPtrBool,
20276OP_GetIntPtrFixedPoint,
20277#endif
20278#ifdef GET_INTERP
20279case OP_GetIntPtrSint8: {
20280 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20281 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0))
20282 return false;
20283 continue;
20284}
20285case OP_GetIntPtrUint8: {
20286 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20287 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0))
20288 return false;
20289 continue;
20290}
20291case OP_GetIntPtrSint16: {
20292 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20293 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0))
20294 return false;
20295 continue;
20296}
20297case OP_GetIntPtrUint16: {
20298 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20299 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0))
20300 return false;
20301 continue;
20302}
20303case OP_GetIntPtrSint32: {
20304 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20305 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0))
20306 return false;
20307 continue;
20308}
20309case OP_GetIntPtrUint32: {
20310 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20311 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0))
20312 return false;
20313 continue;
20314}
20315case OP_GetIntPtrSint64: {
20316 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20317 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0))
20318 return false;
20319 continue;
20320}
20321case OP_GetIntPtrUint64: {
20322 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20323 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0))
20324 return false;
20325 continue;
20326}
20327case OP_GetIntPtrIntAP: {
20328 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20329 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0))
20330 return false;
20331 continue;
20332}
20333case OP_GetIntPtrIntAPS: {
20334 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20335 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0))
20336 return false;
20337 continue;
20338}
20339case OP_GetIntPtrBool: {
20340 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20341 if (!GetIntPtr<PT_Bool>(S, OpPC, V0))
20342 return false;
20343 continue;
20344}
20345case OP_GetIntPtrFixedPoint: {
20346 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20347 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0))
20348 return false;
20349 continue;
20350}
20351#endif
20352#ifdef GET_DISASM
20353case OP_GetIntPtrSint8:
20354 Text.Op = PrintName("GetIntPtrSint8");
20355 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20356 break;
20357case OP_GetIntPtrUint8:
20358 Text.Op = PrintName("GetIntPtrUint8");
20359 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20360 break;
20361case OP_GetIntPtrSint16:
20362 Text.Op = PrintName("GetIntPtrSint16");
20363 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20364 break;
20365case OP_GetIntPtrUint16:
20366 Text.Op = PrintName("GetIntPtrUint16");
20367 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20368 break;
20369case OP_GetIntPtrSint32:
20370 Text.Op = PrintName("GetIntPtrSint32");
20371 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20372 break;
20373case OP_GetIntPtrUint32:
20374 Text.Op = PrintName("GetIntPtrUint32");
20375 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20376 break;
20377case OP_GetIntPtrSint64:
20378 Text.Op = PrintName("GetIntPtrSint64");
20379 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20380 break;
20381case OP_GetIntPtrUint64:
20382 Text.Op = PrintName("GetIntPtrUint64");
20383 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20384 break;
20385case OP_GetIntPtrIntAP:
20386 Text.Op = PrintName("GetIntPtrIntAP");
20387 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20388 break;
20389case OP_GetIntPtrIntAPS:
20390 Text.Op = PrintName("GetIntPtrIntAPS");
20391 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20392 break;
20393case OP_GetIntPtrBool:
20394 Text.Op = PrintName("GetIntPtrBool");
20395 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20396 break;
20397case OP_GetIntPtrFixedPoint:
20398 Text.Op = PrintName("GetIntPtrFixedPoint");
20399 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20400 break;
20401#endif
20402#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20403bool emitGetIntPtrSint8( const Descriptor * , SourceInfo);
20404bool emitGetIntPtrUint8( const Descriptor * , SourceInfo);
20405bool emitGetIntPtrSint16( const Descriptor * , SourceInfo);
20406bool emitGetIntPtrUint16( const Descriptor * , SourceInfo);
20407bool emitGetIntPtrSint32( const Descriptor * , SourceInfo);
20408bool emitGetIntPtrUint32( const Descriptor * , SourceInfo);
20409bool emitGetIntPtrSint64( const Descriptor * , SourceInfo);
20410bool emitGetIntPtrUint64( const Descriptor * , SourceInfo);
20411bool emitGetIntPtrIntAP( const Descriptor * , SourceInfo);
20412bool emitGetIntPtrIntAPS( const Descriptor * , SourceInfo);
20413bool emitGetIntPtrBool( const Descriptor * , SourceInfo);
20414bool emitGetIntPtrFixedPoint( const Descriptor * , SourceInfo);
20415#endif
20416#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20417[[nodiscard]] bool emitGetIntPtr(PrimType, const Descriptor *, SourceInfo I);
20418#endif
20419#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20420bool
20421#if defined(GET_EVAL_IMPL)
20422EvalEmitter
20423#else
20424ByteCodeEmitter
20425#endif
20426::emitGetIntPtr(PrimType T0, const Descriptor * A0, SourceInfo I) {
20427 switch (T0) {
20428 case PT_Sint8:
20429 return emitGetIntPtrSint8(A0, I);
20430 case PT_Uint8:
20431 return emitGetIntPtrUint8(A0, I);
20432 case PT_Sint16:
20433 return emitGetIntPtrSint16(A0, I);
20434 case PT_Uint16:
20435 return emitGetIntPtrUint16(A0, I);
20436 case PT_Sint32:
20437 return emitGetIntPtrSint32(A0, I);
20438 case PT_Uint32:
20439 return emitGetIntPtrUint32(A0, I);
20440 case PT_Sint64:
20441 return emitGetIntPtrSint64(A0, I);
20442 case PT_Uint64:
20443 return emitGetIntPtrUint64(A0, I);
20444 case PT_IntAP:
20445 return emitGetIntPtrIntAP(A0, I);
20446 case PT_IntAPS:
20447 return emitGetIntPtrIntAPS(A0, I);
20448 case PT_Bool:
20449 return emitGetIntPtrBool(A0, I);
20450 case PT_FixedPoint:
20451 return emitGetIntPtrFixedPoint(A0, I);
20452 default: llvm_unreachable("invalid type: emitGetIntPtr");
20453 }
20454 llvm_unreachable("invalid enum value");
20455}
20456#endif
20457#ifdef GET_LINK_IMPL
20458bool ByteCodeEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
20459 return emitOp<const Descriptor *>(OP_GetIntPtrSint8, A0, L);
20460}
20461bool ByteCodeEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
20462 return emitOp<const Descriptor *>(OP_GetIntPtrUint8, A0, L);
20463}
20464bool ByteCodeEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
20465 return emitOp<const Descriptor *>(OP_GetIntPtrSint16, A0, L);
20466}
20467bool ByteCodeEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
20468 return emitOp<const Descriptor *>(OP_GetIntPtrUint16, A0, L);
20469}
20470bool ByteCodeEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
20471 return emitOp<const Descriptor *>(OP_GetIntPtrSint32, A0, L);
20472}
20473bool ByteCodeEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
20474 return emitOp<const Descriptor *>(OP_GetIntPtrUint32, A0, L);
20475}
20476bool ByteCodeEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
20477 return emitOp<const Descriptor *>(OP_GetIntPtrSint64, A0, L);
20478}
20479bool ByteCodeEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
20480 return emitOp<const Descriptor *>(OP_GetIntPtrUint64, A0, L);
20481}
20482bool ByteCodeEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
20483 return emitOp<const Descriptor *>(OP_GetIntPtrIntAP, A0, L);
20484}
20485bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
20486 return emitOp<const Descriptor *>(OP_GetIntPtrIntAPS, A0, L);
20487}
20488bool ByteCodeEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
20489 return emitOp<const Descriptor *>(OP_GetIntPtrBool, A0, L);
20490}
20491bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
20492 return emitOp<const Descriptor *>(OP_GetIntPtrFixedPoint, A0, L);
20493}
20494#endif
20495#ifdef GET_EVAL_IMPL
20496bool EvalEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
20497 if (!isActive()) return true;
20498 CurrentSource = L;
20499 return GetIntPtr<PT_Sint8>(S, OpPC, A0);
20500}
20501bool EvalEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
20502 if (!isActive()) return true;
20503 CurrentSource = L;
20504 return GetIntPtr<PT_Uint8>(S, OpPC, A0);
20505}
20506bool EvalEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
20507 if (!isActive()) return true;
20508 CurrentSource = L;
20509 return GetIntPtr<PT_Sint16>(S, OpPC, A0);
20510}
20511bool EvalEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
20512 if (!isActive()) return true;
20513 CurrentSource = L;
20514 return GetIntPtr<PT_Uint16>(S, OpPC, A0);
20515}
20516bool EvalEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
20517 if (!isActive()) return true;
20518 CurrentSource = L;
20519 return GetIntPtr<PT_Sint32>(S, OpPC, A0);
20520}
20521bool EvalEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
20522 if (!isActive()) return true;
20523 CurrentSource = L;
20524 return GetIntPtr<PT_Uint32>(S, OpPC, A0);
20525}
20526bool EvalEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
20527 if (!isActive()) return true;
20528 CurrentSource = L;
20529 return GetIntPtr<PT_Sint64>(S, OpPC, A0);
20530}
20531bool EvalEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
20532 if (!isActive()) return true;
20533 CurrentSource = L;
20534 return GetIntPtr<PT_Uint64>(S, OpPC, A0);
20535}
20536bool EvalEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
20537 if (!isActive()) return true;
20538 CurrentSource = L;
20539 return GetIntPtr<PT_IntAP>(S, OpPC, A0);
20540}
20541bool EvalEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
20542 if (!isActive()) return true;
20543 CurrentSource = L;
20544 return GetIntPtr<PT_IntAPS>(S, OpPC, A0);
20545}
20546bool EvalEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
20547 if (!isActive()) return true;
20548 CurrentSource = L;
20549 return GetIntPtr<PT_Bool>(S, OpPC, A0);
20550}
20551bool EvalEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
20552 if (!isActive()) return true;
20553 CurrentSource = L;
20554 return GetIntPtr<PT_FixedPoint>(S, OpPC, A0);
20555}
20556#endif
20557#ifdef GET_OPCODE_NAMES
20558OP_GetLocalSint8,
20559OP_GetLocalUint8,
20560OP_GetLocalSint16,
20561OP_GetLocalUint16,
20562OP_GetLocalSint32,
20563OP_GetLocalUint32,
20564OP_GetLocalSint64,
20565OP_GetLocalUint64,
20566OP_GetLocalIntAP,
20567OP_GetLocalIntAPS,
20568OP_GetLocalBool,
20569OP_GetLocalFixedPoint,
20570OP_GetLocalPtr,
20571OP_GetLocalMemberPtr,
20572OP_GetLocalFloat,
20573#endif
20574#ifdef GET_INTERP
20575case OP_GetLocalSint8: {
20576 const auto V0 = ReadArg<uint32_t>(S, PC);
20577 if (!GetLocal<PT_Sint8>(S, OpPC, V0))
20578 return false;
20579 continue;
20580}
20581case OP_GetLocalUint8: {
20582 const auto V0 = ReadArg<uint32_t>(S, PC);
20583 if (!GetLocal<PT_Uint8>(S, OpPC, V0))
20584 return false;
20585 continue;
20586}
20587case OP_GetLocalSint16: {
20588 const auto V0 = ReadArg<uint32_t>(S, PC);
20589 if (!GetLocal<PT_Sint16>(S, OpPC, V0))
20590 return false;
20591 continue;
20592}
20593case OP_GetLocalUint16: {
20594 const auto V0 = ReadArg<uint32_t>(S, PC);
20595 if (!GetLocal<PT_Uint16>(S, OpPC, V0))
20596 return false;
20597 continue;
20598}
20599case OP_GetLocalSint32: {
20600 const auto V0 = ReadArg<uint32_t>(S, PC);
20601 if (!GetLocal<PT_Sint32>(S, OpPC, V0))
20602 return false;
20603 continue;
20604}
20605case OP_GetLocalUint32: {
20606 const auto V0 = ReadArg<uint32_t>(S, PC);
20607 if (!GetLocal<PT_Uint32>(S, OpPC, V0))
20608 return false;
20609 continue;
20610}
20611case OP_GetLocalSint64: {
20612 const auto V0 = ReadArg<uint32_t>(S, PC);
20613 if (!GetLocal<PT_Sint64>(S, OpPC, V0))
20614 return false;
20615 continue;
20616}
20617case OP_GetLocalUint64: {
20618 const auto V0 = ReadArg<uint32_t>(S, PC);
20619 if (!GetLocal<PT_Uint64>(S, OpPC, V0))
20620 return false;
20621 continue;
20622}
20623case OP_GetLocalIntAP: {
20624 const auto V0 = ReadArg<uint32_t>(S, PC);
20625 if (!GetLocal<PT_IntAP>(S, OpPC, V0))
20626 return false;
20627 continue;
20628}
20629case OP_GetLocalIntAPS: {
20630 const auto V0 = ReadArg<uint32_t>(S, PC);
20631 if (!GetLocal<PT_IntAPS>(S, OpPC, V0))
20632 return false;
20633 continue;
20634}
20635case OP_GetLocalBool: {
20636 const auto V0 = ReadArg<uint32_t>(S, PC);
20637 if (!GetLocal<PT_Bool>(S, OpPC, V0))
20638 return false;
20639 continue;
20640}
20641case OP_GetLocalFixedPoint: {
20642 const auto V0 = ReadArg<uint32_t>(S, PC);
20643 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0))
20644 return false;
20645 continue;
20646}
20647case OP_GetLocalPtr: {
20648 const auto V0 = ReadArg<uint32_t>(S, PC);
20649 if (!GetLocal<PT_Ptr>(S, OpPC, V0))
20650 return false;
20651 continue;
20652}
20653case OP_GetLocalMemberPtr: {
20654 const auto V0 = ReadArg<uint32_t>(S, PC);
20655 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0))
20656 return false;
20657 continue;
20658}
20659case OP_GetLocalFloat: {
20660 const auto V0 = ReadArg<uint32_t>(S, PC);
20661 if (!GetLocal<PT_Float>(S, OpPC, V0))
20662 return false;
20663 continue;
20664}
20665#endif
20666#ifdef GET_DISASM
20667case OP_GetLocalSint8:
20668 Text.Op = PrintName("GetLocalSint8");
20669 Text.Args.push_back(printArg<uint32_t>(P, PC));
20670 break;
20671case OP_GetLocalUint8:
20672 Text.Op = PrintName("GetLocalUint8");
20673 Text.Args.push_back(printArg<uint32_t>(P, PC));
20674 break;
20675case OP_GetLocalSint16:
20676 Text.Op = PrintName("GetLocalSint16");
20677 Text.Args.push_back(printArg<uint32_t>(P, PC));
20678 break;
20679case OP_GetLocalUint16:
20680 Text.Op = PrintName("GetLocalUint16");
20681 Text.Args.push_back(printArg<uint32_t>(P, PC));
20682 break;
20683case OP_GetLocalSint32:
20684 Text.Op = PrintName("GetLocalSint32");
20685 Text.Args.push_back(printArg<uint32_t>(P, PC));
20686 break;
20687case OP_GetLocalUint32:
20688 Text.Op = PrintName("GetLocalUint32");
20689 Text.Args.push_back(printArg<uint32_t>(P, PC));
20690 break;
20691case OP_GetLocalSint64:
20692 Text.Op = PrintName("GetLocalSint64");
20693 Text.Args.push_back(printArg<uint32_t>(P, PC));
20694 break;
20695case OP_GetLocalUint64:
20696 Text.Op = PrintName("GetLocalUint64");
20697 Text.Args.push_back(printArg<uint32_t>(P, PC));
20698 break;
20699case OP_GetLocalIntAP:
20700 Text.Op = PrintName("GetLocalIntAP");
20701 Text.Args.push_back(printArg<uint32_t>(P, PC));
20702 break;
20703case OP_GetLocalIntAPS:
20704 Text.Op = PrintName("GetLocalIntAPS");
20705 Text.Args.push_back(printArg<uint32_t>(P, PC));
20706 break;
20707case OP_GetLocalBool:
20708 Text.Op = PrintName("GetLocalBool");
20709 Text.Args.push_back(printArg<uint32_t>(P, PC));
20710 break;
20711case OP_GetLocalFixedPoint:
20712 Text.Op = PrintName("GetLocalFixedPoint");
20713 Text.Args.push_back(printArg<uint32_t>(P, PC));
20714 break;
20715case OP_GetLocalPtr:
20716 Text.Op = PrintName("GetLocalPtr");
20717 Text.Args.push_back(printArg<uint32_t>(P, PC));
20718 break;
20719case OP_GetLocalMemberPtr:
20720 Text.Op = PrintName("GetLocalMemberPtr");
20721 Text.Args.push_back(printArg<uint32_t>(P, PC));
20722 break;
20723case OP_GetLocalFloat:
20724 Text.Op = PrintName("GetLocalFloat");
20725 Text.Args.push_back(printArg<uint32_t>(P, PC));
20726 break;
20727#endif
20728#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20729bool emitGetLocalSint8( uint32_t , SourceInfo);
20730bool emitGetLocalUint8( uint32_t , SourceInfo);
20731bool emitGetLocalSint16( uint32_t , SourceInfo);
20732bool emitGetLocalUint16( uint32_t , SourceInfo);
20733bool emitGetLocalSint32( uint32_t , SourceInfo);
20734bool emitGetLocalUint32( uint32_t , SourceInfo);
20735bool emitGetLocalSint64( uint32_t , SourceInfo);
20736bool emitGetLocalUint64( uint32_t , SourceInfo);
20737bool emitGetLocalIntAP( uint32_t , SourceInfo);
20738bool emitGetLocalIntAPS( uint32_t , SourceInfo);
20739bool emitGetLocalBool( uint32_t , SourceInfo);
20740bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
20741bool emitGetLocalPtr( uint32_t , SourceInfo);
20742bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
20743bool emitGetLocalFloat( uint32_t , SourceInfo);
20744#if defined(GET_EVAL_PROTO)
20745template<PrimType>
20746bool emitGetLocal(uint32_t, SourceInfo);
20747#endif
20748#endif
20749#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20750[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
20751#endif
20752#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20753bool
20754#if defined(GET_EVAL_IMPL)
20755EvalEmitter
20756#else
20757ByteCodeEmitter
20758#endif
20759::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
20760 switch (T0) {
20761 case PT_Sint8:
20762#ifdef GET_LINK_IMPL
20763 return emitGetLocalSint8
20764#else
20765 return emitGetLocal<PT_Sint8>
20766#endif
20767 (A0, I);
20768 case PT_Uint8:
20769#ifdef GET_LINK_IMPL
20770 return emitGetLocalUint8
20771#else
20772 return emitGetLocal<PT_Uint8>
20773#endif
20774 (A0, I);
20775 case PT_Sint16:
20776#ifdef GET_LINK_IMPL
20777 return emitGetLocalSint16
20778#else
20779 return emitGetLocal<PT_Sint16>
20780#endif
20781 (A0, I);
20782 case PT_Uint16:
20783#ifdef GET_LINK_IMPL
20784 return emitGetLocalUint16
20785#else
20786 return emitGetLocal<PT_Uint16>
20787#endif
20788 (A0, I);
20789 case PT_Sint32:
20790#ifdef GET_LINK_IMPL
20791 return emitGetLocalSint32
20792#else
20793 return emitGetLocal<PT_Sint32>
20794#endif
20795 (A0, I);
20796 case PT_Uint32:
20797#ifdef GET_LINK_IMPL
20798 return emitGetLocalUint32
20799#else
20800 return emitGetLocal<PT_Uint32>
20801#endif
20802 (A0, I);
20803 case PT_Sint64:
20804#ifdef GET_LINK_IMPL
20805 return emitGetLocalSint64
20806#else
20807 return emitGetLocal<PT_Sint64>
20808#endif
20809 (A0, I);
20810 case PT_Uint64:
20811#ifdef GET_LINK_IMPL
20812 return emitGetLocalUint64
20813#else
20814 return emitGetLocal<PT_Uint64>
20815#endif
20816 (A0, I);
20817 case PT_IntAP:
20818#ifdef GET_LINK_IMPL
20819 return emitGetLocalIntAP
20820#else
20821 return emitGetLocal<PT_IntAP>
20822#endif
20823 (A0, I);
20824 case PT_IntAPS:
20825#ifdef GET_LINK_IMPL
20826 return emitGetLocalIntAPS
20827#else
20828 return emitGetLocal<PT_IntAPS>
20829#endif
20830 (A0, I);
20831 case PT_Bool:
20832#ifdef GET_LINK_IMPL
20833 return emitGetLocalBool
20834#else
20835 return emitGetLocal<PT_Bool>
20836#endif
20837 (A0, I);
20838 case PT_FixedPoint:
20839#ifdef GET_LINK_IMPL
20840 return emitGetLocalFixedPoint
20841#else
20842 return emitGetLocal<PT_FixedPoint>
20843#endif
20844 (A0, I);
20845 case PT_Ptr:
20846#ifdef GET_LINK_IMPL
20847 return emitGetLocalPtr
20848#else
20849 return emitGetLocal<PT_Ptr>
20850#endif
20851 (A0, I);
20852 case PT_MemberPtr:
20853#ifdef GET_LINK_IMPL
20854 return emitGetLocalMemberPtr
20855#else
20856 return emitGetLocal<PT_MemberPtr>
20857#endif
20858 (A0, I);
20859 case PT_Float:
20860#ifdef GET_LINK_IMPL
20861 return emitGetLocalFloat
20862#else
20863 return emitGetLocal<PT_Float>
20864#endif
20865 (A0, I);
20866 }
20867 llvm_unreachable("invalid enum value");
20868}
20869#endif
20870#ifdef GET_LINK_IMPL
20871bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
20872 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
20873}
20874bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
20875 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
20876}
20877bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
20878 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
20879}
20880bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
20881 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
20882}
20883bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
20884 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
20885}
20886bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
20887 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
20888}
20889bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
20890 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
20891}
20892bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
20893 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
20894}
20895bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
20896 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
20897}
20898bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
20899 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
20900}
20901bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
20902 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
20903}
20904bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
20905 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
20906}
20907bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
20908 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
20909}
20910bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
20911 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
20912}
20913bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
20914 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
20915}
20916#endif
20917#ifdef GET_OPCODE_NAMES
20918OP_GetLocalEnabled,
20919#endif
20920#ifdef GET_INTERP
20921case OP_GetLocalEnabled: {
20922 const auto V0 = ReadArg<uint32_t>(S, PC);
20923 if (!GetLocalEnabled(S, OpPC, V0))
20924 return false;
20925 continue;
20926}
20927#endif
20928#ifdef GET_DISASM
20929case OP_GetLocalEnabled:
20930 Text.Op = PrintName("GetLocalEnabled");
20931 Text.Args.push_back(printArg<uint32_t>(P, PC));
20932 break;
20933#endif
20934#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20935bool emitGetLocalEnabled( uint32_t , SourceInfo);
20936#endif
20937#ifdef GET_LINK_IMPL
20938bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
20939 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
20940}
20941#endif
20942#ifdef GET_OPCODE_NAMES
20943OP_GetMemberPtr,
20944#endif
20945#ifdef GET_INTERP
20946case OP_GetMemberPtr: {
20947 const auto V0 = ReadArg<const ValueDecl*>(S, PC);
20948 if (!GetMemberPtr(S, OpPC, V0))
20949 return false;
20950 continue;
20951}
20952#endif
20953#ifdef GET_DISASM
20954case OP_GetMemberPtr:
20955 Text.Op = PrintName("GetMemberPtr");
20956 Text.Args.push_back(printArg<const ValueDecl*>(P, PC));
20957 break;
20958#endif
20959#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20960bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
20961#endif
20962#ifdef GET_LINK_IMPL
20963bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
20964 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
20965}
20966#endif
20967#ifdef GET_EVAL_IMPL
20968bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
20969 if (!isActive()) return true;
20970 CurrentSource = L;
20971 return GetMemberPtr(S, OpPC, A0);
20972}
20973#endif
20974#ifdef GET_OPCODE_NAMES
20975OP_GetMemberPtrBase,
20976#endif
20977#ifdef GET_INTERP
20978case OP_GetMemberPtrBase: {
20979 if (!GetMemberPtrBase(S, OpPC))
20980 return false;
20981 continue;
20982}
20983#endif
20984#ifdef GET_DISASM
20985case OP_GetMemberPtrBase:
20986 Text.Op = PrintName("GetMemberPtrBase");
20987 break;
20988#endif
20989#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20990bool emitGetMemberPtrBase(SourceInfo);
20991#endif
20992#ifdef GET_LINK_IMPL
20993bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
20994 return emitOp<>(OP_GetMemberPtrBase, L);
20995}
20996#endif
20997#ifdef GET_EVAL_IMPL
20998bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
20999 if (!isActive()) return true;
21000 CurrentSource = L;
21001 return GetMemberPtrBase(S, OpPC);
21002}
21003#endif
21004#ifdef GET_OPCODE_NAMES
21005OP_GetMemberPtrBasePop,
21006#endif
21007#ifdef GET_INTERP
21008case OP_GetMemberPtrBasePop: {
21009 const auto V0 = ReadArg<int32_t>(S, PC);
21010 if (!GetMemberPtrBasePop(S, OpPC, V0))
21011 return false;
21012 continue;
21013}
21014#endif
21015#ifdef GET_DISASM
21016case OP_GetMemberPtrBasePop:
21017 Text.Op = PrintName("GetMemberPtrBasePop");
21018 Text.Args.push_back(printArg<int32_t>(P, PC));
21019 break;
21020#endif
21021#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21022bool emitGetMemberPtrBasePop( int32_t , SourceInfo);
21023#endif
21024#ifdef GET_LINK_IMPL
21025bool ByteCodeEmitter::emitGetMemberPtrBasePop( int32_t A0, SourceInfo L) {
21026 return emitOp<int32_t>(OP_GetMemberPtrBasePop, A0, L);
21027}
21028#endif
21029#ifdef GET_EVAL_IMPL
21030bool EvalEmitter::emitGetMemberPtrBasePop( int32_t A0, SourceInfo L) {
21031 if (!isActive()) return true;
21032 CurrentSource = L;
21033 return GetMemberPtrBasePop(S, OpPC, A0);
21034}
21035#endif
21036#ifdef GET_OPCODE_NAMES
21037OP_GetMemberPtrDecl,
21038#endif
21039#ifdef GET_INTERP
21040case OP_GetMemberPtrDecl: {
21041 if (!GetMemberPtrDecl(S, OpPC))
21042 return false;
21043 continue;
21044}
21045#endif
21046#ifdef GET_DISASM
21047case OP_GetMemberPtrDecl:
21048 Text.Op = PrintName("GetMemberPtrDecl");
21049 break;
21050#endif
21051#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21052bool emitGetMemberPtrDecl(SourceInfo);
21053#endif
21054#ifdef GET_LINK_IMPL
21055bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
21056 return emitOp<>(OP_GetMemberPtrDecl, L);
21057}
21058#endif
21059#ifdef GET_EVAL_IMPL
21060bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
21061 if (!isActive()) return true;
21062 CurrentSource = L;
21063 return GetMemberPtrDecl(S, OpPC);
21064}
21065#endif
21066#ifdef GET_OPCODE_NAMES
21067OP_GetParamSint8,
21068OP_GetParamUint8,
21069OP_GetParamSint16,
21070OP_GetParamUint16,
21071OP_GetParamSint32,
21072OP_GetParamUint32,
21073OP_GetParamSint64,
21074OP_GetParamUint64,
21075OP_GetParamIntAP,
21076OP_GetParamIntAPS,
21077OP_GetParamBool,
21078OP_GetParamFixedPoint,
21079OP_GetParamPtr,
21080OP_GetParamMemberPtr,
21081OP_GetParamFloat,
21082#endif
21083#ifdef GET_INTERP
21084case OP_GetParamSint8: {
21085 const auto V0 = ReadArg<uint32_t>(S, PC);
21086 if (!GetParam<PT_Sint8>(S, OpPC, V0))
21087 return false;
21088 continue;
21089}
21090case OP_GetParamUint8: {
21091 const auto V0 = ReadArg<uint32_t>(S, PC);
21092 if (!GetParam<PT_Uint8>(S, OpPC, V0))
21093 return false;
21094 continue;
21095}
21096case OP_GetParamSint16: {
21097 const auto V0 = ReadArg<uint32_t>(S, PC);
21098 if (!GetParam<PT_Sint16>(S, OpPC, V0))
21099 return false;
21100 continue;
21101}
21102case OP_GetParamUint16: {
21103 const auto V0 = ReadArg<uint32_t>(S, PC);
21104 if (!GetParam<PT_Uint16>(S, OpPC, V0))
21105 return false;
21106 continue;
21107}
21108case OP_GetParamSint32: {
21109 const auto V0 = ReadArg<uint32_t>(S, PC);
21110 if (!GetParam<PT_Sint32>(S, OpPC, V0))
21111 return false;
21112 continue;
21113}
21114case OP_GetParamUint32: {
21115 const auto V0 = ReadArg<uint32_t>(S, PC);
21116 if (!GetParam<PT_Uint32>(S, OpPC, V0))
21117 return false;
21118 continue;
21119}
21120case OP_GetParamSint64: {
21121 const auto V0 = ReadArg<uint32_t>(S, PC);
21122 if (!GetParam<PT_Sint64>(S, OpPC, V0))
21123 return false;
21124 continue;
21125}
21126case OP_GetParamUint64: {
21127 const auto V0 = ReadArg<uint32_t>(S, PC);
21128 if (!GetParam<PT_Uint64>(S, OpPC, V0))
21129 return false;
21130 continue;
21131}
21132case OP_GetParamIntAP: {
21133 const auto V0 = ReadArg<uint32_t>(S, PC);
21134 if (!GetParam<PT_IntAP>(S, OpPC, V0))
21135 return false;
21136 continue;
21137}
21138case OP_GetParamIntAPS: {
21139 const auto V0 = ReadArg<uint32_t>(S, PC);
21140 if (!GetParam<PT_IntAPS>(S, OpPC, V0))
21141 return false;
21142 continue;
21143}
21144case OP_GetParamBool: {
21145 const auto V0 = ReadArg<uint32_t>(S, PC);
21146 if (!GetParam<PT_Bool>(S, OpPC, V0))
21147 return false;
21148 continue;
21149}
21150case OP_GetParamFixedPoint: {
21151 const auto V0 = ReadArg<uint32_t>(S, PC);
21152 if (!GetParam<PT_FixedPoint>(S, OpPC, V0))
21153 return false;
21154 continue;
21155}
21156case OP_GetParamPtr: {
21157 const auto V0 = ReadArg<uint32_t>(S, PC);
21158 if (!GetParam<PT_Ptr>(S, OpPC, V0))
21159 return false;
21160 continue;
21161}
21162case OP_GetParamMemberPtr: {
21163 const auto V0 = ReadArg<uint32_t>(S, PC);
21164 if (!GetParam<PT_MemberPtr>(S, OpPC, V0))
21165 return false;
21166 continue;
21167}
21168case OP_GetParamFloat: {
21169 const auto V0 = ReadArg<uint32_t>(S, PC);
21170 if (!GetParam<PT_Float>(S, OpPC, V0))
21171 return false;
21172 continue;
21173}
21174#endif
21175#ifdef GET_DISASM
21176case OP_GetParamSint8:
21177 Text.Op = PrintName("GetParamSint8");
21178 Text.Args.push_back(printArg<uint32_t>(P, PC));
21179 break;
21180case OP_GetParamUint8:
21181 Text.Op = PrintName("GetParamUint8");
21182 Text.Args.push_back(printArg<uint32_t>(P, PC));
21183 break;
21184case OP_GetParamSint16:
21185 Text.Op = PrintName("GetParamSint16");
21186 Text.Args.push_back(printArg<uint32_t>(P, PC));
21187 break;
21188case OP_GetParamUint16:
21189 Text.Op = PrintName("GetParamUint16");
21190 Text.Args.push_back(printArg<uint32_t>(P, PC));
21191 break;
21192case OP_GetParamSint32:
21193 Text.Op = PrintName("GetParamSint32");
21194 Text.Args.push_back(printArg<uint32_t>(P, PC));
21195 break;
21196case OP_GetParamUint32:
21197 Text.Op = PrintName("GetParamUint32");
21198 Text.Args.push_back(printArg<uint32_t>(P, PC));
21199 break;
21200case OP_GetParamSint64:
21201 Text.Op = PrintName("GetParamSint64");
21202 Text.Args.push_back(printArg<uint32_t>(P, PC));
21203 break;
21204case OP_GetParamUint64:
21205 Text.Op = PrintName("GetParamUint64");
21206 Text.Args.push_back(printArg<uint32_t>(P, PC));
21207 break;
21208case OP_GetParamIntAP:
21209 Text.Op = PrintName("GetParamIntAP");
21210 Text.Args.push_back(printArg<uint32_t>(P, PC));
21211 break;
21212case OP_GetParamIntAPS:
21213 Text.Op = PrintName("GetParamIntAPS");
21214 Text.Args.push_back(printArg<uint32_t>(P, PC));
21215 break;
21216case OP_GetParamBool:
21217 Text.Op = PrintName("GetParamBool");
21218 Text.Args.push_back(printArg<uint32_t>(P, PC));
21219 break;
21220case OP_GetParamFixedPoint:
21221 Text.Op = PrintName("GetParamFixedPoint");
21222 Text.Args.push_back(printArg<uint32_t>(P, PC));
21223 break;
21224case OP_GetParamPtr:
21225 Text.Op = PrintName("GetParamPtr");
21226 Text.Args.push_back(printArg<uint32_t>(P, PC));
21227 break;
21228case OP_GetParamMemberPtr:
21229 Text.Op = PrintName("GetParamMemberPtr");
21230 Text.Args.push_back(printArg<uint32_t>(P, PC));
21231 break;
21232case OP_GetParamFloat:
21233 Text.Op = PrintName("GetParamFloat");
21234 Text.Args.push_back(printArg<uint32_t>(P, PC));
21235 break;
21236#endif
21237#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21238bool emitGetParamSint8( uint32_t , SourceInfo);
21239bool emitGetParamUint8( uint32_t , SourceInfo);
21240bool emitGetParamSint16( uint32_t , SourceInfo);
21241bool emitGetParamUint16( uint32_t , SourceInfo);
21242bool emitGetParamSint32( uint32_t , SourceInfo);
21243bool emitGetParamUint32( uint32_t , SourceInfo);
21244bool emitGetParamSint64( uint32_t , SourceInfo);
21245bool emitGetParamUint64( uint32_t , SourceInfo);
21246bool emitGetParamIntAP( uint32_t , SourceInfo);
21247bool emitGetParamIntAPS( uint32_t , SourceInfo);
21248bool emitGetParamBool( uint32_t , SourceInfo);
21249bool emitGetParamFixedPoint( uint32_t , SourceInfo);
21250bool emitGetParamPtr( uint32_t , SourceInfo);
21251bool emitGetParamMemberPtr( uint32_t , SourceInfo);
21252bool emitGetParamFloat( uint32_t , SourceInfo);
21253#endif
21254#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21255[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
21256#endif
21257#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21258bool
21259#if defined(GET_EVAL_IMPL)
21260EvalEmitter
21261#else
21262ByteCodeEmitter
21263#endif
21264::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
21265 switch (T0) {
21266 case PT_Sint8:
21267 return emitGetParamSint8(A0, I);
21268 case PT_Uint8:
21269 return emitGetParamUint8(A0, I);
21270 case PT_Sint16:
21271 return emitGetParamSint16(A0, I);
21272 case PT_Uint16:
21273 return emitGetParamUint16(A0, I);
21274 case PT_Sint32:
21275 return emitGetParamSint32(A0, I);
21276 case PT_Uint32:
21277 return emitGetParamUint32(A0, I);
21278 case PT_Sint64:
21279 return emitGetParamSint64(A0, I);
21280 case PT_Uint64:
21281 return emitGetParamUint64(A0, I);
21282 case PT_IntAP:
21283 return emitGetParamIntAP(A0, I);
21284 case PT_IntAPS:
21285 return emitGetParamIntAPS(A0, I);
21286 case PT_Bool:
21287 return emitGetParamBool(A0, I);
21288 case PT_FixedPoint:
21289 return emitGetParamFixedPoint(A0, I);
21290 case PT_Ptr:
21291 return emitGetParamPtr(A0, I);
21292 case PT_MemberPtr:
21293 return emitGetParamMemberPtr(A0, I);
21294 case PT_Float:
21295 return emitGetParamFloat(A0, I);
21296 }
21297 llvm_unreachable("invalid enum value");
21298}
21299#endif
21300#ifdef GET_LINK_IMPL
21301bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
21302 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
21303}
21304bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
21305 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
21306}
21307bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
21308 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
21309}
21310bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
21311 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
21312}
21313bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
21314 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
21315}
21316bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
21317 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
21318}
21319bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
21320 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
21321}
21322bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
21323 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
21324}
21325bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
21326 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
21327}
21328bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
21329 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
21330}
21331bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
21332 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
21333}
21334bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
21335 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
21336}
21337bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
21338 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
21339}
21340bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
21341 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
21342}
21343bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
21344 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
21345}
21346#endif
21347#ifdef GET_EVAL_IMPL
21348bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
21349 if (!isActive()) return true;
21350 CurrentSource = L;
21351 return GetParam<PT_Sint8>(S, OpPC, A0);
21352}
21353bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
21354 if (!isActive()) return true;
21355 CurrentSource = L;
21356 return GetParam<PT_Uint8>(S, OpPC, A0);
21357}
21358bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
21359 if (!isActive()) return true;
21360 CurrentSource = L;
21361 return GetParam<PT_Sint16>(S, OpPC, A0);
21362}
21363bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
21364 if (!isActive()) return true;
21365 CurrentSource = L;
21366 return GetParam<PT_Uint16>(S, OpPC, A0);
21367}
21368bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
21369 if (!isActive()) return true;
21370 CurrentSource = L;
21371 return GetParam<PT_Sint32>(S, OpPC, A0);
21372}
21373bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
21374 if (!isActive()) return true;
21375 CurrentSource = L;
21376 return GetParam<PT_Uint32>(S, OpPC, A0);
21377}
21378bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
21379 if (!isActive()) return true;
21380 CurrentSource = L;
21381 return GetParam<PT_Sint64>(S, OpPC, A0);
21382}
21383bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
21384 if (!isActive()) return true;
21385 CurrentSource = L;
21386 return GetParam<PT_Uint64>(S, OpPC, A0);
21387}
21388bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
21389 if (!isActive()) return true;
21390 CurrentSource = L;
21391 return GetParam<PT_IntAP>(S, OpPC, A0);
21392}
21393bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
21394 if (!isActive()) return true;
21395 CurrentSource = L;
21396 return GetParam<PT_IntAPS>(S, OpPC, A0);
21397}
21398bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
21399 if (!isActive()) return true;
21400 CurrentSource = L;
21401 return GetParam<PT_Bool>(S, OpPC, A0);
21402}
21403bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
21404 if (!isActive()) return true;
21405 CurrentSource = L;
21406 return GetParam<PT_FixedPoint>(S, OpPC, A0);
21407}
21408bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
21409 if (!isActive()) return true;
21410 CurrentSource = L;
21411 return GetParam<PT_Ptr>(S, OpPC, A0);
21412}
21413bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
21414 if (!isActive()) return true;
21415 CurrentSource = L;
21416 return GetParam<PT_MemberPtr>(S, OpPC, A0);
21417}
21418bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
21419 if (!isActive()) return true;
21420 CurrentSource = L;
21421 return GetParam<PT_Float>(S, OpPC, A0);
21422}
21423#endif
21424#ifdef GET_OPCODE_NAMES
21425OP_GetPtrBase,
21426#endif
21427#ifdef GET_INTERP
21428case OP_GetPtrBase: {
21429 const auto V0 = ReadArg<uint32_t>(S, PC);
21430 if (!GetPtrBase(S, OpPC, V0))
21431 return false;
21432 continue;
21433}
21434#endif
21435#ifdef GET_DISASM
21436case OP_GetPtrBase:
21437 Text.Op = PrintName("GetPtrBase");
21438 Text.Args.push_back(printArg<uint32_t>(P, PC));
21439 break;
21440#endif
21441#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21442bool emitGetPtrBase( uint32_t , SourceInfo);
21443#endif
21444#ifdef GET_LINK_IMPL
21445bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
21446 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
21447}
21448#endif
21449#ifdef GET_EVAL_IMPL
21450bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
21451 if (!isActive()) return true;
21452 CurrentSource = L;
21453 return GetPtrBase(S, OpPC, A0);
21454}
21455#endif
21456#ifdef GET_OPCODE_NAMES
21457OP_GetPtrBasePop,
21458#endif
21459#ifdef GET_INTERP
21460case OP_GetPtrBasePop: {
21461 const auto V0 = ReadArg<uint32_t>(S, PC);
21462 const auto V1 = ReadArg<bool>(S, PC);
21463 if (!GetPtrBasePop(S, OpPC, V0, V1))
21464 return false;
21465 continue;
21466}
21467#endif
21468#ifdef GET_DISASM
21469case OP_GetPtrBasePop:
21470 Text.Op = PrintName("GetPtrBasePop");
21471 Text.Args.push_back(printArg<uint32_t>(P, PC));
21472 Text.Args.push_back(printArg<bool>(P, PC));
21473 break;
21474#endif
21475#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21476bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
21477#endif
21478#ifdef GET_LINK_IMPL
21479bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
21480 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
21481}
21482#endif
21483#ifdef GET_EVAL_IMPL
21484bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
21485 if (!isActive()) return true;
21486 CurrentSource = L;
21487 return GetPtrBasePop(S, OpPC, A0, A1);
21488}
21489#endif
21490#ifdef GET_OPCODE_NAMES
21491OP_GetPtrDerivedPop,
21492#endif
21493#ifdef GET_INTERP
21494case OP_GetPtrDerivedPop: {
21495 const auto V0 = ReadArg<uint32_t>(S, PC);
21496 const auto V1 = ReadArg<bool>(S, PC);
21497 const auto V2 = ReadArg<const Type *>(S, PC);
21498 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2))
21499 return false;
21500 continue;
21501}
21502#endif
21503#ifdef GET_DISASM
21504case OP_GetPtrDerivedPop:
21505 Text.Op = PrintName("GetPtrDerivedPop");
21506 Text.Args.push_back(printArg<uint32_t>(P, PC));
21507 Text.Args.push_back(printArg<bool>(P, PC));
21508 Text.Args.push_back(printArg<const Type *>(P, PC));
21509 break;
21510#endif
21511#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21512bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
21513#endif
21514#ifdef GET_LINK_IMPL
21515bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
21516 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
21517}
21518#endif
21519#ifdef GET_EVAL_IMPL
21520bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
21521 if (!isActive()) return true;
21522 CurrentSource = L;
21523 return GetPtrDerivedPop(S, OpPC, A0, A1, A2);
21524}
21525#endif
21526#ifdef GET_OPCODE_NAMES
21527OP_GetPtrField,
21528#endif
21529#ifdef GET_INTERP
21530case OP_GetPtrField: {
21531 const auto V0 = ReadArg<uint32_t>(S, PC);
21532 if (!GetPtrField(S, OpPC, V0))
21533 return false;
21534 continue;
21535}
21536#endif
21537#ifdef GET_DISASM
21538case OP_GetPtrField:
21539 Text.Op = PrintName("GetPtrField");
21540 Text.Args.push_back(printArg<uint32_t>(P, PC));
21541 break;
21542#endif
21543#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21544bool emitGetPtrField( uint32_t , SourceInfo);
21545#endif
21546#ifdef GET_LINK_IMPL
21547bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
21548 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
21549}
21550#endif
21551#ifdef GET_EVAL_IMPL
21552bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
21553 if (!isActive()) return true;
21554 CurrentSource = L;
21555 return GetPtrField(S, OpPC, A0);
21556}
21557#endif
21558#ifdef GET_OPCODE_NAMES
21559OP_GetPtrFieldPop,
21560#endif
21561#ifdef GET_INTERP
21562case OP_GetPtrFieldPop: {
21563 const auto V0 = ReadArg<uint32_t>(S, PC);
21564 if (!GetPtrFieldPop(S, OpPC, V0))
21565 return false;
21566 continue;
21567}
21568#endif
21569#ifdef GET_DISASM
21570case OP_GetPtrFieldPop:
21571 Text.Op = PrintName("GetPtrFieldPop");
21572 Text.Args.push_back(printArg<uint32_t>(P, PC));
21573 break;
21574#endif
21575#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21576bool emitGetPtrFieldPop( uint32_t , SourceInfo);
21577#endif
21578#ifdef GET_LINK_IMPL
21579bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
21580 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
21581}
21582#endif
21583#ifdef GET_EVAL_IMPL
21584bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
21585 if (!isActive()) return true;
21586 CurrentSource = L;
21587 return GetPtrFieldPop(S, OpPC, A0);
21588}
21589#endif
21590#ifdef GET_OPCODE_NAMES
21591OP_GetPtrGlobal,
21592#endif
21593#ifdef GET_INTERP
21594case OP_GetPtrGlobal: {
21595 const auto V0 = ReadArg<uint32_t>(S, PC);
21596 if (!GetPtrGlobal(S, OpPC, V0))
21597 return false;
21598 continue;
21599}
21600#endif
21601#ifdef GET_DISASM
21602case OP_GetPtrGlobal:
21603 Text.Op = PrintName("GetPtrGlobal");
21604 Text.Args.push_back(printArg<uint32_t>(P, PC));
21605 break;
21606#endif
21607#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21608bool emitGetPtrGlobal( uint32_t , SourceInfo);
21609#endif
21610#ifdef GET_LINK_IMPL
21611bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
21612 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
21613}
21614#endif
21615#ifdef GET_EVAL_IMPL
21616bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
21617 if (!isActive()) return true;
21618 CurrentSource = L;
21619 return GetPtrGlobal(S, OpPC, A0);
21620}
21621#endif
21622#ifdef GET_OPCODE_NAMES
21623OP_GetPtrLocal,
21624#endif
21625#ifdef GET_INTERP
21626case OP_GetPtrLocal: {
21627 const auto V0 = ReadArg<uint32_t>(S, PC);
21628 if (!GetPtrLocal(S, OpPC, V0))
21629 return false;
21630 continue;
21631}
21632#endif
21633#ifdef GET_DISASM
21634case OP_GetPtrLocal:
21635 Text.Op = PrintName("GetPtrLocal");
21636 Text.Args.push_back(printArg<uint32_t>(P, PC));
21637 break;
21638#endif
21639#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21640bool emitGetPtrLocal( uint32_t , SourceInfo);
21641#endif
21642#ifdef GET_LINK_IMPL
21643bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
21644 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
21645}
21646#endif
21647#ifdef GET_OPCODE_NAMES
21648OP_GetPtrParam,
21649#endif
21650#ifdef GET_INTERP
21651case OP_GetPtrParam: {
21652 const auto V0 = ReadArg<uint32_t>(S, PC);
21653 if (!GetPtrParam(S, OpPC, V0))
21654 return false;
21655 continue;
21656}
21657#endif
21658#ifdef GET_DISASM
21659case OP_GetPtrParam:
21660 Text.Op = PrintName("GetPtrParam");
21661 Text.Args.push_back(printArg<uint32_t>(P, PC));
21662 break;
21663#endif
21664#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21665bool emitGetPtrParam( uint32_t , SourceInfo);
21666#endif
21667#ifdef GET_LINK_IMPL
21668bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
21669 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
21670}
21671#endif
21672#ifdef GET_EVAL_IMPL
21673bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
21674 if (!isActive()) return true;
21675 CurrentSource = L;
21676 return GetPtrParam(S, OpPC, A0);
21677}
21678#endif
21679#ifdef GET_OPCODE_NAMES
21680OP_GetPtrThisBase,
21681#endif
21682#ifdef GET_INTERP
21683case OP_GetPtrThisBase: {
21684 const auto V0 = ReadArg<uint32_t>(S, PC);
21685 if (!GetPtrThisBase(S, OpPC, V0))
21686 return false;
21687 continue;
21688}
21689#endif
21690#ifdef GET_DISASM
21691case OP_GetPtrThisBase:
21692 Text.Op = PrintName("GetPtrThisBase");
21693 Text.Args.push_back(printArg<uint32_t>(P, PC));
21694 break;
21695#endif
21696#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21697bool emitGetPtrThisBase( uint32_t , SourceInfo);
21698#endif
21699#ifdef GET_LINK_IMPL
21700bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
21701 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
21702}
21703#endif
21704#ifdef GET_EVAL_IMPL
21705bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
21706 if (!isActive()) return true;
21707 CurrentSource = L;
21708 return GetPtrThisBase(S, OpPC, A0);
21709}
21710#endif
21711#ifdef GET_OPCODE_NAMES
21712OP_GetPtrThisField,
21713#endif
21714#ifdef GET_INTERP
21715case OP_GetPtrThisField: {
21716 const auto V0 = ReadArg<uint32_t>(S, PC);
21717 if (!GetPtrThisField(S, OpPC, V0))
21718 return false;
21719 continue;
21720}
21721#endif
21722#ifdef GET_DISASM
21723case OP_GetPtrThisField:
21724 Text.Op = PrintName("GetPtrThisField");
21725 Text.Args.push_back(printArg<uint32_t>(P, PC));
21726 break;
21727#endif
21728#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21729bool emitGetPtrThisField( uint32_t , SourceInfo);
21730#endif
21731#ifdef GET_LINK_IMPL
21732bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
21733 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
21734}
21735#endif
21736#ifdef GET_EVAL_IMPL
21737bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
21738 if (!isActive()) return true;
21739 CurrentSource = L;
21740 return GetPtrThisField(S, OpPC, A0);
21741}
21742#endif
21743#ifdef GET_OPCODE_NAMES
21744OP_GetPtrThisVirtBase,
21745#endif
21746#ifdef GET_INTERP
21747case OP_GetPtrThisVirtBase: {
21748 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
21749 if (!GetPtrThisVirtBase(S, OpPC, V0))
21750 return false;
21751 continue;
21752}
21753#endif
21754#ifdef GET_DISASM
21755case OP_GetPtrThisVirtBase:
21756 Text.Op = PrintName("GetPtrThisVirtBase");
21757 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
21758 break;
21759#endif
21760#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21761bool emitGetPtrThisVirtBase( const RecordDecl * , SourceInfo);
21762#endif
21763#ifdef GET_LINK_IMPL
21764bool ByteCodeEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
21765 return emitOp<const RecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
21766}
21767#endif
21768#ifdef GET_EVAL_IMPL
21769bool EvalEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
21770 if (!isActive()) return true;
21771 CurrentSource = L;
21772 return GetPtrThisVirtBase(S, OpPC, A0);
21773}
21774#endif
21775#ifdef GET_OPCODE_NAMES
21776OP_GetPtrVirtBasePop,
21777#endif
21778#ifdef GET_INTERP
21779case OP_GetPtrVirtBasePop: {
21780 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
21781 if (!GetPtrVirtBasePop(S, OpPC, V0))
21782 return false;
21783 continue;
21784}
21785#endif
21786#ifdef GET_DISASM
21787case OP_GetPtrVirtBasePop:
21788 Text.Op = PrintName("GetPtrVirtBasePop");
21789 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
21790 break;
21791#endif
21792#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21793bool emitGetPtrVirtBasePop( const RecordDecl * , SourceInfo);
21794#endif
21795#ifdef GET_LINK_IMPL
21796bool ByteCodeEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
21797 return emitOp<const RecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
21798}
21799#endif
21800#ifdef GET_EVAL_IMPL
21801bool EvalEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
21802 if (!isActive()) return true;
21803 CurrentSource = L;
21804 return GetPtrVirtBasePop(S, OpPC, A0);
21805}
21806#endif
21807#ifdef GET_OPCODE_NAMES
21808OP_GetThisFieldSint8,
21809OP_GetThisFieldUint8,
21810OP_GetThisFieldSint16,
21811OP_GetThisFieldUint16,
21812OP_GetThisFieldSint32,
21813OP_GetThisFieldUint32,
21814OP_GetThisFieldSint64,
21815OP_GetThisFieldUint64,
21816OP_GetThisFieldIntAP,
21817OP_GetThisFieldIntAPS,
21818OP_GetThisFieldBool,
21819OP_GetThisFieldFixedPoint,
21820OP_GetThisFieldPtr,
21821OP_GetThisFieldMemberPtr,
21822OP_GetThisFieldFloat,
21823#endif
21824#ifdef GET_INTERP
21825case OP_GetThisFieldSint8: {
21826 const auto V0 = ReadArg<uint32_t>(S, PC);
21827 if (!GetThisField<PT_Sint8>(S, OpPC, V0))
21828 return false;
21829 continue;
21830}
21831case OP_GetThisFieldUint8: {
21832 const auto V0 = ReadArg<uint32_t>(S, PC);
21833 if (!GetThisField<PT_Uint8>(S, OpPC, V0))
21834 return false;
21835 continue;
21836}
21837case OP_GetThisFieldSint16: {
21838 const auto V0 = ReadArg<uint32_t>(S, PC);
21839 if (!GetThisField<PT_Sint16>(S, OpPC, V0))
21840 return false;
21841 continue;
21842}
21843case OP_GetThisFieldUint16: {
21844 const auto V0 = ReadArg<uint32_t>(S, PC);
21845 if (!GetThisField<PT_Uint16>(S, OpPC, V0))
21846 return false;
21847 continue;
21848}
21849case OP_GetThisFieldSint32: {
21850 const auto V0 = ReadArg<uint32_t>(S, PC);
21851 if (!GetThisField<PT_Sint32>(S, OpPC, V0))
21852 return false;
21853 continue;
21854}
21855case OP_GetThisFieldUint32: {
21856 const auto V0 = ReadArg<uint32_t>(S, PC);
21857 if (!GetThisField<PT_Uint32>(S, OpPC, V0))
21858 return false;
21859 continue;
21860}
21861case OP_GetThisFieldSint64: {
21862 const auto V0 = ReadArg<uint32_t>(S, PC);
21863 if (!GetThisField<PT_Sint64>(S, OpPC, V0))
21864 return false;
21865 continue;
21866}
21867case OP_GetThisFieldUint64: {
21868 const auto V0 = ReadArg<uint32_t>(S, PC);
21869 if (!GetThisField<PT_Uint64>(S, OpPC, V0))
21870 return false;
21871 continue;
21872}
21873case OP_GetThisFieldIntAP: {
21874 const auto V0 = ReadArg<uint32_t>(S, PC);
21875 if (!GetThisField<PT_IntAP>(S, OpPC, V0))
21876 return false;
21877 continue;
21878}
21879case OP_GetThisFieldIntAPS: {
21880 const auto V0 = ReadArg<uint32_t>(S, PC);
21881 if (!GetThisField<PT_IntAPS>(S, OpPC, V0))
21882 return false;
21883 continue;
21884}
21885case OP_GetThisFieldBool: {
21886 const auto V0 = ReadArg<uint32_t>(S, PC);
21887 if (!GetThisField<PT_Bool>(S, OpPC, V0))
21888 return false;
21889 continue;
21890}
21891case OP_GetThisFieldFixedPoint: {
21892 const auto V0 = ReadArg<uint32_t>(S, PC);
21893 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0))
21894 return false;
21895 continue;
21896}
21897case OP_GetThisFieldPtr: {
21898 const auto V0 = ReadArg<uint32_t>(S, PC);
21899 if (!GetThisField<PT_Ptr>(S, OpPC, V0))
21900 return false;
21901 continue;
21902}
21903case OP_GetThisFieldMemberPtr: {
21904 const auto V0 = ReadArg<uint32_t>(S, PC);
21905 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0))
21906 return false;
21907 continue;
21908}
21909case OP_GetThisFieldFloat: {
21910 const auto V0 = ReadArg<uint32_t>(S, PC);
21911 if (!GetThisField<PT_Float>(S, OpPC, V0))
21912 return false;
21913 continue;
21914}
21915#endif
21916#ifdef GET_DISASM
21917case OP_GetThisFieldSint8:
21918 Text.Op = PrintName("GetThisFieldSint8");
21919 Text.Args.push_back(printArg<uint32_t>(P, PC));
21920 break;
21921case OP_GetThisFieldUint8:
21922 Text.Op = PrintName("GetThisFieldUint8");
21923 Text.Args.push_back(printArg<uint32_t>(P, PC));
21924 break;
21925case OP_GetThisFieldSint16:
21926 Text.Op = PrintName("GetThisFieldSint16");
21927 Text.Args.push_back(printArg<uint32_t>(P, PC));
21928 break;
21929case OP_GetThisFieldUint16:
21930 Text.Op = PrintName("GetThisFieldUint16");
21931 Text.Args.push_back(printArg<uint32_t>(P, PC));
21932 break;
21933case OP_GetThisFieldSint32:
21934 Text.Op = PrintName("GetThisFieldSint32");
21935 Text.Args.push_back(printArg<uint32_t>(P, PC));
21936 break;
21937case OP_GetThisFieldUint32:
21938 Text.Op = PrintName("GetThisFieldUint32");
21939 Text.Args.push_back(printArg<uint32_t>(P, PC));
21940 break;
21941case OP_GetThisFieldSint64:
21942 Text.Op = PrintName("GetThisFieldSint64");
21943 Text.Args.push_back(printArg<uint32_t>(P, PC));
21944 break;
21945case OP_GetThisFieldUint64:
21946 Text.Op = PrintName("GetThisFieldUint64");
21947 Text.Args.push_back(printArg<uint32_t>(P, PC));
21948 break;
21949case OP_GetThisFieldIntAP:
21950 Text.Op = PrintName("GetThisFieldIntAP");
21951 Text.Args.push_back(printArg<uint32_t>(P, PC));
21952 break;
21953case OP_GetThisFieldIntAPS:
21954 Text.Op = PrintName("GetThisFieldIntAPS");
21955 Text.Args.push_back(printArg<uint32_t>(P, PC));
21956 break;
21957case OP_GetThisFieldBool:
21958 Text.Op = PrintName("GetThisFieldBool");
21959 Text.Args.push_back(printArg<uint32_t>(P, PC));
21960 break;
21961case OP_GetThisFieldFixedPoint:
21962 Text.Op = PrintName("GetThisFieldFixedPoint");
21963 Text.Args.push_back(printArg<uint32_t>(P, PC));
21964 break;
21965case OP_GetThisFieldPtr:
21966 Text.Op = PrintName("GetThisFieldPtr");
21967 Text.Args.push_back(printArg<uint32_t>(P, PC));
21968 break;
21969case OP_GetThisFieldMemberPtr:
21970 Text.Op = PrintName("GetThisFieldMemberPtr");
21971 Text.Args.push_back(printArg<uint32_t>(P, PC));
21972 break;
21973case OP_GetThisFieldFloat:
21974 Text.Op = PrintName("GetThisFieldFloat");
21975 Text.Args.push_back(printArg<uint32_t>(P, PC));
21976 break;
21977#endif
21978#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21979bool emitGetThisFieldSint8( uint32_t , SourceInfo);
21980bool emitGetThisFieldUint8( uint32_t , SourceInfo);
21981bool emitGetThisFieldSint16( uint32_t , SourceInfo);
21982bool emitGetThisFieldUint16( uint32_t , SourceInfo);
21983bool emitGetThisFieldSint32( uint32_t , SourceInfo);
21984bool emitGetThisFieldUint32( uint32_t , SourceInfo);
21985bool emitGetThisFieldSint64( uint32_t , SourceInfo);
21986bool emitGetThisFieldUint64( uint32_t , SourceInfo);
21987bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
21988bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
21989bool emitGetThisFieldBool( uint32_t , SourceInfo);
21990bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
21991bool emitGetThisFieldPtr( uint32_t , SourceInfo);
21992bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
21993bool emitGetThisFieldFloat( uint32_t , SourceInfo);
21994#endif
21995#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21996[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
21997#endif
21998#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21999bool
22000#if defined(GET_EVAL_IMPL)
22001EvalEmitter
22002#else
22003ByteCodeEmitter
22004#endif
22005::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
22006 switch (T0) {
22007 case PT_Sint8:
22008 return emitGetThisFieldSint8(A0, I);
22009 case PT_Uint8:
22010 return emitGetThisFieldUint8(A0, I);
22011 case PT_Sint16:
22012 return emitGetThisFieldSint16(A0, I);
22013 case PT_Uint16:
22014 return emitGetThisFieldUint16(A0, I);
22015 case PT_Sint32:
22016 return emitGetThisFieldSint32(A0, I);
22017 case PT_Uint32:
22018 return emitGetThisFieldUint32(A0, I);
22019 case PT_Sint64:
22020 return emitGetThisFieldSint64(A0, I);
22021 case PT_Uint64:
22022 return emitGetThisFieldUint64(A0, I);
22023 case PT_IntAP:
22024 return emitGetThisFieldIntAP(A0, I);
22025 case PT_IntAPS:
22026 return emitGetThisFieldIntAPS(A0, I);
22027 case PT_Bool:
22028 return emitGetThisFieldBool(A0, I);
22029 case PT_FixedPoint:
22030 return emitGetThisFieldFixedPoint(A0, I);
22031 case PT_Ptr:
22032 return emitGetThisFieldPtr(A0, I);
22033 case PT_MemberPtr:
22034 return emitGetThisFieldMemberPtr(A0, I);
22035 case PT_Float:
22036 return emitGetThisFieldFloat(A0, I);
22037 }
22038 llvm_unreachable("invalid enum value");
22039}
22040#endif
22041#ifdef GET_LINK_IMPL
22042bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
22043 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
22044}
22045bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
22046 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
22047}
22048bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
22049 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
22050}
22051bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
22052 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
22053}
22054bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
22055 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
22056}
22057bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
22058 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
22059}
22060bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
22061 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
22062}
22063bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
22064 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
22065}
22066bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
22067 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
22068}
22069bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
22070 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
22071}
22072bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
22073 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
22074}
22075bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
22076 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
22077}
22078bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
22079 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
22080}
22081bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
22082 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
22083}
22084bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
22085 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
22086}
22087#endif
22088#ifdef GET_EVAL_IMPL
22089bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
22090 if (!isActive()) return true;
22091 CurrentSource = L;
22092 return GetThisField<PT_Sint8>(S, OpPC, A0);
22093}
22094bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
22095 if (!isActive()) return true;
22096 CurrentSource = L;
22097 return GetThisField<PT_Uint8>(S, OpPC, A0);
22098}
22099bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
22100 if (!isActive()) return true;
22101 CurrentSource = L;
22102 return GetThisField<PT_Sint16>(S, OpPC, A0);
22103}
22104bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
22105 if (!isActive()) return true;
22106 CurrentSource = L;
22107 return GetThisField<PT_Uint16>(S, OpPC, A0);
22108}
22109bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
22110 if (!isActive()) return true;
22111 CurrentSource = L;
22112 return GetThisField<PT_Sint32>(S, OpPC, A0);
22113}
22114bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
22115 if (!isActive()) return true;
22116 CurrentSource = L;
22117 return GetThisField<PT_Uint32>(S, OpPC, A0);
22118}
22119bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
22120 if (!isActive()) return true;
22121 CurrentSource = L;
22122 return GetThisField<PT_Sint64>(S, OpPC, A0);
22123}
22124bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
22125 if (!isActive()) return true;
22126 CurrentSource = L;
22127 return GetThisField<PT_Uint64>(S, OpPC, A0);
22128}
22129bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
22130 if (!isActive()) return true;
22131 CurrentSource = L;
22132 return GetThisField<PT_IntAP>(S, OpPC, A0);
22133}
22134bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
22135 if (!isActive()) return true;
22136 CurrentSource = L;
22137 return GetThisField<PT_IntAPS>(S, OpPC, A0);
22138}
22139bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
22140 if (!isActive()) return true;
22141 CurrentSource = L;
22142 return GetThisField<PT_Bool>(S, OpPC, A0);
22143}
22144bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
22145 if (!isActive()) return true;
22146 CurrentSource = L;
22147 return GetThisField<PT_FixedPoint>(S, OpPC, A0);
22148}
22149bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
22150 if (!isActive()) return true;
22151 CurrentSource = L;
22152 return GetThisField<PT_Ptr>(S, OpPC, A0);
22153}
22154bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
22155 if (!isActive()) return true;
22156 CurrentSource = L;
22157 return GetThisField<PT_MemberPtr>(S, OpPC, A0);
22158}
22159bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
22160 if (!isActive()) return true;
22161 CurrentSource = L;
22162 return GetThisField<PT_Float>(S, OpPC, A0);
22163}
22164#endif
22165#ifdef GET_OPCODE_NAMES
22166OP_GetTypeid,
22167#endif
22168#ifdef GET_INTERP
22169case OP_GetTypeid: {
22170 const auto V0 = ReadArg<const Type *>(S, PC);
22171 const auto V1 = ReadArg<const Type *>(S, PC);
22172 if (!GetTypeid(S, OpPC, V0, V1))
22173 return false;
22174 continue;
22175}
22176#endif
22177#ifdef GET_DISASM
22178case OP_GetTypeid:
22179 Text.Op = PrintName("GetTypeid");
22180 Text.Args.push_back(printArg<const Type *>(P, PC));
22181 Text.Args.push_back(printArg<const Type *>(P, PC));
22182 break;
22183#endif
22184#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22185bool emitGetTypeid( const Type * , const Type * , SourceInfo);
22186#endif
22187#ifdef GET_LINK_IMPL
22188bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
22189 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
22190}
22191#endif
22192#ifdef GET_EVAL_IMPL
22193bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
22194 if (!isActive()) return true;
22195 CurrentSource = L;
22196 return GetTypeid(S, OpPC, A0, A1);
22197}
22198#endif
22199#ifdef GET_OPCODE_NAMES
22200OP_GetTypeidPtr,
22201#endif
22202#ifdef GET_INTERP
22203case OP_GetTypeidPtr: {
22204 const auto V0 = ReadArg<const Type *>(S, PC);
22205 if (!GetTypeidPtr(S, OpPC, V0))
22206 return false;
22207 continue;
22208}
22209#endif
22210#ifdef GET_DISASM
22211case OP_GetTypeidPtr:
22212 Text.Op = PrintName("GetTypeidPtr");
22213 Text.Args.push_back(printArg<const Type *>(P, PC));
22214 break;
22215#endif
22216#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22217bool emitGetTypeidPtr( const Type * , SourceInfo);
22218#endif
22219#ifdef GET_LINK_IMPL
22220bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
22221 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
22222}
22223#endif
22224#ifdef GET_EVAL_IMPL
22225bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
22226 if (!isActive()) return true;
22227 CurrentSource = L;
22228 return GetTypeidPtr(S, OpPC, A0);
22229}
22230#endif
22231#ifdef GET_OPCODE_NAMES
22232OP_IncSint8,
22233OP_IncUint8,
22234OP_IncSint16,
22235OP_IncUint16,
22236OP_IncSint32,
22237OP_IncUint32,
22238OP_IncSint64,
22239OP_IncUint64,
22240OP_IncIntAP,
22241OP_IncIntAPS,
22242OP_IncBool,
22243OP_IncFixedPoint,
22244#endif
22245#ifdef GET_INTERP
22246case OP_IncSint8: {
22247 const auto V0 = ReadArg<bool>(S, PC);
22248 if (!Inc<PT_Sint8>(S, OpPC, V0))
22249 return false;
22250 continue;
22251}
22252case OP_IncUint8: {
22253 const auto V0 = ReadArg<bool>(S, PC);
22254 if (!Inc<PT_Uint8>(S, OpPC, V0))
22255 return false;
22256 continue;
22257}
22258case OP_IncSint16: {
22259 const auto V0 = ReadArg<bool>(S, PC);
22260 if (!Inc<PT_Sint16>(S, OpPC, V0))
22261 return false;
22262 continue;
22263}
22264case OP_IncUint16: {
22265 const auto V0 = ReadArg<bool>(S, PC);
22266 if (!Inc<PT_Uint16>(S, OpPC, V0))
22267 return false;
22268 continue;
22269}
22270case OP_IncSint32: {
22271 const auto V0 = ReadArg<bool>(S, PC);
22272 if (!Inc<PT_Sint32>(S, OpPC, V0))
22273 return false;
22274 continue;
22275}
22276case OP_IncUint32: {
22277 const auto V0 = ReadArg<bool>(S, PC);
22278 if (!Inc<PT_Uint32>(S, OpPC, V0))
22279 return false;
22280 continue;
22281}
22282case OP_IncSint64: {
22283 const auto V0 = ReadArg<bool>(S, PC);
22284 if (!Inc<PT_Sint64>(S, OpPC, V0))
22285 return false;
22286 continue;
22287}
22288case OP_IncUint64: {
22289 const auto V0 = ReadArg<bool>(S, PC);
22290 if (!Inc<PT_Uint64>(S, OpPC, V0))
22291 return false;
22292 continue;
22293}
22294case OP_IncIntAP: {
22295 const auto V0 = ReadArg<bool>(S, PC);
22296 if (!Inc<PT_IntAP>(S, OpPC, V0))
22297 return false;
22298 continue;
22299}
22300case OP_IncIntAPS: {
22301 const auto V0 = ReadArg<bool>(S, PC);
22302 if (!Inc<PT_IntAPS>(S, OpPC, V0))
22303 return false;
22304 continue;
22305}
22306case OP_IncBool: {
22307 const auto V0 = ReadArg<bool>(S, PC);
22308 if (!Inc<PT_Bool>(S, OpPC, V0))
22309 return false;
22310 continue;
22311}
22312case OP_IncFixedPoint: {
22313 const auto V0 = ReadArg<bool>(S, PC);
22314 if (!Inc<PT_FixedPoint>(S, OpPC, V0))
22315 return false;
22316 continue;
22317}
22318#endif
22319#ifdef GET_DISASM
22320case OP_IncSint8:
22321 Text.Op = PrintName("IncSint8");
22322 Text.Args.push_back(printArg<bool>(P, PC));
22323 break;
22324case OP_IncUint8:
22325 Text.Op = PrintName("IncUint8");
22326 Text.Args.push_back(printArg<bool>(P, PC));
22327 break;
22328case OP_IncSint16:
22329 Text.Op = PrintName("IncSint16");
22330 Text.Args.push_back(printArg<bool>(P, PC));
22331 break;
22332case OP_IncUint16:
22333 Text.Op = PrintName("IncUint16");
22334 Text.Args.push_back(printArg<bool>(P, PC));
22335 break;
22336case OP_IncSint32:
22337 Text.Op = PrintName("IncSint32");
22338 Text.Args.push_back(printArg<bool>(P, PC));
22339 break;
22340case OP_IncUint32:
22341 Text.Op = PrintName("IncUint32");
22342 Text.Args.push_back(printArg<bool>(P, PC));
22343 break;
22344case OP_IncSint64:
22345 Text.Op = PrintName("IncSint64");
22346 Text.Args.push_back(printArg<bool>(P, PC));
22347 break;
22348case OP_IncUint64:
22349 Text.Op = PrintName("IncUint64");
22350 Text.Args.push_back(printArg<bool>(P, PC));
22351 break;
22352case OP_IncIntAP:
22353 Text.Op = PrintName("IncIntAP");
22354 Text.Args.push_back(printArg<bool>(P, PC));
22355 break;
22356case OP_IncIntAPS:
22357 Text.Op = PrintName("IncIntAPS");
22358 Text.Args.push_back(printArg<bool>(P, PC));
22359 break;
22360case OP_IncBool:
22361 Text.Op = PrintName("IncBool");
22362 Text.Args.push_back(printArg<bool>(P, PC));
22363 break;
22364case OP_IncFixedPoint:
22365 Text.Op = PrintName("IncFixedPoint");
22366 Text.Args.push_back(printArg<bool>(P, PC));
22367 break;
22368#endif
22369#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22370bool emitIncSint8( bool , SourceInfo);
22371bool emitIncUint8( bool , SourceInfo);
22372bool emitIncSint16( bool , SourceInfo);
22373bool emitIncUint16( bool , SourceInfo);
22374bool emitIncSint32( bool , SourceInfo);
22375bool emitIncUint32( bool , SourceInfo);
22376bool emitIncSint64( bool , SourceInfo);
22377bool emitIncUint64( bool , SourceInfo);
22378bool emitIncIntAP( bool , SourceInfo);
22379bool emitIncIntAPS( bool , SourceInfo);
22380bool emitIncBool( bool , SourceInfo);
22381bool emitIncFixedPoint( bool , SourceInfo);
22382#endif
22383#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22384[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
22385#endif
22386#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22387bool
22388#if defined(GET_EVAL_IMPL)
22389EvalEmitter
22390#else
22391ByteCodeEmitter
22392#endif
22393::emitInc(PrimType T0, bool A0, SourceInfo I) {
22394 switch (T0) {
22395 case PT_Sint8:
22396 return emitIncSint8(A0, I);
22397 case PT_Uint8:
22398 return emitIncUint8(A0, I);
22399 case PT_Sint16:
22400 return emitIncSint16(A0, I);
22401 case PT_Uint16:
22402 return emitIncUint16(A0, I);
22403 case PT_Sint32:
22404 return emitIncSint32(A0, I);
22405 case PT_Uint32:
22406 return emitIncUint32(A0, I);
22407 case PT_Sint64:
22408 return emitIncSint64(A0, I);
22409 case PT_Uint64:
22410 return emitIncUint64(A0, I);
22411 case PT_IntAP:
22412 return emitIncIntAP(A0, I);
22413 case PT_IntAPS:
22414 return emitIncIntAPS(A0, I);
22415 case PT_Bool:
22416 return emitIncBool(A0, I);
22417 case PT_FixedPoint:
22418 return emitIncFixedPoint(A0, I);
22419 default: llvm_unreachable("invalid type: emitInc");
22420 }
22421 llvm_unreachable("invalid enum value");
22422}
22423#endif
22424#ifdef GET_LINK_IMPL
22425bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
22426 return emitOp<bool>(OP_IncSint8, A0, L);
22427}
22428bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
22429 return emitOp<bool>(OP_IncUint8, A0, L);
22430}
22431bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
22432 return emitOp<bool>(OP_IncSint16, A0, L);
22433}
22434bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
22435 return emitOp<bool>(OP_IncUint16, A0, L);
22436}
22437bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
22438 return emitOp<bool>(OP_IncSint32, A0, L);
22439}
22440bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
22441 return emitOp<bool>(OP_IncUint32, A0, L);
22442}
22443bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
22444 return emitOp<bool>(OP_IncSint64, A0, L);
22445}
22446bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
22447 return emitOp<bool>(OP_IncUint64, A0, L);
22448}
22449bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
22450 return emitOp<bool>(OP_IncIntAP, A0, L);
22451}
22452bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
22453 return emitOp<bool>(OP_IncIntAPS, A0, L);
22454}
22455bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
22456 return emitOp<bool>(OP_IncBool, A0, L);
22457}
22458bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
22459 return emitOp<bool>(OP_IncFixedPoint, A0, L);
22460}
22461#endif
22462#ifdef GET_EVAL_IMPL
22463bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
22464 if (!isActive()) return true;
22465 CurrentSource = L;
22466 return Inc<PT_Sint8>(S, OpPC, A0);
22467}
22468bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
22469 if (!isActive()) return true;
22470 CurrentSource = L;
22471 return Inc<PT_Uint8>(S, OpPC, A0);
22472}
22473bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
22474 if (!isActive()) return true;
22475 CurrentSource = L;
22476 return Inc<PT_Sint16>(S, OpPC, A0);
22477}
22478bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
22479 if (!isActive()) return true;
22480 CurrentSource = L;
22481 return Inc<PT_Uint16>(S, OpPC, A0);
22482}
22483bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
22484 if (!isActive()) return true;
22485 CurrentSource = L;
22486 return Inc<PT_Sint32>(S, OpPC, A0);
22487}
22488bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
22489 if (!isActive()) return true;
22490 CurrentSource = L;
22491 return Inc<PT_Uint32>(S, OpPC, A0);
22492}
22493bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
22494 if (!isActive()) return true;
22495 CurrentSource = L;
22496 return Inc<PT_Sint64>(S, OpPC, A0);
22497}
22498bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
22499 if (!isActive()) return true;
22500 CurrentSource = L;
22501 return Inc<PT_Uint64>(S, OpPC, A0);
22502}
22503bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
22504 if (!isActive()) return true;
22505 CurrentSource = L;
22506 return Inc<PT_IntAP>(S, OpPC, A0);
22507}
22508bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
22509 if (!isActive()) return true;
22510 CurrentSource = L;
22511 return Inc<PT_IntAPS>(S, OpPC, A0);
22512}
22513bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
22514 if (!isActive()) return true;
22515 CurrentSource = L;
22516 return Inc<PT_Bool>(S, OpPC, A0);
22517}
22518bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
22519 if (!isActive()) return true;
22520 CurrentSource = L;
22521 return Inc<PT_FixedPoint>(S, OpPC, A0);
22522}
22523#endif
22524#ifdef GET_OPCODE_NAMES
22525OP_IncBitfieldSint8,
22526OP_IncBitfieldUint8,
22527OP_IncBitfieldSint16,
22528OP_IncBitfieldUint16,
22529OP_IncBitfieldSint32,
22530OP_IncBitfieldUint32,
22531OP_IncBitfieldSint64,
22532OP_IncBitfieldUint64,
22533OP_IncBitfieldIntAP,
22534OP_IncBitfieldIntAPS,
22535OP_IncBitfieldBool,
22536OP_IncBitfieldFixedPoint,
22537#endif
22538#ifdef GET_INTERP
22539case OP_IncBitfieldSint8: {
22540 const auto V0 = ReadArg<bool>(S, PC);
22541 const auto V1 = ReadArg<uint32_t>(S, PC);
22542 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1))
22543 return false;
22544 continue;
22545}
22546case OP_IncBitfieldUint8: {
22547 const auto V0 = ReadArg<bool>(S, PC);
22548 const auto V1 = ReadArg<uint32_t>(S, PC);
22549 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1))
22550 return false;
22551 continue;
22552}
22553case OP_IncBitfieldSint16: {
22554 const auto V0 = ReadArg<bool>(S, PC);
22555 const auto V1 = ReadArg<uint32_t>(S, PC);
22556 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1))
22557 return false;
22558 continue;
22559}
22560case OP_IncBitfieldUint16: {
22561 const auto V0 = ReadArg<bool>(S, PC);
22562 const auto V1 = ReadArg<uint32_t>(S, PC);
22563 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1))
22564 return false;
22565 continue;
22566}
22567case OP_IncBitfieldSint32: {
22568 const auto V0 = ReadArg<bool>(S, PC);
22569 const auto V1 = ReadArg<uint32_t>(S, PC);
22570 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1))
22571 return false;
22572 continue;
22573}
22574case OP_IncBitfieldUint32: {
22575 const auto V0 = ReadArg<bool>(S, PC);
22576 const auto V1 = ReadArg<uint32_t>(S, PC);
22577 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1))
22578 return false;
22579 continue;
22580}
22581case OP_IncBitfieldSint64: {
22582 const auto V0 = ReadArg<bool>(S, PC);
22583 const auto V1 = ReadArg<uint32_t>(S, PC);
22584 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1))
22585 return false;
22586 continue;
22587}
22588case OP_IncBitfieldUint64: {
22589 const auto V0 = ReadArg<bool>(S, PC);
22590 const auto V1 = ReadArg<uint32_t>(S, PC);
22591 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1))
22592 return false;
22593 continue;
22594}
22595case OP_IncBitfieldIntAP: {
22596 const auto V0 = ReadArg<bool>(S, PC);
22597 const auto V1 = ReadArg<uint32_t>(S, PC);
22598 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1))
22599 return false;
22600 continue;
22601}
22602case OP_IncBitfieldIntAPS: {
22603 const auto V0 = ReadArg<bool>(S, PC);
22604 const auto V1 = ReadArg<uint32_t>(S, PC);
22605 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
22606 return false;
22607 continue;
22608}
22609case OP_IncBitfieldBool: {
22610 const auto V0 = ReadArg<bool>(S, PC);
22611 const auto V1 = ReadArg<uint32_t>(S, PC);
22612 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1))
22613 return false;
22614 continue;
22615}
22616case OP_IncBitfieldFixedPoint: {
22617 const auto V0 = ReadArg<bool>(S, PC);
22618 const auto V1 = ReadArg<uint32_t>(S, PC);
22619 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
22620 return false;
22621 continue;
22622}
22623#endif
22624#ifdef GET_DISASM
22625case OP_IncBitfieldSint8:
22626 Text.Op = PrintName("IncBitfieldSint8");
22627 Text.Args.push_back(printArg<bool>(P, PC));
22628 Text.Args.push_back(printArg<uint32_t>(P, PC));
22629 break;
22630case OP_IncBitfieldUint8:
22631 Text.Op = PrintName("IncBitfieldUint8");
22632 Text.Args.push_back(printArg<bool>(P, PC));
22633 Text.Args.push_back(printArg<uint32_t>(P, PC));
22634 break;
22635case OP_IncBitfieldSint16:
22636 Text.Op = PrintName("IncBitfieldSint16");
22637 Text.Args.push_back(printArg<bool>(P, PC));
22638 Text.Args.push_back(printArg<uint32_t>(P, PC));
22639 break;
22640case OP_IncBitfieldUint16:
22641 Text.Op = PrintName("IncBitfieldUint16");
22642 Text.Args.push_back(printArg<bool>(P, PC));
22643 Text.Args.push_back(printArg<uint32_t>(P, PC));
22644 break;
22645case OP_IncBitfieldSint32:
22646 Text.Op = PrintName("IncBitfieldSint32");
22647 Text.Args.push_back(printArg<bool>(P, PC));
22648 Text.Args.push_back(printArg<uint32_t>(P, PC));
22649 break;
22650case OP_IncBitfieldUint32:
22651 Text.Op = PrintName("IncBitfieldUint32");
22652 Text.Args.push_back(printArg<bool>(P, PC));
22653 Text.Args.push_back(printArg<uint32_t>(P, PC));
22654 break;
22655case OP_IncBitfieldSint64:
22656 Text.Op = PrintName("IncBitfieldSint64");
22657 Text.Args.push_back(printArg<bool>(P, PC));
22658 Text.Args.push_back(printArg<uint32_t>(P, PC));
22659 break;
22660case OP_IncBitfieldUint64:
22661 Text.Op = PrintName("IncBitfieldUint64");
22662 Text.Args.push_back(printArg<bool>(P, PC));
22663 Text.Args.push_back(printArg<uint32_t>(P, PC));
22664 break;
22665case OP_IncBitfieldIntAP:
22666 Text.Op = PrintName("IncBitfieldIntAP");
22667 Text.Args.push_back(printArg<bool>(P, PC));
22668 Text.Args.push_back(printArg<uint32_t>(P, PC));
22669 break;
22670case OP_IncBitfieldIntAPS:
22671 Text.Op = PrintName("IncBitfieldIntAPS");
22672 Text.Args.push_back(printArg<bool>(P, PC));
22673 Text.Args.push_back(printArg<uint32_t>(P, PC));
22674 break;
22675case OP_IncBitfieldBool:
22676 Text.Op = PrintName("IncBitfieldBool");
22677 Text.Args.push_back(printArg<bool>(P, PC));
22678 Text.Args.push_back(printArg<uint32_t>(P, PC));
22679 break;
22680case OP_IncBitfieldFixedPoint:
22681 Text.Op = PrintName("IncBitfieldFixedPoint");
22682 Text.Args.push_back(printArg<bool>(P, PC));
22683 Text.Args.push_back(printArg<uint32_t>(P, PC));
22684 break;
22685#endif
22686#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22687bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
22688bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
22689bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
22690bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
22691bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
22692bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
22693bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
22694bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
22695bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
22696bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
22697bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
22698bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
22699#endif
22700#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22701[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
22702#endif
22703#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22704bool
22705#if defined(GET_EVAL_IMPL)
22706EvalEmitter
22707#else
22708ByteCodeEmitter
22709#endif
22710::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
22711 switch (T0) {
22712 case PT_Sint8:
22713 return emitIncBitfieldSint8(A0, A1, I);
22714 case PT_Uint8:
22715 return emitIncBitfieldUint8(A0, A1, I);
22716 case PT_Sint16:
22717 return emitIncBitfieldSint16(A0, A1, I);
22718 case PT_Uint16:
22719 return emitIncBitfieldUint16(A0, A1, I);
22720 case PT_Sint32:
22721 return emitIncBitfieldSint32(A0, A1, I);
22722 case PT_Uint32:
22723 return emitIncBitfieldUint32(A0, A1, I);
22724 case PT_Sint64:
22725 return emitIncBitfieldSint64(A0, A1, I);
22726 case PT_Uint64:
22727 return emitIncBitfieldUint64(A0, A1, I);
22728 case PT_IntAP:
22729 return emitIncBitfieldIntAP(A0, A1, I);
22730 case PT_IntAPS:
22731 return emitIncBitfieldIntAPS(A0, A1, I);
22732 case PT_Bool:
22733 return emitIncBitfieldBool(A0, A1, I);
22734 case PT_FixedPoint:
22735 return emitIncBitfieldFixedPoint(A0, A1, I);
22736 default: llvm_unreachable("invalid type: emitIncBitfield");
22737 }
22738 llvm_unreachable("invalid enum value");
22739}
22740#endif
22741#ifdef GET_LINK_IMPL
22742bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
22743 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
22744}
22745bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
22746 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
22747}
22748bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
22749 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
22750}
22751bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
22752 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
22753}
22754bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
22755 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
22756}
22757bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
22758 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
22759}
22760bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
22761 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
22762}
22763bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
22764 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
22765}
22766bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
22767 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
22768}
22769bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
22770 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
22771}
22772bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
22773 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
22774}
22775bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
22776 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
22777}
22778#endif
22779#ifdef GET_EVAL_IMPL
22780bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
22781 if (!isActive()) return true;
22782 CurrentSource = L;
22783 return IncBitfield<PT_Sint8>(S, OpPC, A0, A1);
22784}
22785bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
22786 if (!isActive()) return true;
22787 CurrentSource = L;
22788 return IncBitfield<PT_Uint8>(S, OpPC, A0, A1);
22789}
22790bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
22791 if (!isActive()) return true;
22792 CurrentSource = L;
22793 return IncBitfield<PT_Sint16>(S, OpPC, A0, A1);
22794}
22795bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
22796 if (!isActive()) return true;
22797 CurrentSource = L;
22798 return IncBitfield<PT_Uint16>(S, OpPC, A0, A1);
22799}
22800bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
22801 if (!isActive()) return true;
22802 CurrentSource = L;
22803 return IncBitfield<PT_Sint32>(S, OpPC, A0, A1);
22804}
22805bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
22806 if (!isActive()) return true;
22807 CurrentSource = L;
22808 return IncBitfield<PT_Uint32>(S, OpPC, A0, A1);
22809}
22810bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
22811 if (!isActive()) return true;
22812 CurrentSource = L;
22813 return IncBitfield<PT_Sint64>(S, OpPC, A0, A1);
22814}
22815bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
22816 if (!isActive()) return true;
22817 CurrentSource = L;
22818 return IncBitfield<PT_Uint64>(S, OpPC, A0, A1);
22819}
22820bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
22821 if (!isActive()) return true;
22822 CurrentSource = L;
22823 return IncBitfield<PT_IntAP>(S, OpPC, A0, A1);
22824}
22825bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
22826 if (!isActive()) return true;
22827 CurrentSource = L;
22828 return IncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
22829}
22830bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
22831 if (!isActive()) return true;
22832 CurrentSource = L;
22833 return IncBitfield<PT_Bool>(S, OpPC, A0, A1);
22834}
22835bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
22836 if (!isActive()) return true;
22837 CurrentSource = L;
22838 return IncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
22839}
22840#endif
22841#ifdef GET_OPCODE_NAMES
22842OP_IncPopSint8,
22843OP_IncPopUint8,
22844OP_IncPopSint16,
22845OP_IncPopUint16,
22846OP_IncPopSint32,
22847OP_IncPopUint32,
22848OP_IncPopSint64,
22849OP_IncPopUint64,
22850OP_IncPopIntAP,
22851OP_IncPopIntAPS,
22852OP_IncPopBool,
22853OP_IncPopFixedPoint,
22854#endif
22855#ifdef GET_INTERP
22856case OP_IncPopSint8: {
22857 const auto V0 = ReadArg<bool>(S, PC);
22858 if (!IncPop<PT_Sint8>(S, OpPC, V0))
22859 return false;
22860 continue;
22861}
22862case OP_IncPopUint8: {
22863 const auto V0 = ReadArg<bool>(S, PC);
22864 if (!IncPop<PT_Uint8>(S, OpPC, V0))
22865 return false;
22866 continue;
22867}
22868case OP_IncPopSint16: {
22869 const auto V0 = ReadArg<bool>(S, PC);
22870 if (!IncPop<PT_Sint16>(S, OpPC, V0))
22871 return false;
22872 continue;
22873}
22874case OP_IncPopUint16: {
22875 const auto V0 = ReadArg<bool>(S, PC);
22876 if (!IncPop<PT_Uint16>(S, OpPC, V0))
22877 return false;
22878 continue;
22879}
22880case OP_IncPopSint32: {
22881 const auto V0 = ReadArg<bool>(S, PC);
22882 if (!IncPop<PT_Sint32>(S, OpPC, V0))
22883 return false;
22884 continue;
22885}
22886case OP_IncPopUint32: {
22887 const auto V0 = ReadArg<bool>(S, PC);
22888 if (!IncPop<PT_Uint32>(S, OpPC, V0))
22889 return false;
22890 continue;
22891}
22892case OP_IncPopSint64: {
22893 const auto V0 = ReadArg<bool>(S, PC);
22894 if (!IncPop<PT_Sint64>(S, OpPC, V0))
22895 return false;
22896 continue;
22897}
22898case OP_IncPopUint64: {
22899 const auto V0 = ReadArg<bool>(S, PC);
22900 if (!IncPop<PT_Uint64>(S, OpPC, V0))
22901 return false;
22902 continue;
22903}
22904case OP_IncPopIntAP: {
22905 const auto V0 = ReadArg<bool>(S, PC);
22906 if (!IncPop<PT_IntAP>(S, OpPC, V0))
22907 return false;
22908 continue;
22909}
22910case OP_IncPopIntAPS: {
22911 const auto V0 = ReadArg<bool>(S, PC);
22912 if (!IncPop<PT_IntAPS>(S, OpPC, V0))
22913 return false;
22914 continue;
22915}
22916case OP_IncPopBool: {
22917 const auto V0 = ReadArg<bool>(S, PC);
22918 if (!IncPop<PT_Bool>(S, OpPC, V0))
22919 return false;
22920 continue;
22921}
22922case OP_IncPopFixedPoint: {
22923 const auto V0 = ReadArg<bool>(S, PC);
22924 if (!IncPop<PT_FixedPoint>(S, OpPC, V0))
22925 return false;
22926 continue;
22927}
22928#endif
22929#ifdef GET_DISASM
22930case OP_IncPopSint8:
22931 Text.Op = PrintName("IncPopSint8");
22932 Text.Args.push_back(printArg<bool>(P, PC));
22933 break;
22934case OP_IncPopUint8:
22935 Text.Op = PrintName("IncPopUint8");
22936 Text.Args.push_back(printArg<bool>(P, PC));
22937 break;
22938case OP_IncPopSint16:
22939 Text.Op = PrintName("IncPopSint16");
22940 Text.Args.push_back(printArg<bool>(P, PC));
22941 break;
22942case OP_IncPopUint16:
22943 Text.Op = PrintName("IncPopUint16");
22944 Text.Args.push_back(printArg<bool>(P, PC));
22945 break;
22946case OP_IncPopSint32:
22947 Text.Op = PrintName("IncPopSint32");
22948 Text.Args.push_back(printArg<bool>(P, PC));
22949 break;
22950case OP_IncPopUint32:
22951 Text.Op = PrintName("IncPopUint32");
22952 Text.Args.push_back(printArg<bool>(P, PC));
22953 break;
22954case OP_IncPopSint64:
22955 Text.Op = PrintName("IncPopSint64");
22956 Text.Args.push_back(printArg<bool>(P, PC));
22957 break;
22958case OP_IncPopUint64:
22959 Text.Op = PrintName("IncPopUint64");
22960 Text.Args.push_back(printArg<bool>(P, PC));
22961 break;
22962case OP_IncPopIntAP:
22963 Text.Op = PrintName("IncPopIntAP");
22964 Text.Args.push_back(printArg<bool>(P, PC));
22965 break;
22966case OP_IncPopIntAPS:
22967 Text.Op = PrintName("IncPopIntAPS");
22968 Text.Args.push_back(printArg<bool>(P, PC));
22969 break;
22970case OP_IncPopBool:
22971 Text.Op = PrintName("IncPopBool");
22972 Text.Args.push_back(printArg<bool>(P, PC));
22973 break;
22974case OP_IncPopFixedPoint:
22975 Text.Op = PrintName("IncPopFixedPoint");
22976 Text.Args.push_back(printArg<bool>(P, PC));
22977 break;
22978#endif
22979#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22980bool emitIncPopSint8( bool , SourceInfo);
22981bool emitIncPopUint8( bool , SourceInfo);
22982bool emitIncPopSint16( bool , SourceInfo);
22983bool emitIncPopUint16( bool , SourceInfo);
22984bool emitIncPopSint32( bool , SourceInfo);
22985bool emitIncPopUint32( bool , SourceInfo);
22986bool emitIncPopSint64( bool , SourceInfo);
22987bool emitIncPopUint64( bool , SourceInfo);
22988bool emitIncPopIntAP( bool , SourceInfo);
22989bool emitIncPopIntAPS( bool , SourceInfo);
22990bool emitIncPopBool( bool , SourceInfo);
22991bool emitIncPopFixedPoint( bool , SourceInfo);
22992#endif
22993#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22994[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
22995#endif
22996#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22997bool
22998#if defined(GET_EVAL_IMPL)
22999EvalEmitter
23000#else
23001ByteCodeEmitter
23002#endif
23003::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
23004 switch (T0) {
23005 case PT_Sint8:
23006 return emitIncPopSint8(A0, I);
23007 case PT_Uint8:
23008 return emitIncPopUint8(A0, I);
23009 case PT_Sint16:
23010 return emitIncPopSint16(A0, I);
23011 case PT_Uint16:
23012 return emitIncPopUint16(A0, I);
23013 case PT_Sint32:
23014 return emitIncPopSint32(A0, I);
23015 case PT_Uint32:
23016 return emitIncPopUint32(A0, I);
23017 case PT_Sint64:
23018 return emitIncPopSint64(A0, I);
23019 case PT_Uint64:
23020 return emitIncPopUint64(A0, I);
23021 case PT_IntAP:
23022 return emitIncPopIntAP(A0, I);
23023 case PT_IntAPS:
23024 return emitIncPopIntAPS(A0, I);
23025 case PT_Bool:
23026 return emitIncPopBool(A0, I);
23027 case PT_FixedPoint:
23028 return emitIncPopFixedPoint(A0, I);
23029 default: llvm_unreachable("invalid type: emitIncPop");
23030 }
23031 llvm_unreachable("invalid enum value");
23032}
23033#endif
23034#ifdef GET_LINK_IMPL
23035bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
23036 return emitOp<bool>(OP_IncPopSint8, A0, L);
23037}
23038bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
23039 return emitOp<bool>(OP_IncPopUint8, A0, L);
23040}
23041bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
23042 return emitOp<bool>(OP_IncPopSint16, A0, L);
23043}
23044bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
23045 return emitOp<bool>(OP_IncPopUint16, A0, L);
23046}
23047bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
23048 return emitOp<bool>(OP_IncPopSint32, A0, L);
23049}
23050bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
23051 return emitOp<bool>(OP_IncPopUint32, A0, L);
23052}
23053bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
23054 return emitOp<bool>(OP_IncPopSint64, A0, L);
23055}
23056bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
23057 return emitOp<bool>(OP_IncPopUint64, A0, L);
23058}
23059bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
23060 return emitOp<bool>(OP_IncPopIntAP, A0, L);
23061}
23062bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
23063 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
23064}
23065bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
23066 return emitOp<bool>(OP_IncPopBool, A0, L);
23067}
23068bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
23069 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
23070}
23071#endif
23072#ifdef GET_EVAL_IMPL
23073bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
23074 if (!isActive()) return true;
23075 CurrentSource = L;
23076 return IncPop<PT_Sint8>(S, OpPC, A0);
23077}
23078bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
23079 if (!isActive()) return true;
23080 CurrentSource = L;
23081 return IncPop<PT_Uint8>(S, OpPC, A0);
23082}
23083bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
23084 if (!isActive()) return true;
23085 CurrentSource = L;
23086 return IncPop<PT_Sint16>(S, OpPC, A0);
23087}
23088bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
23089 if (!isActive()) return true;
23090 CurrentSource = L;
23091 return IncPop<PT_Uint16>(S, OpPC, A0);
23092}
23093bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
23094 if (!isActive()) return true;
23095 CurrentSource = L;
23096 return IncPop<PT_Sint32>(S, OpPC, A0);
23097}
23098bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
23099 if (!isActive()) return true;
23100 CurrentSource = L;
23101 return IncPop<PT_Uint32>(S, OpPC, A0);
23102}
23103bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
23104 if (!isActive()) return true;
23105 CurrentSource = L;
23106 return IncPop<PT_Sint64>(S, OpPC, A0);
23107}
23108bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
23109 if (!isActive()) return true;
23110 CurrentSource = L;
23111 return IncPop<PT_Uint64>(S, OpPC, A0);
23112}
23113bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
23114 if (!isActive()) return true;
23115 CurrentSource = L;
23116 return IncPop<PT_IntAP>(S, OpPC, A0);
23117}
23118bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
23119 if (!isActive()) return true;
23120 CurrentSource = L;
23121 return IncPop<PT_IntAPS>(S, OpPC, A0);
23122}
23123bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
23124 if (!isActive()) return true;
23125 CurrentSource = L;
23126 return IncPop<PT_Bool>(S, OpPC, A0);
23127}
23128bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
23129 if (!isActive()) return true;
23130 CurrentSource = L;
23131 return IncPop<PT_FixedPoint>(S, OpPC, A0);
23132}
23133#endif
23134#ifdef GET_OPCODE_NAMES
23135OP_IncPopBitfieldSint8,
23136OP_IncPopBitfieldUint8,
23137OP_IncPopBitfieldSint16,
23138OP_IncPopBitfieldUint16,
23139OP_IncPopBitfieldSint32,
23140OP_IncPopBitfieldUint32,
23141OP_IncPopBitfieldSint64,
23142OP_IncPopBitfieldUint64,
23143OP_IncPopBitfieldIntAP,
23144OP_IncPopBitfieldIntAPS,
23145OP_IncPopBitfieldBool,
23146OP_IncPopBitfieldFixedPoint,
23147#endif
23148#ifdef GET_INTERP
23149case OP_IncPopBitfieldSint8: {
23150 const auto V0 = ReadArg<bool>(S, PC);
23151 const auto V1 = ReadArg<uint32_t>(S, PC);
23152 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
23153 return false;
23154 continue;
23155}
23156case OP_IncPopBitfieldUint8: {
23157 const auto V0 = ReadArg<bool>(S, PC);
23158 const auto V1 = ReadArg<uint32_t>(S, PC);
23159 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
23160 return false;
23161 continue;
23162}
23163case OP_IncPopBitfieldSint16: {
23164 const auto V0 = ReadArg<bool>(S, PC);
23165 const auto V1 = ReadArg<uint32_t>(S, PC);
23166 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
23167 return false;
23168 continue;
23169}
23170case OP_IncPopBitfieldUint16: {
23171 const auto V0 = ReadArg<bool>(S, PC);
23172 const auto V1 = ReadArg<uint32_t>(S, PC);
23173 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
23174 return false;
23175 continue;
23176}
23177case OP_IncPopBitfieldSint32: {
23178 const auto V0 = ReadArg<bool>(S, PC);
23179 const auto V1 = ReadArg<uint32_t>(S, PC);
23180 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
23181 return false;
23182 continue;
23183}
23184case OP_IncPopBitfieldUint32: {
23185 const auto V0 = ReadArg<bool>(S, PC);
23186 const auto V1 = ReadArg<uint32_t>(S, PC);
23187 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
23188 return false;
23189 continue;
23190}
23191case OP_IncPopBitfieldSint64: {
23192 const auto V0 = ReadArg<bool>(S, PC);
23193 const auto V1 = ReadArg<uint32_t>(S, PC);
23194 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
23195 return false;
23196 continue;
23197}
23198case OP_IncPopBitfieldUint64: {
23199 const auto V0 = ReadArg<bool>(S, PC);
23200 const auto V1 = ReadArg<uint32_t>(S, PC);
23201 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
23202 return false;
23203 continue;
23204}
23205case OP_IncPopBitfieldIntAP: {
23206 const auto V0 = ReadArg<bool>(S, PC);
23207 const auto V1 = ReadArg<uint32_t>(S, PC);
23208 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
23209 return false;
23210 continue;
23211}
23212case OP_IncPopBitfieldIntAPS: {
23213 const auto V0 = ReadArg<bool>(S, PC);
23214 const auto V1 = ReadArg<uint32_t>(S, PC);
23215 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
23216 return false;
23217 continue;
23218}
23219case OP_IncPopBitfieldBool: {
23220 const auto V0 = ReadArg<bool>(S, PC);
23221 const auto V1 = ReadArg<uint32_t>(S, PC);
23222 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1))
23223 return false;
23224 continue;
23225}
23226case OP_IncPopBitfieldFixedPoint: {
23227 const auto V0 = ReadArg<bool>(S, PC);
23228 const auto V1 = ReadArg<uint32_t>(S, PC);
23229 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
23230 return false;
23231 continue;
23232}
23233#endif
23234#ifdef GET_DISASM
23235case OP_IncPopBitfieldSint8:
23236 Text.Op = PrintName("IncPopBitfieldSint8");
23237 Text.Args.push_back(printArg<bool>(P, PC));
23238 Text.Args.push_back(printArg<uint32_t>(P, PC));
23239 break;
23240case OP_IncPopBitfieldUint8:
23241 Text.Op = PrintName("IncPopBitfieldUint8");
23242 Text.Args.push_back(printArg<bool>(P, PC));
23243 Text.Args.push_back(printArg<uint32_t>(P, PC));
23244 break;
23245case OP_IncPopBitfieldSint16:
23246 Text.Op = PrintName("IncPopBitfieldSint16");
23247 Text.Args.push_back(printArg<bool>(P, PC));
23248 Text.Args.push_back(printArg<uint32_t>(P, PC));
23249 break;
23250case OP_IncPopBitfieldUint16:
23251 Text.Op = PrintName("IncPopBitfieldUint16");
23252 Text.Args.push_back(printArg<bool>(P, PC));
23253 Text.Args.push_back(printArg<uint32_t>(P, PC));
23254 break;
23255case OP_IncPopBitfieldSint32:
23256 Text.Op = PrintName("IncPopBitfieldSint32");
23257 Text.Args.push_back(printArg<bool>(P, PC));
23258 Text.Args.push_back(printArg<uint32_t>(P, PC));
23259 break;
23260case OP_IncPopBitfieldUint32:
23261 Text.Op = PrintName("IncPopBitfieldUint32");
23262 Text.Args.push_back(printArg<bool>(P, PC));
23263 Text.Args.push_back(printArg<uint32_t>(P, PC));
23264 break;
23265case OP_IncPopBitfieldSint64:
23266 Text.Op = PrintName("IncPopBitfieldSint64");
23267 Text.Args.push_back(printArg<bool>(P, PC));
23268 Text.Args.push_back(printArg<uint32_t>(P, PC));
23269 break;
23270case OP_IncPopBitfieldUint64:
23271 Text.Op = PrintName("IncPopBitfieldUint64");
23272 Text.Args.push_back(printArg<bool>(P, PC));
23273 Text.Args.push_back(printArg<uint32_t>(P, PC));
23274 break;
23275case OP_IncPopBitfieldIntAP:
23276 Text.Op = PrintName("IncPopBitfieldIntAP");
23277 Text.Args.push_back(printArg<bool>(P, PC));
23278 Text.Args.push_back(printArg<uint32_t>(P, PC));
23279 break;
23280case OP_IncPopBitfieldIntAPS:
23281 Text.Op = PrintName("IncPopBitfieldIntAPS");
23282 Text.Args.push_back(printArg<bool>(P, PC));
23283 Text.Args.push_back(printArg<uint32_t>(P, PC));
23284 break;
23285case OP_IncPopBitfieldBool:
23286 Text.Op = PrintName("IncPopBitfieldBool");
23287 Text.Args.push_back(printArg<bool>(P, PC));
23288 Text.Args.push_back(printArg<uint32_t>(P, PC));
23289 break;
23290case OP_IncPopBitfieldFixedPoint:
23291 Text.Op = PrintName("IncPopBitfieldFixedPoint");
23292 Text.Args.push_back(printArg<bool>(P, PC));
23293 Text.Args.push_back(printArg<uint32_t>(P, PC));
23294 break;
23295#endif
23296#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23297bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
23298bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
23299bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
23300bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
23301bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
23302bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
23303bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
23304bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
23305bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
23306bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
23307bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
23308bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
23309#endif
23310#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23311[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
23312#endif
23313#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23314bool
23315#if defined(GET_EVAL_IMPL)
23316EvalEmitter
23317#else
23318ByteCodeEmitter
23319#endif
23320::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
23321 switch (T0) {
23322 case PT_Sint8:
23323 return emitIncPopBitfieldSint8(A0, A1, I);
23324 case PT_Uint8:
23325 return emitIncPopBitfieldUint8(A0, A1, I);
23326 case PT_Sint16:
23327 return emitIncPopBitfieldSint16(A0, A1, I);
23328 case PT_Uint16:
23329 return emitIncPopBitfieldUint16(A0, A1, I);
23330 case PT_Sint32:
23331 return emitIncPopBitfieldSint32(A0, A1, I);
23332 case PT_Uint32:
23333 return emitIncPopBitfieldUint32(A0, A1, I);
23334 case PT_Sint64:
23335 return emitIncPopBitfieldSint64(A0, A1, I);
23336 case PT_Uint64:
23337 return emitIncPopBitfieldUint64(A0, A1, I);
23338 case PT_IntAP:
23339 return emitIncPopBitfieldIntAP(A0, A1, I);
23340 case PT_IntAPS:
23341 return emitIncPopBitfieldIntAPS(A0, A1, I);
23342 case PT_Bool:
23343 return emitIncPopBitfieldBool(A0, A1, I);
23344 case PT_FixedPoint:
23345 return emitIncPopBitfieldFixedPoint(A0, A1, I);
23346 default: llvm_unreachable("invalid type: emitIncPopBitfield");
23347 }
23348 llvm_unreachable("invalid enum value");
23349}
23350#endif
23351#ifdef GET_LINK_IMPL
23352bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
23353 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
23354}
23355bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
23356 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
23357}
23358bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
23359 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
23360}
23361bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
23362 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
23363}
23364bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
23365 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
23366}
23367bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
23368 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
23369}
23370bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
23371 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
23372}
23373bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
23374 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
23375}
23376bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
23377 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
23378}
23379bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
23380 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
23381}
23382bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
23383 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
23384}
23385bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
23386 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
23387}
23388#endif
23389#ifdef GET_EVAL_IMPL
23390bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
23391 if (!isActive()) return true;
23392 CurrentSource = L;
23393 return IncPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
23394}
23395bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
23396 if (!isActive()) return true;
23397 CurrentSource = L;
23398 return IncPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
23399}
23400bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
23401 if (!isActive()) return true;
23402 CurrentSource = L;
23403 return IncPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
23404}
23405bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
23406 if (!isActive()) return true;
23407 CurrentSource = L;
23408 return IncPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
23409}
23410bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
23411 if (!isActive()) return true;
23412 CurrentSource = L;
23413 return IncPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
23414}
23415bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
23416 if (!isActive()) return true;
23417 CurrentSource = L;
23418 return IncPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
23419}
23420bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
23421 if (!isActive()) return true;
23422 CurrentSource = L;
23423 return IncPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
23424}
23425bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
23426 if (!isActive()) return true;
23427 CurrentSource = L;
23428 return IncPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
23429}
23430bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
23431 if (!isActive()) return true;
23432 CurrentSource = L;
23433 return IncPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
23434}
23435bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
23436 if (!isActive()) return true;
23437 CurrentSource = L;
23438 return IncPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
23439}
23440bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
23441 if (!isActive()) return true;
23442 CurrentSource = L;
23443 return IncPopBitfield<PT_Bool>(S, OpPC, A0, A1);
23444}
23445bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
23446 if (!isActive()) return true;
23447 CurrentSource = L;
23448 return IncPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
23449}
23450#endif
23451#ifdef GET_OPCODE_NAMES
23452OP_IncPtr,
23453#endif
23454#ifdef GET_INTERP
23455case OP_IncPtr: {
23456 if (!IncPtr(S, OpPC))
23457 return false;
23458 continue;
23459}
23460#endif
23461#ifdef GET_DISASM
23462case OP_IncPtr:
23463 Text.Op = PrintName("IncPtr");
23464 break;
23465#endif
23466#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23467bool emitIncPtr(SourceInfo);
23468#endif
23469#ifdef GET_LINK_IMPL
23470bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
23471 return emitOp<>(OP_IncPtr, L);
23472}
23473#endif
23474#ifdef GET_EVAL_IMPL
23475bool EvalEmitter::emitIncPtr(SourceInfo L) {
23476 if (!isActive()) return true;
23477 CurrentSource = L;
23478 return IncPtr(S, OpPC);
23479}
23480#endif
23481#ifdef GET_OPCODE_NAMES
23482OP_Incf,
23483#endif
23484#ifdef GET_INTERP
23485case OP_Incf: {
23486 const auto V0 = ReadArg<uint32_t>(S, PC);
23487 if (!Incf(S, OpPC, V0))
23488 return false;
23489 continue;
23490}
23491#endif
23492#ifdef GET_DISASM
23493case OP_Incf:
23494 Text.Op = PrintName("Incf");
23495 Text.Args.push_back(printArg<uint32_t>(P, PC));
23496 break;
23497#endif
23498#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23499bool emitIncf( uint32_t , SourceInfo);
23500#endif
23501#ifdef GET_LINK_IMPL
23502bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
23503 return emitOp<uint32_t>(OP_Incf, A0, L);
23504}
23505#endif
23506#ifdef GET_EVAL_IMPL
23507bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
23508 if (!isActive()) return true;
23509 CurrentSource = L;
23510 return Incf(S, OpPC, A0);
23511}
23512#endif
23513#ifdef GET_OPCODE_NAMES
23514OP_IncfPop,
23515#endif
23516#ifdef GET_INTERP
23517case OP_IncfPop: {
23518 const auto V0 = ReadArg<uint32_t>(S, PC);
23519 if (!IncfPop(S, OpPC, V0))
23520 return false;
23521 continue;
23522}
23523#endif
23524#ifdef GET_DISASM
23525case OP_IncfPop:
23526 Text.Op = PrintName("IncfPop");
23527 Text.Args.push_back(printArg<uint32_t>(P, PC));
23528 break;
23529#endif
23530#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23531bool emitIncfPop( uint32_t , SourceInfo);
23532#endif
23533#ifdef GET_LINK_IMPL
23534bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
23535 return emitOp<uint32_t>(OP_IncfPop, A0, L);
23536}
23537#endif
23538#ifdef GET_EVAL_IMPL
23539bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
23540 if (!isActive()) return true;
23541 CurrentSource = L;
23542 return IncfPop(S, OpPC, A0);
23543}
23544#endif
23545#ifdef GET_OPCODE_NAMES
23546OP_InitSint8,
23547OP_InitUint8,
23548OP_InitSint16,
23549OP_InitUint16,
23550OP_InitSint32,
23551OP_InitUint32,
23552OP_InitSint64,
23553OP_InitUint64,
23554OP_InitIntAP,
23555OP_InitIntAPS,
23556OP_InitBool,
23557OP_InitFixedPoint,
23558OP_InitPtr,
23559OP_InitMemberPtr,
23560OP_InitFloat,
23561#endif
23562#ifdef GET_INTERP
23563case OP_InitSint8: {
23564 if (!Init<PT_Sint8>(S, OpPC))
23565 return false;
23566 continue;
23567}
23568case OP_InitUint8: {
23569 if (!Init<PT_Uint8>(S, OpPC))
23570 return false;
23571 continue;
23572}
23573case OP_InitSint16: {
23574 if (!Init<PT_Sint16>(S, OpPC))
23575 return false;
23576 continue;
23577}
23578case OP_InitUint16: {
23579 if (!Init<PT_Uint16>(S, OpPC))
23580 return false;
23581 continue;
23582}
23583case OP_InitSint32: {
23584 if (!Init<PT_Sint32>(S, OpPC))
23585 return false;
23586 continue;
23587}
23588case OP_InitUint32: {
23589 if (!Init<PT_Uint32>(S, OpPC))
23590 return false;
23591 continue;
23592}
23593case OP_InitSint64: {
23594 if (!Init<PT_Sint64>(S, OpPC))
23595 return false;
23596 continue;
23597}
23598case OP_InitUint64: {
23599 if (!Init<PT_Uint64>(S, OpPC))
23600 return false;
23601 continue;
23602}
23603case OP_InitIntAP: {
23604 if (!Init<PT_IntAP>(S, OpPC))
23605 return false;
23606 continue;
23607}
23608case OP_InitIntAPS: {
23609 if (!Init<PT_IntAPS>(S, OpPC))
23610 return false;
23611 continue;
23612}
23613case OP_InitBool: {
23614 if (!Init<PT_Bool>(S, OpPC))
23615 return false;
23616 continue;
23617}
23618case OP_InitFixedPoint: {
23619 if (!Init<PT_FixedPoint>(S, OpPC))
23620 return false;
23621 continue;
23622}
23623case OP_InitPtr: {
23624 if (!Init<PT_Ptr>(S, OpPC))
23625 return false;
23626 continue;
23627}
23628case OP_InitMemberPtr: {
23629 if (!Init<PT_MemberPtr>(S, OpPC))
23630 return false;
23631 continue;
23632}
23633case OP_InitFloat: {
23634 if (!Init<PT_Float>(S, OpPC))
23635 return false;
23636 continue;
23637}
23638#endif
23639#ifdef GET_DISASM
23640case OP_InitSint8:
23641 Text.Op = PrintName("InitSint8");
23642 break;
23643case OP_InitUint8:
23644 Text.Op = PrintName("InitUint8");
23645 break;
23646case OP_InitSint16:
23647 Text.Op = PrintName("InitSint16");
23648 break;
23649case OP_InitUint16:
23650 Text.Op = PrintName("InitUint16");
23651 break;
23652case OP_InitSint32:
23653 Text.Op = PrintName("InitSint32");
23654 break;
23655case OP_InitUint32:
23656 Text.Op = PrintName("InitUint32");
23657 break;
23658case OP_InitSint64:
23659 Text.Op = PrintName("InitSint64");
23660 break;
23661case OP_InitUint64:
23662 Text.Op = PrintName("InitUint64");
23663 break;
23664case OP_InitIntAP:
23665 Text.Op = PrintName("InitIntAP");
23666 break;
23667case OP_InitIntAPS:
23668 Text.Op = PrintName("InitIntAPS");
23669 break;
23670case OP_InitBool:
23671 Text.Op = PrintName("InitBool");
23672 break;
23673case OP_InitFixedPoint:
23674 Text.Op = PrintName("InitFixedPoint");
23675 break;
23676case OP_InitPtr:
23677 Text.Op = PrintName("InitPtr");
23678 break;
23679case OP_InitMemberPtr:
23680 Text.Op = PrintName("InitMemberPtr");
23681 break;
23682case OP_InitFloat:
23683 Text.Op = PrintName("InitFloat");
23684 break;
23685#endif
23686#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23687bool emitInitSint8(SourceInfo);
23688bool emitInitUint8(SourceInfo);
23689bool emitInitSint16(SourceInfo);
23690bool emitInitUint16(SourceInfo);
23691bool emitInitSint32(SourceInfo);
23692bool emitInitUint32(SourceInfo);
23693bool emitInitSint64(SourceInfo);
23694bool emitInitUint64(SourceInfo);
23695bool emitInitIntAP(SourceInfo);
23696bool emitInitIntAPS(SourceInfo);
23697bool emitInitBool(SourceInfo);
23698bool emitInitFixedPoint(SourceInfo);
23699bool emitInitPtr(SourceInfo);
23700bool emitInitMemberPtr(SourceInfo);
23701bool emitInitFloat(SourceInfo);
23702#endif
23703#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23704[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
23705#endif
23706#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23707bool
23708#if defined(GET_EVAL_IMPL)
23709EvalEmitter
23710#else
23711ByteCodeEmitter
23712#endif
23713::emitInit(PrimType T0, SourceInfo I) {
23714 switch (T0) {
23715 case PT_Sint8:
23716 return emitInitSint8(I);
23717 case PT_Uint8:
23718 return emitInitUint8(I);
23719 case PT_Sint16:
23720 return emitInitSint16(I);
23721 case PT_Uint16:
23722 return emitInitUint16(I);
23723 case PT_Sint32:
23724 return emitInitSint32(I);
23725 case PT_Uint32:
23726 return emitInitUint32(I);
23727 case PT_Sint64:
23728 return emitInitSint64(I);
23729 case PT_Uint64:
23730 return emitInitUint64(I);
23731 case PT_IntAP:
23732 return emitInitIntAP(I);
23733 case PT_IntAPS:
23734 return emitInitIntAPS(I);
23735 case PT_Bool:
23736 return emitInitBool(I);
23737 case PT_FixedPoint:
23738 return emitInitFixedPoint(I);
23739 case PT_Ptr:
23740 return emitInitPtr(I);
23741 case PT_MemberPtr:
23742 return emitInitMemberPtr(I);
23743 case PT_Float:
23744 return emitInitFloat(I);
23745 }
23746 llvm_unreachable("invalid enum value");
23747}
23748#endif
23749#ifdef GET_LINK_IMPL
23750bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
23751 return emitOp<>(OP_InitSint8, L);
23752}
23753bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
23754 return emitOp<>(OP_InitUint8, L);
23755}
23756bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
23757 return emitOp<>(OP_InitSint16, L);
23758}
23759bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
23760 return emitOp<>(OP_InitUint16, L);
23761}
23762bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
23763 return emitOp<>(OP_InitSint32, L);
23764}
23765bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
23766 return emitOp<>(OP_InitUint32, L);
23767}
23768bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
23769 return emitOp<>(OP_InitSint64, L);
23770}
23771bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
23772 return emitOp<>(OP_InitUint64, L);
23773}
23774bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
23775 return emitOp<>(OP_InitIntAP, L);
23776}
23777bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
23778 return emitOp<>(OP_InitIntAPS, L);
23779}
23780bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
23781 return emitOp<>(OP_InitBool, L);
23782}
23783bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
23784 return emitOp<>(OP_InitFixedPoint, L);
23785}
23786bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
23787 return emitOp<>(OP_InitPtr, L);
23788}
23789bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
23790 return emitOp<>(OP_InitMemberPtr, L);
23791}
23792bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
23793 return emitOp<>(OP_InitFloat, L);
23794}
23795#endif
23796#ifdef GET_EVAL_IMPL
23797bool EvalEmitter::emitInitSint8(SourceInfo L) {
23798 if (!isActive()) return true;
23799 CurrentSource = L;
23800 return Init<PT_Sint8>(S, OpPC);
23801}
23802bool EvalEmitter::emitInitUint8(SourceInfo L) {
23803 if (!isActive()) return true;
23804 CurrentSource = L;
23805 return Init<PT_Uint8>(S, OpPC);
23806}
23807bool EvalEmitter::emitInitSint16(SourceInfo L) {
23808 if (!isActive()) return true;
23809 CurrentSource = L;
23810 return Init<PT_Sint16>(S, OpPC);
23811}
23812bool EvalEmitter::emitInitUint16(SourceInfo L) {
23813 if (!isActive()) return true;
23814 CurrentSource = L;
23815 return Init<PT_Uint16>(S, OpPC);
23816}
23817bool EvalEmitter::emitInitSint32(SourceInfo L) {
23818 if (!isActive()) return true;
23819 CurrentSource = L;
23820 return Init<PT_Sint32>(S, OpPC);
23821}
23822bool EvalEmitter::emitInitUint32(SourceInfo L) {
23823 if (!isActive()) return true;
23824 CurrentSource = L;
23825 return Init<PT_Uint32>(S, OpPC);
23826}
23827bool EvalEmitter::emitInitSint64(SourceInfo L) {
23828 if (!isActive()) return true;
23829 CurrentSource = L;
23830 return Init<PT_Sint64>(S, OpPC);
23831}
23832bool EvalEmitter::emitInitUint64(SourceInfo L) {
23833 if (!isActive()) return true;
23834 CurrentSource = L;
23835 return Init<PT_Uint64>(S, OpPC);
23836}
23837bool EvalEmitter::emitInitIntAP(SourceInfo L) {
23838 if (!isActive()) return true;
23839 CurrentSource = L;
23840 return Init<PT_IntAP>(S, OpPC);
23841}
23842bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
23843 if (!isActive()) return true;
23844 CurrentSource = L;
23845 return Init<PT_IntAPS>(S, OpPC);
23846}
23847bool EvalEmitter::emitInitBool(SourceInfo L) {
23848 if (!isActive()) return true;
23849 CurrentSource = L;
23850 return Init<PT_Bool>(S, OpPC);
23851}
23852bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
23853 if (!isActive()) return true;
23854 CurrentSource = L;
23855 return Init<PT_FixedPoint>(S, OpPC);
23856}
23857bool EvalEmitter::emitInitPtr(SourceInfo L) {
23858 if (!isActive()) return true;
23859 CurrentSource = L;
23860 return Init<PT_Ptr>(S, OpPC);
23861}
23862bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
23863 if (!isActive()) return true;
23864 CurrentSource = L;
23865 return Init<PT_MemberPtr>(S, OpPC);
23866}
23867bool EvalEmitter::emitInitFloat(SourceInfo L) {
23868 if (!isActive()) return true;
23869 CurrentSource = L;
23870 return Init<PT_Float>(S, OpPC);
23871}
23872#endif
23873#ifdef GET_OPCODE_NAMES
23874OP_InitBitFieldSint8,
23875OP_InitBitFieldUint8,
23876OP_InitBitFieldSint16,
23877OP_InitBitFieldUint16,
23878OP_InitBitFieldSint32,
23879OP_InitBitFieldUint32,
23880OP_InitBitFieldSint64,
23881OP_InitBitFieldUint64,
23882OP_InitBitFieldIntAP,
23883OP_InitBitFieldIntAPS,
23884OP_InitBitFieldBool,
23885#endif
23886#ifdef GET_INTERP
23887case OP_InitBitFieldSint8: {
23888 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23889 if (!InitBitField<PT_Sint8>(S, OpPC, V0))
23890 return false;
23891 continue;
23892}
23893case OP_InitBitFieldUint8: {
23894 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23895 if (!InitBitField<PT_Uint8>(S, OpPC, V0))
23896 return false;
23897 continue;
23898}
23899case OP_InitBitFieldSint16: {
23900 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23901 if (!InitBitField<PT_Sint16>(S, OpPC, V0))
23902 return false;
23903 continue;
23904}
23905case OP_InitBitFieldUint16: {
23906 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23907 if (!InitBitField<PT_Uint16>(S, OpPC, V0))
23908 return false;
23909 continue;
23910}
23911case OP_InitBitFieldSint32: {
23912 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23913 if (!InitBitField<PT_Sint32>(S, OpPC, V0))
23914 return false;
23915 continue;
23916}
23917case OP_InitBitFieldUint32: {
23918 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23919 if (!InitBitField<PT_Uint32>(S, OpPC, V0))
23920 return false;
23921 continue;
23922}
23923case OP_InitBitFieldSint64: {
23924 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23925 if (!InitBitField<PT_Sint64>(S, OpPC, V0))
23926 return false;
23927 continue;
23928}
23929case OP_InitBitFieldUint64: {
23930 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23931 if (!InitBitField<PT_Uint64>(S, OpPC, V0))
23932 return false;
23933 continue;
23934}
23935case OP_InitBitFieldIntAP: {
23936 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23937 if (!InitBitField<PT_IntAP>(S, OpPC, V0))
23938 return false;
23939 continue;
23940}
23941case OP_InitBitFieldIntAPS: {
23942 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23943 if (!InitBitField<PT_IntAPS>(S, OpPC, V0))
23944 return false;
23945 continue;
23946}
23947case OP_InitBitFieldBool: {
23948 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23949 if (!InitBitField<PT_Bool>(S, OpPC, V0))
23950 return false;
23951 continue;
23952}
23953#endif
23954#ifdef GET_DISASM
23955case OP_InitBitFieldSint8:
23956 Text.Op = PrintName("InitBitFieldSint8");
23957 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23958 break;
23959case OP_InitBitFieldUint8:
23960 Text.Op = PrintName("InitBitFieldUint8");
23961 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23962 break;
23963case OP_InitBitFieldSint16:
23964 Text.Op = PrintName("InitBitFieldSint16");
23965 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23966 break;
23967case OP_InitBitFieldUint16:
23968 Text.Op = PrintName("InitBitFieldUint16");
23969 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23970 break;
23971case OP_InitBitFieldSint32:
23972 Text.Op = PrintName("InitBitFieldSint32");
23973 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23974 break;
23975case OP_InitBitFieldUint32:
23976 Text.Op = PrintName("InitBitFieldUint32");
23977 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23978 break;
23979case OP_InitBitFieldSint64:
23980 Text.Op = PrintName("InitBitFieldSint64");
23981 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23982 break;
23983case OP_InitBitFieldUint64:
23984 Text.Op = PrintName("InitBitFieldUint64");
23985 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23986 break;
23987case OP_InitBitFieldIntAP:
23988 Text.Op = PrintName("InitBitFieldIntAP");
23989 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23990 break;
23991case OP_InitBitFieldIntAPS:
23992 Text.Op = PrintName("InitBitFieldIntAPS");
23993 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23994 break;
23995case OP_InitBitFieldBool:
23996 Text.Op = PrintName("InitBitFieldBool");
23997 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
23998 break;
23999#endif
24000#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24001bool emitInitBitFieldSint8( const Record::Field * , SourceInfo);
24002bool emitInitBitFieldUint8( const Record::Field * , SourceInfo);
24003bool emitInitBitFieldSint16( const Record::Field * , SourceInfo);
24004bool emitInitBitFieldUint16( const Record::Field * , SourceInfo);
24005bool emitInitBitFieldSint32( const Record::Field * , SourceInfo);
24006bool emitInitBitFieldUint32( const Record::Field * , SourceInfo);
24007bool emitInitBitFieldSint64( const Record::Field * , SourceInfo);
24008bool emitInitBitFieldUint64( const Record::Field * , SourceInfo);
24009bool emitInitBitFieldIntAP( const Record::Field * , SourceInfo);
24010bool emitInitBitFieldIntAPS( const Record::Field * , SourceInfo);
24011bool emitInitBitFieldBool( const Record::Field * , SourceInfo);
24012#endif
24013#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24014[[nodiscard]] bool emitInitBitField(PrimType, const Record::Field *, SourceInfo I);
24015#endif
24016#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24017bool
24018#if defined(GET_EVAL_IMPL)
24019EvalEmitter
24020#else
24021ByteCodeEmitter
24022#endif
24023::emitInitBitField(PrimType T0, const Record::Field * A0, SourceInfo I) {
24024 switch (T0) {
24025 case PT_Sint8:
24026 return emitInitBitFieldSint8(A0, I);
24027 case PT_Uint8:
24028 return emitInitBitFieldUint8(A0, I);
24029 case PT_Sint16:
24030 return emitInitBitFieldSint16(A0, I);
24031 case PT_Uint16:
24032 return emitInitBitFieldUint16(A0, I);
24033 case PT_Sint32:
24034 return emitInitBitFieldSint32(A0, I);
24035 case PT_Uint32:
24036 return emitInitBitFieldUint32(A0, I);
24037 case PT_Sint64:
24038 return emitInitBitFieldSint64(A0, I);
24039 case PT_Uint64:
24040 return emitInitBitFieldUint64(A0, I);
24041 case PT_IntAP:
24042 return emitInitBitFieldIntAP(A0, I);
24043 case PT_IntAPS:
24044 return emitInitBitFieldIntAPS(A0, I);
24045 case PT_Bool:
24046 return emitInitBitFieldBool(A0, I);
24047 default: llvm_unreachable("invalid type: emitInitBitField");
24048 }
24049 llvm_unreachable("invalid enum value");
24050}
24051#endif
24052#ifdef GET_LINK_IMPL
24053bool ByteCodeEmitter::emitInitBitFieldSint8( const Record::Field * A0, SourceInfo L) {
24054 return emitOp<const Record::Field *>(OP_InitBitFieldSint8, A0, L);
24055}
24056bool ByteCodeEmitter::emitInitBitFieldUint8( const Record::Field * A0, SourceInfo L) {
24057 return emitOp<const Record::Field *>(OP_InitBitFieldUint8, A0, L);
24058}
24059bool ByteCodeEmitter::emitInitBitFieldSint16( const Record::Field * A0, SourceInfo L) {
24060 return emitOp<const Record::Field *>(OP_InitBitFieldSint16, A0, L);
24061}
24062bool ByteCodeEmitter::emitInitBitFieldUint16( const Record::Field * A0, SourceInfo L) {
24063 return emitOp<const Record::Field *>(OP_InitBitFieldUint16, A0, L);
24064}
24065bool ByteCodeEmitter::emitInitBitFieldSint32( const Record::Field * A0, SourceInfo L) {
24066 return emitOp<const Record::Field *>(OP_InitBitFieldSint32, A0, L);
24067}
24068bool ByteCodeEmitter::emitInitBitFieldUint32( const Record::Field * A0, SourceInfo L) {
24069 return emitOp<const Record::Field *>(OP_InitBitFieldUint32, A0, L);
24070}
24071bool ByteCodeEmitter::emitInitBitFieldSint64( const Record::Field * A0, SourceInfo L) {
24072 return emitOp<const Record::Field *>(OP_InitBitFieldSint64, A0, L);
24073}
24074bool ByteCodeEmitter::emitInitBitFieldUint64( const Record::Field * A0, SourceInfo L) {
24075 return emitOp<const Record::Field *>(OP_InitBitFieldUint64, A0, L);
24076}
24077bool ByteCodeEmitter::emitInitBitFieldIntAP( const Record::Field * A0, SourceInfo L) {
24078 return emitOp<const Record::Field *>(OP_InitBitFieldIntAP, A0, L);
24079}
24080bool ByteCodeEmitter::emitInitBitFieldIntAPS( const Record::Field * A0, SourceInfo L) {
24081 return emitOp<const Record::Field *>(OP_InitBitFieldIntAPS, A0, L);
24082}
24083bool ByteCodeEmitter::emitInitBitFieldBool( const Record::Field * A0, SourceInfo L) {
24084 return emitOp<const Record::Field *>(OP_InitBitFieldBool, A0, L);
24085}
24086#endif
24087#ifdef GET_EVAL_IMPL
24088bool EvalEmitter::emitInitBitFieldSint8( const Record::Field * A0, SourceInfo L) {
24089 if (!isActive()) return true;
24090 CurrentSource = L;
24091 return InitBitField<PT_Sint8>(S, OpPC, A0);
24092}
24093bool EvalEmitter::emitInitBitFieldUint8( const Record::Field * A0, SourceInfo L) {
24094 if (!isActive()) return true;
24095 CurrentSource = L;
24096 return InitBitField<PT_Uint8>(S, OpPC, A0);
24097}
24098bool EvalEmitter::emitInitBitFieldSint16( const Record::Field * A0, SourceInfo L) {
24099 if (!isActive()) return true;
24100 CurrentSource = L;
24101 return InitBitField<PT_Sint16>(S, OpPC, A0);
24102}
24103bool EvalEmitter::emitInitBitFieldUint16( const Record::Field * A0, SourceInfo L) {
24104 if (!isActive()) return true;
24105 CurrentSource = L;
24106 return InitBitField<PT_Uint16>(S, OpPC, A0);
24107}
24108bool EvalEmitter::emitInitBitFieldSint32( const Record::Field * A0, SourceInfo L) {
24109 if (!isActive()) return true;
24110 CurrentSource = L;
24111 return InitBitField<PT_Sint32>(S, OpPC, A0);
24112}
24113bool EvalEmitter::emitInitBitFieldUint32( const Record::Field * A0, SourceInfo L) {
24114 if (!isActive()) return true;
24115 CurrentSource = L;
24116 return InitBitField<PT_Uint32>(S, OpPC, A0);
24117}
24118bool EvalEmitter::emitInitBitFieldSint64( const Record::Field * A0, SourceInfo L) {
24119 if (!isActive()) return true;
24120 CurrentSource = L;
24121 return InitBitField<PT_Sint64>(S, OpPC, A0);
24122}
24123bool EvalEmitter::emitInitBitFieldUint64( const Record::Field * A0, SourceInfo L) {
24124 if (!isActive()) return true;
24125 CurrentSource = L;
24126 return InitBitField<PT_Uint64>(S, OpPC, A0);
24127}
24128bool EvalEmitter::emitInitBitFieldIntAP( const Record::Field * A0, SourceInfo L) {
24129 if (!isActive()) return true;
24130 CurrentSource = L;
24131 return InitBitField<PT_IntAP>(S, OpPC, A0);
24132}
24133bool EvalEmitter::emitInitBitFieldIntAPS( const Record::Field * A0, SourceInfo L) {
24134 if (!isActive()) return true;
24135 CurrentSource = L;
24136 return InitBitField<PT_IntAPS>(S, OpPC, A0);
24137}
24138bool EvalEmitter::emitInitBitFieldBool( const Record::Field * A0, SourceInfo L) {
24139 if (!isActive()) return true;
24140 CurrentSource = L;
24141 return InitBitField<PT_Bool>(S, OpPC, A0);
24142}
24143#endif
24144#ifdef GET_OPCODE_NAMES
24145OP_InitBitFieldActivateSint8,
24146OP_InitBitFieldActivateUint8,
24147OP_InitBitFieldActivateSint16,
24148OP_InitBitFieldActivateUint16,
24149OP_InitBitFieldActivateSint32,
24150OP_InitBitFieldActivateUint32,
24151OP_InitBitFieldActivateSint64,
24152OP_InitBitFieldActivateUint64,
24153OP_InitBitFieldActivateIntAP,
24154OP_InitBitFieldActivateIntAPS,
24155OP_InitBitFieldActivateBool,
24156#endif
24157#ifdef GET_INTERP
24158case OP_InitBitFieldActivateSint8: {
24159 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24160 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0))
24161 return false;
24162 continue;
24163}
24164case OP_InitBitFieldActivateUint8: {
24165 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24166 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0))
24167 return false;
24168 continue;
24169}
24170case OP_InitBitFieldActivateSint16: {
24171 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24172 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0))
24173 return false;
24174 continue;
24175}
24176case OP_InitBitFieldActivateUint16: {
24177 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24178 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0))
24179 return false;
24180 continue;
24181}
24182case OP_InitBitFieldActivateSint32: {
24183 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24184 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0))
24185 return false;
24186 continue;
24187}
24188case OP_InitBitFieldActivateUint32: {
24189 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24190 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0))
24191 return false;
24192 continue;
24193}
24194case OP_InitBitFieldActivateSint64: {
24195 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24196 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0))
24197 return false;
24198 continue;
24199}
24200case OP_InitBitFieldActivateUint64: {
24201 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24202 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0))
24203 return false;
24204 continue;
24205}
24206case OP_InitBitFieldActivateIntAP: {
24207 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24208 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0))
24209 return false;
24210 continue;
24211}
24212case OP_InitBitFieldActivateIntAPS: {
24213 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24214 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0))
24215 return false;
24216 continue;
24217}
24218case OP_InitBitFieldActivateBool: {
24219 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24220 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0))
24221 return false;
24222 continue;
24223}
24224#endif
24225#ifdef GET_DISASM
24226case OP_InitBitFieldActivateSint8:
24227 Text.Op = PrintName("InitBitFieldActivateSint8");
24228 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24229 break;
24230case OP_InitBitFieldActivateUint8:
24231 Text.Op = PrintName("InitBitFieldActivateUint8");
24232 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24233 break;
24234case OP_InitBitFieldActivateSint16:
24235 Text.Op = PrintName("InitBitFieldActivateSint16");
24236 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24237 break;
24238case OP_InitBitFieldActivateUint16:
24239 Text.Op = PrintName("InitBitFieldActivateUint16");
24240 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24241 break;
24242case OP_InitBitFieldActivateSint32:
24243 Text.Op = PrintName("InitBitFieldActivateSint32");
24244 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24245 break;
24246case OP_InitBitFieldActivateUint32:
24247 Text.Op = PrintName("InitBitFieldActivateUint32");
24248 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24249 break;
24250case OP_InitBitFieldActivateSint64:
24251 Text.Op = PrintName("InitBitFieldActivateSint64");
24252 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24253 break;
24254case OP_InitBitFieldActivateUint64:
24255 Text.Op = PrintName("InitBitFieldActivateUint64");
24256 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24257 break;
24258case OP_InitBitFieldActivateIntAP:
24259 Text.Op = PrintName("InitBitFieldActivateIntAP");
24260 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24261 break;
24262case OP_InitBitFieldActivateIntAPS:
24263 Text.Op = PrintName("InitBitFieldActivateIntAPS");
24264 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24265 break;
24266case OP_InitBitFieldActivateBool:
24267 Text.Op = PrintName("InitBitFieldActivateBool");
24268 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24269 break;
24270#endif
24271#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24272bool emitInitBitFieldActivateSint8( const Record::Field * , SourceInfo);
24273bool emitInitBitFieldActivateUint8( const Record::Field * , SourceInfo);
24274bool emitInitBitFieldActivateSint16( const Record::Field * , SourceInfo);
24275bool emitInitBitFieldActivateUint16( const Record::Field * , SourceInfo);
24276bool emitInitBitFieldActivateSint32( const Record::Field * , SourceInfo);
24277bool emitInitBitFieldActivateUint32( const Record::Field * , SourceInfo);
24278bool emitInitBitFieldActivateSint64( const Record::Field * , SourceInfo);
24279bool emitInitBitFieldActivateUint64( const Record::Field * , SourceInfo);
24280bool emitInitBitFieldActivateIntAP( const Record::Field * , SourceInfo);
24281bool emitInitBitFieldActivateIntAPS( const Record::Field * , SourceInfo);
24282bool emitInitBitFieldActivateBool( const Record::Field * , SourceInfo);
24283#endif
24284#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24285[[nodiscard]] bool emitInitBitFieldActivate(PrimType, const Record::Field *, SourceInfo I);
24286#endif
24287#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24288bool
24289#if defined(GET_EVAL_IMPL)
24290EvalEmitter
24291#else
24292ByteCodeEmitter
24293#endif
24294::emitInitBitFieldActivate(PrimType T0, const Record::Field * A0, SourceInfo I) {
24295 switch (T0) {
24296 case PT_Sint8:
24297 return emitInitBitFieldActivateSint8(A0, I);
24298 case PT_Uint8:
24299 return emitInitBitFieldActivateUint8(A0, I);
24300 case PT_Sint16:
24301 return emitInitBitFieldActivateSint16(A0, I);
24302 case PT_Uint16:
24303 return emitInitBitFieldActivateUint16(A0, I);
24304 case PT_Sint32:
24305 return emitInitBitFieldActivateSint32(A0, I);
24306 case PT_Uint32:
24307 return emitInitBitFieldActivateUint32(A0, I);
24308 case PT_Sint64:
24309 return emitInitBitFieldActivateSint64(A0, I);
24310 case PT_Uint64:
24311 return emitInitBitFieldActivateUint64(A0, I);
24312 case PT_IntAP:
24313 return emitInitBitFieldActivateIntAP(A0, I);
24314 case PT_IntAPS:
24315 return emitInitBitFieldActivateIntAPS(A0, I);
24316 case PT_Bool:
24317 return emitInitBitFieldActivateBool(A0, I);
24318 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
24319 }
24320 llvm_unreachable("invalid enum value");
24321}
24322#endif
24323#ifdef GET_LINK_IMPL
24324bool ByteCodeEmitter::emitInitBitFieldActivateSint8( const Record::Field * A0, SourceInfo L) {
24325 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint8, A0, L);
24326}
24327bool ByteCodeEmitter::emitInitBitFieldActivateUint8( const Record::Field * A0, SourceInfo L) {
24328 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint8, A0, L);
24329}
24330bool ByteCodeEmitter::emitInitBitFieldActivateSint16( const Record::Field * A0, SourceInfo L) {
24331 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint16, A0, L);
24332}
24333bool ByteCodeEmitter::emitInitBitFieldActivateUint16( const Record::Field * A0, SourceInfo L) {
24334 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint16, A0, L);
24335}
24336bool ByteCodeEmitter::emitInitBitFieldActivateSint32( const Record::Field * A0, SourceInfo L) {
24337 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint32, A0, L);
24338}
24339bool ByteCodeEmitter::emitInitBitFieldActivateUint32( const Record::Field * A0, SourceInfo L) {
24340 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint32, A0, L);
24341}
24342bool ByteCodeEmitter::emitInitBitFieldActivateSint64( const Record::Field * A0, SourceInfo L) {
24343 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint64, A0, L);
24344}
24345bool ByteCodeEmitter::emitInitBitFieldActivateUint64( const Record::Field * A0, SourceInfo L) {
24346 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint64, A0, L);
24347}
24348bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( const Record::Field * A0, SourceInfo L) {
24349 return emitOp<const Record::Field *>(OP_InitBitFieldActivateIntAP, A0, L);
24350}
24351bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( const Record::Field * A0, SourceInfo L) {
24352 return emitOp<const Record::Field *>(OP_InitBitFieldActivateIntAPS, A0, L);
24353}
24354bool ByteCodeEmitter::emitInitBitFieldActivateBool( const Record::Field * A0, SourceInfo L) {
24355 return emitOp<const Record::Field *>(OP_InitBitFieldActivateBool, A0, L);
24356}
24357#endif
24358#ifdef GET_EVAL_IMPL
24359bool EvalEmitter::emitInitBitFieldActivateSint8( const Record::Field * A0, SourceInfo L) {
24360 if (!isActive()) return true;
24361 CurrentSource = L;
24362 return InitBitFieldActivate<PT_Sint8>(S, OpPC, A0);
24363}
24364bool EvalEmitter::emitInitBitFieldActivateUint8( const Record::Field * A0, SourceInfo L) {
24365 if (!isActive()) return true;
24366 CurrentSource = L;
24367 return InitBitFieldActivate<PT_Uint8>(S, OpPC, A0);
24368}
24369bool EvalEmitter::emitInitBitFieldActivateSint16( const Record::Field * A0, SourceInfo L) {
24370 if (!isActive()) return true;
24371 CurrentSource = L;
24372 return InitBitFieldActivate<PT_Sint16>(S, OpPC, A0);
24373}
24374bool EvalEmitter::emitInitBitFieldActivateUint16( const Record::Field * A0, SourceInfo L) {
24375 if (!isActive()) return true;
24376 CurrentSource = L;
24377 return InitBitFieldActivate<PT_Uint16>(S, OpPC, A0);
24378}
24379bool EvalEmitter::emitInitBitFieldActivateSint32( const Record::Field * A0, SourceInfo L) {
24380 if (!isActive()) return true;
24381 CurrentSource = L;
24382 return InitBitFieldActivate<PT_Sint32>(S, OpPC, A0);
24383}
24384bool EvalEmitter::emitInitBitFieldActivateUint32( const Record::Field * A0, SourceInfo L) {
24385 if (!isActive()) return true;
24386 CurrentSource = L;
24387 return InitBitFieldActivate<PT_Uint32>(S, OpPC, A0);
24388}
24389bool EvalEmitter::emitInitBitFieldActivateSint64( const Record::Field * A0, SourceInfo L) {
24390 if (!isActive()) return true;
24391 CurrentSource = L;
24392 return InitBitFieldActivate<PT_Sint64>(S, OpPC, A0);
24393}
24394bool EvalEmitter::emitInitBitFieldActivateUint64( const Record::Field * A0, SourceInfo L) {
24395 if (!isActive()) return true;
24396 CurrentSource = L;
24397 return InitBitFieldActivate<PT_Uint64>(S, OpPC, A0);
24398}
24399bool EvalEmitter::emitInitBitFieldActivateIntAP( const Record::Field * A0, SourceInfo L) {
24400 if (!isActive()) return true;
24401 CurrentSource = L;
24402 return InitBitFieldActivate<PT_IntAP>(S, OpPC, A0);
24403}
24404bool EvalEmitter::emitInitBitFieldActivateIntAPS( const Record::Field * A0, SourceInfo L) {
24405 if (!isActive()) return true;
24406 CurrentSource = L;
24407 return InitBitFieldActivate<PT_IntAPS>(S, OpPC, A0);
24408}
24409bool EvalEmitter::emitInitBitFieldActivateBool( const Record::Field * A0, SourceInfo L) {
24410 if (!isActive()) return true;
24411 CurrentSource = L;
24412 return InitBitFieldActivate<PT_Bool>(S, OpPC, A0);
24413}
24414#endif
24415#ifdef GET_OPCODE_NAMES
24416OP_InitElemSint8,
24417OP_InitElemUint8,
24418OP_InitElemSint16,
24419OP_InitElemUint16,
24420OP_InitElemSint32,
24421OP_InitElemUint32,
24422OP_InitElemSint64,
24423OP_InitElemUint64,
24424OP_InitElemIntAP,
24425OP_InitElemIntAPS,
24426OP_InitElemBool,
24427OP_InitElemFixedPoint,
24428OP_InitElemPtr,
24429OP_InitElemMemberPtr,
24430OP_InitElemFloat,
24431#endif
24432#ifdef GET_INTERP
24433case OP_InitElemSint8: {
24434 const auto V0 = ReadArg<uint32_t>(S, PC);
24435 if (!InitElem<PT_Sint8>(S, OpPC, V0))
24436 return false;
24437 continue;
24438}
24439case OP_InitElemUint8: {
24440 const auto V0 = ReadArg<uint32_t>(S, PC);
24441 if (!InitElem<PT_Uint8>(S, OpPC, V0))
24442 return false;
24443 continue;
24444}
24445case OP_InitElemSint16: {
24446 const auto V0 = ReadArg<uint32_t>(S, PC);
24447 if (!InitElem<PT_Sint16>(S, OpPC, V0))
24448 return false;
24449 continue;
24450}
24451case OP_InitElemUint16: {
24452 const auto V0 = ReadArg<uint32_t>(S, PC);
24453 if (!InitElem<PT_Uint16>(S, OpPC, V0))
24454 return false;
24455 continue;
24456}
24457case OP_InitElemSint32: {
24458 const auto V0 = ReadArg<uint32_t>(S, PC);
24459 if (!InitElem<PT_Sint32>(S, OpPC, V0))
24460 return false;
24461 continue;
24462}
24463case OP_InitElemUint32: {
24464 const auto V0 = ReadArg<uint32_t>(S, PC);
24465 if (!InitElem<PT_Uint32>(S, OpPC, V0))
24466 return false;
24467 continue;
24468}
24469case OP_InitElemSint64: {
24470 const auto V0 = ReadArg<uint32_t>(S, PC);
24471 if (!InitElem<PT_Sint64>(S, OpPC, V0))
24472 return false;
24473 continue;
24474}
24475case OP_InitElemUint64: {
24476 const auto V0 = ReadArg<uint32_t>(S, PC);
24477 if (!InitElem<PT_Uint64>(S, OpPC, V0))
24478 return false;
24479 continue;
24480}
24481case OP_InitElemIntAP: {
24482 const auto V0 = ReadArg<uint32_t>(S, PC);
24483 if (!InitElem<PT_IntAP>(S, OpPC, V0))
24484 return false;
24485 continue;
24486}
24487case OP_InitElemIntAPS: {
24488 const auto V0 = ReadArg<uint32_t>(S, PC);
24489 if (!InitElem<PT_IntAPS>(S, OpPC, V0))
24490 return false;
24491 continue;
24492}
24493case OP_InitElemBool: {
24494 const auto V0 = ReadArg<uint32_t>(S, PC);
24495 if (!InitElem<PT_Bool>(S, OpPC, V0))
24496 return false;
24497 continue;
24498}
24499case OP_InitElemFixedPoint: {
24500 const auto V0 = ReadArg<uint32_t>(S, PC);
24501 if (!InitElem<PT_FixedPoint>(S, OpPC, V0))
24502 return false;
24503 continue;
24504}
24505case OP_InitElemPtr: {
24506 const auto V0 = ReadArg<uint32_t>(S, PC);
24507 if (!InitElem<PT_Ptr>(S, OpPC, V0))
24508 return false;
24509 continue;
24510}
24511case OP_InitElemMemberPtr: {
24512 const auto V0 = ReadArg<uint32_t>(S, PC);
24513 if (!InitElem<PT_MemberPtr>(S, OpPC, V0))
24514 return false;
24515 continue;
24516}
24517case OP_InitElemFloat: {
24518 const auto V0 = ReadArg<uint32_t>(S, PC);
24519 if (!InitElem<PT_Float>(S, OpPC, V0))
24520 return false;
24521 continue;
24522}
24523#endif
24524#ifdef GET_DISASM
24525case OP_InitElemSint8:
24526 Text.Op = PrintName("InitElemSint8");
24527 Text.Args.push_back(printArg<uint32_t>(P, PC));
24528 break;
24529case OP_InitElemUint8:
24530 Text.Op = PrintName("InitElemUint8");
24531 Text.Args.push_back(printArg<uint32_t>(P, PC));
24532 break;
24533case OP_InitElemSint16:
24534 Text.Op = PrintName("InitElemSint16");
24535 Text.Args.push_back(printArg<uint32_t>(P, PC));
24536 break;
24537case OP_InitElemUint16:
24538 Text.Op = PrintName("InitElemUint16");
24539 Text.Args.push_back(printArg<uint32_t>(P, PC));
24540 break;
24541case OP_InitElemSint32:
24542 Text.Op = PrintName("InitElemSint32");
24543 Text.Args.push_back(printArg<uint32_t>(P, PC));
24544 break;
24545case OP_InitElemUint32:
24546 Text.Op = PrintName("InitElemUint32");
24547 Text.Args.push_back(printArg<uint32_t>(P, PC));
24548 break;
24549case OP_InitElemSint64:
24550 Text.Op = PrintName("InitElemSint64");
24551 Text.Args.push_back(printArg<uint32_t>(P, PC));
24552 break;
24553case OP_InitElemUint64:
24554 Text.Op = PrintName("InitElemUint64");
24555 Text.Args.push_back(printArg<uint32_t>(P, PC));
24556 break;
24557case OP_InitElemIntAP:
24558 Text.Op = PrintName("InitElemIntAP");
24559 Text.Args.push_back(printArg<uint32_t>(P, PC));
24560 break;
24561case OP_InitElemIntAPS:
24562 Text.Op = PrintName("InitElemIntAPS");
24563 Text.Args.push_back(printArg<uint32_t>(P, PC));
24564 break;
24565case OP_InitElemBool:
24566 Text.Op = PrintName("InitElemBool");
24567 Text.Args.push_back(printArg<uint32_t>(P, PC));
24568 break;
24569case OP_InitElemFixedPoint:
24570 Text.Op = PrintName("InitElemFixedPoint");
24571 Text.Args.push_back(printArg<uint32_t>(P, PC));
24572 break;
24573case OP_InitElemPtr:
24574 Text.Op = PrintName("InitElemPtr");
24575 Text.Args.push_back(printArg<uint32_t>(P, PC));
24576 break;
24577case OP_InitElemMemberPtr:
24578 Text.Op = PrintName("InitElemMemberPtr");
24579 Text.Args.push_back(printArg<uint32_t>(P, PC));
24580 break;
24581case OP_InitElemFloat:
24582 Text.Op = PrintName("InitElemFloat");
24583 Text.Args.push_back(printArg<uint32_t>(P, PC));
24584 break;
24585#endif
24586#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24587bool emitInitElemSint8( uint32_t , SourceInfo);
24588bool emitInitElemUint8( uint32_t , SourceInfo);
24589bool emitInitElemSint16( uint32_t , SourceInfo);
24590bool emitInitElemUint16( uint32_t , SourceInfo);
24591bool emitInitElemSint32( uint32_t , SourceInfo);
24592bool emitInitElemUint32( uint32_t , SourceInfo);
24593bool emitInitElemSint64( uint32_t , SourceInfo);
24594bool emitInitElemUint64( uint32_t , SourceInfo);
24595bool emitInitElemIntAP( uint32_t , SourceInfo);
24596bool emitInitElemIntAPS( uint32_t , SourceInfo);
24597bool emitInitElemBool( uint32_t , SourceInfo);
24598bool emitInitElemFixedPoint( uint32_t , SourceInfo);
24599bool emitInitElemPtr( uint32_t , SourceInfo);
24600bool emitInitElemMemberPtr( uint32_t , SourceInfo);
24601bool emitInitElemFloat( uint32_t , SourceInfo);
24602#endif
24603#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24604[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
24605#endif
24606#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24607bool
24608#if defined(GET_EVAL_IMPL)
24609EvalEmitter
24610#else
24611ByteCodeEmitter
24612#endif
24613::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
24614 switch (T0) {
24615 case PT_Sint8:
24616 return emitInitElemSint8(A0, I);
24617 case PT_Uint8:
24618 return emitInitElemUint8(A0, I);
24619 case PT_Sint16:
24620 return emitInitElemSint16(A0, I);
24621 case PT_Uint16:
24622 return emitInitElemUint16(A0, I);
24623 case PT_Sint32:
24624 return emitInitElemSint32(A0, I);
24625 case PT_Uint32:
24626 return emitInitElemUint32(A0, I);
24627 case PT_Sint64:
24628 return emitInitElemSint64(A0, I);
24629 case PT_Uint64:
24630 return emitInitElemUint64(A0, I);
24631 case PT_IntAP:
24632 return emitInitElemIntAP(A0, I);
24633 case PT_IntAPS:
24634 return emitInitElemIntAPS(A0, I);
24635 case PT_Bool:
24636 return emitInitElemBool(A0, I);
24637 case PT_FixedPoint:
24638 return emitInitElemFixedPoint(A0, I);
24639 case PT_Ptr:
24640 return emitInitElemPtr(A0, I);
24641 case PT_MemberPtr:
24642 return emitInitElemMemberPtr(A0, I);
24643 case PT_Float:
24644 return emitInitElemFloat(A0, I);
24645 }
24646 llvm_unreachable("invalid enum value");
24647}
24648#endif
24649#ifdef GET_LINK_IMPL
24650bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
24651 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
24652}
24653bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
24654 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
24655}
24656bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
24657 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
24658}
24659bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
24660 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
24661}
24662bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
24663 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
24664}
24665bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
24666 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
24667}
24668bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
24669 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
24670}
24671bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
24672 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
24673}
24674bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
24675 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
24676}
24677bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
24678 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
24679}
24680bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
24681 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
24682}
24683bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
24684 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
24685}
24686bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
24687 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
24688}
24689bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
24690 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
24691}
24692bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
24693 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
24694}
24695#endif
24696#ifdef GET_EVAL_IMPL
24697bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
24698 if (!isActive()) return true;
24699 CurrentSource = L;
24700 return InitElem<PT_Sint8>(S, OpPC, A0);
24701}
24702bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
24703 if (!isActive()) return true;
24704 CurrentSource = L;
24705 return InitElem<PT_Uint8>(S, OpPC, A0);
24706}
24707bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
24708 if (!isActive()) return true;
24709 CurrentSource = L;
24710 return InitElem<PT_Sint16>(S, OpPC, A0);
24711}
24712bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
24713 if (!isActive()) return true;
24714 CurrentSource = L;
24715 return InitElem<PT_Uint16>(S, OpPC, A0);
24716}
24717bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
24718 if (!isActive()) return true;
24719 CurrentSource = L;
24720 return InitElem<PT_Sint32>(S, OpPC, A0);
24721}
24722bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
24723 if (!isActive()) return true;
24724 CurrentSource = L;
24725 return InitElem<PT_Uint32>(S, OpPC, A0);
24726}
24727bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
24728 if (!isActive()) return true;
24729 CurrentSource = L;
24730 return InitElem<PT_Sint64>(S, OpPC, A0);
24731}
24732bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
24733 if (!isActive()) return true;
24734 CurrentSource = L;
24735 return InitElem<PT_Uint64>(S, OpPC, A0);
24736}
24737bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
24738 if (!isActive()) return true;
24739 CurrentSource = L;
24740 return InitElem<PT_IntAP>(S, OpPC, A0);
24741}
24742bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
24743 if (!isActive()) return true;
24744 CurrentSource = L;
24745 return InitElem<PT_IntAPS>(S, OpPC, A0);
24746}
24747bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
24748 if (!isActive()) return true;
24749 CurrentSource = L;
24750 return InitElem<PT_Bool>(S, OpPC, A0);
24751}
24752bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
24753 if (!isActive()) return true;
24754 CurrentSource = L;
24755 return InitElem<PT_FixedPoint>(S, OpPC, A0);
24756}
24757bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
24758 if (!isActive()) return true;
24759 CurrentSource = L;
24760 return InitElem<PT_Ptr>(S, OpPC, A0);
24761}
24762bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
24763 if (!isActive()) return true;
24764 CurrentSource = L;
24765 return InitElem<PT_MemberPtr>(S, OpPC, A0);
24766}
24767bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
24768 if (!isActive()) return true;
24769 CurrentSource = L;
24770 return InitElem<PT_Float>(S, OpPC, A0);
24771}
24772#endif
24773#ifdef GET_OPCODE_NAMES
24774OP_InitElemPopSint8,
24775OP_InitElemPopUint8,
24776OP_InitElemPopSint16,
24777OP_InitElemPopUint16,
24778OP_InitElemPopSint32,
24779OP_InitElemPopUint32,
24780OP_InitElemPopSint64,
24781OP_InitElemPopUint64,
24782OP_InitElemPopIntAP,
24783OP_InitElemPopIntAPS,
24784OP_InitElemPopBool,
24785OP_InitElemPopFixedPoint,
24786OP_InitElemPopPtr,
24787OP_InitElemPopMemberPtr,
24788OP_InitElemPopFloat,
24789#endif
24790#ifdef GET_INTERP
24791case OP_InitElemPopSint8: {
24792 const auto V0 = ReadArg<uint32_t>(S, PC);
24793 if (!InitElemPop<PT_Sint8>(S, OpPC, V0))
24794 return false;
24795 continue;
24796}
24797case OP_InitElemPopUint8: {
24798 const auto V0 = ReadArg<uint32_t>(S, PC);
24799 if (!InitElemPop<PT_Uint8>(S, OpPC, V0))
24800 return false;
24801 continue;
24802}
24803case OP_InitElemPopSint16: {
24804 const auto V0 = ReadArg<uint32_t>(S, PC);
24805 if (!InitElemPop<PT_Sint16>(S, OpPC, V0))
24806 return false;
24807 continue;
24808}
24809case OP_InitElemPopUint16: {
24810 const auto V0 = ReadArg<uint32_t>(S, PC);
24811 if (!InitElemPop<PT_Uint16>(S, OpPC, V0))
24812 return false;
24813 continue;
24814}
24815case OP_InitElemPopSint32: {
24816 const auto V0 = ReadArg<uint32_t>(S, PC);
24817 if (!InitElemPop<PT_Sint32>(S, OpPC, V0))
24818 return false;
24819 continue;
24820}
24821case OP_InitElemPopUint32: {
24822 const auto V0 = ReadArg<uint32_t>(S, PC);
24823 if (!InitElemPop<PT_Uint32>(S, OpPC, V0))
24824 return false;
24825 continue;
24826}
24827case OP_InitElemPopSint64: {
24828 const auto V0 = ReadArg<uint32_t>(S, PC);
24829 if (!InitElemPop<PT_Sint64>(S, OpPC, V0))
24830 return false;
24831 continue;
24832}
24833case OP_InitElemPopUint64: {
24834 const auto V0 = ReadArg<uint32_t>(S, PC);
24835 if (!InitElemPop<PT_Uint64>(S, OpPC, V0))
24836 return false;
24837 continue;
24838}
24839case OP_InitElemPopIntAP: {
24840 const auto V0 = ReadArg<uint32_t>(S, PC);
24841 if (!InitElemPop<PT_IntAP>(S, OpPC, V0))
24842 return false;
24843 continue;
24844}
24845case OP_InitElemPopIntAPS: {
24846 const auto V0 = ReadArg<uint32_t>(S, PC);
24847 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0))
24848 return false;
24849 continue;
24850}
24851case OP_InitElemPopBool: {
24852 const auto V0 = ReadArg<uint32_t>(S, PC);
24853 if (!InitElemPop<PT_Bool>(S, OpPC, V0))
24854 return false;
24855 continue;
24856}
24857case OP_InitElemPopFixedPoint: {
24858 const auto V0 = ReadArg<uint32_t>(S, PC);
24859 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0))
24860 return false;
24861 continue;
24862}
24863case OP_InitElemPopPtr: {
24864 const auto V0 = ReadArg<uint32_t>(S, PC);
24865 if (!InitElemPop<PT_Ptr>(S, OpPC, V0))
24866 return false;
24867 continue;
24868}
24869case OP_InitElemPopMemberPtr: {
24870 const auto V0 = ReadArg<uint32_t>(S, PC);
24871 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0))
24872 return false;
24873 continue;
24874}
24875case OP_InitElemPopFloat: {
24876 const auto V0 = ReadArg<uint32_t>(S, PC);
24877 if (!InitElemPop<PT_Float>(S, OpPC, V0))
24878 return false;
24879 continue;
24880}
24881#endif
24882#ifdef GET_DISASM
24883case OP_InitElemPopSint8:
24884 Text.Op = PrintName("InitElemPopSint8");
24885 Text.Args.push_back(printArg<uint32_t>(P, PC));
24886 break;
24887case OP_InitElemPopUint8:
24888 Text.Op = PrintName("InitElemPopUint8");
24889 Text.Args.push_back(printArg<uint32_t>(P, PC));
24890 break;
24891case OP_InitElemPopSint16:
24892 Text.Op = PrintName("InitElemPopSint16");
24893 Text.Args.push_back(printArg<uint32_t>(P, PC));
24894 break;
24895case OP_InitElemPopUint16:
24896 Text.Op = PrintName("InitElemPopUint16");
24897 Text.Args.push_back(printArg<uint32_t>(P, PC));
24898 break;
24899case OP_InitElemPopSint32:
24900 Text.Op = PrintName("InitElemPopSint32");
24901 Text.Args.push_back(printArg<uint32_t>(P, PC));
24902 break;
24903case OP_InitElemPopUint32:
24904 Text.Op = PrintName("InitElemPopUint32");
24905 Text.Args.push_back(printArg<uint32_t>(P, PC));
24906 break;
24907case OP_InitElemPopSint64:
24908 Text.Op = PrintName("InitElemPopSint64");
24909 Text.Args.push_back(printArg<uint32_t>(P, PC));
24910 break;
24911case OP_InitElemPopUint64:
24912 Text.Op = PrintName("InitElemPopUint64");
24913 Text.Args.push_back(printArg<uint32_t>(P, PC));
24914 break;
24915case OP_InitElemPopIntAP:
24916 Text.Op = PrintName("InitElemPopIntAP");
24917 Text.Args.push_back(printArg<uint32_t>(P, PC));
24918 break;
24919case OP_InitElemPopIntAPS:
24920 Text.Op = PrintName("InitElemPopIntAPS");
24921 Text.Args.push_back(printArg<uint32_t>(P, PC));
24922 break;
24923case OP_InitElemPopBool:
24924 Text.Op = PrintName("InitElemPopBool");
24925 Text.Args.push_back(printArg<uint32_t>(P, PC));
24926 break;
24927case OP_InitElemPopFixedPoint:
24928 Text.Op = PrintName("InitElemPopFixedPoint");
24929 Text.Args.push_back(printArg<uint32_t>(P, PC));
24930 break;
24931case OP_InitElemPopPtr:
24932 Text.Op = PrintName("InitElemPopPtr");
24933 Text.Args.push_back(printArg<uint32_t>(P, PC));
24934 break;
24935case OP_InitElemPopMemberPtr:
24936 Text.Op = PrintName("InitElemPopMemberPtr");
24937 Text.Args.push_back(printArg<uint32_t>(P, PC));
24938 break;
24939case OP_InitElemPopFloat:
24940 Text.Op = PrintName("InitElemPopFloat");
24941 Text.Args.push_back(printArg<uint32_t>(P, PC));
24942 break;
24943#endif
24944#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24945bool emitInitElemPopSint8( uint32_t , SourceInfo);
24946bool emitInitElemPopUint8( uint32_t , SourceInfo);
24947bool emitInitElemPopSint16( uint32_t , SourceInfo);
24948bool emitInitElemPopUint16( uint32_t , SourceInfo);
24949bool emitInitElemPopSint32( uint32_t , SourceInfo);
24950bool emitInitElemPopUint32( uint32_t , SourceInfo);
24951bool emitInitElemPopSint64( uint32_t , SourceInfo);
24952bool emitInitElemPopUint64( uint32_t , SourceInfo);
24953bool emitInitElemPopIntAP( uint32_t , SourceInfo);
24954bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
24955bool emitInitElemPopBool( uint32_t , SourceInfo);
24956bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
24957bool emitInitElemPopPtr( uint32_t , SourceInfo);
24958bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
24959bool emitInitElemPopFloat( uint32_t , SourceInfo);
24960#endif
24961#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24962[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
24963#endif
24964#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24965bool
24966#if defined(GET_EVAL_IMPL)
24967EvalEmitter
24968#else
24969ByteCodeEmitter
24970#endif
24971::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
24972 switch (T0) {
24973 case PT_Sint8:
24974 return emitInitElemPopSint8(A0, I);
24975 case PT_Uint8:
24976 return emitInitElemPopUint8(A0, I);
24977 case PT_Sint16:
24978 return emitInitElemPopSint16(A0, I);
24979 case PT_Uint16:
24980 return emitInitElemPopUint16(A0, I);
24981 case PT_Sint32:
24982 return emitInitElemPopSint32(A0, I);
24983 case PT_Uint32:
24984 return emitInitElemPopUint32(A0, I);
24985 case PT_Sint64:
24986 return emitInitElemPopSint64(A0, I);
24987 case PT_Uint64:
24988 return emitInitElemPopUint64(A0, I);
24989 case PT_IntAP:
24990 return emitInitElemPopIntAP(A0, I);
24991 case PT_IntAPS:
24992 return emitInitElemPopIntAPS(A0, I);
24993 case PT_Bool:
24994 return emitInitElemPopBool(A0, I);
24995 case PT_FixedPoint:
24996 return emitInitElemPopFixedPoint(A0, I);
24997 case PT_Ptr:
24998 return emitInitElemPopPtr(A0, I);
24999 case PT_MemberPtr:
25000 return emitInitElemPopMemberPtr(A0, I);
25001 case PT_Float:
25002 return emitInitElemPopFloat(A0, I);
25003 }
25004 llvm_unreachable("invalid enum value");
25005}
25006#endif
25007#ifdef GET_LINK_IMPL
25008bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
25009 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
25010}
25011bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
25012 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
25013}
25014bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
25015 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
25016}
25017bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
25018 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
25019}
25020bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
25021 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
25022}
25023bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
25024 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
25025}
25026bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
25027 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
25028}
25029bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
25030 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
25031}
25032bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
25033 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
25034}
25035bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
25036 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
25037}
25038bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
25039 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
25040}
25041bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
25042 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
25043}
25044bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
25045 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
25046}
25047bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
25048 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
25049}
25050bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
25051 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
25052}
25053#endif
25054#ifdef GET_EVAL_IMPL
25055bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
25056 if (!isActive()) return true;
25057 CurrentSource = L;
25058 return InitElemPop<PT_Sint8>(S, OpPC, A0);
25059}
25060bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
25061 if (!isActive()) return true;
25062 CurrentSource = L;
25063 return InitElemPop<PT_Uint8>(S, OpPC, A0);
25064}
25065bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
25066 if (!isActive()) return true;
25067 CurrentSource = L;
25068 return InitElemPop<PT_Sint16>(S, OpPC, A0);
25069}
25070bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
25071 if (!isActive()) return true;
25072 CurrentSource = L;
25073 return InitElemPop<PT_Uint16>(S, OpPC, A0);
25074}
25075bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
25076 if (!isActive()) return true;
25077 CurrentSource = L;
25078 return InitElemPop<PT_Sint32>(S, OpPC, A0);
25079}
25080bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
25081 if (!isActive()) return true;
25082 CurrentSource = L;
25083 return InitElemPop<PT_Uint32>(S, OpPC, A0);
25084}
25085bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
25086 if (!isActive()) return true;
25087 CurrentSource = L;
25088 return InitElemPop<PT_Sint64>(S, OpPC, A0);
25089}
25090bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
25091 if (!isActive()) return true;
25092 CurrentSource = L;
25093 return InitElemPop<PT_Uint64>(S, OpPC, A0);
25094}
25095bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
25096 if (!isActive()) return true;
25097 CurrentSource = L;
25098 return InitElemPop<PT_IntAP>(S, OpPC, A0);
25099}
25100bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
25101 if (!isActive()) return true;
25102 CurrentSource = L;
25103 return InitElemPop<PT_IntAPS>(S, OpPC, A0);
25104}
25105bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
25106 if (!isActive()) return true;
25107 CurrentSource = L;
25108 return InitElemPop<PT_Bool>(S, OpPC, A0);
25109}
25110bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
25111 if (!isActive()) return true;
25112 CurrentSource = L;
25113 return InitElemPop<PT_FixedPoint>(S, OpPC, A0);
25114}
25115bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
25116 if (!isActive()) return true;
25117 CurrentSource = L;
25118 return InitElemPop<PT_Ptr>(S, OpPC, A0);
25119}
25120bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
25121 if (!isActive()) return true;
25122 CurrentSource = L;
25123 return InitElemPop<PT_MemberPtr>(S, OpPC, A0);
25124}
25125bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
25126 if (!isActive()) return true;
25127 CurrentSource = L;
25128 return InitElemPop<PT_Float>(S, OpPC, A0);
25129}
25130#endif
25131#ifdef GET_OPCODE_NAMES
25132OP_InitFieldSint8,
25133OP_InitFieldUint8,
25134OP_InitFieldSint16,
25135OP_InitFieldUint16,
25136OP_InitFieldSint32,
25137OP_InitFieldUint32,
25138OP_InitFieldSint64,
25139OP_InitFieldUint64,
25140OP_InitFieldIntAP,
25141OP_InitFieldIntAPS,
25142OP_InitFieldBool,
25143OP_InitFieldFixedPoint,
25144OP_InitFieldPtr,
25145OP_InitFieldMemberPtr,
25146OP_InitFieldFloat,
25147#endif
25148#ifdef GET_INTERP
25149case OP_InitFieldSint8: {
25150 const auto V0 = ReadArg<uint32_t>(S, PC);
25151 if (!InitField<PT_Sint8>(S, OpPC, V0))
25152 return false;
25153 continue;
25154}
25155case OP_InitFieldUint8: {
25156 const auto V0 = ReadArg<uint32_t>(S, PC);
25157 if (!InitField<PT_Uint8>(S, OpPC, V0))
25158 return false;
25159 continue;
25160}
25161case OP_InitFieldSint16: {
25162 const auto V0 = ReadArg<uint32_t>(S, PC);
25163 if (!InitField<PT_Sint16>(S, OpPC, V0))
25164 return false;
25165 continue;
25166}
25167case OP_InitFieldUint16: {
25168 const auto V0 = ReadArg<uint32_t>(S, PC);
25169 if (!InitField<PT_Uint16>(S, OpPC, V0))
25170 return false;
25171 continue;
25172}
25173case OP_InitFieldSint32: {
25174 const auto V0 = ReadArg<uint32_t>(S, PC);
25175 if (!InitField<PT_Sint32>(S, OpPC, V0))
25176 return false;
25177 continue;
25178}
25179case OP_InitFieldUint32: {
25180 const auto V0 = ReadArg<uint32_t>(S, PC);
25181 if (!InitField<PT_Uint32>(S, OpPC, V0))
25182 return false;
25183 continue;
25184}
25185case OP_InitFieldSint64: {
25186 const auto V0 = ReadArg<uint32_t>(S, PC);
25187 if (!InitField<PT_Sint64>(S, OpPC, V0))
25188 return false;
25189 continue;
25190}
25191case OP_InitFieldUint64: {
25192 const auto V0 = ReadArg<uint32_t>(S, PC);
25193 if (!InitField<PT_Uint64>(S, OpPC, V0))
25194 return false;
25195 continue;
25196}
25197case OP_InitFieldIntAP: {
25198 const auto V0 = ReadArg<uint32_t>(S, PC);
25199 if (!InitField<PT_IntAP>(S, OpPC, V0))
25200 return false;
25201 continue;
25202}
25203case OP_InitFieldIntAPS: {
25204 const auto V0 = ReadArg<uint32_t>(S, PC);
25205 if (!InitField<PT_IntAPS>(S, OpPC, V0))
25206 return false;
25207 continue;
25208}
25209case OP_InitFieldBool: {
25210 const auto V0 = ReadArg<uint32_t>(S, PC);
25211 if (!InitField<PT_Bool>(S, OpPC, V0))
25212 return false;
25213 continue;
25214}
25215case OP_InitFieldFixedPoint: {
25216 const auto V0 = ReadArg<uint32_t>(S, PC);
25217 if (!InitField<PT_FixedPoint>(S, OpPC, V0))
25218 return false;
25219 continue;
25220}
25221case OP_InitFieldPtr: {
25222 const auto V0 = ReadArg<uint32_t>(S, PC);
25223 if (!InitField<PT_Ptr>(S, OpPC, V0))
25224 return false;
25225 continue;
25226}
25227case OP_InitFieldMemberPtr: {
25228 const auto V0 = ReadArg<uint32_t>(S, PC);
25229 if (!InitField<PT_MemberPtr>(S, OpPC, V0))
25230 return false;
25231 continue;
25232}
25233case OP_InitFieldFloat: {
25234 const auto V0 = ReadArg<uint32_t>(S, PC);
25235 if (!InitField<PT_Float>(S, OpPC, V0))
25236 return false;
25237 continue;
25238}
25239#endif
25240#ifdef GET_DISASM
25241case OP_InitFieldSint8:
25242 Text.Op = PrintName("InitFieldSint8");
25243 Text.Args.push_back(printArg<uint32_t>(P, PC));
25244 break;
25245case OP_InitFieldUint8:
25246 Text.Op = PrintName("InitFieldUint8");
25247 Text.Args.push_back(printArg<uint32_t>(P, PC));
25248 break;
25249case OP_InitFieldSint16:
25250 Text.Op = PrintName("InitFieldSint16");
25251 Text.Args.push_back(printArg<uint32_t>(P, PC));
25252 break;
25253case OP_InitFieldUint16:
25254 Text.Op = PrintName("InitFieldUint16");
25255 Text.Args.push_back(printArg<uint32_t>(P, PC));
25256 break;
25257case OP_InitFieldSint32:
25258 Text.Op = PrintName("InitFieldSint32");
25259 Text.Args.push_back(printArg<uint32_t>(P, PC));
25260 break;
25261case OP_InitFieldUint32:
25262 Text.Op = PrintName("InitFieldUint32");
25263 Text.Args.push_back(printArg<uint32_t>(P, PC));
25264 break;
25265case OP_InitFieldSint64:
25266 Text.Op = PrintName("InitFieldSint64");
25267 Text.Args.push_back(printArg<uint32_t>(P, PC));
25268 break;
25269case OP_InitFieldUint64:
25270 Text.Op = PrintName("InitFieldUint64");
25271 Text.Args.push_back(printArg<uint32_t>(P, PC));
25272 break;
25273case OP_InitFieldIntAP:
25274 Text.Op = PrintName("InitFieldIntAP");
25275 Text.Args.push_back(printArg<uint32_t>(P, PC));
25276 break;
25277case OP_InitFieldIntAPS:
25278 Text.Op = PrintName("InitFieldIntAPS");
25279 Text.Args.push_back(printArg<uint32_t>(P, PC));
25280 break;
25281case OP_InitFieldBool:
25282 Text.Op = PrintName("InitFieldBool");
25283 Text.Args.push_back(printArg<uint32_t>(P, PC));
25284 break;
25285case OP_InitFieldFixedPoint:
25286 Text.Op = PrintName("InitFieldFixedPoint");
25287 Text.Args.push_back(printArg<uint32_t>(P, PC));
25288 break;
25289case OP_InitFieldPtr:
25290 Text.Op = PrintName("InitFieldPtr");
25291 Text.Args.push_back(printArg<uint32_t>(P, PC));
25292 break;
25293case OP_InitFieldMemberPtr:
25294 Text.Op = PrintName("InitFieldMemberPtr");
25295 Text.Args.push_back(printArg<uint32_t>(P, PC));
25296 break;
25297case OP_InitFieldFloat:
25298 Text.Op = PrintName("InitFieldFloat");
25299 Text.Args.push_back(printArg<uint32_t>(P, PC));
25300 break;
25301#endif
25302#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25303bool emitInitFieldSint8( uint32_t , SourceInfo);
25304bool emitInitFieldUint8( uint32_t , SourceInfo);
25305bool emitInitFieldSint16( uint32_t , SourceInfo);
25306bool emitInitFieldUint16( uint32_t , SourceInfo);
25307bool emitInitFieldSint32( uint32_t , SourceInfo);
25308bool emitInitFieldUint32( uint32_t , SourceInfo);
25309bool emitInitFieldSint64( uint32_t , SourceInfo);
25310bool emitInitFieldUint64( uint32_t , SourceInfo);
25311bool emitInitFieldIntAP( uint32_t , SourceInfo);
25312bool emitInitFieldIntAPS( uint32_t , SourceInfo);
25313bool emitInitFieldBool( uint32_t , SourceInfo);
25314bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
25315bool emitInitFieldPtr( uint32_t , SourceInfo);
25316bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
25317bool emitInitFieldFloat( uint32_t , SourceInfo);
25318#endif
25319#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25320[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
25321#endif
25322#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25323bool
25324#if defined(GET_EVAL_IMPL)
25325EvalEmitter
25326#else
25327ByteCodeEmitter
25328#endif
25329::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
25330 switch (T0) {
25331 case PT_Sint8:
25332 return emitInitFieldSint8(A0, I);
25333 case PT_Uint8:
25334 return emitInitFieldUint8(A0, I);
25335 case PT_Sint16:
25336 return emitInitFieldSint16(A0, I);
25337 case PT_Uint16:
25338 return emitInitFieldUint16(A0, I);
25339 case PT_Sint32:
25340 return emitInitFieldSint32(A0, I);
25341 case PT_Uint32:
25342 return emitInitFieldUint32(A0, I);
25343 case PT_Sint64:
25344 return emitInitFieldSint64(A0, I);
25345 case PT_Uint64:
25346 return emitInitFieldUint64(A0, I);
25347 case PT_IntAP:
25348 return emitInitFieldIntAP(A0, I);
25349 case PT_IntAPS:
25350 return emitInitFieldIntAPS(A0, I);
25351 case PT_Bool:
25352 return emitInitFieldBool(A0, I);
25353 case PT_FixedPoint:
25354 return emitInitFieldFixedPoint(A0, I);
25355 case PT_Ptr:
25356 return emitInitFieldPtr(A0, I);
25357 case PT_MemberPtr:
25358 return emitInitFieldMemberPtr(A0, I);
25359 case PT_Float:
25360 return emitInitFieldFloat(A0, I);
25361 }
25362 llvm_unreachable("invalid enum value");
25363}
25364#endif
25365#ifdef GET_LINK_IMPL
25366bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
25367 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
25368}
25369bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
25370 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
25371}
25372bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
25373 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
25374}
25375bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
25376 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
25377}
25378bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
25379 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
25380}
25381bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
25382 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
25383}
25384bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
25385 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
25386}
25387bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
25388 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
25389}
25390bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
25391 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
25392}
25393bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
25394 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
25395}
25396bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
25397 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
25398}
25399bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
25400 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
25401}
25402bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
25403 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
25404}
25405bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
25406 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
25407}
25408bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
25409 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
25410}
25411#endif
25412#ifdef GET_EVAL_IMPL
25413bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
25414 if (!isActive()) return true;
25415 CurrentSource = L;
25416 return InitField<PT_Sint8>(S, OpPC, A0);
25417}
25418bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
25419 if (!isActive()) return true;
25420 CurrentSource = L;
25421 return InitField<PT_Uint8>(S, OpPC, A0);
25422}
25423bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
25424 if (!isActive()) return true;
25425 CurrentSource = L;
25426 return InitField<PT_Sint16>(S, OpPC, A0);
25427}
25428bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
25429 if (!isActive()) return true;
25430 CurrentSource = L;
25431 return InitField<PT_Uint16>(S, OpPC, A0);
25432}
25433bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
25434 if (!isActive()) return true;
25435 CurrentSource = L;
25436 return InitField<PT_Sint32>(S, OpPC, A0);
25437}
25438bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
25439 if (!isActive()) return true;
25440 CurrentSource = L;
25441 return InitField<PT_Uint32>(S, OpPC, A0);
25442}
25443bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
25444 if (!isActive()) return true;
25445 CurrentSource = L;
25446 return InitField<PT_Sint64>(S, OpPC, A0);
25447}
25448bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
25449 if (!isActive()) return true;
25450 CurrentSource = L;
25451 return InitField<PT_Uint64>(S, OpPC, A0);
25452}
25453bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
25454 if (!isActive()) return true;
25455 CurrentSource = L;
25456 return InitField<PT_IntAP>(S, OpPC, A0);
25457}
25458bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
25459 if (!isActive()) return true;
25460 CurrentSource = L;
25461 return InitField<PT_IntAPS>(S, OpPC, A0);
25462}
25463bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
25464 if (!isActive()) return true;
25465 CurrentSource = L;
25466 return InitField<PT_Bool>(S, OpPC, A0);
25467}
25468bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
25469 if (!isActive()) return true;
25470 CurrentSource = L;
25471 return InitField<PT_FixedPoint>(S, OpPC, A0);
25472}
25473bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
25474 if (!isActive()) return true;
25475 CurrentSource = L;
25476 return InitField<PT_Ptr>(S, OpPC, A0);
25477}
25478bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
25479 if (!isActive()) return true;
25480 CurrentSource = L;
25481 return InitField<PT_MemberPtr>(S, OpPC, A0);
25482}
25483bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
25484 if (!isActive()) return true;
25485 CurrentSource = L;
25486 return InitField<PT_Float>(S, OpPC, A0);
25487}
25488#endif
25489#ifdef GET_OPCODE_NAMES
25490OP_InitFieldActivateSint8,
25491OP_InitFieldActivateUint8,
25492OP_InitFieldActivateSint16,
25493OP_InitFieldActivateUint16,
25494OP_InitFieldActivateSint32,
25495OP_InitFieldActivateUint32,
25496OP_InitFieldActivateSint64,
25497OP_InitFieldActivateUint64,
25498OP_InitFieldActivateIntAP,
25499OP_InitFieldActivateIntAPS,
25500OP_InitFieldActivateBool,
25501OP_InitFieldActivateFixedPoint,
25502OP_InitFieldActivatePtr,
25503OP_InitFieldActivateMemberPtr,
25504OP_InitFieldActivateFloat,
25505#endif
25506#ifdef GET_INTERP
25507case OP_InitFieldActivateSint8: {
25508 const auto V0 = ReadArg<uint32_t>(S, PC);
25509 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0))
25510 return false;
25511 continue;
25512}
25513case OP_InitFieldActivateUint8: {
25514 const auto V0 = ReadArg<uint32_t>(S, PC);
25515 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0))
25516 return false;
25517 continue;
25518}
25519case OP_InitFieldActivateSint16: {
25520 const auto V0 = ReadArg<uint32_t>(S, PC);
25521 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0))
25522 return false;
25523 continue;
25524}
25525case OP_InitFieldActivateUint16: {
25526 const auto V0 = ReadArg<uint32_t>(S, PC);
25527 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0))
25528 return false;
25529 continue;
25530}
25531case OP_InitFieldActivateSint32: {
25532 const auto V0 = ReadArg<uint32_t>(S, PC);
25533 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0))
25534 return false;
25535 continue;
25536}
25537case OP_InitFieldActivateUint32: {
25538 const auto V0 = ReadArg<uint32_t>(S, PC);
25539 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0))
25540 return false;
25541 continue;
25542}
25543case OP_InitFieldActivateSint64: {
25544 const auto V0 = ReadArg<uint32_t>(S, PC);
25545 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0))
25546 return false;
25547 continue;
25548}
25549case OP_InitFieldActivateUint64: {
25550 const auto V0 = ReadArg<uint32_t>(S, PC);
25551 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0))
25552 return false;
25553 continue;
25554}
25555case OP_InitFieldActivateIntAP: {
25556 const auto V0 = ReadArg<uint32_t>(S, PC);
25557 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0))
25558 return false;
25559 continue;
25560}
25561case OP_InitFieldActivateIntAPS: {
25562 const auto V0 = ReadArg<uint32_t>(S, PC);
25563 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0))
25564 return false;
25565 continue;
25566}
25567case OP_InitFieldActivateBool: {
25568 const auto V0 = ReadArg<uint32_t>(S, PC);
25569 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0))
25570 return false;
25571 continue;
25572}
25573case OP_InitFieldActivateFixedPoint: {
25574 const auto V0 = ReadArg<uint32_t>(S, PC);
25575 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0))
25576 return false;
25577 continue;
25578}
25579case OP_InitFieldActivatePtr: {
25580 const auto V0 = ReadArg<uint32_t>(S, PC);
25581 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0))
25582 return false;
25583 continue;
25584}
25585case OP_InitFieldActivateMemberPtr: {
25586 const auto V0 = ReadArg<uint32_t>(S, PC);
25587 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0))
25588 return false;
25589 continue;
25590}
25591case OP_InitFieldActivateFloat: {
25592 const auto V0 = ReadArg<uint32_t>(S, PC);
25593 if (!InitFieldActivate<PT_Float>(S, OpPC, V0))
25594 return false;
25595 continue;
25596}
25597#endif
25598#ifdef GET_DISASM
25599case OP_InitFieldActivateSint8:
25600 Text.Op = PrintName("InitFieldActivateSint8");
25601 Text.Args.push_back(printArg<uint32_t>(P, PC));
25602 break;
25603case OP_InitFieldActivateUint8:
25604 Text.Op = PrintName("InitFieldActivateUint8");
25605 Text.Args.push_back(printArg<uint32_t>(P, PC));
25606 break;
25607case OP_InitFieldActivateSint16:
25608 Text.Op = PrintName("InitFieldActivateSint16");
25609 Text.Args.push_back(printArg<uint32_t>(P, PC));
25610 break;
25611case OP_InitFieldActivateUint16:
25612 Text.Op = PrintName("InitFieldActivateUint16");
25613 Text.Args.push_back(printArg<uint32_t>(P, PC));
25614 break;
25615case OP_InitFieldActivateSint32:
25616 Text.Op = PrintName("InitFieldActivateSint32");
25617 Text.Args.push_back(printArg<uint32_t>(P, PC));
25618 break;
25619case OP_InitFieldActivateUint32:
25620 Text.Op = PrintName("InitFieldActivateUint32");
25621 Text.Args.push_back(printArg<uint32_t>(P, PC));
25622 break;
25623case OP_InitFieldActivateSint64:
25624 Text.Op = PrintName("InitFieldActivateSint64");
25625 Text.Args.push_back(printArg<uint32_t>(P, PC));
25626 break;
25627case OP_InitFieldActivateUint64:
25628 Text.Op = PrintName("InitFieldActivateUint64");
25629 Text.Args.push_back(printArg<uint32_t>(P, PC));
25630 break;
25631case OP_InitFieldActivateIntAP:
25632 Text.Op = PrintName("InitFieldActivateIntAP");
25633 Text.Args.push_back(printArg<uint32_t>(P, PC));
25634 break;
25635case OP_InitFieldActivateIntAPS:
25636 Text.Op = PrintName("InitFieldActivateIntAPS");
25637 Text.Args.push_back(printArg<uint32_t>(P, PC));
25638 break;
25639case OP_InitFieldActivateBool:
25640 Text.Op = PrintName("InitFieldActivateBool");
25641 Text.Args.push_back(printArg<uint32_t>(P, PC));
25642 break;
25643case OP_InitFieldActivateFixedPoint:
25644 Text.Op = PrintName("InitFieldActivateFixedPoint");
25645 Text.Args.push_back(printArg<uint32_t>(P, PC));
25646 break;
25647case OP_InitFieldActivatePtr:
25648 Text.Op = PrintName("InitFieldActivatePtr");
25649 Text.Args.push_back(printArg<uint32_t>(P, PC));
25650 break;
25651case OP_InitFieldActivateMemberPtr:
25652 Text.Op = PrintName("InitFieldActivateMemberPtr");
25653 Text.Args.push_back(printArg<uint32_t>(P, PC));
25654 break;
25655case OP_InitFieldActivateFloat:
25656 Text.Op = PrintName("InitFieldActivateFloat");
25657 Text.Args.push_back(printArg<uint32_t>(P, PC));
25658 break;
25659#endif
25660#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25661bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
25662bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
25663bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
25664bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
25665bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
25666bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
25667bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
25668bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
25669bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
25670bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
25671bool emitInitFieldActivateBool( uint32_t , SourceInfo);
25672bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
25673bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
25674bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
25675bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
25676#endif
25677#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25678[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
25679#endif
25680#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25681bool
25682#if defined(GET_EVAL_IMPL)
25683EvalEmitter
25684#else
25685ByteCodeEmitter
25686#endif
25687::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
25688 switch (T0) {
25689 case PT_Sint8:
25690 return emitInitFieldActivateSint8(A0, I);
25691 case PT_Uint8:
25692 return emitInitFieldActivateUint8(A0, I);
25693 case PT_Sint16:
25694 return emitInitFieldActivateSint16(A0, I);
25695 case PT_Uint16:
25696 return emitInitFieldActivateUint16(A0, I);
25697 case PT_Sint32:
25698 return emitInitFieldActivateSint32(A0, I);
25699 case PT_Uint32:
25700 return emitInitFieldActivateUint32(A0, I);
25701 case PT_Sint64:
25702 return emitInitFieldActivateSint64(A0, I);
25703 case PT_Uint64:
25704 return emitInitFieldActivateUint64(A0, I);
25705 case PT_IntAP:
25706 return emitInitFieldActivateIntAP(A0, I);
25707 case PT_IntAPS:
25708 return emitInitFieldActivateIntAPS(A0, I);
25709 case PT_Bool:
25710 return emitInitFieldActivateBool(A0, I);
25711 case PT_FixedPoint:
25712 return emitInitFieldActivateFixedPoint(A0, I);
25713 case PT_Ptr:
25714 return emitInitFieldActivatePtr(A0, I);
25715 case PT_MemberPtr:
25716 return emitInitFieldActivateMemberPtr(A0, I);
25717 case PT_Float:
25718 return emitInitFieldActivateFloat(A0, I);
25719 }
25720 llvm_unreachable("invalid enum value");
25721}
25722#endif
25723#ifdef GET_LINK_IMPL
25724bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
25725 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
25726}
25727bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
25728 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
25729}
25730bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
25731 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
25732}
25733bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
25734 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
25735}
25736bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
25737 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
25738}
25739bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
25740 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
25741}
25742bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
25743 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
25744}
25745bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
25746 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
25747}
25748bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
25749 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
25750}
25751bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
25752 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
25753}
25754bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
25755 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
25756}
25757bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
25758 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
25759}
25760bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
25761 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
25762}
25763bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
25764 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
25765}
25766bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
25767 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
25768}
25769#endif
25770#ifdef GET_EVAL_IMPL
25771bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
25772 if (!isActive()) return true;
25773 CurrentSource = L;
25774 return InitFieldActivate<PT_Sint8>(S, OpPC, A0);
25775}
25776bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
25777 if (!isActive()) return true;
25778 CurrentSource = L;
25779 return InitFieldActivate<PT_Uint8>(S, OpPC, A0);
25780}
25781bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
25782 if (!isActive()) return true;
25783 CurrentSource = L;
25784 return InitFieldActivate<PT_Sint16>(S, OpPC, A0);
25785}
25786bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
25787 if (!isActive()) return true;
25788 CurrentSource = L;
25789 return InitFieldActivate<PT_Uint16>(S, OpPC, A0);
25790}
25791bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
25792 if (!isActive()) return true;
25793 CurrentSource = L;
25794 return InitFieldActivate<PT_Sint32>(S, OpPC, A0);
25795}
25796bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
25797 if (!isActive()) return true;
25798 CurrentSource = L;
25799 return InitFieldActivate<PT_Uint32>(S, OpPC, A0);
25800}
25801bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
25802 if (!isActive()) return true;
25803 CurrentSource = L;
25804 return InitFieldActivate<PT_Sint64>(S, OpPC, A0);
25805}
25806bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
25807 if (!isActive()) return true;
25808 CurrentSource = L;
25809 return InitFieldActivate<PT_Uint64>(S, OpPC, A0);
25810}
25811bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
25812 if (!isActive()) return true;
25813 CurrentSource = L;
25814 return InitFieldActivate<PT_IntAP>(S, OpPC, A0);
25815}
25816bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
25817 if (!isActive()) return true;
25818 CurrentSource = L;
25819 return InitFieldActivate<PT_IntAPS>(S, OpPC, A0);
25820}
25821bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
25822 if (!isActive()) return true;
25823 CurrentSource = L;
25824 return InitFieldActivate<PT_Bool>(S, OpPC, A0);
25825}
25826bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
25827 if (!isActive()) return true;
25828 CurrentSource = L;
25829 return InitFieldActivate<PT_FixedPoint>(S, OpPC, A0);
25830}
25831bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
25832 if (!isActive()) return true;
25833 CurrentSource = L;
25834 return InitFieldActivate<PT_Ptr>(S, OpPC, A0);
25835}
25836bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
25837 if (!isActive()) return true;
25838 CurrentSource = L;
25839 return InitFieldActivate<PT_MemberPtr>(S, OpPC, A0);
25840}
25841bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
25842 if (!isActive()) return true;
25843 CurrentSource = L;
25844 return InitFieldActivate<PT_Float>(S, OpPC, A0);
25845}
25846#endif
25847#ifdef GET_OPCODE_NAMES
25848OP_InitGlobalSint8,
25849OP_InitGlobalUint8,
25850OP_InitGlobalSint16,
25851OP_InitGlobalUint16,
25852OP_InitGlobalSint32,
25853OP_InitGlobalUint32,
25854OP_InitGlobalSint64,
25855OP_InitGlobalUint64,
25856OP_InitGlobalIntAP,
25857OP_InitGlobalIntAPS,
25858OP_InitGlobalBool,
25859OP_InitGlobalFixedPoint,
25860OP_InitGlobalPtr,
25861OP_InitGlobalMemberPtr,
25862OP_InitGlobalFloat,
25863#endif
25864#ifdef GET_INTERP
25865case OP_InitGlobalSint8: {
25866 const auto V0 = ReadArg<uint32_t>(S, PC);
25867 if (!InitGlobal<PT_Sint8>(S, OpPC, V0))
25868 return false;
25869 continue;
25870}
25871case OP_InitGlobalUint8: {
25872 const auto V0 = ReadArg<uint32_t>(S, PC);
25873 if (!InitGlobal<PT_Uint8>(S, OpPC, V0))
25874 return false;
25875 continue;
25876}
25877case OP_InitGlobalSint16: {
25878 const auto V0 = ReadArg<uint32_t>(S, PC);
25879 if (!InitGlobal<PT_Sint16>(S, OpPC, V0))
25880 return false;
25881 continue;
25882}
25883case OP_InitGlobalUint16: {
25884 const auto V0 = ReadArg<uint32_t>(S, PC);
25885 if (!InitGlobal<PT_Uint16>(S, OpPC, V0))
25886 return false;
25887 continue;
25888}
25889case OP_InitGlobalSint32: {
25890 const auto V0 = ReadArg<uint32_t>(S, PC);
25891 if (!InitGlobal<PT_Sint32>(S, OpPC, V0))
25892 return false;
25893 continue;
25894}
25895case OP_InitGlobalUint32: {
25896 const auto V0 = ReadArg<uint32_t>(S, PC);
25897 if (!InitGlobal<PT_Uint32>(S, OpPC, V0))
25898 return false;
25899 continue;
25900}
25901case OP_InitGlobalSint64: {
25902 const auto V0 = ReadArg<uint32_t>(S, PC);
25903 if (!InitGlobal<PT_Sint64>(S, OpPC, V0))
25904 return false;
25905 continue;
25906}
25907case OP_InitGlobalUint64: {
25908 const auto V0 = ReadArg<uint32_t>(S, PC);
25909 if (!InitGlobal<PT_Uint64>(S, OpPC, V0))
25910 return false;
25911 continue;
25912}
25913case OP_InitGlobalIntAP: {
25914 const auto V0 = ReadArg<uint32_t>(S, PC);
25915 if (!InitGlobal<PT_IntAP>(S, OpPC, V0))
25916 return false;
25917 continue;
25918}
25919case OP_InitGlobalIntAPS: {
25920 const auto V0 = ReadArg<uint32_t>(S, PC);
25921 if (!InitGlobal<PT_IntAPS>(S, OpPC, V0))
25922 return false;
25923 continue;
25924}
25925case OP_InitGlobalBool: {
25926 const auto V0 = ReadArg<uint32_t>(S, PC);
25927 if (!InitGlobal<PT_Bool>(S, OpPC, V0))
25928 return false;
25929 continue;
25930}
25931case OP_InitGlobalFixedPoint: {
25932 const auto V0 = ReadArg<uint32_t>(S, PC);
25933 if (!InitGlobal<PT_FixedPoint>(S, OpPC, V0))
25934 return false;
25935 continue;
25936}
25937case OP_InitGlobalPtr: {
25938 const auto V0 = ReadArg<uint32_t>(S, PC);
25939 if (!InitGlobal<PT_Ptr>(S, OpPC, V0))
25940 return false;
25941 continue;
25942}
25943case OP_InitGlobalMemberPtr: {
25944 const auto V0 = ReadArg<uint32_t>(S, PC);
25945 if (!InitGlobal<PT_MemberPtr>(S, OpPC, V0))
25946 return false;
25947 continue;
25948}
25949case OP_InitGlobalFloat: {
25950 const auto V0 = ReadArg<uint32_t>(S, PC);
25951 if (!InitGlobal<PT_Float>(S, OpPC, V0))
25952 return false;
25953 continue;
25954}
25955#endif
25956#ifdef GET_DISASM
25957case OP_InitGlobalSint8:
25958 Text.Op = PrintName("InitGlobalSint8");
25959 Text.Args.push_back(printArg<uint32_t>(P, PC));
25960 break;
25961case OP_InitGlobalUint8:
25962 Text.Op = PrintName("InitGlobalUint8");
25963 Text.Args.push_back(printArg<uint32_t>(P, PC));
25964 break;
25965case OP_InitGlobalSint16:
25966 Text.Op = PrintName("InitGlobalSint16");
25967 Text.Args.push_back(printArg<uint32_t>(P, PC));
25968 break;
25969case OP_InitGlobalUint16:
25970 Text.Op = PrintName("InitGlobalUint16");
25971 Text.Args.push_back(printArg<uint32_t>(P, PC));
25972 break;
25973case OP_InitGlobalSint32:
25974 Text.Op = PrintName("InitGlobalSint32");
25975 Text.Args.push_back(printArg<uint32_t>(P, PC));
25976 break;
25977case OP_InitGlobalUint32:
25978 Text.Op = PrintName("InitGlobalUint32");
25979 Text.Args.push_back(printArg<uint32_t>(P, PC));
25980 break;
25981case OP_InitGlobalSint64:
25982 Text.Op = PrintName("InitGlobalSint64");
25983 Text.Args.push_back(printArg<uint32_t>(P, PC));
25984 break;
25985case OP_InitGlobalUint64:
25986 Text.Op = PrintName("InitGlobalUint64");
25987 Text.Args.push_back(printArg<uint32_t>(P, PC));
25988 break;
25989case OP_InitGlobalIntAP:
25990 Text.Op = PrintName("InitGlobalIntAP");
25991 Text.Args.push_back(printArg<uint32_t>(P, PC));
25992 break;
25993case OP_InitGlobalIntAPS:
25994 Text.Op = PrintName("InitGlobalIntAPS");
25995 Text.Args.push_back(printArg<uint32_t>(P, PC));
25996 break;
25997case OP_InitGlobalBool:
25998 Text.Op = PrintName("InitGlobalBool");
25999 Text.Args.push_back(printArg<uint32_t>(P, PC));
26000 break;
26001case OP_InitGlobalFixedPoint:
26002 Text.Op = PrintName("InitGlobalFixedPoint");
26003 Text.Args.push_back(printArg<uint32_t>(P, PC));
26004 break;
26005case OP_InitGlobalPtr:
26006 Text.Op = PrintName("InitGlobalPtr");
26007 Text.Args.push_back(printArg<uint32_t>(P, PC));
26008 break;
26009case OP_InitGlobalMemberPtr:
26010 Text.Op = PrintName("InitGlobalMemberPtr");
26011 Text.Args.push_back(printArg<uint32_t>(P, PC));
26012 break;
26013case OP_InitGlobalFloat:
26014 Text.Op = PrintName("InitGlobalFloat");
26015 Text.Args.push_back(printArg<uint32_t>(P, PC));
26016 break;
26017#endif
26018#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26019bool emitInitGlobalSint8( uint32_t , SourceInfo);
26020bool emitInitGlobalUint8( uint32_t , SourceInfo);
26021bool emitInitGlobalSint16( uint32_t , SourceInfo);
26022bool emitInitGlobalUint16( uint32_t , SourceInfo);
26023bool emitInitGlobalSint32( uint32_t , SourceInfo);
26024bool emitInitGlobalUint32( uint32_t , SourceInfo);
26025bool emitInitGlobalSint64( uint32_t , SourceInfo);
26026bool emitInitGlobalUint64( uint32_t , SourceInfo);
26027bool emitInitGlobalIntAP( uint32_t , SourceInfo);
26028bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
26029bool emitInitGlobalBool( uint32_t , SourceInfo);
26030bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
26031bool emitInitGlobalPtr( uint32_t , SourceInfo);
26032bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
26033bool emitInitGlobalFloat( uint32_t , SourceInfo);
26034#endif
26035#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26036[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
26037#endif
26038#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26039bool
26040#if defined(GET_EVAL_IMPL)
26041EvalEmitter
26042#else
26043ByteCodeEmitter
26044#endif
26045::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
26046 switch (T0) {
26047 case PT_Sint8:
26048 return emitInitGlobalSint8(A0, I);
26049 case PT_Uint8:
26050 return emitInitGlobalUint8(A0, I);
26051 case PT_Sint16:
26052 return emitInitGlobalSint16(A0, I);
26053 case PT_Uint16:
26054 return emitInitGlobalUint16(A0, I);
26055 case PT_Sint32:
26056 return emitInitGlobalSint32(A0, I);
26057 case PT_Uint32:
26058 return emitInitGlobalUint32(A0, I);
26059 case PT_Sint64:
26060 return emitInitGlobalSint64(A0, I);
26061 case PT_Uint64:
26062 return emitInitGlobalUint64(A0, I);
26063 case PT_IntAP:
26064 return emitInitGlobalIntAP(A0, I);
26065 case PT_IntAPS:
26066 return emitInitGlobalIntAPS(A0, I);
26067 case PT_Bool:
26068 return emitInitGlobalBool(A0, I);
26069 case PT_FixedPoint:
26070 return emitInitGlobalFixedPoint(A0, I);
26071 case PT_Ptr:
26072 return emitInitGlobalPtr(A0, I);
26073 case PT_MemberPtr:
26074 return emitInitGlobalMemberPtr(A0, I);
26075 case PT_Float:
26076 return emitInitGlobalFloat(A0, I);
26077 }
26078 llvm_unreachable("invalid enum value");
26079}
26080#endif
26081#ifdef GET_LINK_IMPL
26082bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
26083 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
26084}
26085bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
26086 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
26087}
26088bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
26089 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
26090}
26091bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
26092 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
26093}
26094bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
26095 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
26096}
26097bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
26098 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
26099}
26100bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
26101 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
26102}
26103bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
26104 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
26105}
26106bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
26107 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
26108}
26109bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
26110 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
26111}
26112bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
26113 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
26114}
26115bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26116 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
26117}
26118bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
26119 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
26120}
26121bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26122 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
26123}
26124bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
26125 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
26126}
26127#endif
26128#ifdef GET_EVAL_IMPL
26129bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
26130 if (!isActive()) return true;
26131 CurrentSource = L;
26132 return InitGlobal<PT_Sint8>(S, OpPC, A0);
26133}
26134bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
26135 if (!isActive()) return true;
26136 CurrentSource = L;
26137 return InitGlobal<PT_Uint8>(S, OpPC, A0);
26138}
26139bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
26140 if (!isActive()) return true;
26141 CurrentSource = L;
26142 return InitGlobal<PT_Sint16>(S, OpPC, A0);
26143}
26144bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
26145 if (!isActive()) return true;
26146 CurrentSource = L;
26147 return InitGlobal<PT_Uint16>(S, OpPC, A0);
26148}
26149bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
26150 if (!isActive()) return true;
26151 CurrentSource = L;
26152 return InitGlobal<PT_Sint32>(S, OpPC, A0);
26153}
26154bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
26155 if (!isActive()) return true;
26156 CurrentSource = L;
26157 return InitGlobal<PT_Uint32>(S, OpPC, A0);
26158}
26159bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
26160 if (!isActive()) return true;
26161 CurrentSource = L;
26162 return InitGlobal<PT_Sint64>(S, OpPC, A0);
26163}
26164bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
26165 if (!isActive()) return true;
26166 CurrentSource = L;
26167 return InitGlobal<PT_Uint64>(S, OpPC, A0);
26168}
26169bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
26170 if (!isActive()) return true;
26171 CurrentSource = L;
26172 return InitGlobal<PT_IntAP>(S, OpPC, A0);
26173}
26174bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
26175 if (!isActive()) return true;
26176 CurrentSource = L;
26177 return InitGlobal<PT_IntAPS>(S, OpPC, A0);
26178}
26179bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
26180 if (!isActive()) return true;
26181 CurrentSource = L;
26182 return InitGlobal<PT_Bool>(S, OpPC, A0);
26183}
26184bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26185 if (!isActive()) return true;
26186 CurrentSource = L;
26187 return InitGlobal<PT_FixedPoint>(S, OpPC, A0);
26188}
26189bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
26190 if (!isActive()) return true;
26191 CurrentSource = L;
26192 return InitGlobal<PT_Ptr>(S, OpPC, A0);
26193}
26194bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26195 if (!isActive()) return true;
26196 CurrentSource = L;
26197 return InitGlobal<PT_MemberPtr>(S, OpPC, A0);
26198}
26199bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
26200 if (!isActive()) return true;
26201 CurrentSource = L;
26202 return InitGlobal<PT_Float>(S, OpPC, A0);
26203}
26204#endif
26205#ifdef GET_OPCODE_NAMES
26206OP_InitGlobalTempSint8,
26207OP_InitGlobalTempUint8,
26208OP_InitGlobalTempSint16,
26209OP_InitGlobalTempUint16,
26210OP_InitGlobalTempSint32,
26211OP_InitGlobalTempUint32,
26212OP_InitGlobalTempSint64,
26213OP_InitGlobalTempUint64,
26214OP_InitGlobalTempIntAP,
26215OP_InitGlobalTempIntAPS,
26216OP_InitGlobalTempBool,
26217OP_InitGlobalTempFixedPoint,
26218OP_InitGlobalTempPtr,
26219OP_InitGlobalTempMemberPtr,
26220OP_InitGlobalTempFloat,
26221#endif
26222#ifdef GET_INTERP
26223case OP_InitGlobalTempSint8: {
26224 const auto V0 = ReadArg<uint32_t>(S, PC);
26225 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26226 if (!InitGlobalTemp<PT_Sint8>(S, OpPC, V0, V1))
26227 return false;
26228 continue;
26229}
26230case OP_InitGlobalTempUint8: {
26231 const auto V0 = ReadArg<uint32_t>(S, PC);
26232 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26233 if (!InitGlobalTemp<PT_Uint8>(S, OpPC, V0, V1))
26234 return false;
26235 continue;
26236}
26237case OP_InitGlobalTempSint16: {
26238 const auto V0 = ReadArg<uint32_t>(S, PC);
26239 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26240 if (!InitGlobalTemp<PT_Sint16>(S, OpPC, V0, V1))
26241 return false;
26242 continue;
26243}
26244case OP_InitGlobalTempUint16: {
26245 const auto V0 = ReadArg<uint32_t>(S, PC);
26246 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26247 if (!InitGlobalTemp<PT_Uint16>(S, OpPC, V0, V1))
26248 return false;
26249 continue;
26250}
26251case OP_InitGlobalTempSint32: {
26252 const auto V0 = ReadArg<uint32_t>(S, PC);
26253 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26254 if (!InitGlobalTemp<PT_Sint32>(S, OpPC, V0, V1))
26255 return false;
26256 continue;
26257}
26258case OP_InitGlobalTempUint32: {
26259 const auto V0 = ReadArg<uint32_t>(S, PC);
26260 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26261 if (!InitGlobalTemp<PT_Uint32>(S, OpPC, V0, V1))
26262 return false;
26263 continue;
26264}
26265case OP_InitGlobalTempSint64: {
26266 const auto V0 = ReadArg<uint32_t>(S, PC);
26267 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26268 if (!InitGlobalTemp<PT_Sint64>(S, OpPC, V0, V1))
26269 return false;
26270 continue;
26271}
26272case OP_InitGlobalTempUint64: {
26273 const auto V0 = ReadArg<uint32_t>(S, PC);
26274 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26275 if (!InitGlobalTemp<PT_Uint64>(S, OpPC, V0, V1))
26276 return false;
26277 continue;
26278}
26279case OP_InitGlobalTempIntAP: {
26280 const auto V0 = ReadArg<uint32_t>(S, PC);
26281 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26282 if (!InitGlobalTemp<PT_IntAP>(S, OpPC, V0, V1))
26283 return false;
26284 continue;
26285}
26286case OP_InitGlobalTempIntAPS: {
26287 const auto V0 = ReadArg<uint32_t>(S, PC);
26288 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26289 if (!InitGlobalTemp<PT_IntAPS>(S, OpPC, V0, V1))
26290 return false;
26291 continue;
26292}
26293case OP_InitGlobalTempBool: {
26294 const auto V0 = ReadArg<uint32_t>(S, PC);
26295 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26296 if (!InitGlobalTemp<PT_Bool>(S, OpPC, V0, V1))
26297 return false;
26298 continue;
26299}
26300case OP_InitGlobalTempFixedPoint: {
26301 const auto V0 = ReadArg<uint32_t>(S, PC);
26302 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26303 if (!InitGlobalTemp<PT_FixedPoint>(S, OpPC, V0, V1))
26304 return false;
26305 continue;
26306}
26307case OP_InitGlobalTempPtr: {
26308 const auto V0 = ReadArg<uint32_t>(S, PC);
26309 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26310 if (!InitGlobalTemp<PT_Ptr>(S, OpPC, V0, V1))
26311 return false;
26312 continue;
26313}
26314case OP_InitGlobalTempMemberPtr: {
26315 const auto V0 = ReadArg<uint32_t>(S, PC);
26316 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26317 if (!InitGlobalTemp<PT_MemberPtr>(S, OpPC, V0, V1))
26318 return false;
26319 continue;
26320}
26321case OP_InitGlobalTempFloat: {
26322 const auto V0 = ReadArg<uint32_t>(S, PC);
26323 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26324 if (!InitGlobalTemp<PT_Float>(S, OpPC, V0, V1))
26325 return false;
26326 continue;
26327}
26328#endif
26329#ifdef GET_DISASM
26330case OP_InitGlobalTempSint8:
26331 Text.Op = PrintName("InitGlobalTempSint8");
26332 Text.Args.push_back(printArg<uint32_t>(P, PC));
26333 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26334 break;
26335case OP_InitGlobalTempUint8:
26336 Text.Op = PrintName("InitGlobalTempUint8");
26337 Text.Args.push_back(printArg<uint32_t>(P, PC));
26338 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26339 break;
26340case OP_InitGlobalTempSint16:
26341 Text.Op = PrintName("InitGlobalTempSint16");
26342 Text.Args.push_back(printArg<uint32_t>(P, PC));
26343 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26344 break;
26345case OP_InitGlobalTempUint16:
26346 Text.Op = PrintName("InitGlobalTempUint16");
26347 Text.Args.push_back(printArg<uint32_t>(P, PC));
26348 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26349 break;
26350case OP_InitGlobalTempSint32:
26351 Text.Op = PrintName("InitGlobalTempSint32");
26352 Text.Args.push_back(printArg<uint32_t>(P, PC));
26353 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26354 break;
26355case OP_InitGlobalTempUint32:
26356 Text.Op = PrintName("InitGlobalTempUint32");
26357 Text.Args.push_back(printArg<uint32_t>(P, PC));
26358 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26359 break;
26360case OP_InitGlobalTempSint64:
26361 Text.Op = PrintName("InitGlobalTempSint64");
26362 Text.Args.push_back(printArg<uint32_t>(P, PC));
26363 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26364 break;
26365case OP_InitGlobalTempUint64:
26366 Text.Op = PrintName("InitGlobalTempUint64");
26367 Text.Args.push_back(printArg<uint32_t>(P, PC));
26368 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26369 break;
26370case OP_InitGlobalTempIntAP:
26371 Text.Op = PrintName("InitGlobalTempIntAP");
26372 Text.Args.push_back(printArg<uint32_t>(P, PC));
26373 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26374 break;
26375case OP_InitGlobalTempIntAPS:
26376 Text.Op = PrintName("InitGlobalTempIntAPS");
26377 Text.Args.push_back(printArg<uint32_t>(P, PC));
26378 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26379 break;
26380case OP_InitGlobalTempBool:
26381 Text.Op = PrintName("InitGlobalTempBool");
26382 Text.Args.push_back(printArg<uint32_t>(P, PC));
26383 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26384 break;
26385case OP_InitGlobalTempFixedPoint:
26386 Text.Op = PrintName("InitGlobalTempFixedPoint");
26387 Text.Args.push_back(printArg<uint32_t>(P, PC));
26388 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26389 break;
26390case OP_InitGlobalTempPtr:
26391 Text.Op = PrintName("InitGlobalTempPtr");
26392 Text.Args.push_back(printArg<uint32_t>(P, PC));
26393 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26394 break;
26395case OP_InitGlobalTempMemberPtr:
26396 Text.Op = PrintName("InitGlobalTempMemberPtr");
26397 Text.Args.push_back(printArg<uint32_t>(P, PC));
26398 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26399 break;
26400case OP_InitGlobalTempFloat:
26401 Text.Op = PrintName("InitGlobalTempFloat");
26402 Text.Args.push_back(printArg<uint32_t>(P, PC));
26403 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26404 break;
26405#endif
26406#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26407bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26408bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26409bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26410bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26411bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26412bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26413bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26414bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26415bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26416bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26417bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26418bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26419bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26420bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26421bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26422#endif
26423#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26424[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
26425#endif
26426#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26427bool
26428#if defined(GET_EVAL_IMPL)
26429EvalEmitter
26430#else
26431ByteCodeEmitter
26432#endif
26433::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
26434 switch (T0) {
26435 case PT_Sint8:
26436 return emitInitGlobalTempSint8(A0, A1, I);
26437 case PT_Uint8:
26438 return emitInitGlobalTempUint8(A0, A1, I);
26439 case PT_Sint16:
26440 return emitInitGlobalTempSint16(A0, A1, I);
26441 case PT_Uint16:
26442 return emitInitGlobalTempUint16(A0, A1, I);
26443 case PT_Sint32:
26444 return emitInitGlobalTempSint32(A0, A1, I);
26445 case PT_Uint32:
26446 return emitInitGlobalTempUint32(A0, A1, I);
26447 case PT_Sint64:
26448 return emitInitGlobalTempSint64(A0, A1, I);
26449 case PT_Uint64:
26450 return emitInitGlobalTempUint64(A0, A1, I);
26451 case PT_IntAP:
26452 return emitInitGlobalTempIntAP(A0, A1, I);
26453 case PT_IntAPS:
26454 return emitInitGlobalTempIntAPS(A0, A1, I);
26455 case PT_Bool:
26456 return emitInitGlobalTempBool(A0, A1, I);
26457 case PT_FixedPoint:
26458 return emitInitGlobalTempFixedPoint(A0, A1, I);
26459 case PT_Ptr:
26460 return emitInitGlobalTempPtr(A0, A1, I);
26461 case PT_MemberPtr:
26462 return emitInitGlobalTempMemberPtr(A0, A1, I);
26463 case PT_Float:
26464 return emitInitGlobalTempFloat(A0, A1, I);
26465 }
26466 llvm_unreachable("invalid enum value");
26467}
26468#endif
26469#ifdef GET_LINK_IMPL
26470bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26471 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
26472}
26473bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26474 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
26475}
26476bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26477 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
26478}
26479bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26480 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
26481}
26482bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26483 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
26484}
26485bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26486 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
26487}
26488bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26489 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
26490}
26491bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26492 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
26493}
26494bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26495 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
26496}
26497bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26498 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
26499}
26500bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26501 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
26502}
26503bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26504 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
26505}
26506bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26507 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
26508}
26509bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26510 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
26511}
26512bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26513 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
26514}
26515#endif
26516#ifdef GET_EVAL_IMPL
26517bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26518 if (!isActive()) return true;
26519 CurrentSource = L;
26520 return InitGlobalTemp<PT_Sint8>(S, OpPC, A0, A1);
26521}
26522bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26523 if (!isActive()) return true;
26524 CurrentSource = L;
26525 return InitGlobalTemp<PT_Uint8>(S, OpPC, A0, A1);
26526}
26527bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26528 if (!isActive()) return true;
26529 CurrentSource = L;
26530 return InitGlobalTemp<PT_Sint16>(S, OpPC, A0, A1);
26531}
26532bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26533 if (!isActive()) return true;
26534 CurrentSource = L;
26535 return InitGlobalTemp<PT_Uint16>(S, OpPC, A0, A1);
26536}
26537bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26538 if (!isActive()) return true;
26539 CurrentSource = L;
26540 return InitGlobalTemp<PT_Sint32>(S, OpPC, A0, A1);
26541}
26542bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26543 if (!isActive()) return true;
26544 CurrentSource = L;
26545 return InitGlobalTemp<PT_Uint32>(S, OpPC, A0, A1);
26546}
26547bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26548 if (!isActive()) return true;
26549 CurrentSource = L;
26550 return InitGlobalTemp<PT_Sint64>(S, OpPC, A0, A1);
26551}
26552bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26553 if (!isActive()) return true;
26554 CurrentSource = L;
26555 return InitGlobalTemp<PT_Uint64>(S, OpPC, A0, A1);
26556}
26557bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26558 if (!isActive()) return true;
26559 CurrentSource = L;
26560 return InitGlobalTemp<PT_IntAP>(S, OpPC, A0, A1);
26561}
26562bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26563 if (!isActive()) return true;
26564 CurrentSource = L;
26565 return InitGlobalTemp<PT_IntAPS>(S, OpPC, A0, A1);
26566}
26567bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26568 if (!isActive()) return true;
26569 CurrentSource = L;
26570 return InitGlobalTemp<PT_Bool>(S, OpPC, A0, A1);
26571}
26572bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26573 if (!isActive()) return true;
26574 CurrentSource = L;
26575 return InitGlobalTemp<PT_FixedPoint>(S, OpPC, A0, A1);
26576}
26577bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26578 if (!isActive()) return true;
26579 CurrentSource = L;
26580 return InitGlobalTemp<PT_Ptr>(S, OpPC, A0, A1);
26581}
26582bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26583 if (!isActive()) return true;
26584 CurrentSource = L;
26585 return InitGlobalTemp<PT_MemberPtr>(S, OpPC, A0, A1);
26586}
26587bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26588 if (!isActive()) return true;
26589 CurrentSource = L;
26590 return InitGlobalTemp<PT_Float>(S, OpPC, A0, A1);
26591}
26592#endif
26593#ifdef GET_OPCODE_NAMES
26594OP_InitGlobalTempComp,
26595#endif
26596#ifdef GET_INTERP
26597case OP_InitGlobalTempComp: {
26598 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26599 if (!InitGlobalTempComp(S, OpPC, V0))
26600 return false;
26601 continue;
26602}
26603#endif
26604#ifdef GET_DISASM
26605case OP_InitGlobalTempComp:
26606 Text.Op = PrintName("InitGlobalTempComp");
26607 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26608 break;
26609#endif
26610#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26611bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
26612#endif
26613#ifdef GET_LINK_IMPL
26614bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
26615 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
26616}
26617#endif
26618#ifdef GET_EVAL_IMPL
26619bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
26620 if (!isActive()) return true;
26621 CurrentSource = L;
26622 return InitGlobalTempComp(S, OpPC, A0);
26623}
26624#endif
26625#ifdef GET_OPCODE_NAMES
26626OP_InitPopSint8,
26627OP_InitPopUint8,
26628OP_InitPopSint16,
26629OP_InitPopUint16,
26630OP_InitPopSint32,
26631OP_InitPopUint32,
26632OP_InitPopSint64,
26633OP_InitPopUint64,
26634OP_InitPopIntAP,
26635OP_InitPopIntAPS,
26636OP_InitPopBool,
26637OP_InitPopFixedPoint,
26638OP_InitPopPtr,
26639OP_InitPopMemberPtr,
26640OP_InitPopFloat,
26641#endif
26642#ifdef GET_INTERP
26643case OP_InitPopSint8: {
26644 if (!InitPop<PT_Sint8>(S, OpPC))
26645 return false;
26646 continue;
26647}
26648case OP_InitPopUint8: {
26649 if (!InitPop<PT_Uint8>(S, OpPC))
26650 return false;
26651 continue;
26652}
26653case OP_InitPopSint16: {
26654 if (!InitPop<PT_Sint16>(S, OpPC))
26655 return false;
26656 continue;
26657}
26658case OP_InitPopUint16: {
26659 if (!InitPop<PT_Uint16>(S, OpPC))
26660 return false;
26661 continue;
26662}
26663case OP_InitPopSint32: {
26664 if (!InitPop<PT_Sint32>(S, OpPC))
26665 return false;
26666 continue;
26667}
26668case OP_InitPopUint32: {
26669 if (!InitPop<PT_Uint32>(S, OpPC))
26670 return false;
26671 continue;
26672}
26673case OP_InitPopSint64: {
26674 if (!InitPop<PT_Sint64>(S, OpPC))
26675 return false;
26676 continue;
26677}
26678case OP_InitPopUint64: {
26679 if (!InitPop<PT_Uint64>(S, OpPC))
26680 return false;
26681 continue;
26682}
26683case OP_InitPopIntAP: {
26684 if (!InitPop<PT_IntAP>(S, OpPC))
26685 return false;
26686 continue;
26687}
26688case OP_InitPopIntAPS: {
26689 if (!InitPop<PT_IntAPS>(S, OpPC))
26690 return false;
26691 continue;
26692}
26693case OP_InitPopBool: {
26694 if (!InitPop<PT_Bool>(S, OpPC))
26695 return false;
26696 continue;
26697}
26698case OP_InitPopFixedPoint: {
26699 if (!InitPop<PT_FixedPoint>(S, OpPC))
26700 return false;
26701 continue;
26702}
26703case OP_InitPopPtr: {
26704 if (!InitPop<PT_Ptr>(S, OpPC))
26705 return false;
26706 continue;
26707}
26708case OP_InitPopMemberPtr: {
26709 if (!InitPop<PT_MemberPtr>(S, OpPC))
26710 return false;
26711 continue;
26712}
26713case OP_InitPopFloat: {
26714 if (!InitPop<PT_Float>(S, OpPC))
26715 return false;
26716 continue;
26717}
26718#endif
26719#ifdef GET_DISASM
26720case OP_InitPopSint8:
26721 Text.Op = PrintName("InitPopSint8");
26722 break;
26723case OP_InitPopUint8:
26724 Text.Op = PrintName("InitPopUint8");
26725 break;
26726case OP_InitPopSint16:
26727 Text.Op = PrintName("InitPopSint16");
26728 break;
26729case OP_InitPopUint16:
26730 Text.Op = PrintName("InitPopUint16");
26731 break;
26732case OP_InitPopSint32:
26733 Text.Op = PrintName("InitPopSint32");
26734 break;
26735case OP_InitPopUint32:
26736 Text.Op = PrintName("InitPopUint32");
26737 break;
26738case OP_InitPopSint64:
26739 Text.Op = PrintName("InitPopSint64");
26740 break;
26741case OP_InitPopUint64:
26742 Text.Op = PrintName("InitPopUint64");
26743 break;
26744case OP_InitPopIntAP:
26745 Text.Op = PrintName("InitPopIntAP");
26746 break;
26747case OP_InitPopIntAPS:
26748 Text.Op = PrintName("InitPopIntAPS");
26749 break;
26750case OP_InitPopBool:
26751 Text.Op = PrintName("InitPopBool");
26752 break;
26753case OP_InitPopFixedPoint:
26754 Text.Op = PrintName("InitPopFixedPoint");
26755 break;
26756case OP_InitPopPtr:
26757 Text.Op = PrintName("InitPopPtr");
26758 break;
26759case OP_InitPopMemberPtr:
26760 Text.Op = PrintName("InitPopMemberPtr");
26761 break;
26762case OP_InitPopFloat:
26763 Text.Op = PrintName("InitPopFloat");
26764 break;
26765#endif
26766#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26767bool emitInitPopSint8(SourceInfo);
26768bool emitInitPopUint8(SourceInfo);
26769bool emitInitPopSint16(SourceInfo);
26770bool emitInitPopUint16(SourceInfo);
26771bool emitInitPopSint32(SourceInfo);
26772bool emitInitPopUint32(SourceInfo);
26773bool emitInitPopSint64(SourceInfo);
26774bool emitInitPopUint64(SourceInfo);
26775bool emitInitPopIntAP(SourceInfo);
26776bool emitInitPopIntAPS(SourceInfo);
26777bool emitInitPopBool(SourceInfo);
26778bool emitInitPopFixedPoint(SourceInfo);
26779bool emitInitPopPtr(SourceInfo);
26780bool emitInitPopMemberPtr(SourceInfo);
26781bool emitInitPopFloat(SourceInfo);
26782#endif
26783#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26784[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
26785#endif
26786#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26787bool
26788#if defined(GET_EVAL_IMPL)
26789EvalEmitter
26790#else
26791ByteCodeEmitter
26792#endif
26793::emitInitPop(PrimType T0, SourceInfo I) {
26794 switch (T0) {
26795 case PT_Sint8:
26796 return emitInitPopSint8(I);
26797 case PT_Uint8:
26798 return emitInitPopUint8(I);
26799 case PT_Sint16:
26800 return emitInitPopSint16(I);
26801 case PT_Uint16:
26802 return emitInitPopUint16(I);
26803 case PT_Sint32:
26804 return emitInitPopSint32(I);
26805 case PT_Uint32:
26806 return emitInitPopUint32(I);
26807 case PT_Sint64:
26808 return emitInitPopSint64(I);
26809 case PT_Uint64:
26810 return emitInitPopUint64(I);
26811 case PT_IntAP:
26812 return emitInitPopIntAP(I);
26813 case PT_IntAPS:
26814 return emitInitPopIntAPS(I);
26815 case PT_Bool:
26816 return emitInitPopBool(I);
26817 case PT_FixedPoint:
26818 return emitInitPopFixedPoint(I);
26819 case PT_Ptr:
26820 return emitInitPopPtr(I);
26821 case PT_MemberPtr:
26822 return emitInitPopMemberPtr(I);
26823 case PT_Float:
26824 return emitInitPopFloat(I);
26825 }
26826 llvm_unreachable("invalid enum value");
26827}
26828#endif
26829#ifdef GET_LINK_IMPL
26830bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
26831 return emitOp<>(OP_InitPopSint8, L);
26832}
26833bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
26834 return emitOp<>(OP_InitPopUint8, L);
26835}
26836bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
26837 return emitOp<>(OP_InitPopSint16, L);
26838}
26839bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
26840 return emitOp<>(OP_InitPopUint16, L);
26841}
26842bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
26843 return emitOp<>(OP_InitPopSint32, L);
26844}
26845bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
26846 return emitOp<>(OP_InitPopUint32, L);
26847}
26848bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
26849 return emitOp<>(OP_InitPopSint64, L);
26850}
26851bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
26852 return emitOp<>(OP_InitPopUint64, L);
26853}
26854bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
26855 return emitOp<>(OP_InitPopIntAP, L);
26856}
26857bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
26858 return emitOp<>(OP_InitPopIntAPS, L);
26859}
26860bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
26861 return emitOp<>(OP_InitPopBool, L);
26862}
26863bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
26864 return emitOp<>(OP_InitPopFixedPoint, L);
26865}
26866bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
26867 return emitOp<>(OP_InitPopPtr, L);
26868}
26869bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
26870 return emitOp<>(OP_InitPopMemberPtr, L);
26871}
26872bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
26873 return emitOp<>(OP_InitPopFloat, L);
26874}
26875#endif
26876#ifdef GET_EVAL_IMPL
26877bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
26878 if (!isActive()) return true;
26879 CurrentSource = L;
26880 return InitPop<PT_Sint8>(S, OpPC);
26881}
26882bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
26883 if (!isActive()) return true;
26884 CurrentSource = L;
26885 return InitPop<PT_Uint8>(S, OpPC);
26886}
26887bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
26888 if (!isActive()) return true;
26889 CurrentSource = L;
26890 return InitPop<PT_Sint16>(S, OpPC);
26891}
26892bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
26893 if (!isActive()) return true;
26894 CurrentSource = L;
26895 return InitPop<PT_Uint16>(S, OpPC);
26896}
26897bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
26898 if (!isActive()) return true;
26899 CurrentSource = L;
26900 return InitPop<PT_Sint32>(S, OpPC);
26901}
26902bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
26903 if (!isActive()) return true;
26904 CurrentSource = L;
26905 return InitPop<PT_Uint32>(S, OpPC);
26906}
26907bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
26908 if (!isActive()) return true;
26909 CurrentSource = L;
26910 return InitPop<PT_Sint64>(S, OpPC);
26911}
26912bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
26913 if (!isActive()) return true;
26914 CurrentSource = L;
26915 return InitPop<PT_Uint64>(S, OpPC);
26916}
26917bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
26918 if (!isActive()) return true;
26919 CurrentSource = L;
26920 return InitPop<PT_IntAP>(S, OpPC);
26921}
26922bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
26923 if (!isActive()) return true;
26924 CurrentSource = L;
26925 return InitPop<PT_IntAPS>(S, OpPC);
26926}
26927bool EvalEmitter::emitInitPopBool(SourceInfo L) {
26928 if (!isActive()) return true;
26929 CurrentSource = L;
26930 return InitPop<PT_Bool>(S, OpPC);
26931}
26932bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
26933 if (!isActive()) return true;
26934 CurrentSource = L;
26935 return InitPop<PT_FixedPoint>(S, OpPC);
26936}
26937bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
26938 if (!isActive()) return true;
26939 CurrentSource = L;
26940 return InitPop<PT_Ptr>(S, OpPC);
26941}
26942bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
26943 if (!isActive()) return true;
26944 CurrentSource = L;
26945 return InitPop<PT_MemberPtr>(S, OpPC);
26946}
26947bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
26948 if (!isActive()) return true;
26949 CurrentSource = L;
26950 return InitPop<PT_Float>(S, OpPC);
26951}
26952#endif
26953#ifdef GET_OPCODE_NAMES
26954OP_InitScope,
26955#endif
26956#ifdef GET_INTERP
26957case OP_InitScope: {
26958 const auto V0 = ReadArg<uint32_t>(S, PC);
26959 if (!InitScope(S, OpPC, V0))
26960 return false;
26961 continue;
26962}
26963#endif
26964#ifdef GET_DISASM
26965case OP_InitScope:
26966 Text.Op = PrintName("InitScope");
26967 Text.Args.push_back(printArg<uint32_t>(P, PC));
26968 break;
26969#endif
26970#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26971bool emitInitScope( uint32_t , SourceInfo);
26972#endif
26973#ifdef GET_LINK_IMPL
26974bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
26975 return emitOp<uint32_t>(OP_InitScope, A0, L);
26976}
26977#endif
26978#ifdef GET_EVAL_IMPL
26979bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
26980 if (!isActive()) return true;
26981 CurrentSource = L;
26982 return InitScope(S, OpPC, A0);
26983}
26984#endif
26985#ifdef GET_OPCODE_NAMES
26986OP_InitThisBitFieldSint8,
26987OP_InitThisBitFieldUint8,
26988OP_InitThisBitFieldSint16,
26989OP_InitThisBitFieldUint16,
26990OP_InitThisBitFieldSint32,
26991OP_InitThisBitFieldUint32,
26992OP_InitThisBitFieldSint64,
26993OP_InitThisBitFieldUint64,
26994OP_InitThisBitFieldIntAP,
26995OP_InitThisBitFieldIntAPS,
26996OP_InitThisBitFieldBool,
26997OP_InitThisBitFieldFixedPoint,
26998#endif
26999#ifdef GET_INTERP
27000case OP_InitThisBitFieldSint8: {
27001 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27002 const auto V1 = ReadArg<uint32_t>(S, PC);
27003 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1))
27004 return false;
27005 continue;
27006}
27007case OP_InitThisBitFieldUint8: {
27008 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27009 const auto V1 = ReadArg<uint32_t>(S, PC);
27010 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1))
27011 return false;
27012 continue;
27013}
27014case OP_InitThisBitFieldSint16: {
27015 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27016 const auto V1 = ReadArg<uint32_t>(S, PC);
27017 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1))
27018 return false;
27019 continue;
27020}
27021case OP_InitThisBitFieldUint16: {
27022 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27023 const auto V1 = ReadArg<uint32_t>(S, PC);
27024 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1))
27025 return false;
27026 continue;
27027}
27028case OP_InitThisBitFieldSint32: {
27029 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27030 const auto V1 = ReadArg<uint32_t>(S, PC);
27031 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1))
27032 return false;
27033 continue;
27034}
27035case OP_InitThisBitFieldUint32: {
27036 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27037 const auto V1 = ReadArg<uint32_t>(S, PC);
27038 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1))
27039 return false;
27040 continue;
27041}
27042case OP_InitThisBitFieldSint64: {
27043 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27044 const auto V1 = ReadArg<uint32_t>(S, PC);
27045 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1))
27046 return false;
27047 continue;
27048}
27049case OP_InitThisBitFieldUint64: {
27050 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27051 const auto V1 = ReadArg<uint32_t>(S, PC);
27052 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1))
27053 return false;
27054 continue;
27055}
27056case OP_InitThisBitFieldIntAP: {
27057 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27058 const auto V1 = ReadArg<uint32_t>(S, PC);
27059 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1))
27060 return false;
27061 continue;
27062}
27063case OP_InitThisBitFieldIntAPS: {
27064 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27065 const auto V1 = ReadArg<uint32_t>(S, PC);
27066 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1))
27067 return false;
27068 continue;
27069}
27070case OP_InitThisBitFieldBool: {
27071 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27072 const auto V1 = ReadArg<uint32_t>(S, PC);
27073 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1))
27074 return false;
27075 continue;
27076}
27077case OP_InitThisBitFieldFixedPoint: {
27078 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27079 const auto V1 = ReadArg<uint32_t>(S, PC);
27080 if (!InitThisBitField<PT_FixedPoint>(S, OpPC, V0, V1))
27081 return false;
27082 continue;
27083}
27084#endif
27085#ifdef GET_DISASM
27086case OP_InitThisBitFieldSint8:
27087 Text.Op = PrintName("InitThisBitFieldSint8");
27088 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27089 Text.Args.push_back(printArg<uint32_t>(P, PC));
27090 break;
27091case OP_InitThisBitFieldUint8:
27092 Text.Op = PrintName("InitThisBitFieldUint8");
27093 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27094 Text.Args.push_back(printArg<uint32_t>(P, PC));
27095 break;
27096case OP_InitThisBitFieldSint16:
27097 Text.Op = PrintName("InitThisBitFieldSint16");
27098 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27099 Text.Args.push_back(printArg<uint32_t>(P, PC));
27100 break;
27101case OP_InitThisBitFieldUint16:
27102 Text.Op = PrintName("InitThisBitFieldUint16");
27103 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27104 Text.Args.push_back(printArg<uint32_t>(P, PC));
27105 break;
27106case OP_InitThisBitFieldSint32:
27107 Text.Op = PrintName("InitThisBitFieldSint32");
27108 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27109 Text.Args.push_back(printArg<uint32_t>(P, PC));
27110 break;
27111case OP_InitThisBitFieldUint32:
27112 Text.Op = PrintName("InitThisBitFieldUint32");
27113 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27114 Text.Args.push_back(printArg<uint32_t>(P, PC));
27115 break;
27116case OP_InitThisBitFieldSint64:
27117 Text.Op = PrintName("InitThisBitFieldSint64");
27118 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27119 Text.Args.push_back(printArg<uint32_t>(P, PC));
27120 break;
27121case OP_InitThisBitFieldUint64:
27122 Text.Op = PrintName("InitThisBitFieldUint64");
27123 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27124 Text.Args.push_back(printArg<uint32_t>(P, PC));
27125 break;
27126case OP_InitThisBitFieldIntAP:
27127 Text.Op = PrintName("InitThisBitFieldIntAP");
27128 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27129 Text.Args.push_back(printArg<uint32_t>(P, PC));
27130 break;
27131case OP_InitThisBitFieldIntAPS:
27132 Text.Op = PrintName("InitThisBitFieldIntAPS");
27133 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27134 Text.Args.push_back(printArg<uint32_t>(P, PC));
27135 break;
27136case OP_InitThisBitFieldBool:
27137 Text.Op = PrintName("InitThisBitFieldBool");
27138 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27139 Text.Args.push_back(printArg<uint32_t>(P, PC));
27140 break;
27141case OP_InitThisBitFieldFixedPoint:
27142 Text.Op = PrintName("InitThisBitFieldFixedPoint");
27143 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27144 Text.Args.push_back(printArg<uint32_t>(P, PC));
27145 break;
27146#endif
27147#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27148bool emitInitThisBitFieldSint8( const Record::Field * , uint32_t , SourceInfo);
27149bool emitInitThisBitFieldUint8( const Record::Field * , uint32_t , SourceInfo);
27150bool emitInitThisBitFieldSint16( const Record::Field * , uint32_t , SourceInfo);
27151bool emitInitThisBitFieldUint16( const Record::Field * , uint32_t , SourceInfo);
27152bool emitInitThisBitFieldSint32( const Record::Field * , uint32_t , SourceInfo);
27153bool emitInitThisBitFieldUint32( const Record::Field * , uint32_t , SourceInfo);
27154bool emitInitThisBitFieldSint64( const Record::Field * , uint32_t , SourceInfo);
27155bool emitInitThisBitFieldUint64( const Record::Field * , uint32_t , SourceInfo);
27156bool emitInitThisBitFieldIntAP( const Record::Field * , uint32_t , SourceInfo);
27157bool emitInitThisBitFieldIntAPS( const Record::Field * , uint32_t , SourceInfo);
27158bool emitInitThisBitFieldBool( const Record::Field * , uint32_t , SourceInfo);
27159bool emitInitThisBitFieldFixedPoint( const Record::Field * , uint32_t , SourceInfo);
27160#endif
27161#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27162[[nodiscard]] bool emitInitThisBitField(PrimType, const Record::Field *, uint32_t, SourceInfo I);
27163#endif
27164#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27165bool
27166#if defined(GET_EVAL_IMPL)
27167EvalEmitter
27168#else
27169ByteCodeEmitter
27170#endif
27171::emitInitThisBitField(PrimType T0, const Record::Field * A0, uint32_t A1, SourceInfo I) {
27172 switch (T0) {
27173 case PT_Sint8:
27174 return emitInitThisBitFieldSint8(A0, A1, I);
27175 case PT_Uint8:
27176 return emitInitThisBitFieldUint8(A0, A1, I);
27177 case PT_Sint16:
27178 return emitInitThisBitFieldSint16(A0, A1, I);
27179 case PT_Uint16:
27180 return emitInitThisBitFieldUint16(A0, A1, I);
27181 case PT_Sint32:
27182 return emitInitThisBitFieldSint32(A0, A1, I);
27183 case PT_Uint32:
27184 return emitInitThisBitFieldUint32(A0, A1, I);
27185 case PT_Sint64:
27186 return emitInitThisBitFieldSint64(A0, A1, I);
27187 case PT_Uint64:
27188 return emitInitThisBitFieldUint64(A0, A1, I);
27189 case PT_IntAP:
27190 return emitInitThisBitFieldIntAP(A0, A1, I);
27191 case PT_IntAPS:
27192 return emitInitThisBitFieldIntAPS(A0, A1, I);
27193 case PT_Bool:
27194 return emitInitThisBitFieldBool(A0, A1, I);
27195 case PT_FixedPoint:
27196 return emitInitThisBitFieldFixedPoint(A0, A1, I);
27197 default: llvm_unreachable("invalid type: emitInitThisBitField");
27198 }
27199 llvm_unreachable("invalid enum value");
27200}
27201#endif
27202#ifdef GET_LINK_IMPL
27203bool ByteCodeEmitter::emitInitThisBitFieldSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27204 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
27205}
27206bool ByteCodeEmitter::emitInitThisBitFieldUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27207 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
27208}
27209bool ByteCodeEmitter::emitInitThisBitFieldSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27210 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
27211}
27212bool ByteCodeEmitter::emitInitThisBitFieldUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27213 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
27214}
27215bool ByteCodeEmitter::emitInitThisBitFieldSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27216 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
27217}
27218bool ByteCodeEmitter::emitInitThisBitFieldUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27219 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
27220}
27221bool ByteCodeEmitter::emitInitThisBitFieldSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27222 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
27223}
27224bool ByteCodeEmitter::emitInitThisBitFieldUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27225 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
27226}
27227bool ByteCodeEmitter::emitInitThisBitFieldIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27228 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
27229}
27230bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27231 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
27232}
27233bool ByteCodeEmitter::emitInitThisBitFieldBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27234 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
27235}
27236bool ByteCodeEmitter::emitInitThisBitFieldFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27237 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldFixedPoint, A0, A1, L);
27238}
27239#endif
27240#ifdef GET_EVAL_IMPL
27241bool EvalEmitter::emitInitThisBitFieldSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27242 if (!isActive()) return true;
27243 CurrentSource = L;
27244 return InitThisBitField<PT_Sint8>(S, OpPC, A0, A1);
27245}
27246bool EvalEmitter::emitInitThisBitFieldUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27247 if (!isActive()) return true;
27248 CurrentSource = L;
27249 return InitThisBitField<PT_Uint8>(S, OpPC, A0, A1);
27250}
27251bool EvalEmitter::emitInitThisBitFieldSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27252 if (!isActive()) return true;
27253 CurrentSource = L;
27254 return InitThisBitField<PT_Sint16>(S, OpPC, A0, A1);
27255}
27256bool EvalEmitter::emitInitThisBitFieldUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27257 if (!isActive()) return true;
27258 CurrentSource = L;
27259 return InitThisBitField<PT_Uint16>(S, OpPC, A0, A1);
27260}
27261bool EvalEmitter::emitInitThisBitFieldSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27262 if (!isActive()) return true;
27263 CurrentSource = L;
27264 return InitThisBitField<PT_Sint32>(S, OpPC, A0, A1);
27265}
27266bool EvalEmitter::emitInitThisBitFieldUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27267 if (!isActive()) return true;
27268 CurrentSource = L;
27269 return InitThisBitField<PT_Uint32>(S, OpPC, A0, A1);
27270}
27271bool EvalEmitter::emitInitThisBitFieldSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27272 if (!isActive()) return true;
27273 CurrentSource = L;
27274 return InitThisBitField<PT_Sint64>(S, OpPC, A0, A1);
27275}
27276bool EvalEmitter::emitInitThisBitFieldUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27277 if (!isActive()) return true;
27278 CurrentSource = L;
27279 return InitThisBitField<PT_Uint64>(S, OpPC, A0, A1);
27280}
27281bool EvalEmitter::emitInitThisBitFieldIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27282 if (!isActive()) return true;
27283 CurrentSource = L;
27284 return InitThisBitField<PT_IntAP>(S, OpPC, A0, A1);
27285}
27286bool EvalEmitter::emitInitThisBitFieldIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27287 if (!isActive()) return true;
27288 CurrentSource = L;
27289 return InitThisBitField<PT_IntAPS>(S, OpPC, A0, A1);
27290}
27291bool EvalEmitter::emitInitThisBitFieldBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27292 if (!isActive()) return true;
27293 CurrentSource = L;
27294 return InitThisBitField<PT_Bool>(S, OpPC, A0, A1);
27295}
27296bool EvalEmitter::emitInitThisBitFieldFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27297 if (!isActive()) return true;
27298 CurrentSource = L;
27299 return InitThisBitField<PT_FixedPoint>(S, OpPC, A0, A1);
27300}
27301#endif
27302#ifdef GET_OPCODE_NAMES
27303OP_InitThisBitFieldActivateSint8,
27304OP_InitThisBitFieldActivateUint8,
27305OP_InitThisBitFieldActivateSint16,
27306OP_InitThisBitFieldActivateUint16,
27307OP_InitThisBitFieldActivateSint32,
27308OP_InitThisBitFieldActivateUint32,
27309OP_InitThisBitFieldActivateSint64,
27310OP_InitThisBitFieldActivateUint64,
27311OP_InitThisBitFieldActivateIntAP,
27312OP_InitThisBitFieldActivateIntAPS,
27313OP_InitThisBitFieldActivateBool,
27314OP_InitThisBitFieldActivateFixedPoint,
27315#endif
27316#ifdef GET_INTERP
27317case OP_InitThisBitFieldActivateSint8: {
27318 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27319 const auto V1 = ReadArg<uint32_t>(S, PC);
27320 if (!InitThisBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1))
27321 return false;
27322 continue;
27323}
27324case OP_InitThisBitFieldActivateUint8: {
27325 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27326 const auto V1 = ReadArg<uint32_t>(S, PC);
27327 if (!InitThisBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1))
27328 return false;
27329 continue;
27330}
27331case OP_InitThisBitFieldActivateSint16: {
27332 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27333 const auto V1 = ReadArg<uint32_t>(S, PC);
27334 if (!InitThisBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1))
27335 return false;
27336 continue;
27337}
27338case OP_InitThisBitFieldActivateUint16: {
27339 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27340 const auto V1 = ReadArg<uint32_t>(S, PC);
27341 if (!InitThisBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1))
27342 return false;
27343 continue;
27344}
27345case OP_InitThisBitFieldActivateSint32: {
27346 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27347 const auto V1 = ReadArg<uint32_t>(S, PC);
27348 if (!InitThisBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1))
27349 return false;
27350 continue;
27351}
27352case OP_InitThisBitFieldActivateUint32: {
27353 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27354 const auto V1 = ReadArg<uint32_t>(S, PC);
27355 if (!InitThisBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1))
27356 return false;
27357 continue;
27358}
27359case OP_InitThisBitFieldActivateSint64: {
27360 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27361 const auto V1 = ReadArg<uint32_t>(S, PC);
27362 if (!InitThisBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1))
27363 return false;
27364 continue;
27365}
27366case OP_InitThisBitFieldActivateUint64: {
27367 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27368 const auto V1 = ReadArg<uint32_t>(S, PC);
27369 if (!InitThisBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1))
27370 return false;
27371 continue;
27372}
27373case OP_InitThisBitFieldActivateIntAP: {
27374 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27375 const auto V1 = ReadArg<uint32_t>(S, PC);
27376 if (!InitThisBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1))
27377 return false;
27378 continue;
27379}
27380case OP_InitThisBitFieldActivateIntAPS: {
27381 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27382 const auto V1 = ReadArg<uint32_t>(S, PC);
27383 if (!InitThisBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1))
27384 return false;
27385 continue;
27386}
27387case OP_InitThisBitFieldActivateBool: {
27388 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27389 const auto V1 = ReadArg<uint32_t>(S, PC);
27390 if (!InitThisBitFieldActivate<PT_Bool>(S, OpPC, V0, V1))
27391 return false;
27392 continue;
27393}
27394case OP_InitThisBitFieldActivateFixedPoint: {
27395 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27396 const auto V1 = ReadArg<uint32_t>(S, PC);
27397 if (!InitThisBitFieldActivate<PT_FixedPoint>(S, OpPC, V0, V1))
27398 return false;
27399 continue;
27400}
27401#endif
27402#ifdef GET_DISASM
27403case OP_InitThisBitFieldActivateSint8:
27404 Text.Op = PrintName("InitThisBitFieldActivateSint8");
27405 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27406 Text.Args.push_back(printArg<uint32_t>(P, PC));
27407 break;
27408case OP_InitThisBitFieldActivateUint8:
27409 Text.Op = PrintName("InitThisBitFieldActivateUint8");
27410 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27411 Text.Args.push_back(printArg<uint32_t>(P, PC));
27412 break;
27413case OP_InitThisBitFieldActivateSint16:
27414 Text.Op = PrintName("InitThisBitFieldActivateSint16");
27415 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27416 Text.Args.push_back(printArg<uint32_t>(P, PC));
27417 break;
27418case OP_InitThisBitFieldActivateUint16:
27419 Text.Op = PrintName("InitThisBitFieldActivateUint16");
27420 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27421 Text.Args.push_back(printArg<uint32_t>(P, PC));
27422 break;
27423case OP_InitThisBitFieldActivateSint32:
27424 Text.Op = PrintName("InitThisBitFieldActivateSint32");
27425 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27426 Text.Args.push_back(printArg<uint32_t>(P, PC));
27427 break;
27428case OP_InitThisBitFieldActivateUint32:
27429 Text.Op = PrintName("InitThisBitFieldActivateUint32");
27430 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27431 Text.Args.push_back(printArg<uint32_t>(P, PC));
27432 break;
27433case OP_InitThisBitFieldActivateSint64:
27434 Text.Op = PrintName("InitThisBitFieldActivateSint64");
27435 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27436 Text.Args.push_back(printArg<uint32_t>(P, PC));
27437 break;
27438case OP_InitThisBitFieldActivateUint64:
27439 Text.Op = PrintName("InitThisBitFieldActivateUint64");
27440 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27441 Text.Args.push_back(printArg<uint32_t>(P, PC));
27442 break;
27443case OP_InitThisBitFieldActivateIntAP:
27444 Text.Op = PrintName("InitThisBitFieldActivateIntAP");
27445 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27446 Text.Args.push_back(printArg<uint32_t>(P, PC));
27447 break;
27448case OP_InitThisBitFieldActivateIntAPS:
27449 Text.Op = PrintName("InitThisBitFieldActivateIntAPS");
27450 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27451 Text.Args.push_back(printArg<uint32_t>(P, PC));
27452 break;
27453case OP_InitThisBitFieldActivateBool:
27454 Text.Op = PrintName("InitThisBitFieldActivateBool");
27455 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27456 Text.Args.push_back(printArg<uint32_t>(P, PC));
27457 break;
27458case OP_InitThisBitFieldActivateFixedPoint:
27459 Text.Op = PrintName("InitThisBitFieldActivateFixedPoint");
27460 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27461 Text.Args.push_back(printArg<uint32_t>(P, PC));
27462 break;
27463#endif
27464#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27465bool emitInitThisBitFieldActivateSint8( const Record::Field * , uint32_t , SourceInfo);
27466bool emitInitThisBitFieldActivateUint8( const Record::Field * , uint32_t , SourceInfo);
27467bool emitInitThisBitFieldActivateSint16( const Record::Field * , uint32_t , SourceInfo);
27468bool emitInitThisBitFieldActivateUint16( const Record::Field * , uint32_t , SourceInfo);
27469bool emitInitThisBitFieldActivateSint32( const Record::Field * , uint32_t , SourceInfo);
27470bool emitInitThisBitFieldActivateUint32( const Record::Field * , uint32_t , SourceInfo);
27471bool emitInitThisBitFieldActivateSint64( const Record::Field * , uint32_t , SourceInfo);
27472bool emitInitThisBitFieldActivateUint64( const Record::Field * , uint32_t , SourceInfo);
27473bool emitInitThisBitFieldActivateIntAP( const Record::Field * , uint32_t , SourceInfo);
27474bool emitInitThisBitFieldActivateIntAPS( const Record::Field * , uint32_t , SourceInfo);
27475bool emitInitThisBitFieldActivateBool( const Record::Field * , uint32_t , SourceInfo);
27476bool emitInitThisBitFieldActivateFixedPoint( const Record::Field * , uint32_t , SourceInfo);
27477#endif
27478#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27479[[nodiscard]] bool emitInitThisBitFieldActivate(PrimType, const Record::Field *, uint32_t, SourceInfo I);
27480#endif
27481#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27482bool
27483#if defined(GET_EVAL_IMPL)
27484EvalEmitter
27485#else
27486ByteCodeEmitter
27487#endif
27488::emitInitThisBitFieldActivate(PrimType T0, const Record::Field * A0, uint32_t A1, SourceInfo I) {
27489 switch (T0) {
27490 case PT_Sint8:
27491 return emitInitThisBitFieldActivateSint8(A0, A1, I);
27492 case PT_Uint8:
27493 return emitInitThisBitFieldActivateUint8(A0, A1, I);
27494 case PT_Sint16:
27495 return emitInitThisBitFieldActivateSint16(A0, A1, I);
27496 case PT_Uint16:
27497 return emitInitThisBitFieldActivateUint16(A0, A1, I);
27498 case PT_Sint32:
27499 return emitInitThisBitFieldActivateSint32(A0, A1, I);
27500 case PT_Uint32:
27501 return emitInitThisBitFieldActivateUint32(A0, A1, I);
27502 case PT_Sint64:
27503 return emitInitThisBitFieldActivateSint64(A0, A1, I);
27504 case PT_Uint64:
27505 return emitInitThisBitFieldActivateUint64(A0, A1, I);
27506 case PT_IntAP:
27507 return emitInitThisBitFieldActivateIntAP(A0, A1, I);
27508 case PT_IntAPS:
27509 return emitInitThisBitFieldActivateIntAPS(A0, A1, I);
27510 case PT_Bool:
27511 return emitInitThisBitFieldActivateBool(A0, A1, I);
27512 case PT_FixedPoint:
27513 return emitInitThisBitFieldActivateFixedPoint(A0, A1, I);
27514 default: llvm_unreachable("invalid type: emitInitThisBitFieldActivate");
27515 }
27516 llvm_unreachable("invalid enum value");
27517}
27518#endif
27519#ifdef GET_LINK_IMPL
27520bool ByteCodeEmitter::emitInitThisBitFieldActivateSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27521 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint8, A0, A1, L);
27522}
27523bool ByteCodeEmitter::emitInitThisBitFieldActivateUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27524 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint8, A0, A1, L);
27525}
27526bool ByteCodeEmitter::emitInitThisBitFieldActivateSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27527 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint16, A0, A1, L);
27528}
27529bool ByteCodeEmitter::emitInitThisBitFieldActivateUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27530 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint16, A0, A1, L);
27531}
27532bool ByteCodeEmitter::emitInitThisBitFieldActivateSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27533 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint32, A0, A1, L);
27534}
27535bool ByteCodeEmitter::emitInitThisBitFieldActivateUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27536 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint32, A0, A1, L);
27537}
27538bool ByteCodeEmitter::emitInitThisBitFieldActivateSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27539 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint64, A0, A1, L);
27540}
27541bool ByteCodeEmitter::emitInitThisBitFieldActivateUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27542 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint64, A0, A1, L);
27543}
27544bool ByteCodeEmitter::emitInitThisBitFieldActivateIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27545 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateIntAP, A0, A1, L);
27546}
27547bool ByteCodeEmitter::emitInitThisBitFieldActivateIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27548 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateIntAPS, A0, A1, L);
27549}
27550bool ByteCodeEmitter::emitInitThisBitFieldActivateBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27551 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateBool, A0, A1, L);
27552}
27553bool ByteCodeEmitter::emitInitThisBitFieldActivateFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27554 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateFixedPoint, A0, A1, L);
27555}
27556#endif
27557#ifdef GET_EVAL_IMPL
27558bool EvalEmitter::emitInitThisBitFieldActivateSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27559 if (!isActive()) return true;
27560 CurrentSource = L;
27561 return InitThisBitFieldActivate<PT_Sint8>(S, OpPC, A0, A1);
27562}
27563bool EvalEmitter::emitInitThisBitFieldActivateUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27564 if (!isActive()) return true;
27565 CurrentSource = L;
27566 return InitThisBitFieldActivate<PT_Uint8>(S, OpPC, A0, A1);
27567}
27568bool EvalEmitter::emitInitThisBitFieldActivateSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27569 if (!isActive()) return true;
27570 CurrentSource = L;
27571 return InitThisBitFieldActivate<PT_Sint16>(S, OpPC, A0, A1);
27572}
27573bool EvalEmitter::emitInitThisBitFieldActivateUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27574 if (!isActive()) return true;
27575 CurrentSource = L;
27576 return InitThisBitFieldActivate<PT_Uint16>(S, OpPC, A0, A1);
27577}
27578bool EvalEmitter::emitInitThisBitFieldActivateSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27579 if (!isActive()) return true;
27580 CurrentSource = L;
27581 return InitThisBitFieldActivate<PT_Sint32>(S, OpPC, A0, A1);
27582}
27583bool EvalEmitter::emitInitThisBitFieldActivateUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27584 if (!isActive()) return true;
27585 CurrentSource = L;
27586 return InitThisBitFieldActivate<PT_Uint32>(S, OpPC, A0, A1);
27587}
27588bool EvalEmitter::emitInitThisBitFieldActivateSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27589 if (!isActive()) return true;
27590 CurrentSource = L;
27591 return InitThisBitFieldActivate<PT_Sint64>(S, OpPC, A0, A1);
27592}
27593bool EvalEmitter::emitInitThisBitFieldActivateUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27594 if (!isActive()) return true;
27595 CurrentSource = L;
27596 return InitThisBitFieldActivate<PT_Uint64>(S, OpPC, A0, A1);
27597}
27598bool EvalEmitter::emitInitThisBitFieldActivateIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27599 if (!isActive()) return true;
27600 CurrentSource = L;
27601 return InitThisBitFieldActivate<PT_IntAP>(S, OpPC, A0, A1);
27602}
27603bool EvalEmitter::emitInitThisBitFieldActivateIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27604 if (!isActive()) return true;
27605 CurrentSource = L;
27606 return InitThisBitFieldActivate<PT_IntAPS>(S, OpPC, A0, A1);
27607}
27608bool EvalEmitter::emitInitThisBitFieldActivateBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27609 if (!isActive()) return true;
27610 CurrentSource = L;
27611 return InitThisBitFieldActivate<PT_Bool>(S, OpPC, A0, A1);
27612}
27613bool EvalEmitter::emitInitThisBitFieldActivateFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27614 if (!isActive()) return true;
27615 CurrentSource = L;
27616 return InitThisBitFieldActivate<PT_FixedPoint>(S, OpPC, A0, A1);
27617}
27618#endif
27619#ifdef GET_OPCODE_NAMES
27620OP_InitThisFieldSint8,
27621OP_InitThisFieldUint8,
27622OP_InitThisFieldSint16,
27623OP_InitThisFieldUint16,
27624OP_InitThisFieldSint32,
27625OP_InitThisFieldUint32,
27626OP_InitThisFieldSint64,
27627OP_InitThisFieldUint64,
27628OP_InitThisFieldIntAP,
27629OP_InitThisFieldIntAPS,
27630OP_InitThisFieldBool,
27631OP_InitThisFieldFixedPoint,
27632OP_InitThisFieldPtr,
27633OP_InitThisFieldMemberPtr,
27634OP_InitThisFieldFloat,
27635#endif
27636#ifdef GET_INTERP
27637case OP_InitThisFieldSint8: {
27638 const auto V0 = ReadArg<uint32_t>(S, PC);
27639 if (!InitThisField<PT_Sint8>(S, OpPC, V0))
27640 return false;
27641 continue;
27642}
27643case OP_InitThisFieldUint8: {
27644 const auto V0 = ReadArg<uint32_t>(S, PC);
27645 if (!InitThisField<PT_Uint8>(S, OpPC, V0))
27646 return false;
27647 continue;
27648}
27649case OP_InitThisFieldSint16: {
27650 const auto V0 = ReadArg<uint32_t>(S, PC);
27651 if (!InitThisField<PT_Sint16>(S, OpPC, V0))
27652 return false;
27653 continue;
27654}
27655case OP_InitThisFieldUint16: {
27656 const auto V0 = ReadArg<uint32_t>(S, PC);
27657 if (!InitThisField<PT_Uint16>(S, OpPC, V0))
27658 return false;
27659 continue;
27660}
27661case OP_InitThisFieldSint32: {
27662 const auto V0 = ReadArg<uint32_t>(S, PC);
27663 if (!InitThisField<PT_Sint32>(S, OpPC, V0))
27664 return false;
27665 continue;
27666}
27667case OP_InitThisFieldUint32: {
27668 const auto V0 = ReadArg<uint32_t>(S, PC);
27669 if (!InitThisField<PT_Uint32>(S, OpPC, V0))
27670 return false;
27671 continue;
27672}
27673case OP_InitThisFieldSint64: {
27674 const auto V0 = ReadArg<uint32_t>(S, PC);
27675 if (!InitThisField<PT_Sint64>(S, OpPC, V0))
27676 return false;
27677 continue;
27678}
27679case OP_InitThisFieldUint64: {
27680 const auto V0 = ReadArg<uint32_t>(S, PC);
27681 if (!InitThisField<PT_Uint64>(S, OpPC, V0))
27682 return false;
27683 continue;
27684}
27685case OP_InitThisFieldIntAP: {
27686 const auto V0 = ReadArg<uint32_t>(S, PC);
27687 if (!InitThisField<PT_IntAP>(S, OpPC, V0))
27688 return false;
27689 continue;
27690}
27691case OP_InitThisFieldIntAPS: {
27692 const auto V0 = ReadArg<uint32_t>(S, PC);
27693 if (!InitThisField<PT_IntAPS>(S, OpPC, V0))
27694 return false;
27695 continue;
27696}
27697case OP_InitThisFieldBool: {
27698 const auto V0 = ReadArg<uint32_t>(S, PC);
27699 if (!InitThisField<PT_Bool>(S, OpPC, V0))
27700 return false;
27701 continue;
27702}
27703case OP_InitThisFieldFixedPoint: {
27704 const auto V0 = ReadArg<uint32_t>(S, PC);
27705 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0))
27706 return false;
27707 continue;
27708}
27709case OP_InitThisFieldPtr: {
27710 const auto V0 = ReadArg<uint32_t>(S, PC);
27711 if (!InitThisField<PT_Ptr>(S, OpPC, V0))
27712 return false;
27713 continue;
27714}
27715case OP_InitThisFieldMemberPtr: {
27716 const auto V0 = ReadArg<uint32_t>(S, PC);
27717 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0))
27718 return false;
27719 continue;
27720}
27721case OP_InitThisFieldFloat: {
27722 const auto V0 = ReadArg<uint32_t>(S, PC);
27723 if (!InitThisField<PT_Float>(S, OpPC, V0))
27724 return false;
27725 continue;
27726}
27727#endif
27728#ifdef GET_DISASM
27729case OP_InitThisFieldSint8:
27730 Text.Op = PrintName("InitThisFieldSint8");
27731 Text.Args.push_back(printArg<uint32_t>(P, PC));
27732 break;
27733case OP_InitThisFieldUint8:
27734 Text.Op = PrintName("InitThisFieldUint8");
27735 Text.Args.push_back(printArg<uint32_t>(P, PC));
27736 break;
27737case OP_InitThisFieldSint16:
27738 Text.Op = PrintName("InitThisFieldSint16");
27739 Text.Args.push_back(printArg<uint32_t>(P, PC));
27740 break;
27741case OP_InitThisFieldUint16:
27742 Text.Op = PrintName("InitThisFieldUint16");
27743 Text.Args.push_back(printArg<uint32_t>(P, PC));
27744 break;
27745case OP_InitThisFieldSint32:
27746 Text.Op = PrintName("InitThisFieldSint32");
27747 Text.Args.push_back(printArg<uint32_t>(P, PC));
27748 break;
27749case OP_InitThisFieldUint32:
27750 Text.Op = PrintName("InitThisFieldUint32");
27751 Text.Args.push_back(printArg<uint32_t>(P, PC));
27752 break;
27753case OP_InitThisFieldSint64:
27754 Text.Op = PrintName("InitThisFieldSint64");
27755 Text.Args.push_back(printArg<uint32_t>(P, PC));
27756 break;
27757case OP_InitThisFieldUint64:
27758 Text.Op = PrintName("InitThisFieldUint64");
27759 Text.Args.push_back(printArg<uint32_t>(P, PC));
27760 break;
27761case OP_InitThisFieldIntAP:
27762 Text.Op = PrintName("InitThisFieldIntAP");
27763 Text.Args.push_back(printArg<uint32_t>(P, PC));
27764 break;
27765case OP_InitThisFieldIntAPS:
27766 Text.Op = PrintName("InitThisFieldIntAPS");
27767 Text.Args.push_back(printArg<uint32_t>(P, PC));
27768 break;
27769case OP_InitThisFieldBool:
27770 Text.Op = PrintName("InitThisFieldBool");
27771 Text.Args.push_back(printArg<uint32_t>(P, PC));
27772 break;
27773case OP_InitThisFieldFixedPoint:
27774 Text.Op = PrintName("InitThisFieldFixedPoint");
27775 Text.Args.push_back(printArg<uint32_t>(P, PC));
27776 break;
27777case OP_InitThisFieldPtr:
27778 Text.Op = PrintName("InitThisFieldPtr");
27779 Text.Args.push_back(printArg<uint32_t>(P, PC));
27780 break;
27781case OP_InitThisFieldMemberPtr:
27782 Text.Op = PrintName("InitThisFieldMemberPtr");
27783 Text.Args.push_back(printArg<uint32_t>(P, PC));
27784 break;
27785case OP_InitThisFieldFloat:
27786 Text.Op = PrintName("InitThisFieldFloat");
27787 Text.Args.push_back(printArg<uint32_t>(P, PC));
27788 break;
27789#endif
27790#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27791bool emitInitThisFieldSint8( uint32_t , SourceInfo);
27792bool emitInitThisFieldUint8( uint32_t , SourceInfo);
27793bool emitInitThisFieldSint16( uint32_t , SourceInfo);
27794bool emitInitThisFieldUint16( uint32_t , SourceInfo);
27795bool emitInitThisFieldSint32( uint32_t , SourceInfo);
27796bool emitInitThisFieldUint32( uint32_t , SourceInfo);
27797bool emitInitThisFieldSint64( uint32_t , SourceInfo);
27798bool emitInitThisFieldUint64( uint32_t , SourceInfo);
27799bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
27800bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
27801bool emitInitThisFieldBool( uint32_t , SourceInfo);
27802bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
27803bool emitInitThisFieldPtr( uint32_t , SourceInfo);
27804bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
27805bool emitInitThisFieldFloat( uint32_t , SourceInfo);
27806#endif
27807#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27808[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
27809#endif
27810#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27811bool
27812#if defined(GET_EVAL_IMPL)
27813EvalEmitter
27814#else
27815ByteCodeEmitter
27816#endif
27817::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
27818 switch (T0) {
27819 case PT_Sint8:
27820 return emitInitThisFieldSint8(A0, I);
27821 case PT_Uint8:
27822 return emitInitThisFieldUint8(A0, I);
27823 case PT_Sint16:
27824 return emitInitThisFieldSint16(A0, I);
27825 case PT_Uint16:
27826 return emitInitThisFieldUint16(A0, I);
27827 case PT_Sint32:
27828 return emitInitThisFieldSint32(A0, I);
27829 case PT_Uint32:
27830 return emitInitThisFieldUint32(A0, I);
27831 case PT_Sint64:
27832 return emitInitThisFieldSint64(A0, I);
27833 case PT_Uint64:
27834 return emitInitThisFieldUint64(A0, I);
27835 case PT_IntAP:
27836 return emitInitThisFieldIntAP(A0, I);
27837 case PT_IntAPS:
27838 return emitInitThisFieldIntAPS(A0, I);
27839 case PT_Bool:
27840 return emitInitThisFieldBool(A0, I);
27841 case PT_FixedPoint:
27842 return emitInitThisFieldFixedPoint(A0, I);
27843 case PT_Ptr:
27844 return emitInitThisFieldPtr(A0, I);
27845 case PT_MemberPtr:
27846 return emitInitThisFieldMemberPtr(A0, I);
27847 case PT_Float:
27848 return emitInitThisFieldFloat(A0, I);
27849 }
27850 llvm_unreachable("invalid enum value");
27851}
27852#endif
27853#ifdef GET_LINK_IMPL
27854bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
27855 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
27856}
27857bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
27858 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
27859}
27860bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
27861 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
27862}
27863bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
27864 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
27865}
27866bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
27867 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
27868}
27869bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
27870 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
27871}
27872bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
27873 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
27874}
27875bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
27876 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
27877}
27878bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
27879 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
27880}
27881bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
27882 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
27883}
27884bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
27885 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
27886}
27887bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
27888 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
27889}
27890bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
27891 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
27892}
27893bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
27894 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
27895}
27896bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
27897 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
27898}
27899#endif
27900#ifdef GET_EVAL_IMPL
27901bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
27902 if (!isActive()) return true;
27903 CurrentSource = L;
27904 return InitThisField<PT_Sint8>(S, OpPC, A0);
27905}
27906bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
27907 if (!isActive()) return true;
27908 CurrentSource = L;
27909 return InitThisField<PT_Uint8>(S, OpPC, A0);
27910}
27911bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
27912 if (!isActive()) return true;
27913 CurrentSource = L;
27914 return InitThisField<PT_Sint16>(S, OpPC, A0);
27915}
27916bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
27917 if (!isActive()) return true;
27918 CurrentSource = L;
27919 return InitThisField<PT_Uint16>(S, OpPC, A0);
27920}
27921bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
27922 if (!isActive()) return true;
27923 CurrentSource = L;
27924 return InitThisField<PT_Sint32>(S, OpPC, A0);
27925}
27926bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
27927 if (!isActive()) return true;
27928 CurrentSource = L;
27929 return InitThisField<PT_Uint32>(S, OpPC, A0);
27930}
27931bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
27932 if (!isActive()) return true;
27933 CurrentSource = L;
27934 return InitThisField<PT_Sint64>(S, OpPC, A0);
27935}
27936bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
27937 if (!isActive()) return true;
27938 CurrentSource = L;
27939 return InitThisField<PT_Uint64>(S, OpPC, A0);
27940}
27941bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
27942 if (!isActive()) return true;
27943 CurrentSource = L;
27944 return InitThisField<PT_IntAP>(S, OpPC, A0);
27945}
27946bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
27947 if (!isActive()) return true;
27948 CurrentSource = L;
27949 return InitThisField<PT_IntAPS>(S, OpPC, A0);
27950}
27951bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
27952 if (!isActive()) return true;
27953 CurrentSource = L;
27954 return InitThisField<PT_Bool>(S, OpPC, A0);
27955}
27956bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
27957 if (!isActive()) return true;
27958 CurrentSource = L;
27959 return InitThisField<PT_FixedPoint>(S, OpPC, A0);
27960}
27961bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
27962 if (!isActive()) return true;
27963 CurrentSource = L;
27964 return InitThisField<PT_Ptr>(S, OpPC, A0);
27965}
27966bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
27967 if (!isActive()) return true;
27968 CurrentSource = L;
27969 return InitThisField<PT_MemberPtr>(S, OpPC, A0);
27970}
27971bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
27972 if (!isActive()) return true;
27973 CurrentSource = L;
27974 return InitThisField<PT_Float>(S, OpPC, A0);
27975}
27976#endif
27977#ifdef GET_OPCODE_NAMES
27978OP_InitThisFieldActivateSint8,
27979OP_InitThisFieldActivateUint8,
27980OP_InitThisFieldActivateSint16,
27981OP_InitThisFieldActivateUint16,
27982OP_InitThisFieldActivateSint32,
27983OP_InitThisFieldActivateUint32,
27984OP_InitThisFieldActivateSint64,
27985OP_InitThisFieldActivateUint64,
27986OP_InitThisFieldActivateIntAP,
27987OP_InitThisFieldActivateIntAPS,
27988OP_InitThisFieldActivateBool,
27989OP_InitThisFieldActivateFixedPoint,
27990OP_InitThisFieldActivatePtr,
27991OP_InitThisFieldActivateMemberPtr,
27992OP_InitThisFieldActivateFloat,
27993#endif
27994#ifdef GET_INTERP
27995case OP_InitThisFieldActivateSint8: {
27996 const auto V0 = ReadArg<uint32_t>(S, PC);
27997 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0))
27998 return false;
27999 continue;
28000}
28001case OP_InitThisFieldActivateUint8: {
28002 const auto V0 = ReadArg<uint32_t>(S, PC);
28003 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0))
28004 return false;
28005 continue;
28006}
28007case OP_InitThisFieldActivateSint16: {
28008 const auto V0 = ReadArg<uint32_t>(S, PC);
28009 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0))
28010 return false;
28011 continue;
28012}
28013case OP_InitThisFieldActivateUint16: {
28014 const auto V0 = ReadArg<uint32_t>(S, PC);
28015 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0))
28016 return false;
28017 continue;
28018}
28019case OP_InitThisFieldActivateSint32: {
28020 const auto V0 = ReadArg<uint32_t>(S, PC);
28021 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0))
28022 return false;
28023 continue;
28024}
28025case OP_InitThisFieldActivateUint32: {
28026 const auto V0 = ReadArg<uint32_t>(S, PC);
28027 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0))
28028 return false;
28029 continue;
28030}
28031case OP_InitThisFieldActivateSint64: {
28032 const auto V0 = ReadArg<uint32_t>(S, PC);
28033 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0))
28034 return false;
28035 continue;
28036}
28037case OP_InitThisFieldActivateUint64: {
28038 const auto V0 = ReadArg<uint32_t>(S, PC);
28039 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0))
28040 return false;
28041 continue;
28042}
28043case OP_InitThisFieldActivateIntAP: {
28044 const auto V0 = ReadArg<uint32_t>(S, PC);
28045 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0))
28046 return false;
28047 continue;
28048}
28049case OP_InitThisFieldActivateIntAPS: {
28050 const auto V0 = ReadArg<uint32_t>(S, PC);
28051 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0))
28052 return false;
28053 continue;
28054}
28055case OP_InitThisFieldActivateBool: {
28056 const auto V0 = ReadArg<uint32_t>(S, PC);
28057 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0))
28058 return false;
28059 continue;
28060}
28061case OP_InitThisFieldActivateFixedPoint: {
28062 const auto V0 = ReadArg<uint32_t>(S, PC);
28063 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0))
28064 return false;
28065 continue;
28066}
28067case OP_InitThisFieldActivatePtr: {
28068 const auto V0 = ReadArg<uint32_t>(S, PC);
28069 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0))
28070 return false;
28071 continue;
28072}
28073case OP_InitThisFieldActivateMemberPtr: {
28074 const auto V0 = ReadArg<uint32_t>(S, PC);
28075 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0))
28076 return false;
28077 continue;
28078}
28079case OP_InitThisFieldActivateFloat: {
28080 const auto V0 = ReadArg<uint32_t>(S, PC);
28081 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0))
28082 return false;
28083 continue;
28084}
28085#endif
28086#ifdef GET_DISASM
28087case OP_InitThisFieldActivateSint8:
28088 Text.Op = PrintName("InitThisFieldActivateSint8");
28089 Text.Args.push_back(printArg<uint32_t>(P, PC));
28090 break;
28091case OP_InitThisFieldActivateUint8:
28092 Text.Op = PrintName("InitThisFieldActivateUint8");
28093 Text.Args.push_back(printArg<uint32_t>(P, PC));
28094 break;
28095case OP_InitThisFieldActivateSint16:
28096 Text.Op = PrintName("InitThisFieldActivateSint16");
28097 Text.Args.push_back(printArg<uint32_t>(P, PC));
28098 break;
28099case OP_InitThisFieldActivateUint16:
28100 Text.Op = PrintName("InitThisFieldActivateUint16");
28101 Text.Args.push_back(printArg<uint32_t>(P, PC));
28102 break;
28103case OP_InitThisFieldActivateSint32:
28104 Text.Op = PrintName("InitThisFieldActivateSint32");
28105 Text.Args.push_back(printArg<uint32_t>(P, PC));
28106 break;
28107case OP_InitThisFieldActivateUint32:
28108 Text.Op = PrintName("InitThisFieldActivateUint32");
28109 Text.Args.push_back(printArg<uint32_t>(P, PC));
28110 break;
28111case OP_InitThisFieldActivateSint64:
28112 Text.Op = PrintName("InitThisFieldActivateSint64");
28113 Text.Args.push_back(printArg<uint32_t>(P, PC));
28114 break;
28115case OP_InitThisFieldActivateUint64:
28116 Text.Op = PrintName("InitThisFieldActivateUint64");
28117 Text.Args.push_back(printArg<uint32_t>(P, PC));
28118 break;
28119case OP_InitThisFieldActivateIntAP:
28120 Text.Op = PrintName("InitThisFieldActivateIntAP");
28121 Text.Args.push_back(printArg<uint32_t>(P, PC));
28122 break;
28123case OP_InitThisFieldActivateIntAPS:
28124 Text.Op = PrintName("InitThisFieldActivateIntAPS");
28125 Text.Args.push_back(printArg<uint32_t>(P, PC));
28126 break;
28127case OP_InitThisFieldActivateBool:
28128 Text.Op = PrintName("InitThisFieldActivateBool");
28129 Text.Args.push_back(printArg<uint32_t>(P, PC));
28130 break;
28131case OP_InitThisFieldActivateFixedPoint:
28132 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
28133 Text.Args.push_back(printArg<uint32_t>(P, PC));
28134 break;
28135case OP_InitThisFieldActivatePtr:
28136 Text.Op = PrintName("InitThisFieldActivatePtr");
28137 Text.Args.push_back(printArg<uint32_t>(P, PC));
28138 break;
28139case OP_InitThisFieldActivateMemberPtr:
28140 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
28141 Text.Args.push_back(printArg<uint32_t>(P, PC));
28142 break;
28143case OP_InitThisFieldActivateFloat:
28144 Text.Op = PrintName("InitThisFieldActivateFloat");
28145 Text.Args.push_back(printArg<uint32_t>(P, PC));
28146 break;
28147#endif
28148#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28149bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
28150bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
28151bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
28152bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
28153bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
28154bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
28155bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
28156bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
28157bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
28158bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
28159bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
28160bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
28161bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
28162bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
28163bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
28164#endif
28165#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28166[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
28167#endif
28168#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28169bool
28170#if defined(GET_EVAL_IMPL)
28171EvalEmitter
28172#else
28173ByteCodeEmitter
28174#endif
28175::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
28176 switch (T0) {
28177 case PT_Sint8:
28178 return emitInitThisFieldActivateSint8(A0, I);
28179 case PT_Uint8:
28180 return emitInitThisFieldActivateUint8(A0, I);
28181 case PT_Sint16:
28182 return emitInitThisFieldActivateSint16(A0, I);
28183 case PT_Uint16:
28184 return emitInitThisFieldActivateUint16(A0, I);
28185 case PT_Sint32:
28186 return emitInitThisFieldActivateSint32(A0, I);
28187 case PT_Uint32:
28188 return emitInitThisFieldActivateUint32(A0, I);
28189 case PT_Sint64:
28190 return emitInitThisFieldActivateSint64(A0, I);
28191 case PT_Uint64:
28192 return emitInitThisFieldActivateUint64(A0, I);
28193 case PT_IntAP:
28194 return emitInitThisFieldActivateIntAP(A0, I);
28195 case PT_IntAPS:
28196 return emitInitThisFieldActivateIntAPS(A0, I);
28197 case PT_Bool:
28198 return emitInitThisFieldActivateBool(A0, I);
28199 case PT_FixedPoint:
28200 return emitInitThisFieldActivateFixedPoint(A0, I);
28201 case PT_Ptr:
28202 return emitInitThisFieldActivatePtr(A0, I);
28203 case PT_MemberPtr:
28204 return emitInitThisFieldActivateMemberPtr(A0, I);
28205 case PT_Float:
28206 return emitInitThisFieldActivateFloat(A0, I);
28207 }
28208 llvm_unreachable("invalid enum value");
28209}
28210#endif
28211#ifdef GET_LINK_IMPL
28212bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
28213 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
28214}
28215bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
28216 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
28217}
28218bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
28219 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
28220}
28221bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
28222 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
28223}
28224bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
28225 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
28226}
28227bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
28228 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
28229}
28230bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
28231 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
28232}
28233bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
28234 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
28235}
28236bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
28237 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
28238}
28239bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
28240 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
28241}
28242bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
28243 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
28244}
28245bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
28246 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
28247}
28248bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
28249 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
28250}
28251bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
28252 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
28253}
28254bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
28255 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
28256}
28257#endif
28258#ifdef GET_EVAL_IMPL
28259bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
28260 if (!isActive()) return true;
28261 CurrentSource = L;
28262 return InitThisFieldActivate<PT_Sint8>(S, OpPC, A0);
28263}
28264bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
28265 if (!isActive()) return true;
28266 CurrentSource = L;
28267 return InitThisFieldActivate<PT_Uint8>(S, OpPC, A0);
28268}
28269bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
28270 if (!isActive()) return true;
28271 CurrentSource = L;
28272 return InitThisFieldActivate<PT_Sint16>(S, OpPC, A0);
28273}
28274bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
28275 if (!isActive()) return true;
28276 CurrentSource = L;
28277 return InitThisFieldActivate<PT_Uint16>(S, OpPC, A0);
28278}
28279bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
28280 if (!isActive()) return true;
28281 CurrentSource = L;
28282 return InitThisFieldActivate<PT_Sint32>(S, OpPC, A0);
28283}
28284bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
28285 if (!isActive()) return true;
28286 CurrentSource = L;
28287 return InitThisFieldActivate<PT_Uint32>(S, OpPC, A0);
28288}
28289bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
28290 if (!isActive()) return true;
28291 CurrentSource = L;
28292 return InitThisFieldActivate<PT_Sint64>(S, OpPC, A0);
28293}
28294bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
28295 if (!isActive()) return true;
28296 CurrentSource = L;
28297 return InitThisFieldActivate<PT_Uint64>(S, OpPC, A0);
28298}
28299bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
28300 if (!isActive()) return true;
28301 CurrentSource = L;
28302 return InitThisFieldActivate<PT_IntAP>(S, OpPC, A0);
28303}
28304bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
28305 if (!isActive()) return true;
28306 CurrentSource = L;
28307 return InitThisFieldActivate<PT_IntAPS>(S, OpPC, A0);
28308}
28309bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
28310 if (!isActive()) return true;
28311 CurrentSource = L;
28312 return InitThisFieldActivate<PT_Bool>(S, OpPC, A0);
28313}
28314bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
28315 if (!isActive()) return true;
28316 CurrentSource = L;
28317 return InitThisFieldActivate<PT_FixedPoint>(S, OpPC, A0);
28318}
28319bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
28320 if (!isActive()) return true;
28321 CurrentSource = L;
28322 return InitThisFieldActivate<PT_Ptr>(S, OpPC, A0);
28323}
28324bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
28325 if (!isActive()) return true;
28326 CurrentSource = L;
28327 return InitThisFieldActivate<PT_MemberPtr>(S, OpPC, A0);
28328}
28329bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
28330 if (!isActive()) return true;
28331 CurrentSource = L;
28332 return InitThisFieldActivate<PT_Float>(S, OpPC, A0);
28333}
28334#endif
28335#ifdef GET_OPCODE_NAMES
28336OP_Inv,
28337#endif
28338#ifdef GET_INTERP
28339case OP_Inv: {
28340 if (!Inv(S, OpPC))
28341 return false;
28342 continue;
28343}
28344#endif
28345#ifdef GET_DISASM
28346case OP_Inv:
28347 Text.Op = PrintName("Inv");
28348 break;
28349#endif
28350#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28351bool emitInv(SourceInfo);
28352#endif
28353#ifdef GET_LINK_IMPL
28354bool ByteCodeEmitter::emitInv(SourceInfo L) {
28355 return emitOp<>(OP_Inv, L);
28356}
28357#endif
28358#ifdef GET_EVAL_IMPL
28359bool EvalEmitter::emitInv(SourceInfo L) {
28360 if (!isActive()) return true;
28361 CurrentSource = L;
28362 return Inv(S, OpPC);
28363}
28364#endif
28365#ifdef GET_OPCODE_NAMES
28366OP_Invalid,
28367#endif
28368#ifdef GET_INTERP
28369case OP_Invalid: {
28370 if (!Invalid(S, OpPC))
28371 return false;
28372 continue;
28373}
28374#endif
28375#ifdef GET_DISASM
28376case OP_Invalid:
28377 Text.Op = PrintName("Invalid");
28378 break;
28379#endif
28380#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28381bool emitInvalid(SourceInfo);
28382#endif
28383#ifdef GET_LINK_IMPL
28384bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
28385 return emitOp<>(OP_Invalid, L);
28386}
28387#endif
28388#ifdef GET_EVAL_IMPL
28389bool EvalEmitter::emitInvalid(SourceInfo L) {
28390 if (!isActive()) return true;
28391 CurrentSource = L;
28392 return Invalid(S, OpPC);
28393}
28394#endif
28395#ifdef GET_OPCODE_NAMES
28396OP_InvalidCast,
28397#endif
28398#ifdef GET_INTERP
28399case OP_InvalidCast: {
28400 const auto V0 = ReadArg<interp::CastKind>(S, PC);
28401 const auto V1 = ReadArg<bool>(S, PC);
28402 if (!InvalidCast(S, OpPC, V0, V1))
28403 return false;
28404 continue;
28405}
28406#endif
28407#ifdef GET_DISASM
28408case OP_InvalidCast:
28409 Text.Op = PrintName("InvalidCast");
28410 Text.Args.push_back(printArg<interp::CastKind>(P, PC));
28411 Text.Args.push_back(printArg<bool>(P, PC));
28412 break;
28413#endif
28414#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28415bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
28416#endif
28417#ifdef GET_LINK_IMPL
28418bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
28419 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
28420}
28421#endif
28422#ifdef GET_EVAL_IMPL
28423bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
28424 if (!isActive()) return true;
28425 CurrentSource = L;
28426 return InvalidCast(S, OpPC, A0, A1);
28427}
28428#endif
28429#ifdef GET_OPCODE_NAMES
28430OP_InvalidDeclRef,
28431#endif
28432#ifdef GET_INTERP
28433case OP_InvalidDeclRef: {
28434 const auto V0 = ReadArg<const DeclRefExpr *>(S, PC);
28435 const auto V1 = ReadArg<bool>(S, PC);
28436 if (!InvalidDeclRef(S, OpPC, V0, V1))
28437 return false;
28438 continue;
28439}
28440#endif
28441#ifdef GET_DISASM
28442case OP_InvalidDeclRef:
28443 Text.Op = PrintName("InvalidDeclRef");
28444 Text.Args.push_back(printArg<const DeclRefExpr *>(P, PC));
28445 Text.Args.push_back(printArg<bool>(P, PC));
28446 break;
28447#endif
28448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28449bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
28450#endif
28451#ifdef GET_LINK_IMPL
28452bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
28453 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
28454}
28455#endif
28456#ifdef GET_EVAL_IMPL
28457bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
28458 if (!isActive()) return true;
28459 CurrentSource = L;
28460 return InvalidDeclRef(S, OpPC, A0, A1);
28461}
28462#endif
28463#ifdef GET_OPCODE_NAMES
28464OP_InvalidNewDeleteExpr,
28465#endif
28466#ifdef GET_INTERP
28467case OP_InvalidNewDeleteExpr: {
28468 const auto V0 = ReadArg<const Expr *>(S, PC);
28469 if (!InvalidNewDeleteExpr(S, OpPC, V0))
28470 return false;
28471 continue;
28472}
28473#endif
28474#ifdef GET_DISASM
28475case OP_InvalidNewDeleteExpr:
28476 Text.Op = PrintName("InvalidNewDeleteExpr");
28477 Text.Args.push_back(printArg<const Expr *>(P, PC));
28478 break;
28479#endif
28480#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28481bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
28482#endif
28483#ifdef GET_LINK_IMPL
28484bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
28485 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
28486}
28487#endif
28488#ifdef GET_EVAL_IMPL
28489bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
28490 if (!isActive()) return true;
28491 CurrentSource = L;
28492 return InvalidNewDeleteExpr(S, OpPC, A0);
28493}
28494#endif
28495#ifdef GET_OPCODE_NAMES
28496OP_InvalidShuffleVectorIndex,
28497#endif
28498#ifdef GET_INTERP
28499case OP_InvalidShuffleVectorIndex: {
28500 const auto V0 = ReadArg<uint32_t>(S, PC);
28501 if (!InvalidShuffleVectorIndex(S, OpPC, V0))
28502 return false;
28503 continue;
28504}
28505#endif
28506#ifdef GET_DISASM
28507case OP_InvalidShuffleVectorIndex:
28508 Text.Op = PrintName("InvalidShuffleVectorIndex");
28509 Text.Args.push_back(printArg<uint32_t>(P, PC));
28510 break;
28511#endif
28512#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28513bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
28514#endif
28515#ifdef GET_LINK_IMPL
28516bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
28517 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
28518}
28519#endif
28520#ifdef GET_EVAL_IMPL
28521bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
28522 if (!isActive()) return true;
28523 CurrentSource = L;
28524 return InvalidShuffleVectorIndex(S, OpPC, A0);
28525}
28526#endif
28527#ifdef GET_OPCODE_NAMES
28528OP_InvalidStore,
28529#endif
28530#ifdef GET_INTERP
28531case OP_InvalidStore: {
28532 const auto V0 = ReadArg<const Type *>(S, PC);
28533 if (!InvalidStore(S, OpPC, V0))
28534 return false;
28535 continue;
28536}
28537#endif
28538#ifdef GET_DISASM
28539case OP_InvalidStore:
28540 Text.Op = PrintName("InvalidStore");
28541 Text.Args.push_back(printArg<const Type *>(P, PC));
28542 break;
28543#endif
28544#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28545bool emitInvalidStore( const Type * , SourceInfo);
28546#endif
28547#ifdef GET_LINK_IMPL
28548bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
28549 return emitOp<const Type *>(OP_InvalidStore, A0, L);
28550}
28551#endif
28552#ifdef GET_EVAL_IMPL
28553bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
28554 if (!isActive()) return true;
28555 CurrentSource = L;
28556 return InvalidStore(S, OpPC, A0);
28557}
28558#endif
28559#ifdef GET_OPCODE_NAMES
28560OP_IsConstantContext,
28561#endif
28562#ifdef GET_INTERP
28563case OP_IsConstantContext: {
28564 if (!IsConstantContext(S, OpPC))
28565 return false;
28566 continue;
28567}
28568#endif
28569#ifdef GET_DISASM
28570case OP_IsConstantContext:
28571 Text.Op = PrintName("IsConstantContext");
28572 break;
28573#endif
28574#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28575bool emitIsConstantContext(SourceInfo);
28576#endif
28577#ifdef GET_LINK_IMPL
28578bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
28579 return emitOp<>(OP_IsConstantContext, L);
28580}
28581#endif
28582#ifdef GET_EVAL_IMPL
28583bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
28584 if (!isActive()) return true;
28585 CurrentSource = L;
28586 return IsConstantContext(S, OpPC);
28587}
28588#endif
28589#ifdef GET_OPCODE_NAMES
28590OP_IsNonNullPtr,
28591OP_IsNonNullMemberPtr,
28592#endif
28593#ifdef GET_INTERP
28594case OP_IsNonNullPtr: {
28595 if (!IsNonNull<PT_Ptr>(S, OpPC))
28596 return false;
28597 continue;
28598}
28599case OP_IsNonNullMemberPtr: {
28600 if (!IsNonNull<PT_MemberPtr>(S, OpPC))
28601 return false;
28602 continue;
28603}
28604#endif
28605#ifdef GET_DISASM
28606case OP_IsNonNullPtr:
28607 Text.Op = PrintName("IsNonNullPtr");
28608 break;
28609case OP_IsNonNullMemberPtr:
28610 Text.Op = PrintName("IsNonNullMemberPtr");
28611 break;
28612#endif
28613#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28614bool emitIsNonNullPtr(SourceInfo);
28615bool emitIsNonNullMemberPtr(SourceInfo);
28616#endif
28617#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28618[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
28619#endif
28620#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28621bool
28622#if defined(GET_EVAL_IMPL)
28623EvalEmitter
28624#else
28625ByteCodeEmitter
28626#endif
28627::emitIsNonNull(PrimType T0, SourceInfo I) {
28628 switch (T0) {
28629 case PT_Ptr:
28630 return emitIsNonNullPtr(I);
28631 case PT_MemberPtr:
28632 return emitIsNonNullMemberPtr(I);
28633 default: llvm_unreachable("invalid type: emitIsNonNull");
28634 }
28635 llvm_unreachable("invalid enum value");
28636}
28637#endif
28638#ifdef GET_LINK_IMPL
28639bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
28640 return emitOp<>(OP_IsNonNullPtr, L);
28641}
28642bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
28643 return emitOp<>(OP_IsNonNullMemberPtr, L);
28644}
28645#endif
28646#ifdef GET_EVAL_IMPL
28647bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
28648 if (!isActive()) return true;
28649 CurrentSource = L;
28650 return IsNonNull<PT_Ptr>(S, OpPC);
28651}
28652bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
28653 if (!isActive()) return true;
28654 CurrentSource = L;
28655 return IsNonNull<PT_MemberPtr>(S, OpPC);
28656}
28657#endif
28658#ifdef GET_OPCODE_NAMES
28659OP_Jf,
28660#endif
28661#ifdef GET_INTERP
28662case OP_Jf: {
28663 const auto V0 = ReadArg<int32_t>(S, PC);
28664 if (!Jf(S, PC, V0))
28665 return false;
28666 continue;
28667}
28668#endif
28669#ifdef GET_DISASM
28670case OP_Jf:
28671 Text.Op = PrintName("Jf");
28672 Text.Args.push_back(printArg<int32_t>(P, PC));
28673 break;
28674#endif
28675#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28676bool emitJf( int32_t , SourceInfo);
28677#endif
28678#ifdef GET_LINK_IMPL
28679bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
28680 return emitOp<int32_t>(OP_Jf, A0, L);
28681}
28682#endif
28683#ifdef GET_OPCODE_NAMES
28684OP_Jmp,
28685#endif
28686#ifdef GET_INTERP
28687case OP_Jmp: {
28688 const auto V0 = ReadArg<int32_t>(S, PC);
28689 if (!Jmp(S, PC, V0))
28690 return false;
28691 continue;
28692}
28693#endif
28694#ifdef GET_DISASM
28695case OP_Jmp:
28696 Text.Op = PrintName("Jmp");
28697 Text.Args.push_back(printArg<int32_t>(P, PC));
28698 break;
28699#endif
28700#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28701bool emitJmp( int32_t , SourceInfo);
28702#endif
28703#ifdef GET_LINK_IMPL
28704bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
28705 return emitOp<int32_t>(OP_Jmp, A0, L);
28706}
28707#endif
28708#ifdef GET_OPCODE_NAMES
28709OP_Jt,
28710#endif
28711#ifdef GET_INTERP
28712case OP_Jt: {
28713 const auto V0 = ReadArg<int32_t>(S, PC);
28714 if (!Jt(S, PC, V0))
28715 return false;
28716 continue;
28717}
28718#endif
28719#ifdef GET_DISASM
28720case OP_Jt:
28721 Text.Op = PrintName("Jt");
28722 Text.Args.push_back(printArg<int32_t>(P, PC));
28723 break;
28724#endif
28725#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28726bool emitJt( int32_t , SourceInfo);
28727#endif
28728#ifdef GET_LINK_IMPL
28729bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
28730 return emitOp<int32_t>(OP_Jt, A0, L);
28731}
28732#endif
28733#ifdef GET_OPCODE_NAMES
28734OP_LESint8,
28735OP_LEUint8,
28736OP_LESint16,
28737OP_LEUint16,
28738OP_LESint32,
28739OP_LEUint32,
28740OP_LESint64,
28741OP_LEUint64,
28742OP_LEIntAP,
28743OP_LEIntAPS,
28744OP_LEBool,
28745OP_LEFixedPoint,
28746OP_LEPtr,
28747OP_LEFloat,
28748#endif
28749#ifdef GET_INTERP
28750case OP_LESint8: {
28751 if (!LE<PT_Sint8>(S, OpPC))
28752 return false;
28753 continue;
28754}
28755case OP_LEUint8: {
28756 if (!LE<PT_Uint8>(S, OpPC))
28757 return false;
28758 continue;
28759}
28760case OP_LESint16: {
28761 if (!LE<PT_Sint16>(S, OpPC))
28762 return false;
28763 continue;
28764}
28765case OP_LEUint16: {
28766 if (!LE<PT_Uint16>(S, OpPC))
28767 return false;
28768 continue;
28769}
28770case OP_LESint32: {
28771 if (!LE<PT_Sint32>(S, OpPC))
28772 return false;
28773 continue;
28774}
28775case OP_LEUint32: {
28776 if (!LE<PT_Uint32>(S, OpPC))
28777 return false;
28778 continue;
28779}
28780case OP_LESint64: {
28781 if (!LE<PT_Sint64>(S, OpPC))
28782 return false;
28783 continue;
28784}
28785case OP_LEUint64: {
28786 if (!LE<PT_Uint64>(S, OpPC))
28787 return false;
28788 continue;
28789}
28790case OP_LEIntAP: {
28791 if (!LE<PT_IntAP>(S, OpPC))
28792 return false;
28793 continue;
28794}
28795case OP_LEIntAPS: {
28796 if (!LE<PT_IntAPS>(S, OpPC))
28797 return false;
28798 continue;
28799}
28800case OP_LEBool: {
28801 if (!LE<PT_Bool>(S, OpPC))
28802 return false;
28803 continue;
28804}
28805case OP_LEFixedPoint: {
28806 if (!LE<PT_FixedPoint>(S, OpPC))
28807 return false;
28808 continue;
28809}
28810case OP_LEPtr: {
28811 if (!LE<PT_Ptr>(S, OpPC))
28812 return false;
28813 continue;
28814}
28815case OP_LEFloat: {
28816 if (!LE<PT_Float>(S, OpPC))
28817 return false;
28818 continue;
28819}
28820#endif
28821#ifdef GET_DISASM
28822case OP_LESint8:
28823 Text.Op = PrintName("LESint8");
28824 break;
28825case OP_LEUint8:
28826 Text.Op = PrintName("LEUint8");
28827 break;
28828case OP_LESint16:
28829 Text.Op = PrintName("LESint16");
28830 break;
28831case OP_LEUint16:
28832 Text.Op = PrintName("LEUint16");
28833 break;
28834case OP_LESint32:
28835 Text.Op = PrintName("LESint32");
28836 break;
28837case OP_LEUint32:
28838 Text.Op = PrintName("LEUint32");
28839 break;
28840case OP_LESint64:
28841 Text.Op = PrintName("LESint64");
28842 break;
28843case OP_LEUint64:
28844 Text.Op = PrintName("LEUint64");
28845 break;
28846case OP_LEIntAP:
28847 Text.Op = PrintName("LEIntAP");
28848 break;
28849case OP_LEIntAPS:
28850 Text.Op = PrintName("LEIntAPS");
28851 break;
28852case OP_LEBool:
28853 Text.Op = PrintName("LEBool");
28854 break;
28855case OP_LEFixedPoint:
28856 Text.Op = PrintName("LEFixedPoint");
28857 break;
28858case OP_LEPtr:
28859 Text.Op = PrintName("LEPtr");
28860 break;
28861case OP_LEFloat:
28862 Text.Op = PrintName("LEFloat");
28863 break;
28864#endif
28865#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28866bool emitLESint8(SourceInfo);
28867bool emitLEUint8(SourceInfo);
28868bool emitLESint16(SourceInfo);
28869bool emitLEUint16(SourceInfo);
28870bool emitLESint32(SourceInfo);
28871bool emitLEUint32(SourceInfo);
28872bool emitLESint64(SourceInfo);
28873bool emitLEUint64(SourceInfo);
28874bool emitLEIntAP(SourceInfo);
28875bool emitLEIntAPS(SourceInfo);
28876bool emitLEBool(SourceInfo);
28877bool emitLEFixedPoint(SourceInfo);
28878bool emitLEPtr(SourceInfo);
28879bool emitLEFloat(SourceInfo);
28880#endif
28881#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28882[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
28883#endif
28884#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28885bool
28886#if defined(GET_EVAL_IMPL)
28887EvalEmitter
28888#else
28889ByteCodeEmitter
28890#endif
28891::emitLE(PrimType T0, SourceInfo I) {
28892 switch (T0) {
28893 case PT_Sint8:
28894 return emitLESint8(I);
28895 case PT_Uint8:
28896 return emitLEUint8(I);
28897 case PT_Sint16:
28898 return emitLESint16(I);
28899 case PT_Uint16:
28900 return emitLEUint16(I);
28901 case PT_Sint32:
28902 return emitLESint32(I);
28903 case PT_Uint32:
28904 return emitLEUint32(I);
28905 case PT_Sint64:
28906 return emitLESint64(I);
28907 case PT_Uint64:
28908 return emitLEUint64(I);
28909 case PT_IntAP:
28910 return emitLEIntAP(I);
28911 case PT_IntAPS:
28912 return emitLEIntAPS(I);
28913 case PT_Bool:
28914 return emitLEBool(I);
28915 case PT_FixedPoint:
28916 return emitLEFixedPoint(I);
28917 case PT_Ptr:
28918 return emitLEPtr(I);
28919 case PT_Float:
28920 return emitLEFloat(I);
28921 default: llvm_unreachable("invalid type: emitLE");
28922 }
28923 llvm_unreachable("invalid enum value");
28924}
28925#endif
28926#ifdef GET_LINK_IMPL
28927bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
28928 return emitOp<>(OP_LESint8, L);
28929}
28930bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
28931 return emitOp<>(OP_LEUint8, L);
28932}
28933bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
28934 return emitOp<>(OP_LESint16, L);
28935}
28936bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
28937 return emitOp<>(OP_LEUint16, L);
28938}
28939bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
28940 return emitOp<>(OP_LESint32, L);
28941}
28942bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
28943 return emitOp<>(OP_LEUint32, L);
28944}
28945bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
28946 return emitOp<>(OP_LESint64, L);
28947}
28948bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
28949 return emitOp<>(OP_LEUint64, L);
28950}
28951bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
28952 return emitOp<>(OP_LEIntAP, L);
28953}
28954bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
28955 return emitOp<>(OP_LEIntAPS, L);
28956}
28957bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
28958 return emitOp<>(OP_LEBool, L);
28959}
28960bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
28961 return emitOp<>(OP_LEFixedPoint, L);
28962}
28963bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
28964 return emitOp<>(OP_LEPtr, L);
28965}
28966bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
28967 return emitOp<>(OP_LEFloat, L);
28968}
28969#endif
28970#ifdef GET_EVAL_IMPL
28971bool EvalEmitter::emitLESint8(SourceInfo L) {
28972 if (!isActive()) return true;
28973 CurrentSource = L;
28974 return LE<PT_Sint8>(S, OpPC);
28975}
28976bool EvalEmitter::emitLEUint8(SourceInfo L) {
28977 if (!isActive()) return true;
28978 CurrentSource = L;
28979 return LE<PT_Uint8>(S, OpPC);
28980}
28981bool EvalEmitter::emitLESint16(SourceInfo L) {
28982 if (!isActive()) return true;
28983 CurrentSource = L;
28984 return LE<PT_Sint16>(S, OpPC);
28985}
28986bool EvalEmitter::emitLEUint16(SourceInfo L) {
28987 if (!isActive()) return true;
28988 CurrentSource = L;
28989 return LE<PT_Uint16>(S, OpPC);
28990}
28991bool EvalEmitter::emitLESint32(SourceInfo L) {
28992 if (!isActive()) return true;
28993 CurrentSource = L;
28994 return LE<PT_Sint32>(S, OpPC);
28995}
28996bool EvalEmitter::emitLEUint32(SourceInfo L) {
28997 if (!isActive()) return true;
28998 CurrentSource = L;
28999 return LE<PT_Uint32>(S, OpPC);
29000}
29001bool EvalEmitter::emitLESint64(SourceInfo L) {
29002 if (!isActive()) return true;
29003 CurrentSource = L;
29004 return LE<PT_Sint64>(S, OpPC);
29005}
29006bool EvalEmitter::emitLEUint64(SourceInfo L) {
29007 if (!isActive()) return true;
29008 CurrentSource = L;
29009 return LE<PT_Uint64>(S, OpPC);
29010}
29011bool EvalEmitter::emitLEIntAP(SourceInfo L) {
29012 if (!isActive()) return true;
29013 CurrentSource = L;
29014 return LE<PT_IntAP>(S, OpPC);
29015}
29016bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
29017 if (!isActive()) return true;
29018 CurrentSource = L;
29019 return LE<PT_IntAPS>(S, OpPC);
29020}
29021bool EvalEmitter::emitLEBool(SourceInfo L) {
29022 if (!isActive()) return true;
29023 CurrentSource = L;
29024 return LE<PT_Bool>(S, OpPC);
29025}
29026bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
29027 if (!isActive()) return true;
29028 CurrentSource = L;
29029 return LE<PT_FixedPoint>(S, OpPC);
29030}
29031bool EvalEmitter::emitLEPtr(SourceInfo L) {
29032 if (!isActive()) return true;
29033 CurrentSource = L;
29034 return LE<PT_Ptr>(S, OpPC);
29035}
29036bool EvalEmitter::emitLEFloat(SourceInfo L) {
29037 if (!isActive()) return true;
29038 CurrentSource = L;
29039 return LE<PT_Float>(S, OpPC);
29040}
29041#endif
29042#ifdef GET_OPCODE_NAMES
29043OP_LTSint8,
29044OP_LTUint8,
29045OP_LTSint16,
29046OP_LTUint16,
29047OP_LTSint32,
29048OP_LTUint32,
29049OP_LTSint64,
29050OP_LTUint64,
29051OP_LTIntAP,
29052OP_LTIntAPS,
29053OP_LTBool,
29054OP_LTFixedPoint,
29055OP_LTPtr,
29056OP_LTFloat,
29057#endif
29058#ifdef GET_INTERP
29059case OP_LTSint8: {
29060 if (!LT<PT_Sint8>(S, OpPC))
29061 return false;
29062 continue;
29063}
29064case OP_LTUint8: {
29065 if (!LT<PT_Uint8>(S, OpPC))
29066 return false;
29067 continue;
29068}
29069case OP_LTSint16: {
29070 if (!LT<PT_Sint16>(S, OpPC))
29071 return false;
29072 continue;
29073}
29074case OP_LTUint16: {
29075 if (!LT<PT_Uint16>(S, OpPC))
29076 return false;
29077 continue;
29078}
29079case OP_LTSint32: {
29080 if (!LT<PT_Sint32>(S, OpPC))
29081 return false;
29082 continue;
29083}
29084case OP_LTUint32: {
29085 if (!LT<PT_Uint32>(S, OpPC))
29086 return false;
29087 continue;
29088}
29089case OP_LTSint64: {
29090 if (!LT<PT_Sint64>(S, OpPC))
29091 return false;
29092 continue;
29093}
29094case OP_LTUint64: {
29095 if (!LT<PT_Uint64>(S, OpPC))
29096 return false;
29097 continue;
29098}
29099case OP_LTIntAP: {
29100 if (!LT<PT_IntAP>(S, OpPC))
29101 return false;
29102 continue;
29103}
29104case OP_LTIntAPS: {
29105 if (!LT<PT_IntAPS>(S, OpPC))
29106 return false;
29107 continue;
29108}
29109case OP_LTBool: {
29110 if (!LT<PT_Bool>(S, OpPC))
29111 return false;
29112 continue;
29113}
29114case OP_LTFixedPoint: {
29115 if (!LT<PT_FixedPoint>(S, OpPC))
29116 return false;
29117 continue;
29118}
29119case OP_LTPtr: {
29120 if (!LT<PT_Ptr>(S, OpPC))
29121 return false;
29122 continue;
29123}
29124case OP_LTFloat: {
29125 if (!LT<PT_Float>(S, OpPC))
29126 return false;
29127 continue;
29128}
29129#endif
29130#ifdef GET_DISASM
29131case OP_LTSint8:
29132 Text.Op = PrintName("LTSint8");
29133 break;
29134case OP_LTUint8:
29135 Text.Op = PrintName("LTUint8");
29136 break;
29137case OP_LTSint16:
29138 Text.Op = PrintName("LTSint16");
29139 break;
29140case OP_LTUint16:
29141 Text.Op = PrintName("LTUint16");
29142 break;
29143case OP_LTSint32:
29144 Text.Op = PrintName("LTSint32");
29145 break;
29146case OP_LTUint32:
29147 Text.Op = PrintName("LTUint32");
29148 break;
29149case OP_LTSint64:
29150 Text.Op = PrintName("LTSint64");
29151 break;
29152case OP_LTUint64:
29153 Text.Op = PrintName("LTUint64");
29154 break;
29155case OP_LTIntAP:
29156 Text.Op = PrintName("LTIntAP");
29157 break;
29158case OP_LTIntAPS:
29159 Text.Op = PrintName("LTIntAPS");
29160 break;
29161case OP_LTBool:
29162 Text.Op = PrintName("LTBool");
29163 break;
29164case OP_LTFixedPoint:
29165 Text.Op = PrintName("LTFixedPoint");
29166 break;
29167case OP_LTPtr:
29168 Text.Op = PrintName("LTPtr");
29169 break;
29170case OP_LTFloat:
29171 Text.Op = PrintName("LTFloat");
29172 break;
29173#endif
29174#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29175bool emitLTSint8(SourceInfo);
29176bool emitLTUint8(SourceInfo);
29177bool emitLTSint16(SourceInfo);
29178bool emitLTUint16(SourceInfo);
29179bool emitLTSint32(SourceInfo);
29180bool emitLTUint32(SourceInfo);
29181bool emitLTSint64(SourceInfo);
29182bool emitLTUint64(SourceInfo);
29183bool emitLTIntAP(SourceInfo);
29184bool emitLTIntAPS(SourceInfo);
29185bool emitLTBool(SourceInfo);
29186bool emitLTFixedPoint(SourceInfo);
29187bool emitLTPtr(SourceInfo);
29188bool emitLTFloat(SourceInfo);
29189#endif
29190#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29191[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
29192#endif
29193#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29194bool
29195#if defined(GET_EVAL_IMPL)
29196EvalEmitter
29197#else
29198ByteCodeEmitter
29199#endif
29200::emitLT(PrimType T0, SourceInfo I) {
29201 switch (T0) {
29202 case PT_Sint8:
29203 return emitLTSint8(I);
29204 case PT_Uint8:
29205 return emitLTUint8(I);
29206 case PT_Sint16:
29207 return emitLTSint16(I);
29208 case PT_Uint16:
29209 return emitLTUint16(I);
29210 case PT_Sint32:
29211 return emitLTSint32(I);
29212 case PT_Uint32:
29213 return emitLTUint32(I);
29214 case PT_Sint64:
29215 return emitLTSint64(I);
29216 case PT_Uint64:
29217 return emitLTUint64(I);
29218 case PT_IntAP:
29219 return emitLTIntAP(I);
29220 case PT_IntAPS:
29221 return emitLTIntAPS(I);
29222 case PT_Bool:
29223 return emitLTBool(I);
29224 case PT_FixedPoint:
29225 return emitLTFixedPoint(I);
29226 case PT_Ptr:
29227 return emitLTPtr(I);
29228 case PT_Float:
29229 return emitLTFloat(I);
29230 default: llvm_unreachable("invalid type: emitLT");
29231 }
29232 llvm_unreachable("invalid enum value");
29233}
29234#endif
29235#ifdef GET_LINK_IMPL
29236bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
29237 return emitOp<>(OP_LTSint8, L);
29238}
29239bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
29240 return emitOp<>(OP_LTUint8, L);
29241}
29242bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
29243 return emitOp<>(OP_LTSint16, L);
29244}
29245bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
29246 return emitOp<>(OP_LTUint16, L);
29247}
29248bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
29249 return emitOp<>(OP_LTSint32, L);
29250}
29251bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
29252 return emitOp<>(OP_LTUint32, L);
29253}
29254bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
29255 return emitOp<>(OP_LTSint64, L);
29256}
29257bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
29258 return emitOp<>(OP_LTUint64, L);
29259}
29260bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
29261 return emitOp<>(OP_LTIntAP, L);
29262}
29263bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
29264 return emitOp<>(OP_LTIntAPS, L);
29265}
29266bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
29267 return emitOp<>(OP_LTBool, L);
29268}
29269bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
29270 return emitOp<>(OP_LTFixedPoint, L);
29271}
29272bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
29273 return emitOp<>(OP_LTPtr, L);
29274}
29275bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
29276 return emitOp<>(OP_LTFloat, L);
29277}
29278#endif
29279#ifdef GET_EVAL_IMPL
29280bool EvalEmitter::emitLTSint8(SourceInfo L) {
29281 if (!isActive()) return true;
29282 CurrentSource = L;
29283 return LT<PT_Sint8>(S, OpPC);
29284}
29285bool EvalEmitter::emitLTUint8(SourceInfo L) {
29286 if (!isActive()) return true;
29287 CurrentSource = L;
29288 return LT<PT_Uint8>(S, OpPC);
29289}
29290bool EvalEmitter::emitLTSint16(SourceInfo L) {
29291 if (!isActive()) return true;
29292 CurrentSource = L;
29293 return LT<PT_Sint16>(S, OpPC);
29294}
29295bool EvalEmitter::emitLTUint16(SourceInfo L) {
29296 if (!isActive()) return true;
29297 CurrentSource = L;
29298 return LT<PT_Uint16>(S, OpPC);
29299}
29300bool EvalEmitter::emitLTSint32(SourceInfo L) {
29301 if (!isActive()) return true;
29302 CurrentSource = L;
29303 return LT<PT_Sint32>(S, OpPC);
29304}
29305bool EvalEmitter::emitLTUint32(SourceInfo L) {
29306 if (!isActive()) return true;
29307 CurrentSource = L;
29308 return LT<PT_Uint32>(S, OpPC);
29309}
29310bool EvalEmitter::emitLTSint64(SourceInfo L) {
29311 if (!isActive()) return true;
29312 CurrentSource = L;
29313 return LT<PT_Sint64>(S, OpPC);
29314}
29315bool EvalEmitter::emitLTUint64(SourceInfo L) {
29316 if (!isActive()) return true;
29317 CurrentSource = L;
29318 return LT<PT_Uint64>(S, OpPC);
29319}
29320bool EvalEmitter::emitLTIntAP(SourceInfo L) {
29321 if (!isActive()) return true;
29322 CurrentSource = L;
29323 return LT<PT_IntAP>(S, OpPC);
29324}
29325bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
29326 if (!isActive()) return true;
29327 CurrentSource = L;
29328 return LT<PT_IntAPS>(S, OpPC);
29329}
29330bool EvalEmitter::emitLTBool(SourceInfo L) {
29331 if (!isActive()) return true;
29332 CurrentSource = L;
29333 return LT<PT_Bool>(S, OpPC);
29334}
29335bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
29336 if (!isActive()) return true;
29337 CurrentSource = L;
29338 return LT<PT_FixedPoint>(S, OpPC);
29339}
29340bool EvalEmitter::emitLTPtr(SourceInfo L) {
29341 if (!isActive()) return true;
29342 CurrentSource = L;
29343 return LT<PT_Ptr>(S, OpPC);
29344}
29345bool EvalEmitter::emitLTFloat(SourceInfo L) {
29346 if (!isActive()) return true;
29347 CurrentSource = L;
29348 return LT<PT_Float>(S, OpPC);
29349}
29350#endif
29351#ifdef GET_OPCODE_NAMES
29352OP_LoadSint8,
29353OP_LoadUint8,
29354OP_LoadSint16,
29355OP_LoadUint16,
29356OP_LoadSint32,
29357OP_LoadUint32,
29358OP_LoadSint64,
29359OP_LoadUint64,
29360OP_LoadIntAP,
29361OP_LoadIntAPS,
29362OP_LoadBool,
29363OP_LoadFixedPoint,
29364OP_LoadPtr,
29365OP_LoadMemberPtr,
29366OP_LoadFloat,
29367#endif
29368#ifdef GET_INTERP
29369case OP_LoadSint8: {
29370 if (!Load<PT_Sint8>(S, OpPC))
29371 return false;
29372 continue;
29373}
29374case OP_LoadUint8: {
29375 if (!Load<PT_Uint8>(S, OpPC))
29376 return false;
29377 continue;
29378}
29379case OP_LoadSint16: {
29380 if (!Load<PT_Sint16>(S, OpPC))
29381 return false;
29382 continue;
29383}
29384case OP_LoadUint16: {
29385 if (!Load<PT_Uint16>(S, OpPC))
29386 return false;
29387 continue;
29388}
29389case OP_LoadSint32: {
29390 if (!Load<PT_Sint32>(S, OpPC))
29391 return false;
29392 continue;
29393}
29394case OP_LoadUint32: {
29395 if (!Load<PT_Uint32>(S, OpPC))
29396 return false;
29397 continue;
29398}
29399case OP_LoadSint64: {
29400 if (!Load<PT_Sint64>(S, OpPC))
29401 return false;
29402 continue;
29403}
29404case OP_LoadUint64: {
29405 if (!Load<PT_Uint64>(S, OpPC))
29406 return false;
29407 continue;
29408}
29409case OP_LoadIntAP: {
29410 if (!Load<PT_IntAP>(S, OpPC))
29411 return false;
29412 continue;
29413}
29414case OP_LoadIntAPS: {
29415 if (!Load<PT_IntAPS>(S, OpPC))
29416 return false;
29417 continue;
29418}
29419case OP_LoadBool: {
29420 if (!Load<PT_Bool>(S, OpPC))
29421 return false;
29422 continue;
29423}
29424case OP_LoadFixedPoint: {
29425 if (!Load<PT_FixedPoint>(S, OpPC))
29426 return false;
29427 continue;
29428}
29429case OP_LoadPtr: {
29430 if (!Load<PT_Ptr>(S, OpPC))
29431 return false;
29432 continue;
29433}
29434case OP_LoadMemberPtr: {
29435 if (!Load<PT_MemberPtr>(S, OpPC))
29436 return false;
29437 continue;
29438}
29439case OP_LoadFloat: {
29440 if (!Load<PT_Float>(S, OpPC))
29441 return false;
29442 continue;
29443}
29444#endif
29445#ifdef GET_DISASM
29446case OP_LoadSint8:
29447 Text.Op = PrintName("LoadSint8");
29448 break;
29449case OP_LoadUint8:
29450 Text.Op = PrintName("LoadUint8");
29451 break;
29452case OP_LoadSint16:
29453 Text.Op = PrintName("LoadSint16");
29454 break;
29455case OP_LoadUint16:
29456 Text.Op = PrintName("LoadUint16");
29457 break;
29458case OP_LoadSint32:
29459 Text.Op = PrintName("LoadSint32");
29460 break;
29461case OP_LoadUint32:
29462 Text.Op = PrintName("LoadUint32");
29463 break;
29464case OP_LoadSint64:
29465 Text.Op = PrintName("LoadSint64");
29466 break;
29467case OP_LoadUint64:
29468 Text.Op = PrintName("LoadUint64");
29469 break;
29470case OP_LoadIntAP:
29471 Text.Op = PrintName("LoadIntAP");
29472 break;
29473case OP_LoadIntAPS:
29474 Text.Op = PrintName("LoadIntAPS");
29475 break;
29476case OP_LoadBool:
29477 Text.Op = PrintName("LoadBool");
29478 break;
29479case OP_LoadFixedPoint:
29480 Text.Op = PrintName("LoadFixedPoint");
29481 break;
29482case OP_LoadPtr:
29483 Text.Op = PrintName("LoadPtr");
29484 break;
29485case OP_LoadMemberPtr:
29486 Text.Op = PrintName("LoadMemberPtr");
29487 break;
29488case OP_LoadFloat:
29489 Text.Op = PrintName("LoadFloat");
29490 break;
29491#endif
29492#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29493bool emitLoadSint8(SourceInfo);
29494bool emitLoadUint8(SourceInfo);
29495bool emitLoadSint16(SourceInfo);
29496bool emitLoadUint16(SourceInfo);
29497bool emitLoadSint32(SourceInfo);
29498bool emitLoadUint32(SourceInfo);
29499bool emitLoadSint64(SourceInfo);
29500bool emitLoadUint64(SourceInfo);
29501bool emitLoadIntAP(SourceInfo);
29502bool emitLoadIntAPS(SourceInfo);
29503bool emitLoadBool(SourceInfo);
29504bool emitLoadFixedPoint(SourceInfo);
29505bool emitLoadPtr(SourceInfo);
29506bool emitLoadMemberPtr(SourceInfo);
29507bool emitLoadFloat(SourceInfo);
29508#endif
29509#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29510[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
29511#endif
29512#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29513bool
29514#if defined(GET_EVAL_IMPL)
29515EvalEmitter
29516#else
29517ByteCodeEmitter
29518#endif
29519::emitLoad(PrimType T0, SourceInfo I) {
29520 switch (T0) {
29521 case PT_Sint8:
29522 return emitLoadSint8(I);
29523 case PT_Uint8:
29524 return emitLoadUint8(I);
29525 case PT_Sint16:
29526 return emitLoadSint16(I);
29527 case PT_Uint16:
29528 return emitLoadUint16(I);
29529 case PT_Sint32:
29530 return emitLoadSint32(I);
29531 case PT_Uint32:
29532 return emitLoadUint32(I);
29533 case PT_Sint64:
29534 return emitLoadSint64(I);
29535 case PT_Uint64:
29536 return emitLoadUint64(I);
29537 case PT_IntAP:
29538 return emitLoadIntAP(I);
29539 case PT_IntAPS:
29540 return emitLoadIntAPS(I);
29541 case PT_Bool:
29542 return emitLoadBool(I);
29543 case PT_FixedPoint:
29544 return emitLoadFixedPoint(I);
29545 case PT_Ptr:
29546 return emitLoadPtr(I);
29547 case PT_MemberPtr:
29548 return emitLoadMemberPtr(I);
29549 case PT_Float:
29550 return emitLoadFloat(I);
29551 }
29552 llvm_unreachable("invalid enum value");
29553}
29554#endif
29555#ifdef GET_LINK_IMPL
29556bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
29557 return emitOp<>(OP_LoadSint8, L);
29558}
29559bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
29560 return emitOp<>(OP_LoadUint8, L);
29561}
29562bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
29563 return emitOp<>(OP_LoadSint16, L);
29564}
29565bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
29566 return emitOp<>(OP_LoadUint16, L);
29567}
29568bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
29569 return emitOp<>(OP_LoadSint32, L);
29570}
29571bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
29572 return emitOp<>(OP_LoadUint32, L);
29573}
29574bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
29575 return emitOp<>(OP_LoadSint64, L);
29576}
29577bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
29578 return emitOp<>(OP_LoadUint64, L);
29579}
29580bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
29581 return emitOp<>(OP_LoadIntAP, L);
29582}
29583bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
29584 return emitOp<>(OP_LoadIntAPS, L);
29585}
29586bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
29587 return emitOp<>(OP_LoadBool, L);
29588}
29589bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
29590 return emitOp<>(OP_LoadFixedPoint, L);
29591}
29592bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
29593 return emitOp<>(OP_LoadPtr, L);
29594}
29595bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
29596 return emitOp<>(OP_LoadMemberPtr, L);
29597}
29598bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
29599 return emitOp<>(OP_LoadFloat, L);
29600}
29601#endif
29602#ifdef GET_EVAL_IMPL
29603bool EvalEmitter::emitLoadSint8(SourceInfo L) {
29604 if (!isActive()) return true;
29605 CurrentSource = L;
29606 return Load<PT_Sint8>(S, OpPC);
29607}
29608bool EvalEmitter::emitLoadUint8(SourceInfo L) {
29609 if (!isActive()) return true;
29610 CurrentSource = L;
29611 return Load<PT_Uint8>(S, OpPC);
29612}
29613bool EvalEmitter::emitLoadSint16(SourceInfo L) {
29614 if (!isActive()) return true;
29615 CurrentSource = L;
29616 return Load<PT_Sint16>(S, OpPC);
29617}
29618bool EvalEmitter::emitLoadUint16(SourceInfo L) {
29619 if (!isActive()) return true;
29620 CurrentSource = L;
29621 return Load<PT_Uint16>(S, OpPC);
29622}
29623bool EvalEmitter::emitLoadSint32(SourceInfo L) {
29624 if (!isActive()) return true;
29625 CurrentSource = L;
29626 return Load<PT_Sint32>(S, OpPC);
29627}
29628bool EvalEmitter::emitLoadUint32(SourceInfo L) {
29629 if (!isActive()) return true;
29630 CurrentSource = L;
29631 return Load<PT_Uint32>(S, OpPC);
29632}
29633bool EvalEmitter::emitLoadSint64(SourceInfo L) {
29634 if (!isActive()) return true;
29635 CurrentSource = L;
29636 return Load<PT_Sint64>(S, OpPC);
29637}
29638bool EvalEmitter::emitLoadUint64(SourceInfo L) {
29639 if (!isActive()) return true;
29640 CurrentSource = L;
29641 return Load<PT_Uint64>(S, OpPC);
29642}
29643bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
29644 if (!isActive()) return true;
29645 CurrentSource = L;
29646 return Load<PT_IntAP>(S, OpPC);
29647}
29648bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
29649 if (!isActive()) return true;
29650 CurrentSource = L;
29651 return Load<PT_IntAPS>(S, OpPC);
29652}
29653bool EvalEmitter::emitLoadBool(SourceInfo L) {
29654 if (!isActive()) return true;
29655 CurrentSource = L;
29656 return Load<PT_Bool>(S, OpPC);
29657}
29658bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
29659 if (!isActive()) return true;
29660 CurrentSource = L;
29661 return Load<PT_FixedPoint>(S, OpPC);
29662}
29663bool EvalEmitter::emitLoadPtr(SourceInfo L) {
29664 if (!isActive()) return true;
29665 CurrentSource = L;
29666 return Load<PT_Ptr>(S, OpPC);
29667}
29668bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
29669 if (!isActive()) return true;
29670 CurrentSource = L;
29671 return Load<PT_MemberPtr>(S, OpPC);
29672}
29673bool EvalEmitter::emitLoadFloat(SourceInfo L) {
29674 if (!isActive()) return true;
29675 CurrentSource = L;
29676 return Load<PT_Float>(S, OpPC);
29677}
29678#endif
29679#ifdef GET_OPCODE_NAMES
29680OP_LoadPopSint8,
29681OP_LoadPopUint8,
29682OP_LoadPopSint16,
29683OP_LoadPopUint16,
29684OP_LoadPopSint32,
29685OP_LoadPopUint32,
29686OP_LoadPopSint64,
29687OP_LoadPopUint64,
29688OP_LoadPopIntAP,
29689OP_LoadPopIntAPS,
29690OP_LoadPopBool,
29691OP_LoadPopFixedPoint,
29692OP_LoadPopPtr,
29693OP_LoadPopMemberPtr,
29694OP_LoadPopFloat,
29695#endif
29696#ifdef GET_INTERP
29697case OP_LoadPopSint8: {
29698 if (!LoadPop<PT_Sint8>(S, OpPC))
29699 return false;
29700 continue;
29701}
29702case OP_LoadPopUint8: {
29703 if (!LoadPop<PT_Uint8>(S, OpPC))
29704 return false;
29705 continue;
29706}
29707case OP_LoadPopSint16: {
29708 if (!LoadPop<PT_Sint16>(S, OpPC))
29709 return false;
29710 continue;
29711}
29712case OP_LoadPopUint16: {
29713 if (!LoadPop<PT_Uint16>(S, OpPC))
29714 return false;
29715 continue;
29716}
29717case OP_LoadPopSint32: {
29718 if (!LoadPop<PT_Sint32>(S, OpPC))
29719 return false;
29720 continue;
29721}
29722case OP_LoadPopUint32: {
29723 if (!LoadPop<PT_Uint32>(S, OpPC))
29724 return false;
29725 continue;
29726}
29727case OP_LoadPopSint64: {
29728 if (!LoadPop<PT_Sint64>(S, OpPC))
29729 return false;
29730 continue;
29731}
29732case OP_LoadPopUint64: {
29733 if (!LoadPop<PT_Uint64>(S, OpPC))
29734 return false;
29735 continue;
29736}
29737case OP_LoadPopIntAP: {
29738 if (!LoadPop<PT_IntAP>(S, OpPC))
29739 return false;
29740 continue;
29741}
29742case OP_LoadPopIntAPS: {
29743 if (!LoadPop<PT_IntAPS>(S, OpPC))
29744 return false;
29745 continue;
29746}
29747case OP_LoadPopBool: {
29748 if (!LoadPop<PT_Bool>(S, OpPC))
29749 return false;
29750 continue;
29751}
29752case OP_LoadPopFixedPoint: {
29753 if (!LoadPop<PT_FixedPoint>(S, OpPC))
29754 return false;
29755 continue;
29756}
29757case OP_LoadPopPtr: {
29758 if (!LoadPop<PT_Ptr>(S, OpPC))
29759 return false;
29760 continue;
29761}
29762case OP_LoadPopMemberPtr: {
29763 if (!LoadPop<PT_MemberPtr>(S, OpPC))
29764 return false;
29765 continue;
29766}
29767case OP_LoadPopFloat: {
29768 if (!LoadPop<PT_Float>(S, OpPC))
29769 return false;
29770 continue;
29771}
29772#endif
29773#ifdef GET_DISASM
29774case OP_LoadPopSint8:
29775 Text.Op = PrintName("LoadPopSint8");
29776 break;
29777case OP_LoadPopUint8:
29778 Text.Op = PrintName("LoadPopUint8");
29779 break;
29780case OP_LoadPopSint16:
29781 Text.Op = PrintName("LoadPopSint16");
29782 break;
29783case OP_LoadPopUint16:
29784 Text.Op = PrintName("LoadPopUint16");
29785 break;
29786case OP_LoadPopSint32:
29787 Text.Op = PrintName("LoadPopSint32");
29788 break;
29789case OP_LoadPopUint32:
29790 Text.Op = PrintName("LoadPopUint32");
29791 break;
29792case OP_LoadPopSint64:
29793 Text.Op = PrintName("LoadPopSint64");
29794 break;
29795case OP_LoadPopUint64:
29796 Text.Op = PrintName("LoadPopUint64");
29797 break;
29798case OP_LoadPopIntAP:
29799 Text.Op = PrintName("LoadPopIntAP");
29800 break;
29801case OP_LoadPopIntAPS:
29802 Text.Op = PrintName("LoadPopIntAPS");
29803 break;
29804case OP_LoadPopBool:
29805 Text.Op = PrintName("LoadPopBool");
29806 break;
29807case OP_LoadPopFixedPoint:
29808 Text.Op = PrintName("LoadPopFixedPoint");
29809 break;
29810case OP_LoadPopPtr:
29811 Text.Op = PrintName("LoadPopPtr");
29812 break;
29813case OP_LoadPopMemberPtr:
29814 Text.Op = PrintName("LoadPopMemberPtr");
29815 break;
29816case OP_LoadPopFloat:
29817 Text.Op = PrintName("LoadPopFloat");
29818 break;
29819#endif
29820#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29821bool emitLoadPopSint8(SourceInfo);
29822bool emitLoadPopUint8(SourceInfo);
29823bool emitLoadPopSint16(SourceInfo);
29824bool emitLoadPopUint16(SourceInfo);
29825bool emitLoadPopSint32(SourceInfo);
29826bool emitLoadPopUint32(SourceInfo);
29827bool emitLoadPopSint64(SourceInfo);
29828bool emitLoadPopUint64(SourceInfo);
29829bool emitLoadPopIntAP(SourceInfo);
29830bool emitLoadPopIntAPS(SourceInfo);
29831bool emitLoadPopBool(SourceInfo);
29832bool emitLoadPopFixedPoint(SourceInfo);
29833bool emitLoadPopPtr(SourceInfo);
29834bool emitLoadPopMemberPtr(SourceInfo);
29835bool emitLoadPopFloat(SourceInfo);
29836#endif
29837#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29838[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
29839#endif
29840#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29841bool
29842#if defined(GET_EVAL_IMPL)
29843EvalEmitter
29844#else
29845ByteCodeEmitter
29846#endif
29847::emitLoadPop(PrimType T0, SourceInfo I) {
29848 switch (T0) {
29849 case PT_Sint8:
29850 return emitLoadPopSint8(I);
29851 case PT_Uint8:
29852 return emitLoadPopUint8(I);
29853 case PT_Sint16:
29854 return emitLoadPopSint16(I);
29855 case PT_Uint16:
29856 return emitLoadPopUint16(I);
29857 case PT_Sint32:
29858 return emitLoadPopSint32(I);
29859 case PT_Uint32:
29860 return emitLoadPopUint32(I);
29861 case PT_Sint64:
29862 return emitLoadPopSint64(I);
29863 case PT_Uint64:
29864 return emitLoadPopUint64(I);
29865 case PT_IntAP:
29866 return emitLoadPopIntAP(I);
29867 case PT_IntAPS:
29868 return emitLoadPopIntAPS(I);
29869 case PT_Bool:
29870 return emitLoadPopBool(I);
29871 case PT_FixedPoint:
29872 return emitLoadPopFixedPoint(I);
29873 case PT_Ptr:
29874 return emitLoadPopPtr(I);
29875 case PT_MemberPtr:
29876 return emitLoadPopMemberPtr(I);
29877 case PT_Float:
29878 return emitLoadPopFloat(I);
29879 }
29880 llvm_unreachable("invalid enum value");
29881}
29882#endif
29883#ifdef GET_LINK_IMPL
29884bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
29885 return emitOp<>(OP_LoadPopSint8, L);
29886}
29887bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
29888 return emitOp<>(OP_LoadPopUint8, L);
29889}
29890bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
29891 return emitOp<>(OP_LoadPopSint16, L);
29892}
29893bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
29894 return emitOp<>(OP_LoadPopUint16, L);
29895}
29896bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
29897 return emitOp<>(OP_LoadPopSint32, L);
29898}
29899bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
29900 return emitOp<>(OP_LoadPopUint32, L);
29901}
29902bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
29903 return emitOp<>(OP_LoadPopSint64, L);
29904}
29905bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
29906 return emitOp<>(OP_LoadPopUint64, L);
29907}
29908bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
29909 return emitOp<>(OP_LoadPopIntAP, L);
29910}
29911bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
29912 return emitOp<>(OP_LoadPopIntAPS, L);
29913}
29914bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
29915 return emitOp<>(OP_LoadPopBool, L);
29916}
29917bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
29918 return emitOp<>(OP_LoadPopFixedPoint, L);
29919}
29920bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
29921 return emitOp<>(OP_LoadPopPtr, L);
29922}
29923bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
29924 return emitOp<>(OP_LoadPopMemberPtr, L);
29925}
29926bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
29927 return emitOp<>(OP_LoadPopFloat, L);
29928}
29929#endif
29930#ifdef GET_EVAL_IMPL
29931bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
29932 if (!isActive()) return true;
29933 CurrentSource = L;
29934 return LoadPop<PT_Sint8>(S, OpPC);
29935}
29936bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
29937 if (!isActive()) return true;
29938 CurrentSource = L;
29939 return LoadPop<PT_Uint8>(S, OpPC);
29940}
29941bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
29942 if (!isActive()) return true;
29943 CurrentSource = L;
29944 return LoadPop<PT_Sint16>(S, OpPC);
29945}
29946bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
29947 if (!isActive()) return true;
29948 CurrentSource = L;
29949 return LoadPop<PT_Uint16>(S, OpPC);
29950}
29951bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
29952 if (!isActive()) return true;
29953 CurrentSource = L;
29954 return LoadPop<PT_Sint32>(S, OpPC);
29955}
29956bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
29957 if (!isActive()) return true;
29958 CurrentSource = L;
29959 return LoadPop<PT_Uint32>(S, OpPC);
29960}
29961bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
29962 if (!isActive()) return true;
29963 CurrentSource = L;
29964 return LoadPop<PT_Sint64>(S, OpPC);
29965}
29966bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
29967 if (!isActive()) return true;
29968 CurrentSource = L;
29969 return LoadPop<PT_Uint64>(S, OpPC);
29970}
29971bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
29972 if (!isActive()) return true;
29973 CurrentSource = L;
29974 return LoadPop<PT_IntAP>(S, OpPC);
29975}
29976bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
29977 if (!isActive()) return true;
29978 CurrentSource = L;
29979 return LoadPop<PT_IntAPS>(S, OpPC);
29980}
29981bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
29982 if (!isActive()) return true;
29983 CurrentSource = L;
29984 return LoadPop<PT_Bool>(S, OpPC);
29985}
29986bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
29987 if (!isActive()) return true;
29988 CurrentSource = L;
29989 return LoadPop<PT_FixedPoint>(S, OpPC);
29990}
29991bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
29992 if (!isActive()) return true;
29993 CurrentSource = L;
29994 return LoadPop<PT_Ptr>(S, OpPC);
29995}
29996bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
29997 if (!isActive()) return true;
29998 CurrentSource = L;
29999 return LoadPop<PT_MemberPtr>(S, OpPC);
30000}
30001bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
30002 if (!isActive()) return true;
30003 CurrentSource = L;
30004 return LoadPop<PT_Float>(S, OpPC);
30005}
30006#endif
30007#ifdef GET_OPCODE_NAMES
30008OP_Memcpy,
30009#endif
30010#ifdef GET_INTERP
30011case OP_Memcpy: {
30012 if (!Memcpy(S, OpPC))
30013 return false;
30014 continue;
30015}
30016#endif
30017#ifdef GET_DISASM
30018case OP_Memcpy:
30019 Text.Op = PrintName("Memcpy");
30020 break;
30021#endif
30022#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30023bool emitMemcpy(SourceInfo);
30024#endif
30025#ifdef GET_LINK_IMPL
30026bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
30027 return emitOp<>(OP_Memcpy, L);
30028}
30029#endif
30030#ifdef GET_EVAL_IMPL
30031bool EvalEmitter::emitMemcpy(SourceInfo L) {
30032 if (!isActive()) return true;
30033 CurrentSource = L;
30034 return Memcpy(S, OpPC);
30035}
30036#endif
30037#ifdef GET_OPCODE_NAMES
30038OP_MulSint8,
30039OP_MulUint8,
30040OP_MulSint16,
30041OP_MulUint16,
30042OP_MulSint32,
30043OP_MulUint32,
30044OP_MulSint64,
30045OP_MulUint64,
30046OP_MulIntAP,
30047OP_MulIntAPS,
30048OP_MulBool,
30049OP_MulFixedPoint,
30050#endif
30051#ifdef GET_INTERP
30052case OP_MulSint8: {
30053 if (!Mul<PT_Sint8>(S, OpPC))
30054 return false;
30055 continue;
30056}
30057case OP_MulUint8: {
30058 if (!Mul<PT_Uint8>(S, OpPC))
30059 return false;
30060 continue;
30061}
30062case OP_MulSint16: {
30063 if (!Mul<PT_Sint16>(S, OpPC))
30064 return false;
30065 continue;
30066}
30067case OP_MulUint16: {
30068 if (!Mul<PT_Uint16>(S, OpPC))
30069 return false;
30070 continue;
30071}
30072case OP_MulSint32: {
30073 if (!Mul<PT_Sint32>(S, OpPC))
30074 return false;
30075 continue;
30076}
30077case OP_MulUint32: {
30078 if (!Mul<PT_Uint32>(S, OpPC))
30079 return false;
30080 continue;
30081}
30082case OP_MulSint64: {
30083 if (!Mul<PT_Sint64>(S, OpPC))
30084 return false;
30085 continue;
30086}
30087case OP_MulUint64: {
30088 if (!Mul<PT_Uint64>(S, OpPC))
30089 return false;
30090 continue;
30091}
30092case OP_MulIntAP: {
30093 if (!Mul<PT_IntAP>(S, OpPC))
30094 return false;
30095 continue;
30096}
30097case OP_MulIntAPS: {
30098 if (!Mul<PT_IntAPS>(S, OpPC))
30099 return false;
30100 continue;
30101}
30102case OP_MulBool: {
30103 if (!Mul<PT_Bool>(S, OpPC))
30104 return false;
30105 continue;
30106}
30107case OP_MulFixedPoint: {
30108 if (!Mul<PT_FixedPoint>(S, OpPC))
30109 return false;
30110 continue;
30111}
30112#endif
30113#ifdef GET_DISASM
30114case OP_MulSint8:
30115 Text.Op = PrintName("MulSint8");
30116 break;
30117case OP_MulUint8:
30118 Text.Op = PrintName("MulUint8");
30119 break;
30120case OP_MulSint16:
30121 Text.Op = PrintName("MulSint16");
30122 break;
30123case OP_MulUint16:
30124 Text.Op = PrintName("MulUint16");
30125 break;
30126case OP_MulSint32:
30127 Text.Op = PrintName("MulSint32");
30128 break;
30129case OP_MulUint32:
30130 Text.Op = PrintName("MulUint32");
30131 break;
30132case OP_MulSint64:
30133 Text.Op = PrintName("MulSint64");
30134 break;
30135case OP_MulUint64:
30136 Text.Op = PrintName("MulUint64");
30137 break;
30138case OP_MulIntAP:
30139 Text.Op = PrintName("MulIntAP");
30140 break;
30141case OP_MulIntAPS:
30142 Text.Op = PrintName("MulIntAPS");
30143 break;
30144case OP_MulBool:
30145 Text.Op = PrintName("MulBool");
30146 break;
30147case OP_MulFixedPoint:
30148 Text.Op = PrintName("MulFixedPoint");
30149 break;
30150#endif
30151#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30152bool emitMulSint8(SourceInfo);
30153bool emitMulUint8(SourceInfo);
30154bool emitMulSint16(SourceInfo);
30155bool emitMulUint16(SourceInfo);
30156bool emitMulSint32(SourceInfo);
30157bool emitMulUint32(SourceInfo);
30158bool emitMulSint64(SourceInfo);
30159bool emitMulUint64(SourceInfo);
30160bool emitMulIntAP(SourceInfo);
30161bool emitMulIntAPS(SourceInfo);
30162bool emitMulBool(SourceInfo);
30163bool emitMulFixedPoint(SourceInfo);
30164#endif
30165#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30166[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
30167#endif
30168#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30169bool
30170#if defined(GET_EVAL_IMPL)
30171EvalEmitter
30172#else
30173ByteCodeEmitter
30174#endif
30175::emitMul(PrimType T0, SourceInfo I) {
30176 switch (T0) {
30177 case PT_Sint8:
30178 return emitMulSint8(I);
30179 case PT_Uint8:
30180 return emitMulUint8(I);
30181 case PT_Sint16:
30182 return emitMulSint16(I);
30183 case PT_Uint16:
30184 return emitMulUint16(I);
30185 case PT_Sint32:
30186 return emitMulSint32(I);
30187 case PT_Uint32:
30188 return emitMulUint32(I);
30189 case PT_Sint64:
30190 return emitMulSint64(I);
30191 case PT_Uint64:
30192 return emitMulUint64(I);
30193 case PT_IntAP:
30194 return emitMulIntAP(I);
30195 case PT_IntAPS:
30196 return emitMulIntAPS(I);
30197 case PT_Bool:
30198 return emitMulBool(I);
30199 case PT_FixedPoint:
30200 return emitMulFixedPoint(I);
30201 default: llvm_unreachable("invalid type: emitMul");
30202 }
30203 llvm_unreachable("invalid enum value");
30204}
30205#endif
30206#ifdef GET_LINK_IMPL
30207bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
30208 return emitOp<>(OP_MulSint8, L);
30209}
30210bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
30211 return emitOp<>(OP_MulUint8, L);
30212}
30213bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
30214 return emitOp<>(OP_MulSint16, L);
30215}
30216bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
30217 return emitOp<>(OP_MulUint16, L);
30218}
30219bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
30220 return emitOp<>(OP_MulSint32, L);
30221}
30222bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
30223 return emitOp<>(OP_MulUint32, L);
30224}
30225bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
30226 return emitOp<>(OP_MulSint64, L);
30227}
30228bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
30229 return emitOp<>(OP_MulUint64, L);
30230}
30231bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
30232 return emitOp<>(OP_MulIntAP, L);
30233}
30234bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
30235 return emitOp<>(OP_MulIntAPS, L);
30236}
30237bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
30238 return emitOp<>(OP_MulBool, L);
30239}
30240bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
30241 return emitOp<>(OP_MulFixedPoint, L);
30242}
30243#endif
30244#ifdef GET_EVAL_IMPL
30245bool EvalEmitter::emitMulSint8(SourceInfo L) {
30246 if (!isActive()) return true;
30247 CurrentSource = L;
30248 return Mul<PT_Sint8>(S, OpPC);
30249}
30250bool EvalEmitter::emitMulUint8(SourceInfo L) {
30251 if (!isActive()) return true;
30252 CurrentSource = L;
30253 return Mul<PT_Uint8>(S, OpPC);
30254}
30255bool EvalEmitter::emitMulSint16(SourceInfo L) {
30256 if (!isActive()) return true;
30257 CurrentSource = L;
30258 return Mul<PT_Sint16>(S, OpPC);
30259}
30260bool EvalEmitter::emitMulUint16(SourceInfo L) {
30261 if (!isActive()) return true;
30262 CurrentSource = L;
30263 return Mul<PT_Uint16>(S, OpPC);
30264}
30265bool EvalEmitter::emitMulSint32(SourceInfo L) {
30266 if (!isActive()) return true;
30267 CurrentSource = L;
30268 return Mul<PT_Sint32>(S, OpPC);
30269}
30270bool EvalEmitter::emitMulUint32(SourceInfo L) {
30271 if (!isActive()) return true;
30272 CurrentSource = L;
30273 return Mul<PT_Uint32>(S, OpPC);
30274}
30275bool EvalEmitter::emitMulSint64(SourceInfo L) {
30276 if (!isActive()) return true;
30277 CurrentSource = L;
30278 return Mul<PT_Sint64>(S, OpPC);
30279}
30280bool EvalEmitter::emitMulUint64(SourceInfo L) {
30281 if (!isActive()) return true;
30282 CurrentSource = L;
30283 return Mul<PT_Uint64>(S, OpPC);
30284}
30285bool EvalEmitter::emitMulIntAP(SourceInfo L) {
30286 if (!isActive()) return true;
30287 CurrentSource = L;
30288 return Mul<PT_IntAP>(S, OpPC);
30289}
30290bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
30291 if (!isActive()) return true;
30292 CurrentSource = L;
30293 return Mul<PT_IntAPS>(S, OpPC);
30294}
30295bool EvalEmitter::emitMulBool(SourceInfo L) {
30296 if (!isActive()) return true;
30297 CurrentSource = L;
30298 return Mul<PT_Bool>(S, OpPC);
30299}
30300bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
30301 if (!isActive()) return true;
30302 CurrentSource = L;
30303 return Mul<PT_FixedPoint>(S, OpPC);
30304}
30305#endif
30306#ifdef GET_OPCODE_NAMES
30307OP_MulcSint8,
30308OP_MulcUint8,
30309OP_MulcSint16,
30310OP_MulcUint16,
30311OP_MulcSint32,
30312OP_MulcUint32,
30313OP_MulcSint64,
30314OP_MulcUint64,
30315OP_MulcIntAP,
30316OP_MulcIntAPS,
30317OP_MulcFloat,
30318#endif
30319#ifdef GET_INTERP
30320case OP_MulcSint8: {
30321 if (!Mulc<PT_Sint8>(S, OpPC))
30322 return false;
30323 continue;
30324}
30325case OP_MulcUint8: {
30326 if (!Mulc<PT_Uint8>(S, OpPC))
30327 return false;
30328 continue;
30329}
30330case OP_MulcSint16: {
30331 if (!Mulc<PT_Sint16>(S, OpPC))
30332 return false;
30333 continue;
30334}
30335case OP_MulcUint16: {
30336 if (!Mulc<PT_Uint16>(S, OpPC))
30337 return false;
30338 continue;
30339}
30340case OP_MulcSint32: {
30341 if (!Mulc<PT_Sint32>(S, OpPC))
30342 return false;
30343 continue;
30344}
30345case OP_MulcUint32: {
30346 if (!Mulc<PT_Uint32>(S, OpPC))
30347 return false;
30348 continue;
30349}
30350case OP_MulcSint64: {
30351 if (!Mulc<PT_Sint64>(S, OpPC))
30352 return false;
30353 continue;
30354}
30355case OP_MulcUint64: {
30356 if (!Mulc<PT_Uint64>(S, OpPC))
30357 return false;
30358 continue;
30359}
30360case OP_MulcIntAP: {
30361 if (!Mulc<PT_IntAP>(S, OpPC))
30362 return false;
30363 continue;
30364}
30365case OP_MulcIntAPS: {
30366 if (!Mulc<PT_IntAPS>(S, OpPC))
30367 return false;
30368 continue;
30369}
30370case OP_MulcFloat: {
30371 if (!Mulc<PT_Float>(S, OpPC))
30372 return false;
30373 continue;
30374}
30375#endif
30376#ifdef GET_DISASM
30377case OP_MulcSint8:
30378 Text.Op = PrintName("MulcSint8");
30379 break;
30380case OP_MulcUint8:
30381 Text.Op = PrintName("MulcUint8");
30382 break;
30383case OP_MulcSint16:
30384 Text.Op = PrintName("MulcSint16");
30385 break;
30386case OP_MulcUint16:
30387 Text.Op = PrintName("MulcUint16");
30388 break;
30389case OP_MulcSint32:
30390 Text.Op = PrintName("MulcSint32");
30391 break;
30392case OP_MulcUint32:
30393 Text.Op = PrintName("MulcUint32");
30394 break;
30395case OP_MulcSint64:
30396 Text.Op = PrintName("MulcSint64");
30397 break;
30398case OP_MulcUint64:
30399 Text.Op = PrintName("MulcUint64");
30400 break;
30401case OP_MulcIntAP:
30402 Text.Op = PrintName("MulcIntAP");
30403 break;
30404case OP_MulcIntAPS:
30405 Text.Op = PrintName("MulcIntAPS");
30406 break;
30407case OP_MulcFloat:
30408 Text.Op = PrintName("MulcFloat");
30409 break;
30410#endif
30411#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30412bool emitMulcSint8(SourceInfo);
30413bool emitMulcUint8(SourceInfo);
30414bool emitMulcSint16(SourceInfo);
30415bool emitMulcUint16(SourceInfo);
30416bool emitMulcSint32(SourceInfo);
30417bool emitMulcUint32(SourceInfo);
30418bool emitMulcSint64(SourceInfo);
30419bool emitMulcUint64(SourceInfo);
30420bool emitMulcIntAP(SourceInfo);
30421bool emitMulcIntAPS(SourceInfo);
30422bool emitMulcFloat(SourceInfo);
30423#endif
30424#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30425[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
30426#endif
30427#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30428bool
30429#if defined(GET_EVAL_IMPL)
30430EvalEmitter
30431#else
30432ByteCodeEmitter
30433#endif
30434::emitMulc(PrimType T0, SourceInfo I) {
30435 switch (T0) {
30436 case PT_Sint8:
30437 return emitMulcSint8(I);
30438 case PT_Uint8:
30439 return emitMulcUint8(I);
30440 case PT_Sint16:
30441 return emitMulcSint16(I);
30442 case PT_Uint16:
30443 return emitMulcUint16(I);
30444 case PT_Sint32:
30445 return emitMulcSint32(I);
30446 case PT_Uint32:
30447 return emitMulcUint32(I);
30448 case PT_Sint64:
30449 return emitMulcSint64(I);
30450 case PT_Uint64:
30451 return emitMulcUint64(I);
30452 case PT_IntAP:
30453 return emitMulcIntAP(I);
30454 case PT_IntAPS:
30455 return emitMulcIntAPS(I);
30456 case PT_Float:
30457 return emitMulcFloat(I);
30458 default: llvm_unreachable("invalid type: emitMulc");
30459 }
30460 llvm_unreachable("invalid enum value");
30461}
30462#endif
30463#ifdef GET_LINK_IMPL
30464bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
30465 return emitOp<>(OP_MulcSint8, L);
30466}
30467bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
30468 return emitOp<>(OP_MulcUint8, L);
30469}
30470bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
30471 return emitOp<>(OP_MulcSint16, L);
30472}
30473bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
30474 return emitOp<>(OP_MulcUint16, L);
30475}
30476bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
30477 return emitOp<>(OP_MulcSint32, L);
30478}
30479bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
30480 return emitOp<>(OP_MulcUint32, L);
30481}
30482bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
30483 return emitOp<>(OP_MulcSint64, L);
30484}
30485bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
30486 return emitOp<>(OP_MulcUint64, L);
30487}
30488bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
30489 return emitOp<>(OP_MulcIntAP, L);
30490}
30491bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
30492 return emitOp<>(OP_MulcIntAPS, L);
30493}
30494bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
30495 return emitOp<>(OP_MulcFloat, L);
30496}
30497#endif
30498#ifdef GET_EVAL_IMPL
30499bool EvalEmitter::emitMulcSint8(SourceInfo L) {
30500 if (!isActive()) return true;
30501 CurrentSource = L;
30502 return Mulc<PT_Sint8>(S, OpPC);
30503}
30504bool EvalEmitter::emitMulcUint8(SourceInfo L) {
30505 if (!isActive()) return true;
30506 CurrentSource = L;
30507 return Mulc<PT_Uint8>(S, OpPC);
30508}
30509bool EvalEmitter::emitMulcSint16(SourceInfo L) {
30510 if (!isActive()) return true;
30511 CurrentSource = L;
30512 return Mulc<PT_Sint16>(S, OpPC);
30513}
30514bool EvalEmitter::emitMulcUint16(SourceInfo L) {
30515 if (!isActive()) return true;
30516 CurrentSource = L;
30517 return Mulc<PT_Uint16>(S, OpPC);
30518}
30519bool EvalEmitter::emitMulcSint32(SourceInfo L) {
30520 if (!isActive()) return true;
30521 CurrentSource = L;
30522 return Mulc<PT_Sint32>(S, OpPC);
30523}
30524bool EvalEmitter::emitMulcUint32(SourceInfo L) {
30525 if (!isActive()) return true;
30526 CurrentSource = L;
30527 return Mulc<PT_Uint32>(S, OpPC);
30528}
30529bool EvalEmitter::emitMulcSint64(SourceInfo L) {
30530 if (!isActive()) return true;
30531 CurrentSource = L;
30532 return Mulc<PT_Sint64>(S, OpPC);
30533}
30534bool EvalEmitter::emitMulcUint64(SourceInfo L) {
30535 if (!isActive()) return true;
30536 CurrentSource = L;
30537 return Mulc<PT_Uint64>(S, OpPC);
30538}
30539bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
30540 if (!isActive()) return true;
30541 CurrentSource = L;
30542 return Mulc<PT_IntAP>(S, OpPC);
30543}
30544bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
30545 if (!isActive()) return true;
30546 CurrentSource = L;
30547 return Mulc<PT_IntAPS>(S, OpPC);
30548}
30549bool EvalEmitter::emitMulcFloat(SourceInfo L) {
30550 if (!isActive()) return true;
30551 CurrentSource = L;
30552 return Mulc<PT_Float>(S, OpPC);
30553}
30554#endif
30555#ifdef GET_OPCODE_NAMES
30556OP_Mulf,
30557#endif
30558#ifdef GET_INTERP
30559case OP_Mulf: {
30560 const auto V0 = ReadArg<uint32_t>(S, PC);
30561 if (!Mulf(S, OpPC, V0))
30562 return false;
30563 continue;
30564}
30565#endif
30566#ifdef GET_DISASM
30567case OP_Mulf:
30568 Text.Op = PrintName("Mulf");
30569 Text.Args.push_back(printArg<uint32_t>(P, PC));
30570 break;
30571#endif
30572#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30573bool emitMulf( uint32_t , SourceInfo);
30574#endif
30575#ifdef GET_LINK_IMPL
30576bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
30577 return emitOp<uint32_t>(OP_Mulf, A0, L);
30578}
30579#endif
30580#ifdef GET_EVAL_IMPL
30581bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
30582 if (!isActive()) return true;
30583 CurrentSource = L;
30584 return Mulf(S, OpPC, A0);
30585}
30586#endif
30587#ifdef GET_OPCODE_NAMES
30588OP_NESint8,
30589OP_NEUint8,
30590OP_NESint16,
30591OP_NEUint16,
30592OP_NESint32,
30593OP_NEUint32,
30594OP_NESint64,
30595OP_NEUint64,
30596OP_NEIntAP,
30597OP_NEIntAPS,
30598OP_NEBool,
30599OP_NEFixedPoint,
30600OP_NEPtr,
30601OP_NEMemberPtr,
30602OP_NEFloat,
30603#endif
30604#ifdef GET_INTERP
30605case OP_NESint8: {
30606 if (!NE<PT_Sint8>(S, OpPC))
30607 return false;
30608 continue;
30609}
30610case OP_NEUint8: {
30611 if (!NE<PT_Uint8>(S, OpPC))
30612 return false;
30613 continue;
30614}
30615case OP_NESint16: {
30616 if (!NE<PT_Sint16>(S, OpPC))
30617 return false;
30618 continue;
30619}
30620case OP_NEUint16: {
30621 if (!NE<PT_Uint16>(S, OpPC))
30622 return false;
30623 continue;
30624}
30625case OP_NESint32: {
30626 if (!NE<PT_Sint32>(S, OpPC))
30627 return false;
30628 continue;
30629}
30630case OP_NEUint32: {
30631 if (!NE<PT_Uint32>(S, OpPC))
30632 return false;
30633 continue;
30634}
30635case OP_NESint64: {
30636 if (!NE<PT_Sint64>(S, OpPC))
30637 return false;
30638 continue;
30639}
30640case OP_NEUint64: {
30641 if (!NE<PT_Uint64>(S, OpPC))
30642 return false;
30643 continue;
30644}
30645case OP_NEIntAP: {
30646 if (!NE<PT_IntAP>(S, OpPC))
30647 return false;
30648 continue;
30649}
30650case OP_NEIntAPS: {
30651 if (!NE<PT_IntAPS>(S, OpPC))
30652 return false;
30653 continue;
30654}
30655case OP_NEBool: {
30656 if (!NE<PT_Bool>(S, OpPC))
30657 return false;
30658 continue;
30659}
30660case OP_NEFixedPoint: {
30661 if (!NE<PT_FixedPoint>(S, OpPC))
30662 return false;
30663 continue;
30664}
30665case OP_NEPtr: {
30666 if (!NE<PT_Ptr>(S, OpPC))
30667 return false;
30668 continue;
30669}
30670case OP_NEMemberPtr: {
30671 if (!NE<PT_MemberPtr>(S, OpPC))
30672 return false;
30673 continue;
30674}
30675case OP_NEFloat: {
30676 if (!NE<PT_Float>(S, OpPC))
30677 return false;
30678 continue;
30679}
30680#endif
30681#ifdef GET_DISASM
30682case OP_NESint8:
30683 Text.Op = PrintName("NESint8");
30684 break;
30685case OP_NEUint8:
30686 Text.Op = PrintName("NEUint8");
30687 break;
30688case OP_NESint16:
30689 Text.Op = PrintName("NESint16");
30690 break;
30691case OP_NEUint16:
30692 Text.Op = PrintName("NEUint16");
30693 break;
30694case OP_NESint32:
30695 Text.Op = PrintName("NESint32");
30696 break;
30697case OP_NEUint32:
30698 Text.Op = PrintName("NEUint32");
30699 break;
30700case OP_NESint64:
30701 Text.Op = PrintName("NESint64");
30702 break;
30703case OP_NEUint64:
30704 Text.Op = PrintName("NEUint64");
30705 break;
30706case OP_NEIntAP:
30707 Text.Op = PrintName("NEIntAP");
30708 break;
30709case OP_NEIntAPS:
30710 Text.Op = PrintName("NEIntAPS");
30711 break;
30712case OP_NEBool:
30713 Text.Op = PrintName("NEBool");
30714 break;
30715case OP_NEFixedPoint:
30716 Text.Op = PrintName("NEFixedPoint");
30717 break;
30718case OP_NEPtr:
30719 Text.Op = PrintName("NEPtr");
30720 break;
30721case OP_NEMemberPtr:
30722 Text.Op = PrintName("NEMemberPtr");
30723 break;
30724case OP_NEFloat:
30725 Text.Op = PrintName("NEFloat");
30726 break;
30727#endif
30728#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30729bool emitNESint8(SourceInfo);
30730bool emitNEUint8(SourceInfo);
30731bool emitNESint16(SourceInfo);
30732bool emitNEUint16(SourceInfo);
30733bool emitNESint32(SourceInfo);
30734bool emitNEUint32(SourceInfo);
30735bool emitNESint64(SourceInfo);
30736bool emitNEUint64(SourceInfo);
30737bool emitNEIntAP(SourceInfo);
30738bool emitNEIntAPS(SourceInfo);
30739bool emitNEBool(SourceInfo);
30740bool emitNEFixedPoint(SourceInfo);
30741bool emitNEPtr(SourceInfo);
30742bool emitNEMemberPtr(SourceInfo);
30743bool emitNEFloat(SourceInfo);
30744#endif
30745#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30746[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
30747#endif
30748#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30749bool
30750#if defined(GET_EVAL_IMPL)
30751EvalEmitter
30752#else
30753ByteCodeEmitter
30754#endif
30755::emitNE(PrimType T0, SourceInfo I) {
30756 switch (T0) {
30757 case PT_Sint8:
30758 return emitNESint8(I);
30759 case PT_Uint8:
30760 return emitNEUint8(I);
30761 case PT_Sint16:
30762 return emitNESint16(I);
30763 case PT_Uint16:
30764 return emitNEUint16(I);
30765 case PT_Sint32:
30766 return emitNESint32(I);
30767 case PT_Uint32:
30768 return emitNEUint32(I);
30769 case PT_Sint64:
30770 return emitNESint64(I);
30771 case PT_Uint64:
30772 return emitNEUint64(I);
30773 case PT_IntAP:
30774 return emitNEIntAP(I);
30775 case PT_IntAPS:
30776 return emitNEIntAPS(I);
30777 case PT_Bool:
30778 return emitNEBool(I);
30779 case PT_FixedPoint:
30780 return emitNEFixedPoint(I);
30781 case PT_Ptr:
30782 return emitNEPtr(I);
30783 case PT_MemberPtr:
30784 return emitNEMemberPtr(I);
30785 case PT_Float:
30786 return emitNEFloat(I);
30787 }
30788 llvm_unreachable("invalid enum value");
30789}
30790#endif
30791#ifdef GET_LINK_IMPL
30792bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
30793 return emitOp<>(OP_NESint8, L);
30794}
30795bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
30796 return emitOp<>(OP_NEUint8, L);
30797}
30798bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
30799 return emitOp<>(OP_NESint16, L);
30800}
30801bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
30802 return emitOp<>(OP_NEUint16, L);
30803}
30804bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
30805 return emitOp<>(OP_NESint32, L);
30806}
30807bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
30808 return emitOp<>(OP_NEUint32, L);
30809}
30810bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
30811 return emitOp<>(OP_NESint64, L);
30812}
30813bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
30814 return emitOp<>(OP_NEUint64, L);
30815}
30816bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
30817 return emitOp<>(OP_NEIntAP, L);
30818}
30819bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
30820 return emitOp<>(OP_NEIntAPS, L);
30821}
30822bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
30823 return emitOp<>(OP_NEBool, L);
30824}
30825bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
30826 return emitOp<>(OP_NEFixedPoint, L);
30827}
30828bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
30829 return emitOp<>(OP_NEPtr, L);
30830}
30831bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
30832 return emitOp<>(OP_NEMemberPtr, L);
30833}
30834bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
30835 return emitOp<>(OP_NEFloat, L);
30836}
30837#endif
30838#ifdef GET_EVAL_IMPL
30839bool EvalEmitter::emitNESint8(SourceInfo L) {
30840 if (!isActive()) return true;
30841 CurrentSource = L;
30842 return NE<PT_Sint8>(S, OpPC);
30843}
30844bool EvalEmitter::emitNEUint8(SourceInfo L) {
30845 if (!isActive()) return true;
30846 CurrentSource = L;
30847 return NE<PT_Uint8>(S, OpPC);
30848}
30849bool EvalEmitter::emitNESint16(SourceInfo L) {
30850 if (!isActive()) return true;
30851 CurrentSource = L;
30852 return NE<PT_Sint16>(S, OpPC);
30853}
30854bool EvalEmitter::emitNEUint16(SourceInfo L) {
30855 if (!isActive()) return true;
30856 CurrentSource = L;
30857 return NE<PT_Uint16>(S, OpPC);
30858}
30859bool EvalEmitter::emitNESint32(SourceInfo L) {
30860 if (!isActive()) return true;
30861 CurrentSource = L;
30862 return NE<PT_Sint32>(S, OpPC);
30863}
30864bool EvalEmitter::emitNEUint32(SourceInfo L) {
30865 if (!isActive()) return true;
30866 CurrentSource = L;
30867 return NE<PT_Uint32>(S, OpPC);
30868}
30869bool EvalEmitter::emitNESint64(SourceInfo L) {
30870 if (!isActive()) return true;
30871 CurrentSource = L;
30872 return NE<PT_Sint64>(S, OpPC);
30873}
30874bool EvalEmitter::emitNEUint64(SourceInfo L) {
30875 if (!isActive()) return true;
30876 CurrentSource = L;
30877 return NE<PT_Uint64>(S, OpPC);
30878}
30879bool EvalEmitter::emitNEIntAP(SourceInfo L) {
30880 if (!isActive()) return true;
30881 CurrentSource = L;
30882 return NE<PT_IntAP>(S, OpPC);
30883}
30884bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
30885 if (!isActive()) return true;
30886 CurrentSource = L;
30887 return NE<PT_IntAPS>(S, OpPC);
30888}
30889bool EvalEmitter::emitNEBool(SourceInfo L) {
30890 if (!isActive()) return true;
30891 CurrentSource = L;
30892 return NE<PT_Bool>(S, OpPC);
30893}
30894bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
30895 if (!isActive()) return true;
30896 CurrentSource = L;
30897 return NE<PT_FixedPoint>(S, OpPC);
30898}
30899bool EvalEmitter::emitNEPtr(SourceInfo L) {
30900 if (!isActive()) return true;
30901 CurrentSource = L;
30902 return NE<PT_Ptr>(S, OpPC);
30903}
30904bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
30905 if (!isActive()) return true;
30906 CurrentSource = L;
30907 return NE<PT_MemberPtr>(S, OpPC);
30908}
30909bool EvalEmitter::emitNEFloat(SourceInfo L) {
30910 if (!isActive()) return true;
30911 CurrentSource = L;
30912 return NE<PT_Float>(S, OpPC);
30913}
30914#endif
30915#ifdef GET_OPCODE_NAMES
30916OP_NarrowPtr,
30917#endif
30918#ifdef GET_INTERP
30919case OP_NarrowPtr: {
30920 if (!NarrowPtr(S, OpPC))
30921 return false;
30922 continue;
30923}
30924#endif
30925#ifdef GET_DISASM
30926case OP_NarrowPtr:
30927 Text.Op = PrintName("NarrowPtr");
30928 break;
30929#endif
30930#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30931bool emitNarrowPtr(SourceInfo);
30932#endif
30933#ifdef GET_LINK_IMPL
30934bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
30935 return emitOp<>(OP_NarrowPtr, L);
30936}
30937#endif
30938#ifdef GET_EVAL_IMPL
30939bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
30940 if (!isActive()) return true;
30941 CurrentSource = L;
30942 return NarrowPtr(S, OpPC);
30943}
30944#endif
30945#ifdef GET_OPCODE_NAMES
30946OP_NegSint8,
30947OP_NegUint8,
30948OP_NegSint16,
30949OP_NegUint16,
30950OP_NegSint32,
30951OP_NegUint32,
30952OP_NegSint64,
30953OP_NegUint64,
30954OP_NegIntAP,
30955OP_NegIntAPS,
30956OP_NegBool,
30957OP_NegFloat,
30958OP_NegFixedPoint,
30959#endif
30960#ifdef GET_INTERP
30961case OP_NegSint8: {
30962 if (!Neg<PT_Sint8>(S, OpPC))
30963 return false;
30964 continue;
30965}
30966case OP_NegUint8: {
30967 if (!Neg<PT_Uint8>(S, OpPC))
30968 return false;
30969 continue;
30970}
30971case OP_NegSint16: {
30972 if (!Neg<PT_Sint16>(S, OpPC))
30973 return false;
30974 continue;
30975}
30976case OP_NegUint16: {
30977 if (!Neg<PT_Uint16>(S, OpPC))
30978 return false;
30979 continue;
30980}
30981case OP_NegSint32: {
30982 if (!Neg<PT_Sint32>(S, OpPC))
30983 return false;
30984 continue;
30985}
30986case OP_NegUint32: {
30987 if (!Neg<PT_Uint32>(S, OpPC))
30988 return false;
30989 continue;
30990}
30991case OP_NegSint64: {
30992 if (!Neg<PT_Sint64>(S, OpPC))
30993 return false;
30994 continue;
30995}
30996case OP_NegUint64: {
30997 if (!Neg<PT_Uint64>(S, OpPC))
30998 return false;
30999 continue;
31000}
31001case OP_NegIntAP: {
31002 if (!Neg<PT_IntAP>(S, OpPC))
31003 return false;
31004 continue;
31005}
31006case OP_NegIntAPS: {
31007 if (!Neg<PT_IntAPS>(S, OpPC))
31008 return false;
31009 continue;
31010}
31011case OP_NegBool: {
31012 if (!Neg<PT_Bool>(S, OpPC))
31013 return false;
31014 continue;
31015}
31016case OP_NegFloat: {
31017 if (!Neg<PT_Float>(S, OpPC))
31018 return false;
31019 continue;
31020}
31021case OP_NegFixedPoint: {
31022 if (!Neg<PT_FixedPoint>(S, OpPC))
31023 return false;
31024 continue;
31025}
31026#endif
31027#ifdef GET_DISASM
31028case OP_NegSint8:
31029 Text.Op = PrintName("NegSint8");
31030 break;
31031case OP_NegUint8:
31032 Text.Op = PrintName("NegUint8");
31033 break;
31034case OP_NegSint16:
31035 Text.Op = PrintName("NegSint16");
31036 break;
31037case OP_NegUint16:
31038 Text.Op = PrintName("NegUint16");
31039 break;
31040case OP_NegSint32:
31041 Text.Op = PrintName("NegSint32");
31042 break;
31043case OP_NegUint32:
31044 Text.Op = PrintName("NegUint32");
31045 break;
31046case OP_NegSint64:
31047 Text.Op = PrintName("NegSint64");
31048 break;
31049case OP_NegUint64:
31050 Text.Op = PrintName("NegUint64");
31051 break;
31052case OP_NegIntAP:
31053 Text.Op = PrintName("NegIntAP");
31054 break;
31055case OP_NegIntAPS:
31056 Text.Op = PrintName("NegIntAPS");
31057 break;
31058case OP_NegBool:
31059 Text.Op = PrintName("NegBool");
31060 break;
31061case OP_NegFloat:
31062 Text.Op = PrintName("NegFloat");
31063 break;
31064case OP_NegFixedPoint:
31065 Text.Op = PrintName("NegFixedPoint");
31066 break;
31067#endif
31068#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31069bool emitNegSint8(SourceInfo);
31070bool emitNegUint8(SourceInfo);
31071bool emitNegSint16(SourceInfo);
31072bool emitNegUint16(SourceInfo);
31073bool emitNegSint32(SourceInfo);
31074bool emitNegUint32(SourceInfo);
31075bool emitNegSint64(SourceInfo);
31076bool emitNegUint64(SourceInfo);
31077bool emitNegIntAP(SourceInfo);
31078bool emitNegIntAPS(SourceInfo);
31079bool emitNegBool(SourceInfo);
31080bool emitNegFloat(SourceInfo);
31081bool emitNegFixedPoint(SourceInfo);
31082#endif
31083#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31084[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
31085#endif
31086#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31087bool
31088#if defined(GET_EVAL_IMPL)
31089EvalEmitter
31090#else
31091ByteCodeEmitter
31092#endif
31093::emitNeg(PrimType T0, SourceInfo I) {
31094 switch (T0) {
31095 case PT_Sint8:
31096 return emitNegSint8(I);
31097 case PT_Uint8:
31098 return emitNegUint8(I);
31099 case PT_Sint16:
31100 return emitNegSint16(I);
31101 case PT_Uint16:
31102 return emitNegUint16(I);
31103 case PT_Sint32:
31104 return emitNegSint32(I);
31105 case PT_Uint32:
31106 return emitNegUint32(I);
31107 case PT_Sint64:
31108 return emitNegSint64(I);
31109 case PT_Uint64:
31110 return emitNegUint64(I);
31111 case PT_IntAP:
31112 return emitNegIntAP(I);
31113 case PT_IntAPS:
31114 return emitNegIntAPS(I);
31115 case PT_Bool:
31116 return emitNegBool(I);
31117 case PT_Float:
31118 return emitNegFloat(I);
31119 case PT_FixedPoint:
31120 return emitNegFixedPoint(I);
31121 default: llvm_unreachable("invalid type: emitNeg");
31122 }
31123 llvm_unreachable("invalid enum value");
31124}
31125#endif
31126#ifdef GET_LINK_IMPL
31127bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
31128 return emitOp<>(OP_NegSint8, L);
31129}
31130bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
31131 return emitOp<>(OP_NegUint8, L);
31132}
31133bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
31134 return emitOp<>(OP_NegSint16, L);
31135}
31136bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
31137 return emitOp<>(OP_NegUint16, L);
31138}
31139bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
31140 return emitOp<>(OP_NegSint32, L);
31141}
31142bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
31143 return emitOp<>(OP_NegUint32, L);
31144}
31145bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
31146 return emitOp<>(OP_NegSint64, L);
31147}
31148bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
31149 return emitOp<>(OP_NegUint64, L);
31150}
31151bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
31152 return emitOp<>(OP_NegIntAP, L);
31153}
31154bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
31155 return emitOp<>(OP_NegIntAPS, L);
31156}
31157bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
31158 return emitOp<>(OP_NegBool, L);
31159}
31160bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
31161 return emitOp<>(OP_NegFloat, L);
31162}
31163bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
31164 return emitOp<>(OP_NegFixedPoint, L);
31165}
31166#endif
31167#ifdef GET_EVAL_IMPL
31168bool EvalEmitter::emitNegSint8(SourceInfo L) {
31169 if (!isActive()) return true;
31170 CurrentSource = L;
31171 return Neg<PT_Sint8>(S, OpPC);
31172}
31173bool EvalEmitter::emitNegUint8(SourceInfo L) {
31174 if (!isActive()) return true;
31175 CurrentSource = L;
31176 return Neg<PT_Uint8>(S, OpPC);
31177}
31178bool EvalEmitter::emitNegSint16(SourceInfo L) {
31179 if (!isActive()) return true;
31180 CurrentSource = L;
31181 return Neg<PT_Sint16>(S, OpPC);
31182}
31183bool EvalEmitter::emitNegUint16(SourceInfo L) {
31184 if (!isActive()) return true;
31185 CurrentSource = L;
31186 return Neg<PT_Uint16>(S, OpPC);
31187}
31188bool EvalEmitter::emitNegSint32(SourceInfo L) {
31189 if (!isActive()) return true;
31190 CurrentSource = L;
31191 return Neg<PT_Sint32>(S, OpPC);
31192}
31193bool EvalEmitter::emitNegUint32(SourceInfo L) {
31194 if (!isActive()) return true;
31195 CurrentSource = L;
31196 return Neg<PT_Uint32>(S, OpPC);
31197}
31198bool EvalEmitter::emitNegSint64(SourceInfo L) {
31199 if (!isActive()) return true;
31200 CurrentSource = L;
31201 return Neg<PT_Sint64>(S, OpPC);
31202}
31203bool EvalEmitter::emitNegUint64(SourceInfo L) {
31204 if (!isActive()) return true;
31205 CurrentSource = L;
31206 return Neg<PT_Uint64>(S, OpPC);
31207}
31208bool EvalEmitter::emitNegIntAP(SourceInfo L) {
31209 if (!isActive()) return true;
31210 CurrentSource = L;
31211 return Neg<PT_IntAP>(S, OpPC);
31212}
31213bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
31214 if (!isActive()) return true;
31215 CurrentSource = L;
31216 return Neg<PT_IntAPS>(S, OpPC);
31217}
31218bool EvalEmitter::emitNegBool(SourceInfo L) {
31219 if (!isActive()) return true;
31220 CurrentSource = L;
31221 return Neg<PT_Bool>(S, OpPC);
31222}
31223bool EvalEmitter::emitNegFloat(SourceInfo L) {
31224 if (!isActive()) return true;
31225 CurrentSource = L;
31226 return Neg<PT_Float>(S, OpPC);
31227}
31228bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
31229 if (!isActive()) return true;
31230 CurrentSource = L;
31231 return Neg<PT_FixedPoint>(S, OpPC);
31232}
31233#endif
31234#ifdef GET_OPCODE_NAMES
31235OP_NoRet,
31236#endif
31237#ifdef GET_INTERP
31238case OP_NoRet: {
31239 if (!NoRet(S, OpPC))
31240 return false;
31241 continue;
31242}
31243#endif
31244#ifdef GET_DISASM
31245case OP_NoRet:
31246 Text.Op = PrintName("NoRet");
31247 break;
31248#endif
31249#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31250bool emitNoRet(SourceInfo);
31251#endif
31252#ifdef GET_LINK_IMPL
31253bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
31254 return emitOp<>(OP_NoRet, L);
31255}
31256#endif
31257#ifdef GET_EVAL_IMPL
31258bool EvalEmitter::emitNoRet(SourceInfo L) {
31259 if (!isActive()) return true;
31260 CurrentSource = L;
31261 return NoRet(S, OpPC);
31262}
31263#endif
31264#ifdef GET_OPCODE_NAMES
31265OP_NullPtr,
31266OP_NullMemberPtr,
31267#endif
31268#ifdef GET_INTERP
31269case OP_NullPtr: {
31270 const auto V0 = ReadArg<uint64_t>(S, PC);
31271 const auto V1 = ReadArg<const Descriptor *>(S, PC);
31272 if (!Null<PT_Ptr>(S, OpPC, V0, V1))
31273 return false;
31274 continue;
31275}
31276case OP_NullMemberPtr: {
31277 const auto V0 = ReadArg<uint64_t>(S, PC);
31278 const auto V1 = ReadArg<const Descriptor *>(S, PC);
31279 if (!Null<PT_MemberPtr>(S, OpPC, V0, V1))
31280 return false;
31281 continue;
31282}
31283#endif
31284#ifdef GET_DISASM
31285case OP_NullPtr:
31286 Text.Op = PrintName("NullPtr");
31287 Text.Args.push_back(printArg<uint64_t>(P, PC));
31288 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
31289 break;
31290case OP_NullMemberPtr:
31291 Text.Op = PrintName("NullMemberPtr");
31292 Text.Args.push_back(printArg<uint64_t>(P, PC));
31293 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
31294 break;
31295#endif
31296#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31297bool emitNullPtr( uint64_t , const Descriptor * , SourceInfo);
31298bool emitNullMemberPtr( uint64_t , const Descriptor * , SourceInfo);
31299#endif
31300#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31301[[nodiscard]] bool emitNull(PrimType, uint64_t, const Descriptor *, SourceInfo I);
31302#endif
31303#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31304bool
31305#if defined(GET_EVAL_IMPL)
31306EvalEmitter
31307#else
31308ByteCodeEmitter
31309#endif
31310::emitNull(PrimType T0, uint64_t A0, const Descriptor * A1, SourceInfo I) {
31311 switch (T0) {
31312 case PT_Ptr:
31313 return emitNullPtr(A0, A1, I);
31314 case PT_MemberPtr:
31315 return emitNullMemberPtr(A0, A1, I);
31316 default: llvm_unreachable("invalid type: emitNull");
31317 }
31318 llvm_unreachable("invalid enum value");
31319}
31320#endif
31321#ifdef GET_LINK_IMPL
31322bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31323 return emitOp<uint64_t, const Descriptor *>(OP_NullPtr, A0, A1, L);
31324}
31325bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31326 return emitOp<uint64_t, const Descriptor *>(OP_NullMemberPtr, A0, A1, L);
31327}
31328#endif
31329#ifdef GET_EVAL_IMPL
31330bool EvalEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31331 if (!isActive()) return true;
31332 CurrentSource = L;
31333 return Null<PT_Ptr>(S, OpPC, A0, A1);
31334}
31335bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31336 if (!isActive()) return true;
31337 CurrentSource = L;
31338 return Null<PT_MemberPtr>(S, OpPC, A0, A1);
31339}
31340#endif
31341#ifdef GET_OPCODE_NAMES
31342OP_OffsetOfSint8,
31343OP_OffsetOfUint8,
31344OP_OffsetOfSint16,
31345OP_OffsetOfUint16,
31346OP_OffsetOfSint32,
31347OP_OffsetOfUint32,
31348OP_OffsetOfSint64,
31349OP_OffsetOfUint64,
31350OP_OffsetOfIntAP,
31351OP_OffsetOfIntAPS,
31352#endif
31353#ifdef GET_INTERP
31354case OP_OffsetOfSint8: {
31355 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31356 if (!OffsetOf<PT_Sint8>(S, OpPC, V0))
31357 return false;
31358 continue;
31359}
31360case OP_OffsetOfUint8: {
31361 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31362 if (!OffsetOf<PT_Uint8>(S, OpPC, V0))
31363 return false;
31364 continue;
31365}
31366case OP_OffsetOfSint16: {
31367 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31368 if (!OffsetOf<PT_Sint16>(S, OpPC, V0))
31369 return false;
31370 continue;
31371}
31372case OP_OffsetOfUint16: {
31373 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31374 if (!OffsetOf<PT_Uint16>(S, OpPC, V0))
31375 return false;
31376 continue;
31377}
31378case OP_OffsetOfSint32: {
31379 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31380 if (!OffsetOf<PT_Sint32>(S, OpPC, V0))
31381 return false;
31382 continue;
31383}
31384case OP_OffsetOfUint32: {
31385 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31386 if (!OffsetOf<PT_Uint32>(S, OpPC, V0))
31387 return false;
31388 continue;
31389}
31390case OP_OffsetOfSint64: {
31391 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31392 if (!OffsetOf<PT_Sint64>(S, OpPC, V0))
31393 return false;
31394 continue;
31395}
31396case OP_OffsetOfUint64: {
31397 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31398 if (!OffsetOf<PT_Uint64>(S, OpPC, V0))
31399 return false;
31400 continue;
31401}
31402case OP_OffsetOfIntAP: {
31403 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31404 if (!OffsetOf<PT_IntAP>(S, OpPC, V0))
31405 return false;
31406 continue;
31407}
31408case OP_OffsetOfIntAPS: {
31409 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31410 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0))
31411 return false;
31412 continue;
31413}
31414#endif
31415#ifdef GET_DISASM
31416case OP_OffsetOfSint8:
31417 Text.Op = PrintName("OffsetOfSint8");
31418 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31419 break;
31420case OP_OffsetOfUint8:
31421 Text.Op = PrintName("OffsetOfUint8");
31422 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31423 break;
31424case OP_OffsetOfSint16:
31425 Text.Op = PrintName("OffsetOfSint16");
31426 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31427 break;
31428case OP_OffsetOfUint16:
31429 Text.Op = PrintName("OffsetOfUint16");
31430 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31431 break;
31432case OP_OffsetOfSint32:
31433 Text.Op = PrintName("OffsetOfSint32");
31434 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31435 break;
31436case OP_OffsetOfUint32:
31437 Text.Op = PrintName("OffsetOfUint32");
31438 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31439 break;
31440case OP_OffsetOfSint64:
31441 Text.Op = PrintName("OffsetOfSint64");
31442 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31443 break;
31444case OP_OffsetOfUint64:
31445 Text.Op = PrintName("OffsetOfUint64");
31446 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31447 break;
31448case OP_OffsetOfIntAP:
31449 Text.Op = PrintName("OffsetOfIntAP");
31450 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31451 break;
31452case OP_OffsetOfIntAPS:
31453 Text.Op = PrintName("OffsetOfIntAPS");
31454 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31455 break;
31456#endif
31457#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31458bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
31459bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
31460bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
31461bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
31462bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
31463bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
31464bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
31465bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
31466bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
31467bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
31468#endif
31469#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31470[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
31471#endif
31472#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31473bool
31474#if defined(GET_EVAL_IMPL)
31475EvalEmitter
31476#else
31477ByteCodeEmitter
31478#endif
31479::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
31480 switch (T0) {
31481 case PT_Sint8:
31482 return emitOffsetOfSint8(A0, I);
31483 case PT_Uint8:
31484 return emitOffsetOfUint8(A0, I);
31485 case PT_Sint16:
31486 return emitOffsetOfSint16(A0, I);
31487 case PT_Uint16:
31488 return emitOffsetOfUint16(A0, I);
31489 case PT_Sint32:
31490 return emitOffsetOfSint32(A0, I);
31491 case PT_Uint32:
31492 return emitOffsetOfUint32(A0, I);
31493 case PT_Sint64:
31494 return emitOffsetOfSint64(A0, I);
31495 case PT_Uint64:
31496 return emitOffsetOfUint64(A0, I);
31497 case PT_IntAP:
31498 return emitOffsetOfIntAP(A0, I);
31499 case PT_IntAPS:
31500 return emitOffsetOfIntAPS(A0, I);
31501 default: llvm_unreachable("invalid type: emitOffsetOf");
31502 }
31503 llvm_unreachable("invalid enum value");
31504}
31505#endif
31506#ifdef GET_LINK_IMPL
31507bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
31508 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
31509}
31510bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
31511 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
31512}
31513bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
31514 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
31515}
31516bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
31517 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
31518}
31519bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
31520 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
31521}
31522bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
31523 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
31524}
31525bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
31526 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
31527}
31528bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
31529 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
31530}
31531bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
31532 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
31533}
31534bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
31535 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
31536}
31537#endif
31538#ifdef GET_EVAL_IMPL
31539bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
31540 if (!isActive()) return true;
31541 CurrentSource = L;
31542 return OffsetOf<PT_Sint8>(S, OpPC, A0);
31543}
31544bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
31545 if (!isActive()) return true;
31546 CurrentSource = L;
31547 return OffsetOf<PT_Uint8>(S, OpPC, A0);
31548}
31549bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
31550 if (!isActive()) return true;
31551 CurrentSource = L;
31552 return OffsetOf<PT_Sint16>(S, OpPC, A0);
31553}
31554bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
31555 if (!isActive()) return true;
31556 CurrentSource = L;
31557 return OffsetOf<PT_Uint16>(S, OpPC, A0);
31558}
31559bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
31560 if (!isActive()) return true;
31561 CurrentSource = L;
31562 return OffsetOf<PT_Sint32>(S, OpPC, A0);
31563}
31564bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
31565 if (!isActive()) return true;
31566 CurrentSource = L;
31567 return OffsetOf<PT_Uint32>(S, OpPC, A0);
31568}
31569bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
31570 if (!isActive()) return true;
31571 CurrentSource = L;
31572 return OffsetOf<PT_Sint64>(S, OpPC, A0);
31573}
31574bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
31575 if (!isActive()) return true;
31576 CurrentSource = L;
31577 return OffsetOf<PT_Uint64>(S, OpPC, A0);
31578}
31579bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
31580 if (!isActive()) return true;
31581 CurrentSource = L;
31582 return OffsetOf<PT_IntAP>(S, OpPC, A0);
31583}
31584bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
31585 if (!isActive()) return true;
31586 CurrentSource = L;
31587 return OffsetOf<PT_IntAPS>(S, OpPC, A0);
31588}
31589#endif
31590#ifdef GET_OPCODE_NAMES
31591OP_PopSint8,
31592OP_PopUint8,
31593OP_PopSint16,
31594OP_PopUint16,
31595OP_PopSint32,
31596OP_PopUint32,
31597OP_PopSint64,
31598OP_PopUint64,
31599OP_PopIntAP,
31600OP_PopIntAPS,
31601OP_PopBool,
31602OP_PopFixedPoint,
31603OP_PopPtr,
31604OP_PopMemberPtr,
31605OP_PopFloat,
31606#endif
31607#ifdef GET_INTERP
31608case OP_PopSint8: {
31609 if (!Pop<PT_Sint8>(S, OpPC))
31610 return false;
31611 continue;
31612}
31613case OP_PopUint8: {
31614 if (!Pop<PT_Uint8>(S, OpPC))
31615 return false;
31616 continue;
31617}
31618case OP_PopSint16: {
31619 if (!Pop<PT_Sint16>(S, OpPC))
31620 return false;
31621 continue;
31622}
31623case OP_PopUint16: {
31624 if (!Pop<PT_Uint16>(S, OpPC))
31625 return false;
31626 continue;
31627}
31628case OP_PopSint32: {
31629 if (!Pop<PT_Sint32>(S, OpPC))
31630 return false;
31631 continue;
31632}
31633case OP_PopUint32: {
31634 if (!Pop<PT_Uint32>(S, OpPC))
31635 return false;
31636 continue;
31637}
31638case OP_PopSint64: {
31639 if (!Pop<PT_Sint64>(S, OpPC))
31640 return false;
31641 continue;
31642}
31643case OP_PopUint64: {
31644 if (!Pop<PT_Uint64>(S, OpPC))
31645 return false;
31646 continue;
31647}
31648case OP_PopIntAP: {
31649 if (!Pop<PT_IntAP>(S, OpPC))
31650 return false;
31651 continue;
31652}
31653case OP_PopIntAPS: {
31654 if (!Pop<PT_IntAPS>(S, OpPC))
31655 return false;
31656 continue;
31657}
31658case OP_PopBool: {
31659 if (!Pop<PT_Bool>(S, OpPC))
31660 return false;
31661 continue;
31662}
31663case OP_PopFixedPoint: {
31664 if (!Pop<PT_FixedPoint>(S, OpPC))
31665 return false;
31666 continue;
31667}
31668case OP_PopPtr: {
31669 if (!Pop<PT_Ptr>(S, OpPC))
31670 return false;
31671 continue;
31672}
31673case OP_PopMemberPtr: {
31674 if (!Pop<PT_MemberPtr>(S, OpPC))
31675 return false;
31676 continue;
31677}
31678case OP_PopFloat: {
31679 if (!Pop<PT_Float>(S, OpPC))
31680 return false;
31681 continue;
31682}
31683#endif
31684#ifdef GET_DISASM
31685case OP_PopSint8:
31686 Text.Op = PrintName("PopSint8");
31687 break;
31688case OP_PopUint8:
31689 Text.Op = PrintName("PopUint8");
31690 break;
31691case OP_PopSint16:
31692 Text.Op = PrintName("PopSint16");
31693 break;
31694case OP_PopUint16:
31695 Text.Op = PrintName("PopUint16");
31696 break;
31697case OP_PopSint32:
31698 Text.Op = PrintName("PopSint32");
31699 break;
31700case OP_PopUint32:
31701 Text.Op = PrintName("PopUint32");
31702 break;
31703case OP_PopSint64:
31704 Text.Op = PrintName("PopSint64");
31705 break;
31706case OP_PopUint64:
31707 Text.Op = PrintName("PopUint64");
31708 break;
31709case OP_PopIntAP:
31710 Text.Op = PrintName("PopIntAP");
31711 break;
31712case OP_PopIntAPS:
31713 Text.Op = PrintName("PopIntAPS");
31714 break;
31715case OP_PopBool:
31716 Text.Op = PrintName("PopBool");
31717 break;
31718case OP_PopFixedPoint:
31719 Text.Op = PrintName("PopFixedPoint");
31720 break;
31721case OP_PopPtr:
31722 Text.Op = PrintName("PopPtr");
31723 break;
31724case OP_PopMemberPtr:
31725 Text.Op = PrintName("PopMemberPtr");
31726 break;
31727case OP_PopFloat:
31728 Text.Op = PrintName("PopFloat");
31729 break;
31730#endif
31731#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31732bool emitPopSint8(SourceInfo);
31733bool emitPopUint8(SourceInfo);
31734bool emitPopSint16(SourceInfo);
31735bool emitPopUint16(SourceInfo);
31736bool emitPopSint32(SourceInfo);
31737bool emitPopUint32(SourceInfo);
31738bool emitPopSint64(SourceInfo);
31739bool emitPopUint64(SourceInfo);
31740bool emitPopIntAP(SourceInfo);
31741bool emitPopIntAPS(SourceInfo);
31742bool emitPopBool(SourceInfo);
31743bool emitPopFixedPoint(SourceInfo);
31744bool emitPopPtr(SourceInfo);
31745bool emitPopMemberPtr(SourceInfo);
31746bool emitPopFloat(SourceInfo);
31747#endif
31748#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31749[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
31750#endif
31751#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31752bool
31753#if defined(GET_EVAL_IMPL)
31754EvalEmitter
31755#else
31756ByteCodeEmitter
31757#endif
31758::emitPop(PrimType T0, SourceInfo I) {
31759 switch (T0) {
31760 case PT_Sint8:
31761 return emitPopSint8(I);
31762 case PT_Uint8:
31763 return emitPopUint8(I);
31764 case PT_Sint16:
31765 return emitPopSint16(I);
31766 case PT_Uint16:
31767 return emitPopUint16(I);
31768 case PT_Sint32:
31769 return emitPopSint32(I);
31770 case PT_Uint32:
31771 return emitPopUint32(I);
31772 case PT_Sint64:
31773 return emitPopSint64(I);
31774 case PT_Uint64:
31775 return emitPopUint64(I);
31776 case PT_IntAP:
31777 return emitPopIntAP(I);
31778 case PT_IntAPS:
31779 return emitPopIntAPS(I);
31780 case PT_Bool:
31781 return emitPopBool(I);
31782 case PT_FixedPoint:
31783 return emitPopFixedPoint(I);
31784 case PT_Ptr:
31785 return emitPopPtr(I);
31786 case PT_MemberPtr:
31787 return emitPopMemberPtr(I);
31788 case PT_Float:
31789 return emitPopFloat(I);
31790 }
31791 llvm_unreachable("invalid enum value");
31792}
31793#endif
31794#ifdef GET_LINK_IMPL
31795bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
31796 return emitOp<>(OP_PopSint8, L);
31797}
31798bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
31799 return emitOp<>(OP_PopUint8, L);
31800}
31801bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
31802 return emitOp<>(OP_PopSint16, L);
31803}
31804bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
31805 return emitOp<>(OP_PopUint16, L);
31806}
31807bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
31808 return emitOp<>(OP_PopSint32, L);
31809}
31810bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
31811 return emitOp<>(OP_PopUint32, L);
31812}
31813bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
31814 return emitOp<>(OP_PopSint64, L);
31815}
31816bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
31817 return emitOp<>(OP_PopUint64, L);
31818}
31819bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
31820 return emitOp<>(OP_PopIntAP, L);
31821}
31822bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
31823 return emitOp<>(OP_PopIntAPS, L);
31824}
31825bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
31826 return emitOp<>(OP_PopBool, L);
31827}
31828bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
31829 return emitOp<>(OP_PopFixedPoint, L);
31830}
31831bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
31832 return emitOp<>(OP_PopPtr, L);
31833}
31834bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
31835 return emitOp<>(OP_PopMemberPtr, L);
31836}
31837bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
31838 return emitOp<>(OP_PopFloat, L);
31839}
31840#endif
31841#ifdef GET_EVAL_IMPL
31842bool EvalEmitter::emitPopSint8(SourceInfo L) {
31843 if (!isActive()) return true;
31844 CurrentSource = L;
31845 return Pop<PT_Sint8>(S, OpPC);
31846}
31847bool EvalEmitter::emitPopUint8(SourceInfo L) {
31848 if (!isActive()) return true;
31849 CurrentSource = L;
31850 return Pop<PT_Uint8>(S, OpPC);
31851}
31852bool EvalEmitter::emitPopSint16(SourceInfo L) {
31853 if (!isActive()) return true;
31854 CurrentSource = L;
31855 return Pop<PT_Sint16>(S, OpPC);
31856}
31857bool EvalEmitter::emitPopUint16(SourceInfo L) {
31858 if (!isActive()) return true;
31859 CurrentSource = L;
31860 return Pop<PT_Uint16>(S, OpPC);
31861}
31862bool EvalEmitter::emitPopSint32(SourceInfo L) {
31863 if (!isActive()) return true;
31864 CurrentSource = L;
31865 return Pop<PT_Sint32>(S, OpPC);
31866}
31867bool EvalEmitter::emitPopUint32(SourceInfo L) {
31868 if (!isActive()) return true;
31869 CurrentSource = L;
31870 return Pop<PT_Uint32>(S, OpPC);
31871}
31872bool EvalEmitter::emitPopSint64(SourceInfo L) {
31873 if (!isActive()) return true;
31874 CurrentSource = L;
31875 return Pop<PT_Sint64>(S, OpPC);
31876}
31877bool EvalEmitter::emitPopUint64(SourceInfo L) {
31878 if (!isActive()) return true;
31879 CurrentSource = L;
31880 return Pop<PT_Uint64>(S, OpPC);
31881}
31882bool EvalEmitter::emitPopIntAP(SourceInfo L) {
31883 if (!isActive()) return true;
31884 CurrentSource = L;
31885 return Pop<PT_IntAP>(S, OpPC);
31886}
31887bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
31888 if (!isActive()) return true;
31889 CurrentSource = L;
31890 return Pop<PT_IntAPS>(S, OpPC);
31891}
31892bool EvalEmitter::emitPopBool(SourceInfo L) {
31893 if (!isActive()) return true;
31894 CurrentSource = L;
31895 return Pop<PT_Bool>(S, OpPC);
31896}
31897bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
31898 if (!isActive()) return true;
31899 CurrentSource = L;
31900 return Pop<PT_FixedPoint>(S, OpPC);
31901}
31902bool EvalEmitter::emitPopPtr(SourceInfo L) {
31903 if (!isActive()) return true;
31904 CurrentSource = L;
31905 return Pop<PT_Ptr>(S, OpPC);
31906}
31907bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
31908 if (!isActive()) return true;
31909 CurrentSource = L;
31910 return Pop<PT_MemberPtr>(S, OpPC);
31911}
31912bool EvalEmitter::emitPopFloat(SourceInfo L) {
31913 if (!isActive()) return true;
31914 CurrentSource = L;
31915 return Pop<PT_Float>(S, OpPC);
31916}
31917#endif
31918#ifdef GET_OPCODE_NAMES
31919OP_PopCC,
31920#endif
31921#ifdef GET_INTERP
31922case OP_PopCC: {
31923 if (!PopCC(S, OpPC))
31924 return false;
31925 continue;
31926}
31927#endif
31928#ifdef GET_DISASM
31929case OP_PopCC:
31930 Text.Op = PrintName("PopCC");
31931 break;
31932#endif
31933#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31934bool emitPopCC(SourceInfo);
31935#endif
31936#ifdef GET_LINK_IMPL
31937bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
31938 return emitOp<>(OP_PopCC, L);
31939}
31940#endif
31941#ifdef GET_EVAL_IMPL
31942bool EvalEmitter::emitPopCC(SourceInfo L) {
31943 if (!isActive()) return true;
31944 CurrentSource = L;
31945 return PopCC(S, OpPC);
31946}
31947#endif
31948#ifdef GET_OPCODE_NAMES
31949OP_PopMSVCCE,
31950#endif
31951#ifdef GET_INTERP
31952case OP_PopMSVCCE: {
31953 if (!PopMSVCCE(S, OpPC))
31954 return false;
31955 continue;
31956}
31957#endif
31958#ifdef GET_DISASM
31959case OP_PopMSVCCE:
31960 Text.Op = PrintName("PopMSVCCE");
31961 break;
31962#endif
31963#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31964bool emitPopMSVCCE(SourceInfo);
31965#endif
31966#ifdef GET_LINK_IMPL
31967bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
31968 return emitOp<>(OP_PopMSVCCE, L);
31969}
31970#endif
31971#ifdef GET_EVAL_IMPL
31972bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
31973 if (!isActive()) return true;
31974 CurrentSource = L;
31975 return PopMSVCCE(S, OpPC);
31976}
31977#endif
31978#ifdef GET_OPCODE_NAMES
31979OP_PreDecSint8,
31980OP_PreDecUint8,
31981OP_PreDecSint16,
31982OP_PreDecUint16,
31983OP_PreDecSint32,
31984OP_PreDecUint32,
31985OP_PreDecSint64,
31986OP_PreDecUint64,
31987OP_PreDecIntAP,
31988OP_PreDecIntAPS,
31989OP_PreDecBool,
31990OP_PreDecFixedPoint,
31991#endif
31992#ifdef GET_INTERP
31993case OP_PreDecSint8: {
31994 const auto V0 = ReadArg<bool>(S, PC);
31995 if (!PreDec<PT_Sint8>(S, OpPC, V0))
31996 return false;
31997 continue;
31998}
31999case OP_PreDecUint8: {
32000 const auto V0 = ReadArg<bool>(S, PC);
32001 if (!PreDec<PT_Uint8>(S, OpPC, V0))
32002 return false;
32003 continue;
32004}
32005case OP_PreDecSint16: {
32006 const auto V0 = ReadArg<bool>(S, PC);
32007 if (!PreDec<PT_Sint16>(S, OpPC, V0))
32008 return false;
32009 continue;
32010}
32011case OP_PreDecUint16: {
32012 const auto V0 = ReadArg<bool>(S, PC);
32013 if (!PreDec<PT_Uint16>(S, OpPC, V0))
32014 return false;
32015 continue;
32016}
32017case OP_PreDecSint32: {
32018 const auto V0 = ReadArg<bool>(S, PC);
32019 if (!PreDec<PT_Sint32>(S, OpPC, V0))
32020 return false;
32021 continue;
32022}
32023case OP_PreDecUint32: {
32024 const auto V0 = ReadArg<bool>(S, PC);
32025 if (!PreDec<PT_Uint32>(S, OpPC, V0))
32026 return false;
32027 continue;
32028}
32029case OP_PreDecSint64: {
32030 const auto V0 = ReadArg<bool>(S, PC);
32031 if (!PreDec<PT_Sint64>(S, OpPC, V0))
32032 return false;
32033 continue;
32034}
32035case OP_PreDecUint64: {
32036 const auto V0 = ReadArg<bool>(S, PC);
32037 if (!PreDec<PT_Uint64>(S, OpPC, V0))
32038 return false;
32039 continue;
32040}
32041case OP_PreDecIntAP: {
32042 const auto V0 = ReadArg<bool>(S, PC);
32043 if (!PreDec<PT_IntAP>(S, OpPC, V0))
32044 return false;
32045 continue;
32046}
32047case OP_PreDecIntAPS: {
32048 const auto V0 = ReadArg<bool>(S, PC);
32049 if (!PreDec<PT_IntAPS>(S, OpPC, V0))
32050 return false;
32051 continue;
32052}
32053case OP_PreDecBool: {
32054 const auto V0 = ReadArg<bool>(S, PC);
32055 if (!PreDec<PT_Bool>(S, OpPC, V0))
32056 return false;
32057 continue;
32058}
32059case OP_PreDecFixedPoint: {
32060 const auto V0 = ReadArg<bool>(S, PC);
32061 if (!PreDec<PT_FixedPoint>(S, OpPC, V0))
32062 return false;
32063 continue;
32064}
32065#endif
32066#ifdef GET_DISASM
32067case OP_PreDecSint8:
32068 Text.Op = PrintName("PreDecSint8");
32069 Text.Args.push_back(printArg<bool>(P, PC));
32070 break;
32071case OP_PreDecUint8:
32072 Text.Op = PrintName("PreDecUint8");
32073 Text.Args.push_back(printArg<bool>(P, PC));
32074 break;
32075case OP_PreDecSint16:
32076 Text.Op = PrintName("PreDecSint16");
32077 Text.Args.push_back(printArg<bool>(P, PC));
32078 break;
32079case OP_PreDecUint16:
32080 Text.Op = PrintName("PreDecUint16");
32081 Text.Args.push_back(printArg<bool>(P, PC));
32082 break;
32083case OP_PreDecSint32:
32084 Text.Op = PrintName("PreDecSint32");
32085 Text.Args.push_back(printArg<bool>(P, PC));
32086 break;
32087case OP_PreDecUint32:
32088 Text.Op = PrintName("PreDecUint32");
32089 Text.Args.push_back(printArg<bool>(P, PC));
32090 break;
32091case OP_PreDecSint64:
32092 Text.Op = PrintName("PreDecSint64");
32093 Text.Args.push_back(printArg<bool>(P, PC));
32094 break;
32095case OP_PreDecUint64:
32096 Text.Op = PrintName("PreDecUint64");
32097 Text.Args.push_back(printArg<bool>(P, PC));
32098 break;
32099case OP_PreDecIntAP:
32100 Text.Op = PrintName("PreDecIntAP");
32101 Text.Args.push_back(printArg<bool>(P, PC));
32102 break;
32103case OP_PreDecIntAPS:
32104 Text.Op = PrintName("PreDecIntAPS");
32105 Text.Args.push_back(printArg<bool>(P, PC));
32106 break;
32107case OP_PreDecBool:
32108 Text.Op = PrintName("PreDecBool");
32109 Text.Args.push_back(printArg<bool>(P, PC));
32110 break;
32111case OP_PreDecFixedPoint:
32112 Text.Op = PrintName("PreDecFixedPoint");
32113 Text.Args.push_back(printArg<bool>(P, PC));
32114 break;
32115#endif
32116#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32117bool emitPreDecSint8( bool , SourceInfo);
32118bool emitPreDecUint8( bool , SourceInfo);
32119bool emitPreDecSint16( bool , SourceInfo);
32120bool emitPreDecUint16( bool , SourceInfo);
32121bool emitPreDecSint32( bool , SourceInfo);
32122bool emitPreDecUint32( bool , SourceInfo);
32123bool emitPreDecSint64( bool , SourceInfo);
32124bool emitPreDecUint64( bool , SourceInfo);
32125bool emitPreDecIntAP( bool , SourceInfo);
32126bool emitPreDecIntAPS( bool , SourceInfo);
32127bool emitPreDecBool( bool , SourceInfo);
32128bool emitPreDecFixedPoint( bool , SourceInfo);
32129#endif
32130#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32131[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
32132#endif
32133#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32134bool
32135#if defined(GET_EVAL_IMPL)
32136EvalEmitter
32137#else
32138ByteCodeEmitter
32139#endif
32140::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
32141 switch (T0) {
32142 case PT_Sint8:
32143 return emitPreDecSint8(A0, I);
32144 case PT_Uint8:
32145 return emitPreDecUint8(A0, I);
32146 case PT_Sint16:
32147 return emitPreDecSint16(A0, I);
32148 case PT_Uint16:
32149 return emitPreDecUint16(A0, I);
32150 case PT_Sint32:
32151 return emitPreDecSint32(A0, I);
32152 case PT_Uint32:
32153 return emitPreDecUint32(A0, I);
32154 case PT_Sint64:
32155 return emitPreDecSint64(A0, I);
32156 case PT_Uint64:
32157 return emitPreDecUint64(A0, I);
32158 case PT_IntAP:
32159 return emitPreDecIntAP(A0, I);
32160 case PT_IntAPS:
32161 return emitPreDecIntAPS(A0, I);
32162 case PT_Bool:
32163 return emitPreDecBool(A0, I);
32164 case PT_FixedPoint:
32165 return emitPreDecFixedPoint(A0, I);
32166 default: llvm_unreachable("invalid type: emitPreDec");
32167 }
32168 llvm_unreachable("invalid enum value");
32169}
32170#endif
32171#ifdef GET_LINK_IMPL
32172bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
32173 return emitOp<bool>(OP_PreDecSint8, A0, L);
32174}
32175bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
32176 return emitOp<bool>(OP_PreDecUint8, A0, L);
32177}
32178bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
32179 return emitOp<bool>(OP_PreDecSint16, A0, L);
32180}
32181bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
32182 return emitOp<bool>(OP_PreDecUint16, A0, L);
32183}
32184bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
32185 return emitOp<bool>(OP_PreDecSint32, A0, L);
32186}
32187bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
32188 return emitOp<bool>(OP_PreDecUint32, A0, L);
32189}
32190bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
32191 return emitOp<bool>(OP_PreDecSint64, A0, L);
32192}
32193bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
32194 return emitOp<bool>(OP_PreDecUint64, A0, L);
32195}
32196bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
32197 return emitOp<bool>(OP_PreDecIntAP, A0, L);
32198}
32199bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
32200 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
32201}
32202bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
32203 return emitOp<bool>(OP_PreDecBool, A0, L);
32204}
32205bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
32206 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
32207}
32208#endif
32209#ifdef GET_EVAL_IMPL
32210bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
32211 if (!isActive()) return true;
32212 CurrentSource = L;
32213 return PreDec<PT_Sint8>(S, OpPC, A0);
32214}
32215bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
32216 if (!isActive()) return true;
32217 CurrentSource = L;
32218 return PreDec<PT_Uint8>(S, OpPC, A0);
32219}
32220bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
32221 if (!isActive()) return true;
32222 CurrentSource = L;
32223 return PreDec<PT_Sint16>(S, OpPC, A0);
32224}
32225bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
32226 if (!isActive()) return true;
32227 CurrentSource = L;
32228 return PreDec<PT_Uint16>(S, OpPC, A0);
32229}
32230bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
32231 if (!isActive()) return true;
32232 CurrentSource = L;
32233 return PreDec<PT_Sint32>(S, OpPC, A0);
32234}
32235bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
32236 if (!isActive()) return true;
32237 CurrentSource = L;
32238 return PreDec<PT_Uint32>(S, OpPC, A0);
32239}
32240bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
32241 if (!isActive()) return true;
32242 CurrentSource = L;
32243 return PreDec<PT_Sint64>(S, OpPC, A0);
32244}
32245bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
32246 if (!isActive()) return true;
32247 CurrentSource = L;
32248 return PreDec<PT_Uint64>(S, OpPC, A0);
32249}
32250bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
32251 if (!isActive()) return true;
32252 CurrentSource = L;
32253 return PreDec<PT_IntAP>(S, OpPC, A0);
32254}
32255bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
32256 if (!isActive()) return true;
32257 CurrentSource = L;
32258 return PreDec<PT_IntAPS>(S, OpPC, A0);
32259}
32260bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
32261 if (!isActive()) return true;
32262 CurrentSource = L;
32263 return PreDec<PT_Bool>(S, OpPC, A0);
32264}
32265bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
32266 if (!isActive()) return true;
32267 CurrentSource = L;
32268 return PreDec<PT_FixedPoint>(S, OpPC, A0);
32269}
32270#endif
32271#ifdef GET_OPCODE_NAMES
32272OP_PreDecBitfieldSint8,
32273OP_PreDecBitfieldUint8,
32274OP_PreDecBitfieldSint16,
32275OP_PreDecBitfieldUint16,
32276OP_PreDecBitfieldSint32,
32277OP_PreDecBitfieldUint32,
32278OP_PreDecBitfieldSint64,
32279OP_PreDecBitfieldUint64,
32280OP_PreDecBitfieldIntAP,
32281OP_PreDecBitfieldIntAPS,
32282OP_PreDecBitfieldBool,
32283OP_PreDecBitfieldFixedPoint,
32284#endif
32285#ifdef GET_INTERP
32286case OP_PreDecBitfieldSint8: {
32287 const auto V0 = ReadArg<bool>(S, PC);
32288 const auto V1 = ReadArg<uint32_t>(S, PC);
32289 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1))
32290 return false;
32291 continue;
32292}
32293case OP_PreDecBitfieldUint8: {
32294 const auto V0 = ReadArg<bool>(S, PC);
32295 const auto V1 = ReadArg<uint32_t>(S, PC);
32296 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1))
32297 return false;
32298 continue;
32299}
32300case OP_PreDecBitfieldSint16: {
32301 const auto V0 = ReadArg<bool>(S, PC);
32302 const auto V1 = ReadArg<uint32_t>(S, PC);
32303 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1))
32304 return false;
32305 continue;
32306}
32307case OP_PreDecBitfieldUint16: {
32308 const auto V0 = ReadArg<bool>(S, PC);
32309 const auto V1 = ReadArg<uint32_t>(S, PC);
32310 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1))
32311 return false;
32312 continue;
32313}
32314case OP_PreDecBitfieldSint32: {
32315 const auto V0 = ReadArg<bool>(S, PC);
32316 const auto V1 = ReadArg<uint32_t>(S, PC);
32317 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1))
32318 return false;
32319 continue;
32320}
32321case OP_PreDecBitfieldUint32: {
32322 const auto V0 = ReadArg<bool>(S, PC);
32323 const auto V1 = ReadArg<uint32_t>(S, PC);
32324 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1))
32325 return false;
32326 continue;
32327}
32328case OP_PreDecBitfieldSint64: {
32329 const auto V0 = ReadArg<bool>(S, PC);
32330 const auto V1 = ReadArg<uint32_t>(S, PC);
32331 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1))
32332 return false;
32333 continue;
32334}
32335case OP_PreDecBitfieldUint64: {
32336 const auto V0 = ReadArg<bool>(S, PC);
32337 const auto V1 = ReadArg<uint32_t>(S, PC);
32338 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1))
32339 return false;
32340 continue;
32341}
32342case OP_PreDecBitfieldIntAP: {
32343 const auto V0 = ReadArg<bool>(S, PC);
32344 const auto V1 = ReadArg<uint32_t>(S, PC);
32345 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1))
32346 return false;
32347 continue;
32348}
32349case OP_PreDecBitfieldIntAPS: {
32350 const auto V0 = ReadArg<bool>(S, PC);
32351 const auto V1 = ReadArg<uint32_t>(S, PC);
32352 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
32353 return false;
32354 continue;
32355}
32356case OP_PreDecBitfieldBool: {
32357 const auto V0 = ReadArg<bool>(S, PC);
32358 const auto V1 = ReadArg<uint32_t>(S, PC);
32359 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1))
32360 return false;
32361 continue;
32362}
32363case OP_PreDecBitfieldFixedPoint: {
32364 const auto V0 = ReadArg<bool>(S, PC);
32365 const auto V1 = ReadArg<uint32_t>(S, PC);
32366 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
32367 return false;
32368 continue;
32369}
32370#endif
32371#ifdef GET_DISASM
32372case OP_PreDecBitfieldSint8:
32373 Text.Op = PrintName("PreDecBitfieldSint8");
32374 Text.Args.push_back(printArg<bool>(P, PC));
32375 Text.Args.push_back(printArg<uint32_t>(P, PC));
32376 break;
32377case OP_PreDecBitfieldUint8:
32378 Text.Op = PrintName("PreDecBitfieldUint8");
32379 Text.Args.push_back(printArg<bool>(P, PC));
32380 Text.Args.push_back(printArg<uint32_t>(P, PC));
32381 break;
32382case OP_PreDecBitfieldSint16:
32383 Text.Op = PrintName("PreDecBitfieldSint16");
32384 Text.Args.push_back(printArg<bool>(P, PC));
32385 Text.Args.push_back(printArg<uint32_t>(P, PC));
32386 break;
32387case OP_PreDecBitfieldUint16:
32388 Text.Op = PrintName("PreDecBitfieldUint16");
32389 Text.Args.push_back(printArg<bool>(P, PC));
32390 Text.Args.push_back(printArg<uint32_t>(P, PC));
32391 break;
32392case OP_PreDecBitfieldSint32:
32393 Text.Op = PrintName("PreDecBitfieldSint32");
32394 Text.Args.push_back(printArg<bool>(P, PC));
32395 Text.Args.push_back(printArg<uint32_t>(P, PC));
32396 break;
32397case OP_PreDecBitfieldUint32:
32398 Text.Op = PrintName("PreDecBitfieldUint32");
32399 Text.Args.push_back(printArg<bool>(P, PC));
32400 Text.Args.push_back(printArg<uint32_t>(P, PC));
32401 break;
32402case OP_PreDecBitfieldSint64:
32403 Text.Op = PrintName("PreDecBitfieldSint64");
32404 Text.Args.push_back(printArg<bool>(P, PC));
32405 Text.Args.push_back(printArg<uint32_t>(P, PC));
32406 break;
32407case OP_PreDecBitfieldUint64:
32408 Text.Op = PrintName("PreDecBitfieldUint64");
32409 Text.Args.push_back(printArg<bool>(P, PC));
32410 Text.Args.push_back(printArg<uint32_t>(P, PC));
32411 break;
32412case OP_PreDecBitfieldIntAP:
32413 Text.Op = PrintName("PreDecBitfieldIntAP");
32414 Text.Args.push_back(printArg<bool>(P, PC));
32415 Text.Args.push_back(printArg<uint32_t>(P, PC));
32416 break;
32417case OP_PreDecBitfieldIntAPS:
32418 Text.Op = PrintName("PreDecBitfieldIntAPS");
32419 Text.Args.push_back(printArg<bool>(P, PC));
32420 Text.Args.push_back(printArg<uint32_t>(P, PC));
32421 break;
32422case OP_PreDecBitfieldBool:
32423 Text.Op = PrintName("PreDecBitfieldBool");
32424 Text.Args.push_back(printArg<bool>(P, PC));
32425 Text.Args.push_back(printArg<uint32_t>(P, PC));
32426 break;
32427case OP_PreDecBitfieldFixedPoint:
32428 Text.Op = PrintName("PreDecBitfieldFixedPoint");
32429 Text.Args.push_back(printArg<bool>(P, PC));
32430 Text.Args.push_back(printArg<uint32_t>(P, PC));
32431 break;
32432#endif
32433#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32434bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
32435bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
32436bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
32437bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
32438bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
32439bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
32440bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
32441bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
32442bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
32443bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
32444bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
32445bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
32446#endif
32447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32448[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
32449#endif
32450#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32451bool
32452#if defined(GET_EVAL_IMPL)
32453EvalEmitter
32454#else
32455ByteCodeEmitter
32456#endif
32457::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
32458 switch (T0) {
32459 case PT_Sint8:
32460 return emitPreDecBitfieldSint8(A0, A1, I);
32461 case PT_Uint8:
32462 return emitPreDecBitfieldUint8(A0, A1, I);
32463 case PT_Sint16:
32464 return emitPreDecBitfieldSint16(A0, A1, I);
32465 case PT_Uint16:
32466 return emitPreDecBitfieldUint16(A0, A1, I);
32467 case PT_Sint32:
32468 return emitPreDecBitfieldSint32(A0, A1, I);
32469 case PT_Uint32:
32470 return emitPreDecBitfieldUint32(A0, A1, I);
32471 case PT_Sint64:
32472 return emitPreDecBitfieldSint64(A0, A1, I);
32473 case PT_Uint64:
32474 return emitPreDecBitfieldUint64(A0, A1, I);
32475 case PT_IntAP:
32476 return emitPreDecBitfieldIntAP(A0, A1, I);
32477 case PT_IntAPS:
32478 return emitPreDecBitfieldIntAPS(A0, A1, I);
32479 case PT_Bool:
32480 return emitPreDecBitfieldBool(A0, A1, I);
32481 case PT_FixedPoint:
32482 return emitPreDecBitfieldFixedPoint(A0, A1, I);
32483 default: llvm_unreachable("invalid type: emitPreDecBitfield");
32484 }
32485 llvm_unreachable("invalid enum value");
32486}
32487#endif
32488#ifdef GET_LINK_IMPL
32489bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
32490 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
32491}
32492bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
32493 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
32494}
32495bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
32496 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
32497}
32498bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
32499 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
32500}
32501bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
32502 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
32503}
32504bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
32505 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
32506}
32507bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
32508 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
32509}
32510bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
32511 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
32512}
32513bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
32514 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
32515}
32516bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
32517 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
32518}
32519bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
32520 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
32521}
32522bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
32523 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
32524}
32525#endif
32526#ifdef GET_EVAL_IMPL
32527bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
32528 if (!isActive()) return true;
32529 CurrentSource = L;
32530 return PreDecBitfield<PT_Sint8>(S, OpPC, A0, A1);
32531}
32532bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
32533 if (!isActive()) return true;
32534 CurrentSource = L;
32535 return PreDecBitfield<PT_Uint8>(S, OpPC, A0, A1);
32536}
32537bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
32538 if (!isActive()) return true;
32539 CurrentSource = L;
32540 return PreDecBitfield<PT_Sint16>(S, OpPC, A0, A1);
32541}
32542bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
32543 if (!isActive()) return true;
32544 CurrentSource = L;
32545 return PreDecBitfield<PT_Uint16>(S, OpPC, A0, A1);
32546}
32547bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
32548 if (!isActive()) return true;
32549 CurrentSource = L;
32550 return PreDecBitfield<PT_Sint32>(S, OpPC, A0, A1);
32551}
32552bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
32553 if (!isActive()) return true;
32554 CurrentSource = L;
32555 return PreDecBitfield<PT_Uint32>(S, OpPC, A0, A1);
32556}
32557bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
32558 if (!isActive()) return true;
32559 CurrentSource = L;
32560 return PreDecBitfield<PT_Sint64>(S, OpPC, A0, A1);
32561}
32562bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
32563 if (!isActive()) return true;
32564 CurrentSource = L;
32565 return PreDecBitfield<PT_Uint64>(S, OpPC, A0, A1);
32566}
32567bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
32568 if (!isActive()) return true;
32569 CurrentSource = L;
32570 return PreDecBitfield<PT_IntAP>(S, OpPC, A0, A1);
32571}
32572bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
32573 if (!isActive()) return true;
32574 CurrentSource = L;
32575 return PreDecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
32576}
32577bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
32578 if (!isActive()) return true;
32579 CurrentSource = L;
32580 return PreDecBitfield<PT_Bool>(S, OpPC, A0, A1);
32581}
32582bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
32583 if (!isActive()) return true;
32584 CurrentSource = L;
32585 return PreDecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
32586}
32587#endif
32588#ifdef GET_OPCODE_NAMES
32589OP_PreIncSint8,
32590OP_PreIncUint8,
32591OP_PreIncSint16,
32592OP_PreIncUint16,
32593OP_PreIncSint32,
32594OP_PreIncUint32,
32595OP_PreIncSint64,
32596OP_PreIncUint64,
32597OP_PreIncIntAP,
32598OP_PreIncIntAPS,
32599OP_PreIncBool,
32600OP_PreIncFixedPoint,
32601#endif
32602#ifdef GET_INTERP
32603case OP_PreIncSint8: {
32604 const auto V0 = ReadArg<bool>(S, PC);
32605 if (!PreInc<PT_Sint8>(S, OpPC, V0))
32606 return false;
32607 continue;
32608}
32609case OP_PreIncUint8: {
32610 const auto V0 = ReadArg<bool>(S, PC);
32611 if (!PreInc<PT_Uint8>(S, OpPC, V0))
32612 return false;
32613 continue;
32614}
32615case OP_PreIncSint16: {
32616 const auto V0 = ReadArg<bool>(S, PC);
32617 if (!PreInc<PT_Sint16>(S, OpPC, V0))
32618 return false;
32619 continue;
32620}
32621case OP_PreIncUint16: {
32622 const auto V0 = ReadArg<bool>(S, PC);
32623 if (!PreInc<PT_Uint16>(S, OpPC, V0))
32624 return false;
32625 continue;
32626}
32627case OP_PreIncSint32: {
32628 const auto V0 = ReadArg<bool>(S, PC);
32629 if (!PreInc<PT_Sint32>(S, OpPC, V0))
32630 return false;
32631 continue;
32632}
32633case OP_PreIncUint32: {
32634 const auto V0 = ReadArg<bool>(S, PC);
32635 if (!PreInc<PT_Uint32>(S, OpPC, V0))
32636 return false;
32637 continue;
32638}
32639case OP_PreIncSint64: {
32640 const auto V0 = ReadArg<bool>(S, PC);
32641 if (!PreInc<PT_Sint64>(S, OpPC, V0))
32642 return false;
32643 continue;
32644}
32645case OP_PreIncUint64: {
32646 const auto V0 = ReadArg<bool>(S, PC);
32647 if (!PreInc<PT_Uint64>(S, OpPC, V0))
32648 return false;
32649 continue;
32650}
32651case OP_PreIncIntAP: {
32652 const auto V0 = ReadArg<bool>(S, PC);
32653 if (!PreInc<PT_IntAP>(S, OpPC, V0))
32654 return false;
32655 continue;
32656}
32657case OP_PreIncIntAPS: {
32658 const auto V0 = ReadArg<bool>(S, PC);
32659 if (!PreInc<PT_IntAPS>(S, OpPC, V0))
32660 return false;
32661 continue;
32662}
32663case OP_PreIncBool: {
32664 const auto V0 = ReadArg<bool>(S, PC);
32665 if (!PreInc<PT_Bool>(S, OpPC, V0))
32666 return false;
32667 continue;
32668}
32669case OP_PreIncFixedPoint: {
32670 const auto V0 = ReadArg<bool>(S, PC);
32671 if (!PreInc<PT_FixedPoint>(S, OpPC, V0))
32672 return false;
32673 continue;
32674}
32675#endif
32676#ifdef GET_DISASM
32677case OP_PreIncSint8:
32678 Text.Op = PrintName("PreIncSint8");
32679 Text.Args.push_back(printArg<bool>(P, PC));
32680 break;
32681case OP_PreIncUint8:
32682 Text.Op = PrintName("PreIncUint8");
32683 Text.Args.push_back(printArg<bool>(P, PC));
32684 break;
32685case OP_PreIncSint16:
32686 Text.Op = PrintName("PreIncSint16");
32687 Text.Args.push_back(printArg<bool>(P, PC));
32688 break;
32689case OP_PreIncUint16:
32690 Text.Op = PrintName("PreIncUint16");
32691 Text.Args.push_back(printArg<bool>(P, PC));
32692 break;
32693case OP_PreIncSint32:
32694 Text.Op = PrintName("PreIncSint32");
32695 Text.Args.push_back(printArg<bool>(P, PC));
32696 break;
32697case OP_PreIncUint32:
32698 Text.Op = PrintName("PreIncUint32");
32699 Text.Args.push_back(printArg<bool>(P, PC));
32700 break;
32701case OP_PreIncSint64:
32702 Text.Op = PrintName("PreIncSint64");
32703 Text.Args.push_back(printArg<bool>(P, PC));
32704 break;
32705case OP_PreIncUint64:
32706 Text.Op = PrintName("PreIncUint64");
32707 Text.Args.push_back(printArg<bool>(P, PC));
32708 break;
32709case OP_PreIncIntAP:
32710 Text.Op = PrintName("PreIncIntAP");
32711 Text.Args.push_back(printArg<bool>(P, PC));
32712 break;
32713case OP_PreIncIntAPS:
32714 Text.Op = PrintName("PreIncIntAPS");
32715 Text.Args.push_back(printArg<bool>(P, PC));
32716 break;
32717case OP_PreIncBool:
32718 Text.Op = PrintName("PreIncBool");
32719 Text.Args.push_back(printArg<bool>(P, PC));
32720 break;
32721case OP_PreIncFixedPoint:
32722 Text.Op = PrintName("PreIncFixedPoint");
32723 Text.Args.push_back(printArg<bool>(P, PC));
32724 break;
32725#endif
32726#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32727bool emitPreIncSint8( bool , SourceInfo);
32728bool emitPreIncUint8( bool , SourceInfo);
32729bool emitPreIncSint16( bool , SourceInfo);
32730bool emitPreIncUint16( bool , SourceInfo);
32731bool emitPreIncSint32( bool , SourceInfo);
32732bool emitPreIncUint32( bool , SourceInfo);
32733bool emitPreIncSint64( bool , SourceInfo);
32734bool emitPreIncUint64( bool , SourceInfo);
32735bool emitPreIncIntAP( bool , SourceInfo);
32736bool emitPreIncIntAPS( bool , SourceInfo);
32737bool emitPreIncBool( bool , SourceInfo);
32738bool emitPreIncFixedPoint( bool , SourceInfo);
32739#endif
32740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32741[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
32742#endif
32743#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32744bool
32745#if defined(GET_EVAL_IMPL)
32746EvalEmitter
32747#else
32748ByteCodeEmitter
32749#endif
32750::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
32751 switch (T0) {
32752 case PT_Sint8:
32753 return emitPreIncSint8(A0, I);
32754 case PT_Uint8:
32755 return emitPreIncUint8(A0, I);
32756 case PT_Sint16:
32757 return emitPreIncSint16(A0, I);
32758 case PT_Uint16:
32759 return emitPreIncUint16(A0, I);
32760 case PT_Sint32:
32761 return emitPreIncSint32(A0, I);
32762 case PT_Uint32:
32763 return emitPreIncUint32(A0, I);
32764 case PT_Sint64:
32765 return emitPreIncSint64(A0, I);
32766 case PT_Uint64:
32767 return emitPreIncUint64(A0, I);
32768 case PT_IntAP:
32769 return emitPreIncIntAP(A0, I);
32770 case PT_IntAPS:
32771 return emitPreIncIntAPS(A0, I);
32772 case PT_Bool:
32773 return emitPreIncBool(A0, I);
32774 case PT_FixedPoint:
32775 return emitPreIncFixedPoint(A0, I);
32776 default: llvm_unreachable("invalid type: emitPreInc");
32777 }
32778 llvm_unreachable("invalid enum value");
32779}
32780#endif
32781#ifdef GET_LINK_IMPL
32782bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
32783 return emitOp<bool>(OP_PreIncSint8, A0, L);
32784}
32785bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
32786 return emitOp<bool>(OP_PreIncUint8, A0, L);
32787}
32788bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
32789 return emitOp<bool>(OP_PreIncSint16, A0, L);
32790}
32791bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
32792 return emitOp<bool>(OP_PreIncUint16, A0, L);
32793}
32794bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
32795 return emitOp<bool>(OP_PreIncSint32, A0, L);
32796}
32797bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
32798 return emitOp<bool>(OP_PreIncUint32, A0, L);
32799}
32800bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
32801 return emitOp<bool>(OP_PreIncSint64, A0, L);
32802}
32803bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
32804 return emitOp<bool>(OP_PreIncUint64, A0, L);
32805}
32806bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
32807 return emitOp<bool>(OP_PreIncIntAP, A0, L);
32808}
32809bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
32810 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
32811}
32812bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
32813 return emitOp<bool>(OP_PreIncBool, A0, L);
32814}
32815bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
32816 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
32817}
32818#endif
32819#ifdef GET_EVAL_IMPL
32820bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
32821 if (!isActive()) return true;
32822 CurrentSource = L;
32823 return PreInc<PT_Sint8>(S, OpPC, A0);
32824}
32825bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
32826 if (!isActive()) return true;
32827 CurrentSource = L;
32828 return PreInc<PT_Uint8>(S, OpPC, A0);
32829}
32830bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
32831 if (!isActive()) return true;
32832 CurrentSource = L;
32833 return PreInc<PT_Sint16>(S, OpPC, A0);
32834}
32835bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
32836 if (!isActive()) return true;
32837 CurrentSource = L;
32838 return PreInc<PT_Uint16>(S, OpPC, A0);
32839}
32840bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
32841 if (!isActive()) return true;
32842 CurrentSource = L;
32843 return PreInc<PT_Sint32>(S, OpPC, A0);
32844}
32845bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
32846 if (!isActive()) return true;
32847 CurrentSource = L;
32848 return PreInc<PT_Uint32>(S, OpPC, A0);
32849}
32850bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
32851 if (!isActive()) return true;
32852 CurrentSource = L;
32853 return PreInc<PT_Sint64>(S, OpPC, A0);
32854}
32855bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
32856 if (!isActive()) return true;
32857 CurrentSource = L;
32858 return PreInc<PT_Uint64>(S, OpPC, A0);
32859}
32860bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
32861 if (!isActive()) return true;
32862 CurrentSource = L;
32863 return PreInc<PT_IntAP>(S, OpPC, A0);
32864}
32865bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
32866 if (!isActive()) return true;
32867 CurrentSource = L;
32868 return PreInc<PT_IntAPS>(S, OpPC, A0);
32869}
32870bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
32871 if (!isActive()) return true;
32872 CurrentSource = L;
32873 return PreInc<PT_Bool>(S, OpPC, A0);
32874}
32875bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
32876 if (!isActive()) return true;
32877 CurrentSource = L;
32878 return PreInc<PT_FixedPoint>(S, OpPC, A0);
32879}
32880#endif
32881#ifdef GET_OPCODE_NAMES
32882OP_PreIncBitfieldSint8,
32883OP_PreIncBitfieldUint8,
32884OP_PreIncBitfieldSint16,
32885OP_PreIncBitfieldUint16,
32886OP_PreIncBitfieldSint32,
32887OP_PreIncBitfieldUint32,
32888OP_PreIncBitfieldSint64,
32889OP_PreIncBitfieldUint64,
32890OP_PreIncBitfieldIntAP,
32891OP_PreIncBitfieldIntAPS,
32892OP_PreIncBitfieldBool,
32893OP_PreIncBitfieldFixedPoint,
32894#endif
32895#ifdef GET_INTERP
32896case OP_PreIncBitfieldSint8: {
32897 const auto V0 = ReadArg<bool>(S, PC);
32898 const auto V1 = ReadArg<uint32_t>(S, PC);
32899 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1))
32900 return false;
32901 continue;
32902}
32903case OP_PreIncBitfieldUint8: {
32904 const auto V0 = ReadArg<bool>(S, PC);
32905 const auto V1 = ReadArg<uint32_t>(S, PC);
32906 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1))
32907 return false;
32908 continue;
32909}
32910case OP_PreIncBitfieldSint16: {
32911 const auto V0 = ReadArg<bool>(S, PC);
32912 const auto V1 = ReadArg<uint32_t>(S, PC);
32913 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1))
32914 return false;
32915 continue;
32916}
32917case OP_PreIncBitfieldUint16: {
32918 const auto V0 = ReadArg<bool>(S, PC);
32919 const auto V1 = ReadArg<uint32_t>(S, PC);
32920 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1))
32921 return false;
32922 continue;
32923}
32924case OP_PreIncBitfieldSint32: {
32925 const auto V0 = ReadArg<bool>(S, PC);
32926 const auto V1 = ReadArg<uint32_t>(S, PC);
32927 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1))
32928 return false;
32929 continue;
32930}
32931case OP_PreIncBitfieldUint32: {
32932 const auto V0 = ReadArg<bool>(S, PC);
32933 const auto V1 = ReadArg<uint32_t>(S, PC);
32934 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1))
32935 return false;
32936 continue;
32937}
32938case OP_PreIncBitfieldSint64: {
32939 const auto V0 = ReadArg<bool>(S, PC);
32940 const auto V1 = ReadArg<uint32_t>(S, PC);
32941 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1))
32942 return false;
32943 continue;
32944}
32945case OP_PreIncBitfieldUint64: {
32946 const auto V0 = ReadArg<bool>(S, PC);
32947 const auto V1 = ReadArg<uint32_t>(S, PC);
32948 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1))
32949 return false;
32950 continue;
32951}
32952case OP_PreIncBitfieldIntAP: {
32953 const auto V0 = ReadArg<bool>(S, PC);
32954 const auto V1 = ReadArg<uint32_t>(S, PC);
32955 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1))
32956 return false;
32957 continue;
32958}
32959case OP_PreIncBitfieldIntAPS: {
32960 const auto V0 = ReadArg<bool>(S, PC);
32961 const auto V1 = ReadArg<uint32_t>(S, PC);
32962 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
32963 return false;
32964 continue;
32965}
32966case OP_PreIncBitfieldBool: {
32967 const auto V0 = ReadArg<bool>(S, PC);
32968 const auto V1 = ReadArg<uint32_t>(S, PC);
32969 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1))
32970 return false;
32971 continue;
32972}
32973case OP_PreIncBitfieldFixedPoint: {
32974 const auto V0 = ReadArg<bool>(S, PC);
32975 const auto V1 = ReadArg<uint32_t>(S, PC);
32976 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
32977 return false;
32978 continue;
32979}
32980#endif
32981#ifdef GET_DISASM
32982case OP_PreIncBitfieldSint8:
32983 Text.Op = PrintName("PreIncBitfieldSint8");
32984 Text.Args.push_back(printArg<bool>(P, PC));
32985 Text.Args.push_back(printArg<uint32_t>(P, PC));
32986 break;
32987case OP_PreIncBitfieldUint8:
32988 Text.Op = PrintName("PreIncBitfieldUint8");
32989 Text.Args.push_back(printArg<bool>(P, PC));
32990 Text.Args.push_back(printArg<uint32_t>(P, PC));
32991 break;
32992case OP_PreIncBitfieldSint16:
32993 Text.Op = PrintName("PreIncBitfieldSint16");
32994 Text.Args.push_back(printArg<bool>(P, PC));
32995 Text.Args.push_back(printArg<uint32_t>(P, PC));
32996 break;
32997case OP_PreIncBitfieldUint16:
32998 Text.Op = PrintName("PreIncBitfieldUint16");
32999 Text.Args.push_back(printArg<bool>(P, PC));
33000 Text.Args.push_back(printArg<uint32_t>(P, PC));
33001 break;
33002case OP_PreIncBitfieldSint32:
33003 Text.Op = PrintName("PreIncBitfieldSint32");
33004 Text.Args.push_back(printArg<bool>(P, PC));
33005 Text.Args.push_back(printArg<uint32_t>(P, PC));
33006 break;
33007case OP_PreIncBitfieldUint32:
33008 Text.Op = PrintName("PreIncBitfieldUint32");
33009 Text.Args.push_back(printArg<bool>(P, PC));
33010 Text.Args.push_back(printArg<uint32_t>(P, PC));
33011 break;
33012case OP_PreIncBitfieldSint64:
33013 Text.Op = PrintName("PreIncBitfieldSint64");
33014 Text.Args.push_back(printArg<bool>(P, PC));
33015 Text.Args.push_back(printArg<uint32_t>(P, PC));
33016 break;
33017case OP_PreIncBitfieldUint64:
33018 Text.Op = PrintName("PreIncBitfieldUint64");
33019 Text.Args.push_back(printArg<bool>(P, PC));
33020 Text.Args.push_back(printArg<uint32_t>(P, PC));
33021 break;
33022case OP_PreIncBitfieldIntAP:
33023 Text.Op = PrintName("PreIncBitfieldIntAP");
33024 Text.Args.push_back(printArg<bool>(P, PC));
33025 Text.Args.push_back(printArg<uint32_t>(P, PC));
33026 break;
33027case OP_PreIncBitfieldIntAPS:
33028 Text.Op = PrintName("PreIncBitfieldIntAPS");
33029 Text.Args.push_back(printArg<bool>(P, PC));
33030 Text.Args.push_back(printArg<uint32_t>(P, PC));
33031 break;
33032case OP_PreIncBitfieldBool:
33033 Text.Op = PrintName("PreIncBitfieldBool");
33034 Text.Args.push_back(printArg<bool>(P, PC));
33035 Text.Args.push_back(printArg<uint32_t>(P, PC));
33036 break;
33037case OP_PreIncBitfieldFixedPoint:
33038 Text.Op = PrintName("PreIncBitfieldFixedPoint");
33039 Text.Args.push_back(printArg<bool>(P, PC));
33040 Text.Args.push_back(printArg<uint32_t>(P, PC));
33041 break;
33042#endif
33043#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33044bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
33045bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
33046bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
33047bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
33048bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
33049bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
33050bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
33051bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
33052bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
33053bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
33054bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
33055bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
33056#endif
33057#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33058[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
33059#endif
33060#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33061bool
33062#if defined(GET_EVAL_IMPL)
33063EvalEmitter
33064#else
33065ByteCodeEmitter
33066#endif
33067::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
33068 switch (T0) {
33069 case PT_Sint8:
33070 return emitPreIncBitfieldSint8(A0, A1, I);
33071 case PT_Uint8:
33072 return emitPreIncBitfieldUint8(A0, A1, I);
33073 case PT_Sint16:
33074 return emitPreIncBitfieldSint16(A0, A1, I);
33075 case PT_Uint16:
33076 return emitPreIncBitfieldUint16(A0, A1, I);
33077 case PT_Sint32:
33078 return emitPreIncBitfieldSint32(A0, A1, I);
33079 case PT_Uint32:
33080 return emitPreIncBitfieldUint32(A0, A1, I);
33081 case PT_Sint64:
33082 return emitPreIncBitfieldSint64(A0, A1, I);
33083 case PT_Uint64:
33084 return emitPreIncBitfieldUint64(A0, A1, I);
33085 case PT_IntAP:
33086 return emitPreIncBitfieldIntAP(A0, A1, I);
33087 case PT_IntAPS:
33088 return emitPreIncBitfieldIntAPS(A0, A1, I);
33089 case PT_Bool:
33090 return emitPreIncBitfieldBool(A0, A1, I);
33091 case PT_FixedPoint:
33092 return emitPreIncBitfieldFixedPoint(A0, A1, I);
33093 default: llvm_unreachable("invalid type: emitPreIncBitfield");
33094 }
33095 llvm_unreachable("invalid enum value");
33096}
33097#endif
33098#ifdef GET_LINK_IMPL
33099bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
33100 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
33101}
33102bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
33103 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
33104}
33105bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
33106 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
33107}
33108bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
33109 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
33110}
33111bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
33112 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
33113}
33114bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
33115 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
33116}
33117bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
33118 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
33119}
33120bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
33121 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
33122}
33123bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
33124 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
33125}
33126bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
33127 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
33128}
33129bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
33130 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
33131}
33132bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
33133 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
33134}
33135#endif
33136#ifdef GET_EVAL_IMPL
33137bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
33138 if (!isActive()) return true;
33139 CurrentSource = L;
33140 return PreIncBitfield<PT_Sint8>(S, OpPC, A0, A1);
33141}
33142bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
33143 if (!isActive()) return true;
33144 CurrentSource = L;
33145 return PreIncBitfield<PT_Uint8>(S, OpPC, A0, A1);
33146}
33147bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
33148 if (!isActive()) return true;
33149 CurrentSource = L;
33150 return PreIncBitfield<PT_Sint16>(S, OpPC, A0, A1);
33151}
33152bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
33153 if (!isActive()) return true;
33154 CurrentSource = L;
33155 return PreIncBitfield<PT_Uint16>(S, OpPC, A0, A1);
33156}
33157bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
33158 if (!isActive()) return true;
33159 CurrentSource = L;
33160 return PreIncBitfield<PT_Sint32>(S, OpPC, A0, A1);
33161}
33162bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
33163 if (!isActive()) return true;
33164 CurrentSource = L;
33165 return PreIncBitfield<PT_Uint32>(S, OpPC, A0, A1);
33166}
33167bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
33168 if (!isActive()) return true;
33169 CurrentSource = L;
33170 return PreIncBitfield<PT_Sint64>(S, OpPC, A0, A1);
33171}
33172bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
33173 if (!isActive()) return true;
33174 CurrentSource = L;
33175 return PreIncBitfield<PT_Uint64>(S, OpPC, A0, A1);
33176}
33177bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
33178 if (!isActive()) return true;
33179 CurrentSource = L;
33180 return PreIncBitfield<PT_IntAP>(S, OpPC, A0, A1);
33181}
33182bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
33183 if (!isActive()) return true;
33184 CurrentSource = L;
33185 return PreIncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
33186}
33187bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
33188 if (!isActive()) return true;
33189 CurrentSource = L;
33190 return PreIncBitfield<PT_Bool>(S, OpPC, A0, A1);
33191}
33192bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
33193 if (!isActive()) return true;
33194 CurrentSource = L;
33195 return PreIncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
33196}
33197#endif
33198#ifdef GET_OPCODE_NAMES
33199OP_PtrPtrCast,
33200#endif
33201#ifdef GET_INTERP
33202case OP_PtrPtrCast: {
33203 const auto V0 = ReadArg<bool>(S, PC);
33204 if (!PtrPtrCast(S, OpPC, V0))
33205 return false;
33206 continue;
33207}
33208#endif
33209#ifdef GET_DISASM
33210case OP_PtrPtrCast:
33211 Text.Op = PrintName("PtrPtrCast");
33212 Text.Args.push_back(printArg<bool>(P, PC));
33213 break;
33214#endif
33215#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33216bool emitPtrPtrCast( bool , SourceInfo);
33217#endif
33218#ifdef GET_LINK_IMPL
33219bool ByteCodeEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
33220 return emitOp<bool>(OP_PtrPtrCast, A0, L);
33221}
33222#endif
33223#ifdef GET_EVAL_IMPL
33224bool EvalEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
33225 if (!isActive()) return true;
33226 CurrentSource = L;
33227 return PtrPtrCast(S, OpPC, A0);
33228}
33229#endif
33230#ifdef GET_OPCODE_NAMES
33231OP_PushCC,
33232#endif
33233#ifdef GET_INTERP
33234case OP_PushCC: {
33235 const auto V0 = ReadArg<bool>(S, PC);
33236 if (!PushCC(S, OpPC, V0))
33237 return false;
33238 continue;
33239}
33240#endif
33241#ifdef GET_DISASM
33242case OP_PushCC:
33243 Text.Op = PrintName("PushCC");
33244 Text.Args.push_back(printArg<bool>(P, PC));
33245 break;
33246#endif
33247#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33248bool emitPushCC( bool , SourceInfo);
33249#endif
33250#ifdef GET_LINK_IMPL
33251bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
33252 return emitOp<bool>(OP_PushCC, A0, L);
33253}
33254#endif
33255#ifdef GET_EVAL_IMPL
33256bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
33257 if (!isActive()) return true;
33258 CurrentSource = L;
33259 return PushCC(S, OpPC, A0);
33260}
33261#endif
33262#ifdef GET_OPCODE_NAMES
33263OP_PushMSVCCE,
33264#endif
33265#ifdef GET_INTERP
33266case OP_PushMSVCCE: {
33267 if (!PushMSVCCE(S, OpPC))
33268 return false;
33269 continue;
33270}
33271#endif
33272#ifdef GET_DISASM
33273case OP_PushMSVCCE:
33274 Text.Op = PrintName("PushMSVCCE");
33275 break;
33276#endif
33277#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33278bool emitPushMSVCCE(SourceInfo);
33279#endif
33280#ifdef GET_LINK_IMPL
33281bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
33282 return emitOp<>(OP_PushMSVCCE, L);
33283}
33284#endif
33285#ifdef GET_EVAL_IMPL
33286bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
33287 if (!isActive()) return true;
33288 CurrentSource = L;
33289 return PushMSVCCE(S, OpPC);
33290}
33291#endif
33292#ifdef GET_OPCODE_NAMES
33293OP_RVOPtr,
33294#endif
33295#ifdef GET_INTERP
33296case OP_RVOPtr: {
33297 if (!RVOPtr(S, OpPC))
33298 return false;
33299 continue;
33300}
33301#endif
33302#ifdef GET_DISASM
33303case OP_RVOPtr:
33304 Text.Op = PrintName("RVOPtr");
33305 break;
33306#endif
33307#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33308bool emitRVOPtr(SourceInfo);
33309#endif
33310#ifdef GET_LINK_IMPL
33311bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
33312 return emitOp<>(OP_RVOPtr, L);
33313}
33314#endif
33315#ifdef GET_EVAL_IMPL
33316bool EvalEmitter::emitRVOPtr(SourceInfo L) {
33317 if (!isActive()) return true;
33318 CurrentSource = L;
33319 return RVOPtr(S, OpPC);
33320}
33321#endif
33322#ifdef GET_OPCODE_NAMES
33323OP_RemSint8,
33324OP_RemUint8,
33325OP_RemSint16,
33326OP_RemUint16,
33327OP_RemSint32,
33328OP_RemUint32,
33329OP_RemSint64,
33330OP_RemUint64,
33331OP_RemIntAP,
33332OP_RemIntAPS,
33333OP_RemFixedPoint,
33334#endif
33335#ifdef GET_INTERP
33336case OP_RemSint8: {
33337 if (!Rem<PT_Sint8>(S, OpPC))
33338 return false;
33339 continue;
33340}
33341case OP_RemUint8: {
33342 if (!Rem<PT_Uint8>(S, OpPC))
33343 return false;
33344 continue;
33345}
33346case OP_RemSint16: {
33347 if (!Rem<PT_Sint16>(S, OpPC))
33348 return false;
33349 continue;
33350}
33351case OP_RemUint16: {
33352 if (!Rem<PT_Uint16>(S, OpPC))
33353 return false;
33354 continue;
33355}
33356case OP_RemSint32: {
33357 if (!Rem<PT_Sint32>(S, OpPC))
33358 return false;
33359 continue;
33360}
33361case OP_RemUint32: {
33362 if (!Rem<PT_Uint32>(S, OpPC))
33363 return false;
33364 continue;
33365}
33366case OP_RemSint64: {
33367 if (!Rem<PT_Sint64>(S, OpPC))
33368 return false;
33369 continue;
33370}
33371case OP_RemUint64: {
33372 if (!Rem<PT_Uint64>(S, OpPC))
33373 return false;
33374 continue;
33375}
33376case OP_RemIntAP: {
33377 if (!Rem<PT_IntAP>(S, OpPC))
33378 return false;
33379 continue;
33380}
33381case OP_RemIntAPS: {
33382 if (!Rem<PT_IntAPS>(S, OpPC))
33383 return false;
33384 continue;
33385}
33386case OP_RemFixedPoint: {
33387 if (!Rem<PT_FixedPoint>(S, OpPC))
33388 return false;
33389 continue;
33390}
33391#endif
33392#ifdef GET_DISASM
33393case OP_RemSint8:
33394 Text.Op = PrintName("RemSint8");
33395 break;
33396case OP_RemUint8:
33397 Text.Op = PrintName("RemUint8");
33398 break;
33399case OP_RemSint16:
33400 Text.Op = PrintName("RemSint16");
33401 break;
33402case OP_RemUint16:
33403 Text.Op = PrintName("RemUint16");
33404 break;
33405case OP_RemSint32:
33406 Text.Op = PrintName("RemSint32");
33407 break;
33408case OP_RemUint32:
33409 Text.Op = PrintName("RemUint32");
33410 break;
33411case OP_RemSint64:
33412 Text.Op = PrintName("RemSint64");
33413 break;
33414case OP_RemUint64:
33415 Text.Op = PrintName("RemUint64");
33416 break;
33417case OP_RemIntAP:
33418 Text.Op = PrintName("RemIntAP");
33419 break;
33420case OP_RemIntAPS:
33421 Text.Op = PrintName("RemIntAPS");
33422 break;
33423case OP_RemFixedPoint:
33424 Text.Op = PrintName("RemFixedPoint");
33425 break;
33426#endif
33427#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33428bool emitRemSint8(SourceInfo);
33429bool emitRemUint8(SourceInfo);
33430bool emitRemSint16(SourceInfo);
33431bool emitRemUint16(SourceInfo);
33432bool emitRemSint32(SourceInfo);
33433bool emitRemUint32(SourceInfo);
33434bool emitRemSint64(SourceInfo);
33435bool emitRemUint64(SourceInfo);
33436bool emitRemIntAP(SourceInfo);
33437bool emitRemIntAPS(SourceInfo);
33438bool emitRemFixedPoint(SourceInfo);
33439#endif
33440#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33441[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
33442#endif
33443#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33444bool
33445#if defined(GET_EVAL_IMPL)
33446EvalEmitter
33447#else
33448ByteCodeEmitter
33449#endif
33450::emitRem(PrimType T0, SourceInfo I) {
33451 switch (T0) {
33452 case PT_Sint8:
33453 return emitRemSint8(I);
33454 case PT_Uint8:
33455 return emitRemUint8(I);
33456 case PT_Sint16:
33457 return emitRemSint16(I);
33458 case PT_Uint16:
33459 return emitRemUint16(I);
33460 case PT_Sint32:
33461 return emitRemSint32(I);
33462 case PT_Uint32:
33463 return emitRemUint32(I);
33464 case PT_Sint64:
33465 return emitRemSint64(I);
33466 case PT_Uint64:
33467 return emitRemUint64(I);
33468 case PT_IntAP:
33469 return emitRemIntAP(I);
33470 case PT_IntAPS:
33471 return emitRemIntAPS(I);
33472 case PT_FixedPoint:
33473 return emitRemFixedPoint(I);
33474 default: llvm_unreachable("invalid type: emitRem");
33475 }
33476 llvm_unreachable("invalid enum value");
33477}
33478#endif
33479#ifdef GET_LINK_IMPL
33480bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
33481 return emitOp<>(OP_RemSint8, L);
33482}
33483bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
33484 return emitOp<>(OP_RemUint8, L);
33485}
33486bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
33487 return emitOp<>(OP_RemSint16, L);
33488}
33489bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
33490 return emitOp<>(OP_RemUint16, L);
33491}
33492bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
33493 return emitOp<>(OP_RemSint32, L);
33494}
33495bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
33496 return emitOp<>(OP_RemUint32, L);
33497}
33498bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
33499 return emitOp<>(OP_RemSint64, L);
33500}
33501bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
33502 return emitOp<>(OP_RemUint64, L);
33503}
33504bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
33505 return emitOp<>(OP_RemIntAP, L);
33506}
33507bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
33508 return emitOp<>(OP_RemIntAPS, L);
33509}
33510bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
33511 return emitOp<>(OP_RemFixedPoint, L);
33512}
33513#endif
33514#ifdef GET_EVAL_IMPL
33515bool EvalEmitter::emitRemSint8(SourceInfo L) {
33516 if (!isActive()) return true;
33517 CurrentSource = L;
33518 return Rem<PT_Sint8>(S, OpPC);
33519}
33520bool EvalEmitter::emitRemUint8(SourceInfo L) {
33521 if (!isActive()) return true;
33522 CurrentSource = L;
33523 return Rem<PT_Uint8>(S, OpPC);
33524}
33525bool EvalEmitter::emitRemSint16(SourceInfo L) {
33526 if (!isActive()) return true;
33527 CurrentSource = L;
33528 return Rem<PT_Sint16>(S, OpPC);
33529}
33530bool EvalEmitter::emitRemUint16(SourceInfo L) {
33531 if (!isActive()) return true;
33532 CurrentSource = L;
33533 return Rem<PT_Uint16>(S, OpPC);
33534}
33535bool EvalEmitter::emitRemSint32(SourceInfo L) {
33536 if (!isActive()) return true;
33537 CurrentSource = L;
33538 return Rem<PT_Sint32>(S, OpPC);
33539}
33540bool EvalEmitter::emitRemUint32(SourceInfo L) {
33541 if (!isActive()) return true;
33542 CurrentSource = L;
33543 return Rem<PT_Uint32>(S, OpPC);
33544}
33545bool EvalEmitter::emitRemSint64(SourceInfo L) {
33546 if (!isActive()) return true;
33547 CurrentSource = L;
33548 return Rem<PT_Sint64>(S, OpPC);
33549}
33550bool EvalEmitter::emitRemUint64(SourceInfo L) {
33551 if (!isActive()) return true;
33552 CurrentSource = L;
33553 return Rem<PT_Uint64>(S, OpPC);
33554}
33555bool EvalEmitter::emitRemIntAP(SourceInfo L) {
33556 if (!isActive()) return true;
33557 CurrentSource = L;
33558 return Rem<PT_IntAP>(S, OpPC);
33559}
33560bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
33561 if (!isActive()) return true;
33562 CurrentSource = L;
33563 return Rem<PT_IntAPS>(S, OpPC);
33564}
33565bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
33566 if (!isActive()) return true;
33567 CurrentSource = L;
33568 return Rem<PT_FixedPoint>(S, OpPC);
33569}
33570#endif
33571#ifdef GET_OPCODE_NAMES
33572OP_RetSint8,
33573OP_RetUint8,
33574OP_RetSint16,
33575OP_RetUint16,
33576OP_RetSint32,
33577OP_RetUint32,
33578OP_RetSint64,
33579OP_RetUint64,
33580OP_RetIntAP,
33581OP_RetIntAPS,
33582OP_RetBool,
33583OP_RetFixedPoint,
33584OP_RetPtr,
33585OP_RetMemberPtr,
33586OP_RetFloat,
33587#endif
33588#ifdef GET_INTERP
33589case OP_RetSint8: {
33590 bool DoReturn = (S.Current == StartFrame);
33591 if (!Ret<PT_Sint8>(S, PC))
33592 return false;
33593 if (!S.Current || S.Current->isRoot())
33594 return true;
33595 if (DoReturn)
33596 return true;
33597 continue;
33598}
33599case OP_RetUint8: {
33600 bool DoReturn = (S.Current == StartFrame);
33601 if (!Ret<PT_Uint8>(S, PC))
33602 return false;
33603 if (!S.Current || S.Current->isRoot())
33604 return true;
33605 if (DoReturn)
33606 return true;
33607 continue;
33608}
33609case OP_RetSint16: {
33610 bool DoReturn = (S.Current == StartFrame);
33611 if (!Ret<PT_Sint16>(S, PC))
33612 return false;
33613 if (!S.Current || S.Current->isRoot())
33614 return true;
33615 if (DoReturn)
33616 return true;
33617 continue;
33618}
33619case OP_RetUint16: {
33620 bool DoReturn = (S.Current == StartFrame);
33621 if (!Ret<PT_Uint16>(S, PC))
33622 return false;
33623 if (!S.Current || S.Current->isRoot())
33624 return true;
33625 if (DoReturn)
33626 return true;
33627 continue;
33628}
33629case OP_RetSint32: {
33630 bool DoReturn = (S.Current == StartFrame);
33631 if (!Ret<PT_Sint32>(S, PC))
33632 return false;
33633 if (!S.Current || S.Current->isRoot())
33634 return true;
33635 if (DoReturn)
33636 return true;
33637 continue;
33638}
33639case OP_RetUint32: {
33640 bool DoReturn = (S.Current == StartFrame);
33641 if (!Ret<PT_Uint32>(S, PC))
33642 return false;
33643 if (!S.Current || S.Current->isRoot())
33644 return true;
33645 if (DoReturn)
33646 return true;
33647 continue;
33648}
33649case OP_RetSint64: {
33650 bool DoReturn = (S.Current == StartFrame);
33651 if (!Ret<PT_Sint64>(S, PC))
33652 return false;
33653 if (!S.Current || S.Current->isRoot())
33654 return true;
33655 if (DoReturn)
33656 return true;
33657 continue;
33658}
33659case OP_RetUint64: {
33660 bool DoReturn = (S.Current == StartFrame);
33661 if (!Ret<PT_Uint64>(S, PC))
33662 return false;
33663 if (!S.Current || S.Current->isRoot())
33664 return true;
33665 if (DoReturn)
33666 return true;
33667 continue;
33668}
33669case OP_RetIntAP: {
33670 bool DoReturn = (S.Current == StartFrame);
33671 if (!Ret<PT_IntAP>(S, PC))
33672 return false;
33673 if (!S.Current || S.Current->isRoot())
33674 return true;
33675 if (DoReturn)
33676 return true;
33677 continue;
33678}
33679case OP_RetIntAPS: {
33680 bool DoReturn = (S.Current == StartFrame);
33681 if (!Ret<PT_IntAPS>(S, PC))
33682 return false;
33683 if (!S.Current || S.Current->isRoot())
33684 return true;
33685 if (DoReturn)
33686 return true;
33687 continue;
33688}
33689case OP_RetBool: {
33690 bool DoReturn = (S.Current == StartFrame);
33691 if (!Ret<PT_Bool>(S, PC))
33692 return false;
33693 if (!S.Current || S.Current->isRoot())
33694 return true;
33695 if (DoReturn)
33696 return true;
33697 continue;
33698}
33699case OP_RetFixedPoint: {
33700 bool DoReturn = (S.Current == StartFrame);
33701 if (!Ret<PT_FixedPoint>(S, PC))
33702 return false;
33703 if (!S.Current || S.Current->isRoot())
33704 return true;
33705 if (DoReturn)
33706 return true;
33707 continue;
33708}
33709case OP_RetPtr: {
33710 bool DoReturn = (S.Current == StartFrame);
33711 if (!Ret<PT_Ptr>(S, PC))
33712 return false;
33713 if (!S.Current || S.Current->isRoot())
33714 return true;
33715 if (DoReturn)
33716 return true;
33717 continue;
33718}
33719case OP_RetMemberPtr: {
33720 bool DoReturn = (S.Current == StartFrame);
33721 if (!Ret<PT_MemberPtr>(S, PC))
33722 return false;
33723 if (!S.Current || S.Current->isRoot())
33724 return true;
33725 if (DoReturn)
33726 return true;
33727 continue;
33728}
33729case OP_RetFloat: {
33730 bool DoReturn = (S.Current == StartFrame);
33731 if (!Ret<PT_Float>(S, PC))
33732 return false;
33733 if (!S.Current || S.Current->isRoot())
33734 return true;
33735 if (DoReturn)
33736 return true;
33737 continue;
33738}
33739#endif
33740#ifdef GET_DISASM
33741case OP_RetSint8:
33742 Text.Op = PrintName("RetSint8");
33743 break;
33744case OP_RetUint8:
33745 Text.Op = PrintName("RetUint8");
33746 break;
33747case OP_RetSint16:
33748 Text.Op = PrintName("RetSint16");
33749 break;
33750case OP_RetUint16:
33751 Text.Op = PrintName("RetUint16");
33752 break;
33753case OP_RetSint32:
33754 Text.Op = PrintName("RetSint32");
33755 break;
33756case OP_RetUint32:
33757 Text.Op = PrintName("RetUint32");
33758 break;
33759case OP_RetSint64:
33760 Text.Op = PrintName("RetSint64");
33761 break;
33762case OP_RetUint64:
33763 Text.Op = PrintName("RetUint64");
33764 break;
33765case OP_RetIntAP:
33766 Text.Op = PrintName("RetIntAP");
33767 break;
33768case OP_RetIntAPS:
33769 Text.Op = PrintName("RetIntAPS");
33770 break;
33771case OP_RetBool:
33772 Text.Op = PrintName("RetBool");
33773 break;
33774case OP_RetFixedPoint:
33775 Text.Op = PrintName("RetFixedPoint");
33776 break;
33777case OP_RetPtr:
33778 Text.Op = PrintName("RetPtr");
33779 break;
33780case OP_RetMemberPtr:
33781 Text.Op = PrintName("RetMemberPtr");
33782 break;
33783case OP_RetFloat:
33784 Text.Op = PrintName("RetFloat");
33785 break;
33786#endif
33787#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33788bool emitRetSint8(SourceInfo);
33789bool emitRetUint8(SourceInfo);
33790bool emitRetSint16(SourceInfo);
33791bool emitRetUint16(SourceInfo);
33792bool emitRetSint32(SourceInfo);
33793bool emitRetUint32(SourceInfo);
33794bool emitRetSint64(SourceInfo);
33795bool emitRetUint64(SourceInfo);
33796bool emitRetIntAP(SourceInfo);
33797bool emitRetIntAPS(SourceInfo);
33798bool emitRetBool(SourceInfo);
33799bool emitRetFixedPoint(SourceInfo);
33800bool emitRetPtr(SourceInfo);
33801bool emitRetMemberPtr(SourceInfo);
33802bool emitRetFloat(SourceInfo);
33803#if defined(GET_EVAL_PROTO)
33804template<PrimType>
33805bool emitRet(SourceInfo);
33806#endif
33807#endif
33808#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33809[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
33810#endif
33811#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33812bool
33813#if defined(GET_EVAL_IMPL)
33814EvalEmitter
33815#else
33816ByteCodeEmitter
33817#endif
33818::emitRet(PrimType T0, SourceInfo I) {
33819 switch (T0) {
33820 case PT_Sint8:
33821#ifdef GET_LINK_IMPL
33822 return emitRetSint8
33823#else
33824 return emitRet<PT_Sint8>
33825#endif
33826 (I);
33827 case PT_Uint8:
33828#ifdef GET_LINK_IMPL
33829 return emitRetUint8
33830#else
33831 return emitRet<PT_Uint8>
33832#endif
33833 (I);
33834 case PT_Sint16:
33835#ifdef GET_LINK_IMPL
33836 return emitRetSint16
33837#else
33838 return emitRet<PT_Sint16>
33839#endif
33840 (I);
33841 case PT_Uint16:
33842#ifdef GET_LINK_IMPL
33843 return emitRetUint16
33844#else
33845 return emitRet<PT_Uint16>
33846#endif
33847 (I);
33848 case PT_Sint32:
33849#ifdef GET_LINK_IMPL
33850 return emitRetSint32
33851#else
33852 return emitRet<PT_Sint32>
33853#endif
33854 (I);
33855 case PT_Uint32:
33856#ifdef GET_LINK_IMPL
33857 return emitRetUint32
33858#else
33859 return emitRet<PT_Uint32>
33860#endif
33861 (I);
33862 case PT_Sint64:
33863#ifdef GET_LINK_IMPL
33864 return emitRetSint64
33865#else
33866 return emitRet<PT_Sint64>
33867#endif
33868 (I);
33869 case PT_Uint64:
33870#ifdef GET_LINK_IMPL
33871 return emitRetUint64
33872#else
33873 return emitRet<PT_Uint64>
33874#endif
33875 (I);
33876 case PT_IntAP:
33877#ifdef GET_LINK_IMPL
33878 return emitRetIntAP
33879#else
33880 return emitRet<PT_IntAP>
33881#endif
33882 (I);
33883 case PT_IntAPS:
33884#ifdef GET_LINK_IMPL
33885 return emitRetIntAPS
33886#else
33887 return emitRet<PT_IntAPS>
33888#endif
33889 (I);
33890 case PT_Bool:
33891#ifdef GET_LINK_IMPL
33892 return emitRetBool
33893#else
33894 return emitRet<PT_Bool>
33895#endif
33896 (I);
33897 case PT_FixedPoint:
33898#ifdef GET_LINK_IMPL
33899 return emitRetFixedPoint
33900#else
33901 return emitRet<PT_FixedPoint>
33902#endif
33903 (I);
33904 case PT_Ptr:
33905#ifdef GET_LINK_IMPL
33906 return emitRetPtr
33907#else
33908 return emitRet<PT_Ptr>
33909#endif
33910 (I);
33911 case PT_MemberPtr:
33912#ifdef GET_LINK_IMPL
33913 return emitRetMemberPtr
33914#else
33915 return emitRet<PT_MemberPtr>
33916#endif
33917 (I);
33918 case PT_Float:
33919#ifdef GET_LINK_IMPL
33920 return emitRetFloat
33921#else
33922 return emitRet<PT_Float>
33923#endif
33924 (I);
33925 }
33926 llvm_unreachable("invalid enum value");
33927}
33928#endif
33929#ifdef GET_LINK_IMPL
33930bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
33931 return emitOp<>(OP_RetSint8, L);
33932}
33933bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
33934 return emitOp<>(OP_RetUint8, L);
33935}
33936bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
33937 return emitOp<>(OP_RetSint16, L);
33938}
33939bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
33940 return emitOp<>(OP_RetUint16, L);
33941}
33942bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
33943 return emitOp<>(OP_RetSint32, L);
33944}
33945bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
33946 return emitOp<>(OP_RetUint32, L);
33947}
33948bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
33949 return emitOp<>(OP_RetSint64, L);
33950}
33951bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
33952 return emitOp<>(OP_RetUint64, L);
33953}
33954bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
33955 return emitOp<>(OP_RetIntAP, L);
33956}
33957bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
33958 return emitOp<>(OP_RetIntAPS, L);
33959}
33960bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
33961 return emitOp<>(OP_RetBool, L);
33962}
33963bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
33964 return emitOp<>(OP_RetFixedPoint, L);
33965}
33966bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
33967 return emitOp<>(OP_RetPtr, L);
33968}
33969bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
33970 return emitOp<>(OP_RetMemberPtr, L);
33971}
33972bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
33973 return emitOp<>(OP_RetFloat, L);
33974}
33975#endif
33976#ifdef GET_OPCODE_NAMES
33977OP_RetValue,
33978#endif
33979#ifdef GET_INTERP
33980case OP_RetValue: {
33981 bool DoReturn = (S.Current == StartFrame);
33982 if (!RetValue(S, PC))
33983 return false;
33984 if (!S.Current || S.Current->isRoot())
33985 return true;
33986 if (DoReturn)
33987 return true;
33988 continue;
33989}
33990#endif
33991#ifdef GET_DISASM
33992case OP_RetValue:
33993 Text.Op = PrintName("RetValue");
33994 break;
33995#endif
33996#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33997bool emitRetValue(SourceInfo);
33998#endif
33999#ifdef GET_LINK_IMPL
34000bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
34001 return emitOp<>(OP_RetValue, L);
34002}
34003#endif
34004#ifdef GET_OPCODE_NAMES
34005OP_RetVoid,
34006#endif
34007#ifdef GET_INTERP
34008case OP_RetVoid: {
34009 bool DoReturn = (S.Current == StartFrame);
34010 if (!RetVoid(S, PC))
34011 return false;
34012 if (!S.Current || S.Current->isRoot())
34013 return true;
34014 if (DoReturn)
34015 return true;
34016 continue;
34017}
34018#endif
34019#ifdef GET_DISASM
34020case OP_RetVoid:
34021 Text.Op = PrintName("RetVoid");
34022 break;
34023#endif
34024#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34025bool emitRetVoid(SourceInfo);
34026#endif
34027#ifdef GET_LINK_IMPL
34028bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
34029 return emitOp<>(OP_RetVoid, L);
34030}
34031#endif
34032#ifdef GET_OPCODE_NAMES
34033OP_SetFieldSint8,
34034OP_SetFieldUint8,
34035OP_SetFieldSint16,
34036OP_SetFieldUint16,
34037OP_SetFieldSint32,
34038OP_SetFieldUint32,
34039OP_SetFieldSint64,
34040OP_SetFieldUint64,
34041OP_SetFieldIntAP,
34042OP_SetFieldIntAPS,
34043OP_SetFieldBool,
34044OP_SetFieldFixedPoint,
34045OP_SetFieldPtr,
34046OP_SetFieldMemberPtr,
34047OP_SetFieldFloat,
34048#endif
34049#ifdef GET_INTERP
34050case OP_SetFieldSint8: {
34051 const auto V0 = ReadArg<uint32_t>(S, PC);
34052 if (!SetField<PT_Sint8>(S, OpPC, V0))
34053 return false;
34054 continue;
34055}
34056case OP_SetFieldUint8: {
34057 const auto V0 = ReadArg<uint32_t>(S, PC);
34058 if (!SetField<PT_Uint8>(S, OpPC, V0))
34059 return false;
34060 continue;
34061}
34062case OP_SetFieldSint16: {
34063 const auto V0 = ReadArg<uint32_t>(S, PC);
34064 if (!SetField<PT_Sint16>(S, OpPC, V0))
34065 return false;
34066 continue;
34067}
34068case OP_SetFieldUint16: {
34069 const auto V0 = ReadArg<uint32_t>(S, PC);
34070 if (!SetField<PT_Uint16>(S, OpPC, V0))
34071 return false;
34072 continue;
34073}
34074case OP_SetFieldSint32: {
34075 const auto V0 = ReadArg<uint32_t>(S, PC);
34076 if (!SetField<PT_Sint32>(S, OpPC, V0))
34077 return false;
34078 continue;
34079}
34080case OP_SetFieldUint32: {
34081 const auto V0 = ReadArg<uint32_t>(S, PC);
34082 if (!SetField<PT_Uint32>(S, OpPC, V0))
34083 return false;
34084 continue;
34085}
34086case OP_SetFieldSint64: {
34087 const auto V0 = ReadArg<uint32_t>(S, PC);
34088 if (!SetField<PT_Sint64>(S, OpPC, V0))
34089 return false;
34090 continue;
34091}
34092case OP_SetFieldUint64: {
34093 const auto V0 = ReadArg<uint32_t>(S, PC);
34094 if (!SetField<PT_Uint64>(S, OpPC, V0))
34095 return false;
34096 continue;
34097}
34098case OP_SetFieldIntAP: {
34099 const auto V0 = ReadArg<uint32_t>(S, PC);
34100 if (!SetField<PT_IntAP>(S, OpPC, V0))
34101 return false;
34102 continue;
34103}
34104case OP_SetFieldIntAPS: {
34105 const auto V0 = ReadArg<uint32_t>(S, PC);
34106 if (!SetField<PT_IntAPS>(S, OpPC, V0))
34107 return false;
34108 continue;
34109}
34110case OP_SetFieldBool: {
34111 const auto V0 = ReadArg<uint32_t>(S, PC);
34112 if (!SetField<PT_Bool>(S, OpPC, V0))
34113 return false;
34114 continue;
34115}
34116case OP_SetFieldFixedPoint: {
34117 const auto V0 = ReadArg<uint32_t>(S, PC);
34118 if (!SetField<PT_FixedPoint>(S, OpPC, V0))
34119 return false;
34120 continue;
34121}
34122case OP_SetFieldPtr: {
34123 const auto V0 = ReadArg<uint32_t>(S, PC);
34124 if (!SetField<PT_Ptr>(S, OpPC, V0))
34125 return false;
34126 continue;
34127}
34128case OP_SetFieldMemberPtr: {
34129 const auto V0 = ReadArg<uint32_t>(S, PC);
34130 if (!SetField<PT_MemberPtr>(S, OpPC, V0))
34131 return false;
34132 continue;
34133}
34134case OP_SetFieldFloat: {
34135 const auto V0 = ReadArg<uint32_t>(S, PC);
34136 if (!SetField<PT_Float>(S, OpPC, V0))
34137 return false;
34138 continue;
34139}
34140#endif
34141#ifdef GET_DISASM
34142case OP_SetFieldSint8:
34143 Text.Op = PrintName("SetFieldSint8");
34144 Text.Args.push_back(printArg<uint32_t>(P, PC));
34145 break;
34146case OP_SetFieldUint8:
34147 Text.Op = PrintName("SetFieldUint8");
34148 Text.Args.push_back(printArg<uint32_t>(P, PC));
34149 break;
34150case OP_SetFieldSint16:
34151 Text.Op = PrintName("SetFieldSint16");
34152 Text.Args.push_back(printArg<uint32_t>(P, PC));
34153 break;
34154case OP_SetFieldUint16:
34155 Text.Op = PrintName("SetFieldUint16");
34156 Text.Args.push_back(printArg<uint32_t>(P, PC));
34157 break;
34158case OP_SetFieldSint32:
34159 Text.Op = PrintName("SetFieldSint32");
34160 Text.Args.push_back(printArg<uint32_t>(P, PC));
34161 break;
34162case OP_SetFieldUint32:
34163 Text.Op = PrintName("SetFieldUint32");
34164 Text.Args.push_back(printArg<uint32_t>(P, PC));
34165 break;
34166case OP_SetFieldSint64:
34167 Text.Op = PrintName("SetFieldSint64");
34168 Text.Args.push_back(printArg<uint32_t>(P, PC));
34169 break;
34170case OP_SetFieldUint64:
34171 Text.Op = PrintName("SetFieldUint64");
34172 Text.Args.push_back(printArg<uint32_t>(P, PC));
34173 break;
34174case OP_SetFieldIntAP:
34175 Text.Op = PrintName("SetFieldIntAP");
34176 Text.Args.push_back(printArg<uint32_t>(P, PC));
34177 break;
34178case OP_SetFieldIntAPS:
34179 Text.Op = PrintName("SetFieldIntAPS");
34180 Text.Args.push_back(printArg<uint32_t>(P, PC));
34181 break;
34182case OP_SetFieldBool:
34183 Text.Op = PrintName("SetFieldBool");
34184 Text.Args.push_back(printArg<uint32_t>(P, PC));
34185 break;
34186case OP_SetFieldFixedPoint:
34187 Text.Op = PrintName("SetFieldFixedPoint");
34188 Text.Args.push_back(printArg<uint32_t>(P, PC));
34189 break;
34190case OP_SetFieldPtr:
34191 Text.Op = PrintName("SetFieldPtr");
34192 Text.Args.push_back(printArg<uint32_t>(P, PC));
34193 break;
34194case OP_SetFieldMemberPtr:
34195 Text.Op = PrintName("SetFieldMemberPtr");
34196 Text.Args.push_back(printArg<uint32_t>(P, PC));
34197 break;
34198case OP_SetFieldFloat:
34199 Text.Op = PrintName("SetFieldFloat");
34200 Text.Args.push_back(printArg<uint32_t>(P, PC));
34201 break;
34202#endif
34203#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34204bool emitSetFieldSint8( uint32_t , SourceInfo);
34205bool emitSetFieldUint8( uint32_t , SourceInfo);
34206bool emitSetFieldSint16( uint32_t , SourceInfo);
34207bool emitSetFieldUint16( uint32_t , SourceInfo);
34208bool emitSetFieldSint32( uint32_t , SourceInfo);
34209bool emitSetFieldUint32( uint32_t , SourceInfo);
34210bool emitSetFieldSint64( uint32_t , SourceInfo);
34211bool emitSetFieldUint64( uint32_t , SourceInfo);
34212bool emitSetFieldIntAP( uint32_t , SourceInfo);
34213bool emitSetFieldIntAPS( uint32_t , SourceInfo);
34214bool emitSetFieldBool( uint32_t , SourceInfo);
34215bool emitSetFieldFixedPoint( uint32_t , SourceInfo);
34216bool emitSetFieldPtr( uint32_t , SourceInfo);
34217bool emitSetFieldMemberPtr( uint32_t , SourceInfo);
34218bool emitSetFieldFloat( uint32_t , SourceInfo);
34219#endif
34220#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34221[[nodiscard]] bool emitSetField(PrimType, uint32_t, SourceInfo I);
34222#endif
34223#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34224bool
34225#if defined(GET_EVAL_IMPL)
34226EvalEmitter
34227#else
34228ByteCodeEmitter
34229#endif
34230::emitSetField(PrimType T0, uint32_t A0, SourceInfo I) {
34231 switch (T0) {
34232 case PT_Sint8:
34233 return emitSetFieldSint8(A0, I);
34234 case PT_Uint8:
34235 return emitSetFieldUint8(A0, I);
34236 case PT_Sint16:
34237 return emitSetFieldSint16(A0, I);
34238 case PT_Uint16:
34239 return emitSetFieldUint16(A0, I);
34240 case PT_Sint32:
34241 return emitSetFieldSint32(A0, I);
34242 case PT_Uint32:
34243 return emitSetFieldUint32(A0, I);
34244 case PT_Sint64:
34245 return emitSetFieldSint64(A0, I);
34246 case PT_Uint64:
34247 return emitSetFieldUint64(A0, I);
34248 case PT_IntAP:
34249 return emitSetFieldIntAP(A0, I);
34250 case PT_IntAPS:
34251 return emitSetFieldIntAPS(A0, I);
34252 case PT_Bool:
34253 return emitSetFieldBool(A0, I);
34254 case PT_FixedPoint:
34255 return emitSetFieldFixedPoint(A0, I);
34256 case PT_Ptr:
34257 return emitSetFieldPtr(A0, I);
34258 case PT_MemberPtr:
34259 return emitSetFieldMemberPtr(A0, I);
34260 case PT_Float:
34261 return emitSetFieldFloat(A0, I);
34262 }
34263 llvm_unreachable("invalid enum value");
34264}
34265#endif
34266#ifdef GET_LINK_IMPL
34267bool ByteCodeEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
34268 return emitOp<uint32_t>(OP_SetFieldSint8, A0, L);
34269}
34270bool ByteCodeEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
34271 return emitOp<uint32_t>(OP_SetFieldUint8, A0, L);
34272}
34273bool ByteCodeEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
34274 return emitOp<uint32_t>(OP_SetFieldSint16, A0, L);
34275}
34276bool ByteCodeEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
34277 return emitOp<uint32_t>(OP_SetFieldUint16, A0, L);
34278}
34279bool ByteCodeEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
34280 return emitOp<uint32_t>(OP_SetFieldSint32, A0, L);
34281}
34282bool ByteCodeEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
34283 return emitOp<uint32_t>(OP_SetFieldUint32, A0, L);
34284}
34285bool ByteCodeEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
34286 return emitOp<uint32_t>(OP_SetFieldSint64, A0, L);
34287}
34288bool ByteCodeEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
34289 return emitOp<uint32_t>(OP_SetFieldUint64, A0, L);
34290}
34291bool ByteCodeEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
34292 return emitOp<uint32_t>(OP_SetFieldIntAP, A0, L);
34293}
34294bool ByteCodeEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
34295 return emitOp<uint32_t>(OP_SetFieldIntAPS, A0, L);
34296}
34297bool ByteCodeEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
34298 return emitOp<uint32_t>(OP_SetFieldBool, A0, L);
34299}
34300bool ByteCodeEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
34301 return emitOp<uint32_t>(OP_SetFieldFixedPoint, A0, L);
34302}
34303bool ByteCodeEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
34304 return emitOp<uint32_t>(OP_SetFieldPtr, A0, L);
34305}
34306bool ByteCodeEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
34307 return emitOp<uint32_t>(OP_SetFieldMemberPtr, A0, L);
34308}
34309bool ByteCodeEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
34310 return emitOp<uint32_t>(OP_SetFieldFloat, A0, L);
34311}
34312#endif
34313#ifdef GET_EVAL_IMPL
34314bool EvalEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
34315 if (!isActive()) return true;
34316 CurrentSource = L;
34317 return SetField<PT_Sint8>(S, OpPC, A0);
34318}
34319bool EvalEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
34320 if (!isActive()) return true;
34321 CurrentSource = L;
34322 return SetField<PT_Uint8>(S, OpPC, A0);
34323}
34324bool EvalEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
34325 if (!isActive()) return true;
34326 CurrentSource = L;
34327 return SetField<PT_Sint16>(S, OpPC, A0);
34328}
34329bool EvalEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
34330 if (!isActive()) return true;
34331 CurrentSource = L;
34332 return SetField<PT_Uint16>(S, OpPC, A0);
34333}
34334bool EvalEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
34335 if (!isActive()) return true;
34336 CurrentSource = L;
34337 return SetField<PT_Sint32>(S, OpPC, A0);
34338}
34339bool EvalEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
34340 if (!isActive()) return true;
34341 CurrentSource = L;
34342 return SetField<PT_Uint32>(S, OpPC, A0);
34343}
34344bool EvalEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
34345 if (!isActive()) return true;
34346 CurrentSource = L;
34347 return SetField<PT_Sint64>(S, OpPC, A0);
34348}
34349bool EvalEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
34350 if (!isActive()) return true;
34351 CurrentSource = L;
34352 return SetField<PT_Uint64>(S, OpPC, A0);
34353}
34354bool EvalEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
34355 if (!isActive()) return true;
34356 CurrentSource = L;
34357 return SetField<PT_IntAP>(S, OpPC, A0);
34358}
34359bool EvalEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
34360 if (!isActive()) return true;
34361 CurrentSource = L;
34362 return SetField<PT_IntAPS>(S, OpPC, A0);
34363}
34364bool EvalEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
34365 if (!isActive()) return true;
34366 CurrentSource = L;
34367 return SetField<PT_Bool>(S, OpPC, A0);
34368}
34369bool EvalEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
34370 if (!isActive()) return true;
34371 CurrentSource = L;
34372 return SetField<PT_FixedPoint>(S, OpPC, A0);
34373}
34374bool EvalEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
34375 if (!isActive()) return true;
34376 CurrentSource = L;
34377 return SetField<PT_Ptr>(S, OpPC, A0);
34378}
34379bool EvalEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
34380 if (!isActive()) return true;
34381 CurrentSource = L;
34382 return SetField<PT_MemberPtr>(S, OpPC, A0);
34383}
34384bool EvalEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
34385 if (!isActive()) return true;
34386 CurrentSource = L;
34387 return SetField<PT_Float>(S, OpPC, A0);
34388}
34389#endif
34390#ifdef GET_OPCODE_NAMES
34391OP_SetGlobalSint8,
34392OP_SetGlobalUint8,
34393OP_SetGlobalSint16,
34394OP_SetGlobalUint16,
34395OP_SetGlobalSint32,
34396OP_SetGlobalUint32,
34397OP_SetGlobalSint64,
34398OP_SetGlobalUint64,
34399OP_SetGlobalIntAP,
34400OP_SetGlobalIntAPS,
34401OP_SetGlobalBool,
34402OP_SetGlobalFixedPoint,
34403OP_SetGlobalPtr,
34404OP_SetGlobalMemberPtr,
34405OP_SetGlobalFloat,
34406#endif
34407#ifdef GET_INTERP
34408case OP_SetGlobalSint8: {
34409 const auto V0 = ReadArg<uint32_t>(S, PC);
34410 if (!SetGlobal<PT_Sint8>(S, OpPC, V0))
34411 return false;
34412 continue;
34413}
34414case OP_SetGlobalUint8: {
34415 const auto V0 = ReadArg<uint32_t>(S, PC);
34416 if (!SetGlobal<PT_Uint8>(S, OpPC, V0))
34417 return false;
34418 continue;
34419}
34420case OP_SetGlobalSint16: {
34421 const auto V0 = ReadArg<uint32_t>(S, PC);
34422 if (!SetGlobal<PT_Sint16>(S, OpPC, V0))
34423 return false;
34424 continue;
34425}
34426case OP_SetGlobalUint16: {
34427 const auto V0 = ReadArg<uint32_t>(S, PC);
34428 if (!SetGlobal<PT_Uint16>(S, OpPC, V0))
34429 return false;
34430 continue;
34431}
34432case OP_SetGlobalSint32: {
34433 const auto V0 = ReadArg<uint32_t>(S, PC);
34434 if (!SetGlobal<PT_Sint32>(S, OpPC, V0))
34435 return false;
34436 continue;
34437}
34438case OP_SetGlobalUint32: {
34439 const auto V0 = ReadArg<uint32_t>(S, PC);
34440 if (!SetGlobal<PT_Uint32>(S, OpPC, V0))
34441 return false;
34442 continue;
34443}
34444case OP_SetGlobalSint64: {
34445 const auto V0 = ReadArg<uint32_t>(S, PC);
34446 if (!SetGlobal<PT_Sint64>(S, OpPC, V0))
34447 return false;
34448 continue;
34449}
34450case OP_SetGlobalUint64: {
34451 const auto V0 = ReadArg<uint32_t>(S, PC);
34452 if (!SetGlobal<PT_Uint64>(S, OpPC, V0))
34453 return false;
34454 continue;
34455}
34456case OP_SetGlobalIntAP: {
34457 const auto V0 = ReadArg<uint32_t>(S, PC);
34458 if (!SetGlobal<PT_IntAP>(S, OpPC, V0))
34459 return false;
34460 continue;
34461}
34462case OP_SetGlobalIntAPS: {
34463 const auto V0 = ReadArg<uint32_t>(S, PC);
34464 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0))
34465 return false;
34466 continue;
34467}
34468case OP_SetGlobalBool: {
34469 const auto V0 = ReadArg<uint32_t>(S, PC);
34470 if (!SetGlobal<PT_Bool>(S, OpPC, V0))
34471 return false;
34472 continue;
34473}
34474case OP_SetGlobalFixedPoint: {
34475 const auto V0 = ReadArg<uint32_t>(S, PC);
34476 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0))
34477 return false;
34478 continue;
34479}
34480case OP_SetGlobalPtr: {
34481 const auto V0 = ReadArg<uint32_t>(S, PC);
34482 if (!SetGlobal<PT_Ptr>(S, OpPC, V0))
34483 return false;
34484 continue;
34485}
34486case OP_SetGlobalMemberPtr: {
34487 const auto V0 = ReadArg<uint32_t>(S, PC);
34488 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0))
34489 return false;
34490 continue;
34491}
34492case OP_SetGlobalFloat: {
34493 const auto V0 = ReadArg<uint32_t>(S, PC);
34494 if (!SetGlobal<PT_Float>(S, OpPC, V0))
34495 return false;
34496 continue;
34497}
34498#endif
34499#ifdef GET_DISASM
34500case OP_SetGlobalSint8:
34501 Text.Op = PrintName("SetGlobalSint8");
34502 Text.Args.push_back(printArg<uint32_t>(P, PC));
34503 break;
34504case OP_SetGlobalUint8:
34505 Text.Op = PrintName("SetGlobalUint8");
34506 Text.Args.push_back(printArg<uint32_t>(P, PC));
34507 break;
34508case OP_SetGlobalSint16:
34509 Text.Op = PrintName("SetGlobalSint16");
34510 Text.Args.push_back(printArg<uint32_t>(P, PC));
34511 break;
34512case OP_SetGlobalUint16:
34513 Text.Op = PrintName("SetGlobalUint16");
34514 Text.Args.push_back(printArg<uint32_t>(P, PC));
34515 break;
34516case OP_SetGlobalSint32:
34517 Text.Op = PrintName("SetGlobalSint32");
34518 Text.Args.push_back(printArg<uint32_t>(P, PC));
34519 break;
34520case OP_SetGlobalUint32:
34521 Text.Op = PrintName("SetGlobalUint32");
34522 Text.Args.push_back(printArg<uint32_t>(P, PC));
34523 break;
34524case OP_SetGlobalSint64:
34525 Text.Op = PrintName("SetGlobalSint64");
34526 Text.Args.push_back(printArg<uint32_t>(P, PC));
34527 break;
34528case OP_SetGlobalUint64:
34529 Text.Op = PrintName("SetGlobalUint64");
34530 Text.Args.push_back(printArg<uint32_t>(P, PC));
34531 break;
34532case OP_SetGlobalIntAP:
34533 Text.Op = PrintName("SetGlobalIntAP");
34534 Text.Args.push_back(printArg<uint32_t>(P, PC));
34535 break;
34536case OP_SetGlobalIntAPS:
34537 Text.Op = PrintName("SetGlobalIntAPS");
34538 Text.Args.push_back(printArg<uint32_t>(P, PC));
34539 break;
34540case OP_SetGlobalBool:
34541 Text.Op = PrintName("SetGlobalBool");
34542 Text.Args.push_back(printArg<uint32_t>(P, PC));
34543 break;
34544case OP_SetGlobalFixedPoint:
34545 Text.Op = PrintName("SetGlobalFixedPoint");
34546 Text.Args.push_back(printArg<uint32_t>(P, PC));
34547 break;
34548case OP_SetGlobalPtr:
34549 Text.Op = PrintName("SetGlobalPtr");
34550 Text.Args.push_back(printArg<uint32_t>(P, PC));
34551 break;
34552case OP_SetGlobalMemberPtr:
34553 Text.Op = PrintName("SetGlobalMemberPtr");
34554 Text.Args.push_back(printArg<uint32_t>(P, PC));
34555 break;
34556case OP_SetGlobalFloat:
34557 Text.Op = PrintName("SetGlobalFloat");
34558 Text.Args.push_back(printArg<uint32_t>(P, PC));
34559 break;
34560#endif
34561#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34562bool emitSetGlobalSint8( uint32_t , SourceInfo);
34563bool emitSetGlobalUint8( uint32_t , SourceInfo);
34564bool emitSetGlobalSint16( uint32_t , SourceInfo);
34565bool emitSetGlobalUint16( uint32_t , SourceInfo);
34566bool emitSetGlobalSint32( uint32_t , SourceInfo);
34567bool emitSetGlobalUint32( uint32_t , SourceInfo);
34568bool emitSetGlobalSint64( uint32_t , SourceInfo);
34569bool emitSetGlobalUint64( uint32_t , SourceInfo);
34570bool emitSetGlobalIntAP( uint32_t , SourceInfo);
34571bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
34572bool emitSetGlobalBool( uint32_t , SourceInfo);
34573bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
34574bool emitSetGlobalPtr( uint32_t , SourceInfo);
34575bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
34576bool emitSetGlobalFloat( uint32_t , SourceInfo);
34577#endif
34578#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34579[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
34580#endif
34581#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34582bool
34583#if defined(GET_EVAL_IMPL)
34584EvalEmitter
34585#else
34586ByteCodeEmitter
34587#endif
34588::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
34589 switch (T0) {
34590 case PT_Sint8:
34591 return emitSetGlobalSint8(A0, I);
34592 case PT_Uint8:
34593 return emitSetGlobalUint8(A0, I);
34594 case PT_Sint16:
34595 return emitSetGlobalSint16(A0, I);
34596 case PT_Uint16:
34597 return emitSetGlobalUint16(A0, I);
34598 case PT_Sint32:
34599 return emitSetGlobalSint32(A0, I);
34600 case PT_Uint32:
34601 return emitSetGlobalUint32(A0, I);
34602 case PT_Sint64:
34603 return emitSetGlobalSint64(A0, I);
34604 case PT_Uint64:
34605 return emitSetGlobalUint64(A0, I);
34606 case PT_IntAP:
34607 return emitSetGlobalIntAP(A0, I);
34608 case PT_IntAPS:
34609 return emitSetGlobalIntAPS(A0, I);
34610 case PT_Bool:
34611 return emitSetGlobalBool(A0, I);
34612 case PT_FixedPoint:
34613 return emitSetGlobalFixedPoint(A0, I);
34614 case PT_Ptr:
34615 return emitSetGlobalPtr(A0, I);
34616 case PT_MemberPtr:
34617 return emitSetGlobalMemberPtr(A0, I);
34618 case PT_Float:
34619 return emitSetGlobalFloat(A0, I);
34620 }
34621 llvm_unreachable("invalid enum value");
34622}
34623#endif
34624#ifdef GET_LINK_IMPL
34625bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
34626 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
34627}
34628bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
34629 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
34630}
34631bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
34632 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
34633}
34634bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
34635 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
34636}
34637bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
34638 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
34639}
34640bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
34641 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
34642}
34643bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
34644 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
34645}
34646bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
34647 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
34648}
34649bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
34650 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
34651}
34652bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
34653 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
34654}
34655bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
34656 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
34657}
34658bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34659 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
34660}
34661bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
34662 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
34663}
34664bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34665 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
34666}
34667bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
34668 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
34669}
34670#endif
34671#ifdef GET_EVAL_IMPL
34672bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
34673 if (!isActive()) return true;
34674 CurrentSource = L;
34675 return SetGlobal<PT_Sint8>(S, OpPC, A0);
34676}
34677bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
34678 if (!isActive()) return true;
34679 CurrentSource = L;
34680 return SetGlobal<PT_Uint8>(S, OpPC, A0);
34681}
34682bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
34683 if (!isActive()) return true;
34684 CurrentSource = L;
34685 return SetGlobal<PT_Sint16>(S, OpPC, A0);
34686}
34687bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
34688 if (!isActive()) return true;
34689 CurrentSource = L;
34690 return SetGlobal<PT_Uint16>(S, OpPC, A0);
34691}
34692bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
34693 if (!isActive()) return true;
34694 CurrentSource = L;
34695 return SetGlobal<PT_Sint32>(S, OpPC, A0);
34696}
34697bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
34698 if (!isActive()) return true;
34699 CurrentSource = L;
34700 return SetGlobal<PT_Uint32>(S, OpPC, A0);
34701}
34702bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
34703 if (!isActive()) return true;
34704 CurrentSource = L;
34705 return SetGlobal<PT_Sint64>(S, OpPC, A0);
34706}
34707bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
34708 if (!isActive()) return true;
34709 CurrentSource = L;
34710 return SetGlobal<PT_Uint64>(S, OpPC, A0);
34711}
34712bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
34713 if (!isActive()) return true;
34714 CurrentSource = L;
34715 return SetGlobal<PT_IntAP>(S, OpPC, A0);
34716}
34717bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
34718 if (!isActive()) return true;
34719 CurrentSource = L;
34720 return SetGlobal<PT_IntAPS>(S, OpPC, A0);
34721}
34722bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
34723 if (!isActive()) return true;
34724 CurrentSource = L;
34725 return SetGlobal<PT_Bool>(S, OpPC, A0);
34726}
34727bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34728 if (!isActive()) return true;
34729 CurrentSource = L;
34730 return SetGlobal<PT_FixedPoint>(S, OpPC, A0);
34731}
34732bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
34733 if (!isActive()) return true;
34734 CurrentSource = L;
34735 return SetGlobal<PT_Ptr>(S, OpPC, A0);
34736}
34737bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34738 if (!isActive()) return true;
34739 CurrentSource = L;
34740 return SetGlobal<PT_MemberPtr>(S, OpPC, A0);
34741}
34742bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
34743 if (!isActive()) return true;
34744 CurrentSource = L;
34745 return SetGlobal<PT_Float>(S, OpPC, A0);
34746}
34747#endif
34748#ifdef GET_OPCODE_NAMES
34749OP_SetLocalSint8,
34750OP_SetLocalUint8,
34751OP_SetLocalSint16,
34752OP_SetLocalUint16,
34753OP_SetLocalSint32,
34754OP_SetLocalUint32,
34755OP_SetLocalSint64,
34756OP_SetLocalUint64,
34757OP_SetLocalIntAP,
34758OP_SetLocalIntAPS,
34759OP_SetLocalBool,
34760OP_SetLocalFixedPoint,
34761OP_SetLocalPtr,
34762OP_SetLocalMemberPtr,
34763OP_SetLocalFloat,
34764#endif
34765#ifdef GET_INTERP
34766case OP_SetLocalSint8: {
34767 const auto V0 = ReadArg<uint32_t>(S, PC);
34768 if (!SetLocal<PT_Sint8>(S, OpPC, V0))
34769 return false;
34770 continue;
34771}
34772case OP_SetLocalUint8: {
34773 const auto V0 = ReadArg<uint32_t>(S, PC);
34774 if (!SetLocal<PT_Uint8>(S, OpPC, V0))
34775 return false;
34776 continue;
34777}
34778case OP_SetLocalSint16: {
34779 const auto V0 = ReadArg<uint32_t>(S, PC);
34780 if (!SetLocal<PT_Sint16>(S, OpPC, V0))
34781 return false;
34782 continue;
34783}
34784case OP_SetLocalUint16: {
34785 const auto V0 = ReadArg<uint32_t>(S, PC);
34786 if (!SetLocal<PT_Uint16>(S, OpPC, V0))
34787 return false;
34788 continue;
34789}
34790case OP_SetLocalSint32: {
34791 const auto V0 = ReadArg<uint32_t>(S, PC);
34792 if (!SetLocal<PT_Sint32>(S, OpPC, V0))
34793 return false;
34794 continue;
34795}
34796case OP_SetLocalUint32: {
34797 const auto V0 = ReadArg<uint32_t>(S, PC);
34798 if (!SetLocal<PT_Uint32>(S, OpPC, V0))
34799 return false;
34800 continue;
34801}
34802case OP_SetLocalSint64: {
34803 const auto V0 = ReadArg<uint32_t>(S, PC);
34804 if (!SetLocal<PT_Sint64>(S, OpPC, V0))
34805 return false;
34806 continue;
34807}
34808case OP_SetLocalUint64: {
34809 const auto V0 = ReadArg<uint32_t>(S, PC);
34810 if (!SetLocal<PT_Uint64>(S, OpPC, V0))
34811 return false;
34812 continue;
34813}
34814case OP_SetLocalIntAP: {
34815 const auto V0 = ReadArg<uint32_t>(S, PC);
34816 if (!SetLocal<PT_IntAP>(S, OpPC, V0))
34817 return false;
34818 continue;
34819}
34820case OP_SetLocalIntAPS: {
34821 const auto V0 = ReadArg<uint32_t>(S, PC);
34822 if (!SetLocal<PT_IntAPS>(S, OpPC, V0))
34823 return false;
34824 continue;
34825}
34826case OP_SetLocalBool: {
34827 const auto V0 = ReadArg<uint32_t>(S, PC);
34828 if (!SetLocal<PT_Bool>(S, OpPC, V0))
34829 return false;
34830 continue;
34831}
34832case OP_SetLocalFixedPoint: {
34833 const auto V0 = ReadArg<uint32_t>(S, PC);
34834 if (!SetLocal<PT_FixedPoint>(S, OpPC, V0))
34835 return false;
34836 continue;
34837}
34838case OP_SetLocalPtr: {
34839 const auto V0 = ReadArg<uint32_t>(S, PC);
34840 if (!SetLocal<PT_Ptr>(S, OpPC, V0))
34841 return false;
34842 continue;
34843}
34844case OP_SetLocalMemberPtr: {
34845 const auto V0 = ReadArg<uint32_t>(S, PC);
34846 if (!SetLocal<PT_MemberPtr>(S, OpPC, V0))
34847 return false;
34848 continue;
34849}
34850case OP_SetLocalFloat: {
34851 const auto V0 = ReadArg<uint32_t>(S, PC);
34852 if (!SetLocal<PT_Float>(S, OpPC, V0))
34853 return false;
34854 continue;
34855}
34856#endif
34857#ifdef GET_DISASM
34858case OP_SetLocalSint8:
34859 Text.Op = PrintName("SetLocalSint8");
34860 Text.Args.push_back(printArg<uint32_t>(P, PC));
34861 break;
34862case OP_SetLocalUint8:
34863 Text.Op = PrintName("SetLocalUint8");
34864 Text.Args.push_back(printArg<uint32_t>(P, PC));
34865 break;
34866case OP_SetLocalSint16:
34867 Text.Op = PrintName("SetLocalSint16");
34868 Text.Args.push_back(printArg<uint32_t>(P, PC));
34869 break;
34870case OP_SetLocalUint16:
34871 Text.Op = PrintName("SetLocalUint16");
34872 Text.Args.push_back(printArg<uint32_t>(P, PC));
34873 break;
34874case OP_SetLocalSint32:
34875 Text.Op = PrintName("SetLocalSint32");
34876 Text.Args.push_back(printArg<uint32_t>(P, PC));
34877 break;
34878case OP_SetLocalUint32:
34879 Text.Op = PrintName("SetLocalUint32");
34880 Text.Args.push_back(printArg<uint32_t>(P, PC));
34881 break;
34882case OP_SetLocalSint64:
34883 Text.Op = PrintName("SetLocalSint64");
34884 Text.Args.push_back(printArg<uint32_t>(P, PC));
34885 break;
34886case OP_SetLocalUint64:
34887 Text.Op = PrintName("SetLocalUint64");
34888 Text.Args.push_back(printArg<uint32_t>(P, PC));
34889 break;
34890case OP_SetLocalIntAP:
34891 Text.Op = PrintName("SetLocalIntAP");
34892 Text.Args.push_back(printArg<uint32_t>(P, PC));
34893 break;
34894case OP_SetLocalIntAPS:
34895 Text.Op = PrintName("SetLocalIntAPS");
34896 Text.Args.push_back(printArg<uint32_t>(P, PC));
34897 break;
34898case OP_SetLocalBool:
34899 Text.Op = PrintName("SetLocalBool");
34900 Text.Args.push_back(printArg<uint32_t>(P, PC));
34901 break;
34902case OP_SetLocalFixedPoint:
34903 Text.Op = PrintName("SetLocalFixedPoint");
34904 Text.Args.push_back(printArg<uint32_t>(P, PC));
34905 break;
34906case OP_SetLocalPtr:
34907 Text.Op = PrintName("SetLocalPtr");
34908 Text.Args.push_back(printArg<uint32_t>(P, PC));
34909 break;
34910case OP_SetLocalMemberPtr:
34911 Text.Op = PrintName("SetLocalMemberPtr");
34912 Text.Args.push_back(printArg<uint32_t>(P, PC));
34913 break;
34914case OP_SetLocalFloat:
34915 Text.Op = PrintName("SetLocalFloat");
34916 Text.Args.push_back(printArg<uint32_t>(P, PC));
34917 break;
34918#endif
34919#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34920bool emitSetLocalSint8( uint32_t , SourceInfo);
34921bool emitSetLocalUint8( uint32_t , SourceInfo);
34922bool emitSetLocalSint16( uint32_t , SourceInfo);
34923bool emitSetLocalUint16( uint32_t , SourceInfo);
34924bool emitSetLocalSint32( uint32_t , SourceInfo);
34925bool emitSetLocalUint32( uint32_t , SourceInfo);
34926bool emitSetLocalSint64( uint32_t , SourceInfo);
34927bool emitSetLocalUint64( uint32_t , SourceInfo);
34928bool emitSetLocalIntAP( uint32_t , SourceInfo);
34929bool emitSetLocalIntAPS( uint32_t , SourceInfo);
34930bool emitSetLocalBool( uint32_t , SourceInfo);
34931bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
34932bool emitSetLocalPtr( uint32_t , SourceInfo);
34933bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
34934bool emitSetLocalFloat( uint32_t , SourceInfo);
34935#if defined(GET_EVAL_PROTO)
34936template<PrimType>
34937bool emitSetLocal(uint32_t, SourceInfo);
34938#endif
34939#endif
34940#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34941[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
34942#endif
34943#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34944bool
34945#if defined(GET_EVAL_IMPL)
34946EvalEmitter
34947#else
34948ByteCodeEmitter
34949#endif
34950::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
34951 switch (T0) {
34952 case PT_Sint8:
34953#ifdef GET_LINK_IMPL
34954 return emitSetLocalSint8
34955#else
34956 return emitSetLocal<PT_Sint8>
34957#endif
34958 (A0, I);
34959 case PT_Uint8:
34960#ifdef GET_LINK_IMPL
34961 return emitSetLocalUint8
34962#else
34963 return emitSetLocal<PT_Uint8>
34964#endif
34965 (A0, I);
34966 case PT_Sint16:
34967#ifdef GET_LINK_IMPL
34968 return emitSetLocalSint16
34969#else
34970 return emitSetLocal<PT_Sint16>
34971#endif
34972 (A0, I);
34973 case PT_Uint16:
34974#ifdef GET_LINK_IMPL
34975 return emitSetLocalUint16
34976#else
34977 return emitSetLocal<PT_Uint16>
34978#endif
34979 (A0, I);
34980 case PT_Sint32:
34981#ifdef GET_LINK_IMPL
34982 return emitSetLocalSint32
34983#else
34984 return emitSetLocal<PT_Sint32>
34985#endif
34986 (A0, I);
34987 case PT_Uint32:
34988#ifdef GET_LINK_IMPL
34989 return emitSetLocalUint32
34990#else
34991 return emitSetLocal<PT_Uint32>
34992#endif
34993 (A0, I);
34994 case PT_Sint64:
34995#ifdef GET_LINK_IMPL
34996 return emitSetLocalSint64
34997#else
34998 return emitSetLocal<PT_Sint64>
34999#endif
35000 (A0, I);
35001 case PT_Uint64:
35002#ifdef GET_LINK_IMPL
35003 return emitSetLocalUint64
35004#else
35005 return emitSetLocal<PT_Uint64>
35006#endif
35007 (A0, I);
35008 case PT_IntAP:
35009#ifdef GET_LINK_IMPL
35010 return emitSetLocalIntAP
35011#else
35012 return emitSetLocal<PT_IntAP>
35013#endif
35014 (A0, I);
35015 case PT_IntAPS:
35016#ifdef GET_LINK_IMPL
35017 return emitSetLocalIntAPS
35018#else
35019 return emitSetLocal<PT_IntAPS>
35020#endif
35021 (A0, I);
35022 case PT_Bool:
35023#ifdef GET_LINK_IMPL
35024 return emitSetLocalBool
35025#else
35026 return emitSetLocal<PT_Bool>
35027#endif
35028 (A0, I);
35029 case PT_FixedPoint:
35030#ifdef GET_LINK_IMPL
35031 return emitSetLocalFixedPoint
35032#else
35033 return emitSetLocal<PT_FixedPoint>
35034#endif
35035 (A0, I);
35036 case PT_Ptr:
35037#ifdef GET_LINK_IMPL
35038 return emitSetLocalPtr
35039#else
35040 return emitSetLocal<PT_Ptr>
35041#endif
35042 (A0, I);
35043 case PT_MemberPtr:
35044#ifdef GET_LINK_IMPL
35045 return emitSetLocalMemberPtr
35046#else
35047 return emitSetLocal<PT_MemberPtr>
35048#endif
35049 (A0, I);
35050 case PT_Float:
35051#ifdef GET_LINK_IMPL
35052 return emitSetLocalFloat
35053#else
35054 return emitSetLocal<PT_Float>
35055#endif
35056 (A0, I);
35057 }
35058 llvm_unreachable("invalid enum value");
35059}
35060#endif
35061#ifdef GET_LINK_IMPL
35062bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
35063 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
35064}
35065bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
35066 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
35067}
35068bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
35069 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
35070}
35071bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
35072 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
35073}
35074bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
35075 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
35076}
35077bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
35078 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
35079}
35080bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
35081 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
35082}
35083bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
35084 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
35085}
35086bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
35087 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
35088}
35089bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
35090 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
35091}
35092bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
35093 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
35094}
35095bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
35096 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
35097}
35098bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
35099 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
35100}
35101bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
35102 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
35103}
35104bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
35105 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
35106}
35107#endif
35108#ifdef GET_OPCODE_NAMES
35109OP_SetParamSint8,
35110OP_SetParamUint8,
35111OP_SetParamSint16,
35112OP_SetParamUint16,
35113OP_SetParamSint32,
35114OP_SetParamUint32,
35115OP_SetParamSint64,
35116OP_SetParamUint64,
35117OP_SetParamIntAP,
35118OP_SetParamIntAPS,
35119OP_SetParamBool,
35120OP_SetParamFixedPoint,
35121OP_SetParamPtr,
35122OP_SetParamMemberPtr,
35123OP_SetParamFloat,
35124#endif
35125#ifdef GET_INTERP
35126case OP_SetParamSint8: {
35127 const auto V0 = ReadArg<uint32_t>(S, PC);
35128 if (!SetParam<PT_Sint8>(S, OpPC, V0))
35129 return false;
35130 continue;
35131}
35132case OP_SetParamUint8: {
35133 const auto V0 = ReadArg<uint32_t>(S, PC);
35134 if (!SetParam<PT_Uint8>(S, OpPC, V0))
35135 return false;
35136 continue;
35137}
35138case OP_SetParamSint16: {
35139 const auto V0 = ReadArg<uint32_t>(S, PC);
35140 if (!SetParam<PT_Sint16>(S, OpPC, V0))
35141 return false;
35142 continue;
35143}
35144case OP_SetParamUint16: {
35145 const auto V0 = ReadArg<uint32_t>(S, PC);
35146 if (!SetParam<PT_Uint16>(S, OpPC, V0))
35147 return false;
35148 continue;
35149}
35150case OP_SetParamSint32: {
35151 const auto V0 = ReadArg<uint32_t>(S, PC);
35152 if (!SetParam<PT_Sint32>(S, OpPC, V0))
35153 return false;
35154 continue;
35155}
35156case OP_SetParamUint32: {
35157 const auto V0 = ReadArg<uint32_t>(S, PC);
35158 if (!SetParam<PT_Uint32>(S, OpPC, V0))
35159 return false;
35160 continue;
35161}
35162case OP_SetParamSint64: {
35163 const auto V0 = ReadArg<uint32_t>(S, PC);
35164 if (!SetParam<PT_Sint64>(S, OpPC, V0))
35165 return false;
35166 continue;
35167}
35168case OP_SetParamUint64: {
35169 const auto V0 = ReadArg<uint32_t>(S, PC);
35170 if (!SetParam<PT_Uint64>(S, OpPC, V0))
35171 return false;
35172 continue;
35173}
35174case OP_SetParamIntAP: {
35175 const auto V0 = ReadArg<uint32_t>(S, PC);
35176 if (!SetParam<PT_IntAP>(S, OpPC, V0))
35177 return false;
35178 continue;
35179}
35180case OP_SetParamIntAPS: {
35181 const auto V0 = ReadArg<uint32_t>(S, PC);
35182 if (!SetParam<PT_IntAPS>(S, OpPC, V0))
35183 return false;
35184 continue;
35185}
35186case OP_SetParamBool: {
35187 const auto V0 = ReadArg<uint32_t>(S, PC);
35188 if (!SetParam<PT_Bool>(S, OpPC, V0))
35189 return false;
35190 continue;
35191}
35192case OP_SetParamFixedPoint: {
35193 const auto V0 = ReadArg<uint32_t>(S, PC);
35194 if (!SetParam<PT_FixedPoint>(S, OpPC, V0))
35195 return false;
35196 continue;
35197}
35198case OP_SetParamPtr: {
35199 const auto V0 = ReadArg<uint32_t>(S, PC);
35200 if (!SetParam<PT_Ptr>(S, OpPC, V0))
35201 return false;
35202 continue;
35203}
35204case OP_SetParamMemberPtr: {
35205 const auto V0 = ReadArg<uint32_t>(S, PC);
35206 if (!SetParam<PT_MemberPtr>(S, OpPC, V0))
35207 return false;
35208 continue;
35209}
35210case OP_SetParamFloat: {
35211 const auto V0 = ReadArg<uint32_t>(S, PC);
35212 if (!SetParam<PT_Float>(S, OpPC, V0))
35213 return false;
35214 continue;
35215}
35216#endif
35217#ifdef GET_DISASM
35218case OP_SetParamSint8:
35219 Text.Op = PrintName("SetParamSint8");
35220 Text.Args.push_back(printArg<uint32_t>(P, PC));
35221 break;
35222case OP_SetParamUint8:
35223 Text.Op = PrintName("SetParamUint8");
35224 Text.Args.push_back(printArg<uint32_t>(P, PC));
35225 break;
35226case OP_SetParamSint16:
35227 Text.Op = PrintName("SetParamSint16");
35228 Text.Args.push_back(printArg<uint32_t>(P, PC));
35229 break;
35230case OP_SetParamUint16:
35231 Text.Op = PrintName("SetParamUint16");
35232 Text.Args.push_back(printArg<uint32_t>(P, PC));
35233 break;
35234case OP_SetParamSint32:
35235 Text.Op = PrintName("SetParamSint32");
35236 Text.Args.push_back(printArg<uint32_t>(P, PC));
35237 break;
35238case OP_SetParamUint32:
35239 Text.Op = PrintName("SetParamUint32");
35240 Text.Args.push_back(printArg<uint32_t>(P, PC));
35241 break;
35242case OP_SetParamSint64:
35243 Text.Op = PrintName("SetParamSint64");
35244 Text.Args.push_back(printArg<uint32_t>(P, PC));
35245 break;
35246case OP_SetParamUint64:
35247 Text.Op = PrintName("SetParamUint64");
35248 Text.Args.push_back(printArg<uint32_t>(P, PC));
35249 break;
35250case OP_SetParamIntAP:
35251 Text.Op = PrintName("SetParamIntAP");
35252 Text.Args.push_back(printArg<uint32_t>(P, PC));
35253 break;
35254case OP_SetParamIntAPS:
35255 Text.Op = PrintName("SetParamIntAPS");
35256 Text.Args.push_back(printArg<uint32_t>(P, PC));
35257 break;
35258case OP_SetParamBool:
35259 Text.Op = PrintName("SetParamBool");
35260 Text.Args.push_back(printArg<uint32_t>(P, PC));
35261 break;
35262case OP_SetParamFixedPoint:
35263 Text.Op = PrintName("SetParamFixedPoint");
35264 Text.Args.push_back(printArg<uint32_t>(P, PC));
35265 break;
35266case OP_SetParamPtr:
35267 Text.Op = PrintName("SetParamPtr");
35268 Text.Args.push_back(printArg<uint32_t>(P, PC));
35269 break;
35270case OP_SetParamMemberPtr:
35271 Text.Op = PrintName("SetParamMemberPtr");
35272 Text.Args.push_back(printArg<uint32_t>(P, PC));
35273 break;
35274case OP_SetParamFloat:
35275 Text.Op = PrintName("SetParamFloat");
35276 Text.Args.push_back(printArg<uint32_t>(P, PC));
35277 break;
35278#endif
35279#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35280bool emitSetParamSint8( uint32_t , SourceInfo);
35281bool emitSetParamUint8( uint32_t , SourceInfo);
35282bool emitSetParamSint16( uint32_t , SourceInfo);
35283bool emitSetParamUint16( uint32_t , SourceInfo);
35284bool emitSetParamSint32( uint32_t , SourceInfo);
35285bool emitSetParamUint32( uint32_t , SourceInfo);
35286bool emitSetParamSint64( uint32_t , SourceInfo);
35287bool emitSetParamUint64( uint32_t , SourceInfo);
35288bool emitSetParamIntAP( uint32_t , SourceInfo);
35289bool emitSetParamIntAPS( uint32_t , SourceInfo);
35290bool emitSetParamBool( uint32_t , SourceInfo);
35291bool emitSetParamFixedPoint( uint32_t , SourceInfo);
35292bool emitSetParamPtr( uint32_t , SourceInfo);
35293bool emitSetParamMemberPtr( uint32_t , SourceInfo);
35294bool emitSetParamFloat( uint32_t , SourceInfo);
35295#endif
35296#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35297[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
35298#endif
35299#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35300bool
35301#if defined(GET_EVAL_IMPL)
35302EvalEmitter
35303#else
35304ByteCodeEmitter
35305#endif
35306::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
35307 switch (T0) {
35308 case PT_Sint8:
35309 return emitSetParamSint8(A0, I);
35310 case PT_Uint8:
35311 return emitSetParamUint8(A0, I);
35312 case PT_Sint16:
35313 return emitSetParamSint16(A0, I);
35314 case PT_Uint16:
35315 return emitSetParamUint16(A0, I);
35316 case PT_Sint32:
35317 return emitSetParamSint32(A0, I);
35318 case PT_Uint32:
35319 return emitSetParamUint32(A0, I);
35320 case PT_Sint64:
35321 return emitSetParamSint64(A0, I);
35322 case PT_Uint64:
35323 return emitSetParamUint64(A0, I);
35324 case PT_IntAP:
35325 return emitSetParamIntAP(A0, I);
35326 case PT_IntAPS:
35327 return emitSetParamIntAPS(A0, I);
35328 case PT_Bool:
35329 return emitSetParamBool(A0, I);
35330 case PT_FixedPoint:
35331 return emitSetParamFixedPoint(A0, I);
35332 case PT_Ptr:
35333 return emitSetParamPtr(A0, I);
35334 case PT_MemberPtr:
35335 return emitSetParamMemberPtr(A0, I);
35336 case PT_Float:
35337 return emitSetParamFloat(A0, I);
35338 }
35339 llvm_unreachable("invalid enum value");
35340}
35341#endif
35342#ifdef GET_LINK_IMPL
35343bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
35344 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
35345}
35346bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
35347 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
35348}
35349bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
35350 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
35351}
35352bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
35353 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
35354}
35355bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
35356 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
35357}
35358bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
35359 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
35360}
35361bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
35362 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
35363}
35364bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
35365 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
35366}
35367bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
35368 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
35369}
35370bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
35371 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
35372}
35373bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
35374 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
35375}
35376bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
35377 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
35378}
35379bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
35380 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
35381}
35382bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
35383 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
35384}
35385bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
35386 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
35387}
35388#endif
35389#ifdef GET_EVAL_IMPL
35390bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
35391 if (!isActive()) return true;
35392 CurrentSource = L;
35393 return SetParam<PT_Sint8>(S, OpPC, A0);
35394}
35395bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
35396 if (!isActive()) return true;
35397 CurrentSource = L;
35398 return SetParam<PT_Uint8>(S, OpPC, A0);
35399}
35400bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
35401 if (!isActive()) return true;
35402 CurrentSource = L;
35403 return SetParam<PT_Sint16>(S, OpPC, A0);
35404}
35405bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
35406 if (!isActive()) return true;
35407 CurrentSource = L;
35408 return SetParam<PT_Uint16>(S, OpPC, A0);
35409}
35410bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
35411 if (!isActive()) return true;
35412 CurrentSource = L;
35413 return SetParam<PT_Sint32>(S, OpPC, A0);
35414}
35415bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
35416 if (!isActive()) return true;
35417 CurrentSource = L;
35418 return SetParam<PT_Uint32>(S, OpPC, A0);
35419}
35420bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
35421 if (!isActive()) return true;
35422 CurrentSource = L;
35423 return SetParam<PT_Sint64>(S, OpPC, A0);
35424}
35425bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
35426 if (!isActive()) return true;
35427 CurrentSource = L;
35428 return SetParam<PT_Uint64>(S, OpPC, A0);
35429}
35430bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
35431 if (!isActive()) return true;
35432 CurrentSource = L;
35433 return SetParam<PT_IntAP>(S, OpPC, A0);
35434}
35435bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
35436 if (!isActive()) return true;
35437 CurrentSource = L;
35438 return SetParam<PT_IntAPS>(S, OpPC, A0);
35439}
35440bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
35441 if (!isActive()) return true;
35442 CurrentSource = L;
35443 return SetParam<PT_Bool>(S, OpPC, A0);
35444}
35445bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
35446 if (!isActive()) return true;
35447 CurrentSource = L;
35448 return SetParam<PT_FixedPoint>(S, OpPC, A0);
35449}
35450bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
35451 if (!isActive()) return true;
35452 CurrentSource = L;
35453 return SetParam<PT_Ptr>(S, OpPC, A0);
35454}
35455bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
35456 if (!isActive()) return true;
35457 CurrentSource = L;
35458 return SetParam<PT_MemberPtr>(S, OpPC, A0);
35459}
35460bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
35461 if (!isActive()) return true;
35462 CurrentSource = L;
35463 return SetParam<PT_Float>(S, OpPC, A0);
35464}
35465#endif
35466#ifdef GET_OPCODE_NAMES
35467OP_SetThisFieldSint8,
35468OP_SetThisFieldUint8,
35469OP_SetThisFieldSint16,
35470OP_SetThisFieldUint16,
35471OP_SetThisFieldSint32,
35472OP_SetThisFieldUint32,
35473OP_SetThisFieldSint64,
35474OP_SetThisFieldUint64,
35475OP_SetThisFieldIntAP,
35476OP_SetThisFieldIntAPS,
35477OP_SetThisFieldBool,
35478OP_SetThisFieldFixedPoint,
35479OP_SetThisFieldPtr,
35480OP_SetThisFieldMemberPtr,
35481OP_SetThisFieldFloat,
35482#endif
35483#ifdef GET_INTERP
35484case OP_SetThisFieldSint8: {
35485 const auto V0 = ReadArg<uint32_t>(S, PC);
35486 if (!SetThisField<PT_Sint8>(S, OpPC, V0))
35487 return false;
35488 continue;
35489}
35490case OP_SetThisFieldUint8: {
35491 const auto V0 = ReadArg<uint32_t>(S, PC);
35492 if (!SetThisField<PT_Uint8>(S, OpPC, V0))
35493 return false;
35494 continue;
35495}
35496case OP_SetThisFieldSint16: {
35497 const auto V0 = ReadArg<uint32_t>(S, PC);
35498 if (!SetThisField<PT_Sint16>(S, OpPC, V0))
35499 return false;
35500 continue;
35501}
35502case OP_SetThisFieldUint16: {
35503 const auto V0 = ReadArg<uint32_t>(S, PC);
35504 if (!SetThisField<PT_Uint16>(S, OpPC, V0))
35505 return false;
35506 continue;
35507}
35508case OP_SetThisFieldSint32: {
35509 const auto V0 = ReadArg<uint32_t>(S, PC);
35510 if (!SetThisField<PT_Sint32>(S, OpPC, V0))
35511 return false;
35512 continue;
35513}
35514case OP_SetThisFieldUint32: {
35515 const auto V0 = ReadArg<uint32_t>(S, PC);
35516 if (!SetThisField<PT_Uint32>(S, OpPC, V0))
35517 return false;
35518 continue;
35519}
35520case OP_SetThisFieldSint64: {
35521 const auto V0 = ReadArg<uint32_t>(S, PC);
35522 if (!SetThisField<PT_Sint64>(S, OpPC, V0))
35523 return false;
35524 continue;
35525}
35526case OP_SetThisFieldUint64: {
35527 const auto V0 = ReadArg<uint32_t>(S, PC);
35528 if (!SetThisField<PT_Uint64>(S, OpPC, V0))
35529 return false;
35530 continue;
35531}
35532case OP_SetThisFieldIntAP: {
35533 const auto V0 = ReadArg<uint32_t>(S, PC);
35534 if (!SetThisField<PT_IntAP>(S, OpPC, V0))
35535 return false;
35536 continue;
35537}
35538case OP_SetThisFieldIntAPS: {
35539 const auto V0 = ReadArg<uint32_t>(S, PC);
35540 if (!SetThisField<PT_IntAPS>(S, OpPC, V0))
35541 return false;
35542 continue;
35543}
35544case OP_SetThisFieldBool: {
35545 const auto V0 = ReadArg<uint32_t>(S, PC);
35546 if (!SetThisField<PT_Bool>(S, OpPC, V0))
35547 return false;
35548 continue;
35549}
35550case OP_SetThisFieldFixedPoint: {
35551 const auto V0 = ReadArg<uint32_t>(S, PC);
35552 if (!SetThisField<PT_FixedPoint>(S, OpPC, V0))
35553 return false;
35554 continue;
35555}
35556case OP_SetThisFieldPtr: {
35557 const auto V0 = ReadArg<uint32_t>(S, PC);
35558 if (!SetThisField<PT_Ptr>(S, OpPC, V0))
35559 return false;
35560 continue;
35561}
35562case OP_SetThisFieldMemberPtr: {
35563 const auto V0 = ReadArg<uint32_t>(S, PC);
35564 if (!SetThisField<PT_MemberPtr>(S, OpPC, V0))
35565 return false;
35566 continue;
35567}
35568case OP_SetThisFieldFloat: {
35569 const auto V0 = ReadArg<uint32_t>(S, PC);
35570 if (!SetThisField<PT_Float>(S, OpPC, V0))
35571 return false;
35572 continue;
35573}
35574#endif
35575#ifdef GET_DISASM
35576case OP_SetThisFieldSint8:
35577 Text.Op = PrintName("SetThisFieldSint8");
35578 Text.Args.push_back(printArg<uint32_t>(P, PC));
35579 break;
35580case OP_SetThisFieldUint8:
35581 Text.Op = PrintName("SetThisFieldUint8");
35582 Text.Args.push_back(printArg<uint32_t>(P, PC));
35583 break;
35584case OP_SetThisFieldSint16:
35585 Text.Op = PrintName("SetThisFieldSint16");
35586 Text.Args.push_back(printArg<uint32_t>(P, PC));
35587 break;
35588case OP_SetThisFieldUint16:
35589 Text.Op = PrintName("SetThisFieldUint16");
35590 Text.Args.push_back(printArg<uint32_t>(P, PC));
35591 break;
35592case OP_SetThisFieldSint32:
35593 Text.Op = PrintName("SetThisFieldSint32");
35594 Text.Args.push_back(printArg<uint32_t>(P, PC));
35595 break;
35596case OP_SetThisFieldUint32:
35597 Text.Op = PrintName("SetThisFieldUint32");
35598 Text.Args.push_back(printArg<uint32_t>(P, PC));
35599 break;
35600case OP_SetThisFieldSint64:
35601 Text.Op = PrintName("SetThisFieldSint64");
35602 Text.Args.push_back(printArg<uint32_t>(P, PC));
35603 break;
35604case OP_SetThisFieldUint64:
35605 Text.Op = PrintName("SetThisFieldUint64");
35606 Text.Args.push_back(printArg<uint32_t>(P, PC));
35607 break;
35608case OP_SetThisFieldIntAP:
35609 Text.Op = PrintName("SetThisFieldIntAP");
35610 Text.Args.push_back(printArg<uint32_t>(P, PC));
35611 break;
35612case OP_SetThisFieldIntAPS:
35613 Text.Op = PrintName("SetThisFieldIntAPS");
35614 Text.Args.push_back(printArg<uint32_t>(P, PC));
35615 break;
35616case OP_SetThisFieldBool:
35617 Text.Op = PrintName("SetThisFieldBool");
35618 Text.Args.push_back(printArg<uint32_t>(P, PC));
35619 break;
35620case OP_SetThisFieldFixedPoint:
35621 Text.Op = PrintName("SetThisFieldFixedPoint");
35622 Text.Args.push_back(printArg<uint32_t>(P, PC));
35623 break;
35624case OP_SetThisFieldPtr:
35625 Text.Op = PrintName("SetThisFieldPtr");
35626 Text.Args.push_back(printArg<uint32_t>(P, PC));
35627 break;
35628case OP_SetThisFieldMemberPtr:
35629 Text.Op = PrintName("SetThisFieldMemberPtr");
35630 Text.Args.push_back(printArg<uint32_t>(P, PC));
35631 break;
35632case OP_SetThisFieldFloat:
35633 Text.Op = PrintName("SetThisFieldFloat");
35634 Text.Args.push_back(printArg<uint32_t>(P, PC));
35635 break;
35636#endif
35637#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35638bool emitSetThisFieldSint8( uint32_t , SourceInfo);
35639bool emitSetThisFieldUint8( uint32_t , SourceInfo);
35640bool emitSetThisFieldSint16( uint32_t , SourceInfo);
35641bool emitSetThisFieldUint16( uint32_t , SourceInfo);
35642bool emitSetThisFieldSint32( uint32_t , SourceInfo);
35643bool emitSetThisFieldUint32( uint32_t , SourceInfo);
35644bool emitSetThisFieldSint64( uint32_t , SourceInfo);
35645bool emitSetThisFieldUint64( uint32_t , SourceInfo);
35646bool emitSetThisFieldIntAP( uint32_t , SourceInfo);
35647bool emitSetThisFieldIntAPS( uint32_t , SourceInfo);
35648bool emitSetThisFieldBool( uint32_t , SourceInfo);
35649bool emitSetThisFieldFixedPoint( uint32_t , SourceInfo);
35650bool emitSetThisFieldPtr( uint32_t , SourceInfo);
35651bool emitSetThisFieldMemberPtr( uint32_t , SourceInfo);
35652bool emitSetThisFieldFloat( uint32_t , SourceInfo);
35653#endif
35654#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35655[[nodiscard]] bool emitSetThisField(PrimType, uint32_t, SourceInfo I);
35656#endif
35657#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35658bool
35659#if defined(GET_EVAL_IMPL)
35660EvalEmitter
35661#else
35662ByteCodeEmitter
35663#endif
35664::emitSetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
35665 switch (T0) {
35666 case PT_Sint8:
35667 return emitSetThisFieldSint8(A0, I);
35668 case PT_Uint8:
35669 return emitSetThisFieldUint8(A0, I);
35670 case PT_Sint16:
35671 return emitSetThisFieldSint16(A0, I);
35672 case PT_Uint16:
35673 return emitSetThisFieldUint16(A0, I);
35674 case PT_Sint32:
35675 return emitSetThisFieldSint32(A0, I);
35676 case PT_Uint32:
35677 return emitSetThisFieldUint32(A0, I);
35678 case PT_Sint64:
35679 return emitSetThisFieldSint64(A0, I);
35680 case PT_Uint64:
35681 return emitSetThisFieldUint64(A0, I);
35682 case PT_IntAP:
35683 return emitSetThisFieldIntAP(A0, I);
35684 case PT_IntAPS:
35685 return emitSetThisFieldIntAPS(A0, I);
35686 case PT_Bool:
35687 return emitSetThisFieldBool(A0, I);
35688 case PT_FixedPoint:
35689 return emitSetThisFieldFixedPoint(A0, I);
35690 case PT_Ptr:
35691 return emitSetThisFieldPtr(A0, I);
35692 case PT_MemberPtr:
35693 return emitSetThisFieldMemberPtr(A0, I);
35694 case PT_Float:
35695 return emitSetThisFieldFloat(A0, I);
35696 }
35697 llvm_unreachable("invalid enum value");
35698}
35699#endif
35700#ifdef GET_LINK_IMPL
35701bool ByteCodeEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
35702 return emitOp<uint32_t>(OP_SetThisFieldSint8, A0, L);
35703}
35704bool ByteCodeEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
35705 return emitOp<uint32_t>(OP_SetThisFieldUint8, A0, L);
35706}
35707bool ByteCodeEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
35708 return emitOp<uint32_t>(OP_SetThisFieldSint16, A0, L);
35709}
35710bool ByteCodeEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
35711 return emitOp<uint32_t>(OP_SetThisFieldUint16, A0, L);
35712}
35713bool ByteCodeEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
35714 return emitOp<uint32_t>(OP_SetThisFieldSint32, A0, L);
35715}
35716bool ByteCodeEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
35717 return emitOp<uint32_t>(OP_SetThisFieldUint32, A0, L);
35718}
35719bool ByteCodeEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
35720 return emitOp<uint32_t>(OP_SetThisFieldSint64, A0, L);
35721}
35722bool ByteCodeEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
35723 return emitOp<uint32_t>(OP_SetThisFieldUint64, A0, L);
35724}
35725bool ByteCodeEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
35726 return emitOp<uint32_t>(OP_SetThisFieldIntAP, A0, L);
35727}
35728bool ByteCodeEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35729 return emitOp<uint32_t>(OP_SetThisFieldIntAPS, A0, L);
35730}
35731bool ByteCodeEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
35732 return emitOp<uint32_t>(OP_SetThisFieldBool, A0, L);
35733}
35734bool ByteCodeEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35735 return emitOp<uint32_t>(OP_SetThisFieldFixedPoint, A0, L);
35736}
35737bool ByteCodeEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
35738 return emitOp<uint32_t>(OP_SetThisFieldPtr, A0, L);
35739}
35740bool ByteCodeEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35741 return emitOp<uint32_t>(OP_SetThisFieldMemberPtr, A0, L);
35742}
35743bool ByteCodeEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
35744 return emitOp<uint32_t>(OP_SetThisFieldFloat, A0, L);
35745}
35746#endif
35747#ifdef GET_EVAL_IMPL
35748bool EvalEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
35749 if (!isActive()) return true;
35750 CurrentSource = L;
35751 return SetThisField<PT_Sint8>(S, OpPC, A0);
35752}
35753bool EvalEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
35754 if (!isActive()) return true;
35755 CurrentSource = L;
35756 return SetThisField<PT_Uint8>(S, OpPC, A0);
35757}
35758bool EvalEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
35759 if (!isActive()) return true;
35760 CurrentSource = L;
35761 return SetThisField<PT_Sint16>(S, OpPC, A0);
35762}
35763bool EvalEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
35764 if (!isActive()) return true;
35765 CurrentSource = L;
35766 return SetThisField<PT_Uint16>(S, OpPC, A0);
35767}
35768bool EvalEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
35769 if (!isActive()) return true;
35770 CurrentSource = L;
35771 return SetThisField<PT_Sint32>(S, OpPC, A0);
35772}
35773bool EvalEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
35774 if (!isActive()) return true;
35775 CurrentSource = L;
35776 return SetThisField<PT_Uint32>(S, OpPC, A0);
35777}
35778bool EvalEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
35779 if (!isActive()) return true;
35780 CurrentSource = L;
35781 return SetThisField<PT_Sint64>(S, OpPC, A0);
35782}
35783bool EvalEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
35784 if (!isActive()) return true;
35785 CurrentSource = L;
35786 return SetThisField<PT_Uint64>(S, OpPC, A0);
35787}
35788bool EvalEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
35789 if (!isActive()) return true;
35790 CurrentSource = L;
35791 return SetThisField<PT_IntAP>(S, OpPC, A0);
35792}
35793bool EvalEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35794 if (!isActive()) return true;
35795 CurrentSource = L;
35796 return SetThisField<PT_IntAPS>(S, OpPC, A0);
35797}
35798bool EvalEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
35799 if (!isActive()) return true;
35800 CurrentSource = L;
35801 return SetThisField<PT_Bool>(S, OpPC, A0);
35802}
35803bool EvalEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35804 if (!isActive()) return true;
35805 CurrentSource = L;
35806 return SetThisField<PT_FixedPoint>(S, OpPC, A0);
35807}
35808bool EvalEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
35809 if (!isActive()) return true;
35810 CurrentSource = L;
35811 return SetThisField<PT_Ptr>(S, OpPC, A0);
35812}
35813bool EvalEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35814 if (!isActive()) return true;
35815 CurrentSource = L;
35816 return SetThisField<PT_MemberPtr>(S, OpPC, A0);
35817}
35818bool EvalEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
35819 if (!isActive()) return true;
35820 CurrentSource = L;
35821 return SetThisField<PT_Float>(S, OpPC, A0);
35822}
35823#endif
35824#ifdef GET_OPCODE_NAMES
35825OP_ShiftFixedPoint,
35826#endif
35827#ifdef GET_INTERP
35828case OP_ShiftFixedPoint: {
35829 const auto V0 = ReadArg<bool>(S, PC);
35830 if (!ShiftFixedPoint(S, OpPC, V0))
35831 return false;
35832 continue;
35833}
35834#endif
35835#ifdef GET_DISASM
35836case OP_ShiftFixedPoint:
35837 Text.Op = PrintName("ShiftFixedPoint");
35838 Text.Args.push_back(printArg<bool>(P, PC));
35839 break;
35840#endif
35841#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35842bool emitShiftFixedPoint( bool , SourceInfo);
35843#endif
35844#ifdef GET_LINK_IMPL
35845bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
35846 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
35847}
35848#endif
35849#ifdef GET_EVAL_IMPL
35850bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
35851 if (!isActive()) return true;
35852 CurrentSource = L;
35853 return ShiftFixedPoint(S, OpPC, A0);
35854}
35855#endif
35856#ifdef GET_OPCODE_NAMES
35857OP_ShlSint8Sint8,
35858OP_ShlSint8Uint8,
35859OP_ShlSint8Sint16,
35860OP_ShlSint8Uint16,
35861OP_ShlSint8Sint32,
35862OP_ShlSint8Uint32,
35863OP_ShlSint8Sint64,
35864OP_ShlSint8Uint64,
35865OP_ShlSint8IntAP,
35866OP_ShlSint8IntAPS,
35867OP_ShlUint8Sint8,
35868OP_ShlUint8Uint8,
35869OP_ShlUint8Sint16,
35870OP_ShlUint8Uint16,
35871OP_ShlUint8Sint32,
35872OP_ShlUint8Uint32,
35873OP_ShlUint8Sint64,
35874OP_ShlUint8Uint64,
35875OP_ShlUint8IntAP,
35876OP_ShlUint8IntAPS,
35877OP_ShlSint16Sint8,
35878OP_ShlSint16Uint8,
35879OP_ShlSint16Sint16,
35880OP_ShlSint16Uint16,
35881OP_ShlSint16Sint32,
35882OP_ShlSint16Uint32,
35883OP_ShlSint16Sint64,
35884OP_ShlSint16Uint64,
35885OP_ShlSint16IntAP,
35886OP_ShlSint16IntAPS,
35887OP_ShlUint16Sint8,
35888OP_ShlUint16Uint8,
35889OP_ShlUint16Sint16,
35890OP_ShlUint16Uint16,
35891OP_ShlUint16Sint32,
35892OP_ShlUint16Uint32,
35893OP_ShlUint16Sint64,
35894OP_ShlUint16Uint64,
35895OP_ShlUint16IntAP,
35896OP_ShlUint16IntAPS,
35897OP_ShlSint32Sint8,
35898OP_ShlSint32Uint8,
35899OP_ShlSint32Sint16,
35900OP_ShlSint32Uint16,
35901OP_ShlSint32Sint32,
35902OP_ShlSint32Uint32,
35903OP_ShlSint32Sint64,
35904OP_ShlSint32Uint64,
35905OP_ShlSint32IntAP,
35906OP_ShlSint32IntAPS,
35907OP_ShlUint32Sint8,
35908OP_ShlUint32Uint8,
35909OP_ShlUint32Sint16,
35910OP_ShlUint32Uint16,
35911OP_ShlUint32Sint32,
35912OP_ShlUint32Uint32,
35913OP_ShlUint32Sint64,
35914OP_ShlUint32Uint64,
35915OP_ShlUint32IntAP,
35916OP_ShlUint32IntAPS,
35917OP_ShlSint64Sint8,
35918OP_ShlSint64Uint8,
35919OP_ShlSint64Sint16,
35920OP_ShlSint64Uint16,
35921OP_ShlSint64Sint32,
35922OP_ShlSint64Uint32,
35923OP_ShlSint64Sint64,
35924OP_ShlSint64Uint64,
35925OP_ShlSint64IntAP,
35926OP_ShlSint64IntAPS,
35927OP_ShlUint64Sint8,
35928OP_ShlUint64Uint8,
35929OP_ShlUint64Sint16,
35930OP_ShlUint64Uint16,
35931OP_ShlUint64Sint32,
35932OP_ShlUint64Uint32,
35933OP_ShlUint64Sint64,
35934OP_ShlUint64Uint64,
35935OP_ShlUint64IntAP,
35936OP_ShlUint64IntAPS,
35937OP_ShlIntAPSint8,
35938OP_ShlIntAPUint8,
35939OP_ShlIntAPSint16,
35940OP_ShlIntAPUint16,
35941OP_ShlIntAPSint32,
35942OP_ShlIntAPUint32,
35943OP_ShlIntAPSint64,
35944OP_ShlIntAPUint64,
35945OP_ShlIntAPIntAP,
35946OP_ShlIntAPIntAPS,
35947OP_ShlIntAPSSint8,
35948OP_ShlIntAPSUint8,
35949OP_ShlIntAPSSint16,
35950OP_ShlIntAPSUint16,
35951OP_ShlIntAPSSint32,
35952OP_ShlIntAPSUint32,
35953OP_ShlIntAPSSint64,
35954OP_ShlIntAPSUint64,
35955OP_ShlIntAPSIntAP,
35956OP_ShlIntAPSIntAPS,
35957#endif
35958#ifdef GET_INTERP
35959case OP_ShlSint8Sint8: {
35960 if (!Shl<PT_Sint8, PT_Sint8>(S, OpPC))
35961 return false;
35962 continue;
35963}
35964case OP_ShlSint8Uint8: {
35965 if (!Shl<PT_Sint8, PT_Uint8>(S, OpPC))
35966 return false;
35967 continue;
35968}
35969case OP_ShlSint8Sint16: {
35970 if (!Shl<PT_Sint8, PT_Sint16>(S, OpPC))
35971 return false;
35972 continue;
35973}
35974case OP_ShlSint8Uint16: {
35975 if (!Shl<PT_Sint8, PT_Uint16>(S, OpPC))
35976 return false;
35977 continue;
35978}
35979case OP_ShlSint8Sint32: {
35980 if (!Shl<PT_Sint8, PT_Sint32>(S, OpPC))
35981 return false;
35982 continue;
35983}
35984case OP_ShlSint8Uint32: {
35985 if (!Shl<PT_Sint8, PT_Uint32>(S, OpPC))
35986 return false;
35987 continue;
35988}
35989case OP_ShlSint8Sint64: {
35990 if (!Shl<PT_Sint8, PT_Sint64>(S, OpPC))
35991 return false;
35992 continue;
35993}
35994case OP_ShlSint8Uint64: {
35995 if (!Shl<PT_Sint8, PT_Uint64>(S, OpPC))
35996 return false;
35997 continue;
35998}
35999case OP_ShlSint8IntAP: {
36000 if (!Shl<PT_Sint8, PT_IntAP>(S, OpPC))
36001 return false;
36002 continue;
36003}
36004case OP_ShlSint8IntAPS: {
36005 if (!Shl<PT_Sint8, PT_IntAPS>(S, OpPC))
36006 return false;
36007 continue;
36008}
36009case OP_ShlUint8Sint8: {
36010 if (!Shl<PT_Uint8, PT_Sint8>(S, OpPC))
36011 return false;
36012 continue;
36013}
36014case OP_ShlUint8Uint8: {
36015 if (!Shl<PT_Uint8, PT_Uint8>(S, OpPC))
36016 return false;
36017 continue;
36018}
36019case OP_ShlUint8Sint16: {
36020 if (!Shl<PT_Uint8, PT_Sint16>(S, OpPC))
36021 return false;
36022 continue;
36023}
36024case OP_ShlUint8Uint16: {
36025 if (!Shl<PT_Uint8, PT_Uint16>(S, OpPC))
36026 return false;
36027 continue;
36028}
36029case OP_ShlUint8Sint32: {
36030 if (!Shl<PT_Uint8, PT_Sint32>(S, OpPC))
36031 return false;
36032 continue;
36033}
36034case OP_ShlUint8Uint32: {
36035 if (!Shl<PT_Uint8, PT_Uint32>(S, OpPC))
36036 return false;
36037 continue;
36038}
36039case OP_ShlUint8Sint64: {
36040 if (!Shl<PT_Uint8, PT_Sint64>(S, OpPC))
36041 return false;
36042 continue;
36043}
36044case OP_ShlUint8Uint64: {
36045 if (!Shl<PT_Uint8, PT_Uint64>(S, OpPC))
36046 return false;
36047 continue;
36048}
36049case OP_ShlUint8IntAP: {
36050 if (!Shl<PT_Uint8, PT_IntAP>(S, OpPC))
36051 return false;
36052 continue;
36053}
36054case OP_ShlUint8IntAPS: {
36055 if (!Shl<PT_Uint8, PT_IntAPS>(S, OpPC))
36056 return false;
36057 continue;
36058}
36059case OP_ShlSint16Sint8: {
36060 if (!Shl<PT_Sint16, PT_Sint8>(S, OpPC))
36061 return false;
36062 continue;
36063}
36064case OP_ShlSint16Uint8: {
36065 if (!Shl<PT_Sint16, PT_Uint8>(S, OpPC))
36066 return false;
36067 continue;
36068}
36069case OP_ShlSint16Sint16: {
36070 if (!Shl<PT_Sint16, PT_Sint16>(S, OpPC))
36071 return false;
36072 continue;
36073}
36074case OP_ShlSint16Uint16: {
36075 if (!Shl<PT_Sint16, PT_Uint16>(S, OpPC))
36076 return false;
36077 continue;
36078}
36079case OP_ShlSint16Sint32: {
36080 if (!Shl<PT_Sint16, PT_Sint32>(S, OpPC))
36081 return false;
36082 continue;
36083}
36084case OP_ShlSint16Uint32: {
36085 if (!Shl<PT_Sint16, PT_Uint32>(S, OpPC))
36086 return false;
36087 continue;
36088}
36089case OP_ShlSint16Sint64: {
36090 if (!Shl<PT_Sint16, PT_Sint64>(S, OpPC))
36091 return false;
36092 continue;
36093}
36094case OP_ShlSint16Uint64: {
36095 if (!Shl<PT_Sint16, PT_Uint64>(S, OpPC))
36096 return false;
36097 continue;
36098}
36099case OP_ShlSint16IntAP: {
36100 if (!Shl<PT_Sint16, PT_IntAP>(S, OpPC))
36101 return false;
36102 continue;
36103}
36104case OP_ShlSint16IntAPS: {
36105 if (!Shl<PT_Sint16, PT_IntAPS>(S, OpPC))
36106 return false;
36107 continue;
36108}
36109case OP_ShlUint16Sint8: {
36110 if (!Shl<PT_Uint16, PT_Sint8>(S, OpPC))
36111 return false;
36112 continue;
36113}
36114case OP_ShlUint16Uint8: {
36115 if (!Shl<PT_Uint16, PT_Uint8>(S, OpPC))
36116 return false;
36117 continue;
36118}
36119case OP_ShlUint16Sint16: {
36120 if (!Shl<PT_Uint16, PT_Sint16>(S, OpPC))
36121 return false;
36122 continue;
36123}
36124case OP_ShlUint16Uint16: {
36125 if (!Shl<PT_Uint16, PT_Uint16>(S, OpPC))
36126 return false;
36127 continue;
36128}
36129case OP_ShlUint16Sint32: {
36130 if (!Shl<PT_Uint16, PT_Sint32>(S, OpPC))
36131 return false;
36132 continue;
36133}
36134case OP_ShlUint16Uint32: {
36135 if (!Shl<PT_Uint16, PT_Uint32>(S, OpPC))
36136 return false;
36137 continue;
36138}
36139case OP_ShlUint16Sint64: {
36140 if (!Shl<PT_Uint16, PT_Sint64>(S, OpPC))
36141 return false;
36142 continue;
36143}
36144case OP_ShlUint16Uint64: {
36145 if (!Shl<PT_Uint16, PT_Uint64>(S, OpPC))
36146 return false;
36147 continue;
36148}
36149case OP_ShlUint16IntAP: {
36150 if (!Shl<PT_Uint16, PT_IntAP>(S, OpPC))
36151 return false;
36152 continue;
36153}
36154case OP_ShlUint16IntAPS: {
36155 if (!Shl<PT_Uint16, PT_IntAPS>(S, OpPC))
36156 return false;
36157 continue;
36158}
36159case OP_ShlSint32Sint8: {
36160 if (!Shl<PT_Sint32, PT_Sint8>(S, OpPC))
36161 return false;
36162 continue;
36163}
36164case OP_ShlSint32Uint8: {
36165 if (!Shl<PT_Sint32, PT_Uint8>(S, OpPC))
36166 return false;
36167 continue;
36168}
36169case OP_ShlSint32Sint16: {
36170 if (!Shl<PT_Sint32, PT_Sint16>(S, OpPC))
36171 return false;
36172 continue;
36173}
36174case OP_ShlSint32Uint16: {
36175 if (!Shl<PT_Sint32, PT_Uint16>(S, OpPC))
36176 return false;
36177 continue;
36178}
36179case OP_ShlSint32Sint32: {
36180 if (!Shl<PT_Sint32, PT_Sint32>(S, OpPC))
36181 return false;
36182 continue;
36183}
36184case OP_ShlSint32Uint32: {
36185 if (!Shl<PT_Sint32, PT_Uint32>(S, OpPC))
36186 return false;
36187 continue;
36188}
36189case OP_ShlSint32Sint64: {
36190 if (!Shl<PT_Sint32, PT_Sint64>(S, OpPC))
36191 return false;
36192 continue;
36193}
36194case OP_ShlSint32Uint64: {
36195 if (!Shl<PT_Sint32, PT_Uint64>(S, OpPC))
36196 return false;
36197 continue;
36198}
36199case OP_ShlSint32IntAP: {
36200 if (!Shl<PT_Sint32, PT_IntAP>(S, OpPC))
36201 return false;
36202 continue;
36203}
36204case OP_ShlSint32IntAPS: {
36205 if (!Shl<PT_Sint32, PT_IntAPS>(S, OpPC))
36206 return false;
36207 continue;
36208}
36209case OP_ShlUint32Sint8: {
36210 if (!Shl<PT_Uint32, PT_Sint8>(S, OpPC))
36211 return false;
36212 continue;
36213}
36214case OP_ShlUint32Uint8: {
36215 if (!Shl<PT_Uint32, PT_Uint8>(S, OpPC))
36216 return false;
36217 continue;
36218}
36219case OP_ShlUint32Sint16: {
36220 if (!Shl<PT_Uint32, PT_Sint16>(S, OpPC))
36221 return false;
36222 continue;
36223}
36224case OP_ShlUint32Uint16: {
36225 if (!Shl<PT_Uint32, PT_Uint16>(S, OpPC))
36226 return false;
36227 continue;
36228}
36229case OP_ShlUint32Sint32: {
36230 if (!Shl<PT_Uint32, PT_Sint32>(S, OpPC))
36231 return false;
36232 continue;
36233}
36234case OP_ShlUint32Uint32: {
36235 if (!Shl<PT_Uint32, PT_Uint32>(S, OpPC))
36236 return false;
36237 continue;
36238}
36239case OP_ShlUint32Sint64: {
36240 if (!Shl<PT_Uint32, PT_Sint64>(S, OpPC))
36241 return false;
36242 continue;
36243}
36244case OP_ShlUint32Uint64: {
36245 if (!Shl<PT_Uint32, PT_Uint64>(S, OpPC))
36246 return false;
36247 continue;
36248}
36249case OP_ShlUint32IntAP: {
36250 if (!Shl<PT_Uint32, PT_IntAP>(S, OpPC))
36251 return false;
36252 continue;
36253}
36254case OP_ShlUint32IntAPS: {
36255 if (!Shl<PT_Uint32, PT_IntAPS>(S, OpPC))
36256 return false;
36257 continue;
36258}
36259case OP_ShlSint64Sint8: {
36260 if (!Shl<PT_Sint64, PT_Sint8>(S, OpPC))
36261 return false;
36262 continue;
36263}
36264case OP_ShlSint64Uint8: {
36265 if (!Shl<PT_Sint64, PT_Uint8>(S, OpPC))
36266 return false;
36267 continue;
36268}
36269case OP_ShlSint64Sint16: {
36270 if (!Shl<PT_Sint64, PT_Sint16>(S, OpPC))
36271 return false;
36272 continue;
36273}
36274case OP_ShlSint64Uint16: {
36275 if (!Shl<PT_Sint64, PT_Uint16>(S, OpPC))
36276 return false;
36277 continue;
36278}
36279case OP_ShlSint64Sint32: {
36280 if (!Shl<PT_Sint64, PT_Sint32>(S, OpPC))
36281 return false;
36282 continue;
36283}
36284case OP_ShlSint64Uint32: {
36285 if (!Shl<PT_Sint64, PT_Uint32>(S, OpPC))
36286 return false;
36287 continue;
36288}
36289case OP_ShlSint64Sint64: {
36290 if (!Shl<PT_Sint64, PT_Sint64>(S, OpPC))
36291 return false;
36292 continue;
36293}
36294case OP_ShlSint64Uint64: {
36295 if (!Shl<PT_Sint64, PT_Uint64>(S, OpPC))
36296 return false;
36297 continue;
36298}
36299case OP_ShlSint64IntAP: {
36300 if (!Shl<PT_Sint64, PT_IntAP>(S, OpPC))
36301 return false;
36302 continue;
36303}
36304case OP_ShlSint64IntAPS: {
36305 if (!Shl<PT_Sint64, PT_IntAPS>(S, OpPC))
36306 return false;
36307 continue;
36308}
36309case OP_ShlUint64Sint8: {
36310 if (!Shl<PT_Uint64, PT_Sint8>(S, OpPC))
36311 return false;
36312 continue;
36313}
36314case OP_ShlUint64Uint8: {
36315 if (!Shl<PT_Uint64, PT_Uint8>(S, OpPC))
36316 return false;
36317 continue;
36318}
36319case OP_ShlUint64Sint16: {
36320 if (!Shl<PT_Uint64, PT_Sint16>(S, OpPC))
36321 return false;
36322 continue;
36323}
36324case OP_ShlUint64Uint16: {
36325 if (!Shl<PT_Uint64, PT_Uint16>(S, OpPC))
36326 return false;
36327 continue;
36328}
36329case OP_ShlUint64Sint32: {
36330 if (!Shl<PT_Uint64, PT_Sint32>(S, OpPC))
36331 return false;
36332 continue;
36333}
36334case OP_ShlUint64Uint32: {
36335 if (!Shl<PT_Uint64, PT_Uint32>(S, OpPC))
36336 return false;
36337 continue;
36338}
36339case OP_ShlUint64Sint64: {
36340 if (!Shl<PT_Uint64, PT_Sint64>(S, OpPC))
36341 return false;
36342 continue;
36343}
36344case OP_ShlUint64Uint64: {
36345 if (!Shl<PT_Uint64, PT_Uint64>(S, OpPC))
36346 return false;
36347 continue;
36348}
36349case OP_ShlUint64IntAP: {
36350 if (!Shl<PT_Uint64, PT_IntAP>(S, OpPC))
36351 return false;
36352 continue;
36353}
36354case OP_ShlUint64IntAPS: {
36355 if (!Shl<PT_Uint64, PT_IntAPS>(S, OpPC))
36356 return false;
36357 continue;
36358}
36359case OP_ShlIntAPSint8: {
36360 if (!Shl<PT_IntAP, PT_Sint8>(S, OpPC))
36361 return false;
36362 continue;
36363}
36364case OP_ShlIntAPUint8: {
36365 if (!Shl<PT_IntAP, PT_Uint8>(S, OpPC))
36366 return false;
36367 continue;
36368}
36369case OP_ShlIntAPSint16: {
36370 if (!Shl<PT_IntAP, PT_Sint16>(S, OpPC))
36371 return false;
36372 continue;
36373}
36374case OP_ShlIntAPUint16: {
36375 if (!Shl<PT_IntAP, PT_Uint16>(S, OpPC))
36376 return false;
36377 continue;
36378}
36379case OP_ShlIntAPSint32: {
36380 if (!Shl<PT_IntAP, PT_Sint32>(S, OpPC))
36381 return false;
36382 continue;
36383}
36384case OP_ShlIntAPUint32: {
36385 if (!Shl<PT_IntAP, PT_Uint32>(S, OpPC))
36386 return false;
36387 continue;
36388}
36389case OP_ShlIntAPSint64: {
36390 if (!Shl<PT_IntAP, PT_Sint64>(S, OpPC))
36391 return false;
36392 continue;
36393}
36394case OP_ShlIntAPUint64: {
36395 if (!Shl<PT_IntAP, PT_Uint64>(S, OpPC))
36396 return false;
36397 continue;
36398}
36399case OP_ShlIntAPIntAP: {
36400 if (!Shl<PT_IntAP, PT_IntAP>(S, OpPC))
36401 return false;
36402 continue;
36403}
36404case OP_ShlIntAPIntAPS: {
36405 if (!Shl<PT_IntAP, PT_IntAPS>(S, OpPC))
36406 return false;
36407 continue;
36408}
36409case OP_ShlIntAPSSint8: {
36410 if (!Shl<PT_IntAPS, PT_Sint8>(S, OpPC))
36411 return false;
36412 continue;
36413}
36414case OP_ShlIntAPSUint8: {
36415 if (!Shl<PT_IntAPS, PT_Uint8>(S, OpPC))
36416 return false;
36417 continue;
36418}
36419case OP_ShlIntAPSSint16: {
36420 if (!Shl<PT_IntAPS, PT_Sint16>(S, OpPC))
36421 return false;
36422 continue;
36423}
36424case OP_ShlIntAPSUint16: {
36425 if (!Shl<PT_IntAPS, PT_Uint16>(S, OpPC))
36426 return false;
36427 continue;
36428}
36429case OP_ShlIntAPSSint32: {
36430 if (!Shl<PT_IntAPS, PT_Sint32>(S, OpPC))
36431 return false;
36432 continue;
36433}
36434case OP_ShlIntAPSUint32: {
36435 if (!Shl<PT_IntAPS, PT_Uint32>(S, OpPC))
36436 return false;
36437 continue;
36438}
36439case OP_ShlIntAPSSint64: {
36440 if (!Shl<PT_IntAPS, PT_Sint64>(S, OpPC))
36441 return false;
36442 continue;
36443}
36444case OP_ShlIntAPSUint64: {
36445 if (!Shl<PT_IntAPS, PT_Uint64>(S, OpPC))
36446 return false;
36447 continue;
36448}
36449case OP_ShlIntAPSIntAP: {
36450 if (!Shl<PT_IntAPS, PT_IntAP>(S, OpPC))
36451 return false;
36452 continue;
36453}
36454case OP_ShlIntAPSIntAPS: {
36455 if (!Shl<PT_IntAPS, PT_IntAPS>(S, OpPC))
36456 return false;
36457 continue;
36458}
36459#endif
36460#ifdef GET_DISASM
36461case OP_ShlSint8Sint8:
36462 Text.Op = PrintName("ShlSint8Sint8");
36463 break;
36464case OP_ShlSint8Uint8:
36465 Text.Op = PrintName("ShlSint8Uint8");
36466 break;
36467case OP_ShlSint8Sint16:
36468 Text.Op = PrintName("ShlSint8Sint16");
36469 break;
36470case OP_ShlSint8Uint16:
36471 Text.Op = PrintName("ShlSint8Uint16");
36472 break;
36473case OP_ShlSint8Sint32:
36474 Text.Op = PrintName("ShlSint8Sint32");
36475 break;
36476case OP_ShlSint8Uint32:
36477 Text.Op = PrintName("ShlSint8Uint32");
36478 break;
36479case OP_ShlSint8Sint64:
36480 Text.Op = PrintName("ShlSint8Sint64");
36481 break;
36482case OP_ShlSint8Uint64:
36483 Text.Op = PrintName("ShlSint8Uint64");
36484 break;
36485case OP_ShlSint8IntAP:
36486 Text.Op = PrintName("ShlSint8IntAP");
36487 break;
36488case OP_ShlSint8IntAPS:
36489 Text.Op = PrintName("ShlSint8IntAPS");
36490 break;
36491case OP_ShlUint8Sint8:
36492 Text.Op = PrintName("ShlUint8Sint8");
36493 break;
36494case OP_ShlUint8Uint8:
36495 Text.Op = PrintName("ShlUint8Uint8");
36496 break;
36497case OP_ShlUint8Sint16:
36498 Text.Op = PrintName("ShlUint8Sint16");
36499 break;
36500case OP_ShlUint8Uint16:
36501 Text.Op = PrintName("ShlUint8Uint16");
36502 break;
36503case OP_ShlUint8Sint32:
36504 Text.Op = PrintName("ShlUint8Sint32");
36505 break;
36506case OP_ShlUint8Uint32:
36507 Text.Op = PrintName("ShlUint8Uint32");
36508 break;
36509case OP_ShlUint8Sint64:
36510 Text.Op = PrintName("ShlUint8Sint64");
36511 break;
36512case OP_ShlUint8Uint64:
36513 Text.Op = PrintName("ShlUint8Uint64");
36514 break;
36515case OP_ShlUint8IntAP:
36516 Text.Op = PrintName("ShlUint8IntAP");
36517 break;
36518case OP_ShlUint8IntAPS:
36519 Text.Op = PrintName("ShlUint8IntAPS");
36520 break;
36521case OP_ShlSint16Sint8:
36522 Text.Op = PrintName("ShlSint16Sint8");
36523 break;
36524case OP_ShlSint16Uint8:
36525 Text.Op = PrintName("ShlSint16Uint8");
36526 break;
36527case OP_ShlSint16Sint16:
36528 Text.Op = PrintName("ShlSint16Sint16");
36529 break;
36530case OP_ShlSint16Uint16:
36531 Text.Op = PrintName("ShlSint16Uint16");
36532 break;
36533case OP_ShlSint16Sint32:
36534 Text.Op = PrintName("ShlSint16Sint32");
36535 break;
36536case OP_ShlSint16Uint32:
36537 Text.Op = PrintName("ShlSint16Uint32");
36538 break;
36539case OP_ShlSint16Sint64:
36540 Text.Op = PrintName("ShlSint16Sint64");
36541 break;
36542case OP_ShlSint16Uint64:
36543 Text.Op = PrintName("ShlSint16Uint64");
36544 break;
36545case OP_ShlSint16IntAP:
36546 Text.Op = PrintName("ShlSint16IntAP");
36547 break;
36548case OP_ShlSint16IntAPS:
36549 Text.Op = PrintName("ShlSint16IntAPS");
36550 break;
36551case OP_ShlUint16Sint8:
36552 Text.Op = PrintName("ShlUint16Sint8");
36553 break;
36554case OP_ShlUint16Uint8:
36555 Text.Op = PrintName("ShlUint16Uint8");
36556 break;
36557case OP_ShlUint16Sint16:
36558 Text.Op = PrintName("ShlUint16Sint16");
36559 break;
36560case OP_ShlUint16Uint16:
36561 Text.Op = PrintName("ShlUint16Uint16");
36562 break;
36563case OP_ShlUint16Sint32:
36564 Text.Op = PrintName("ShlUint16Sint32");
36565 break;
36566case OP_ShlUint16Uint32:
36567 Text.Op = PrintName("ShlUint16Uint32");
36568 break;
36569case OP_ShlUint16Sint64:
36570 Text.Op = PrintName("ShlUint16Sint64");
36571 break;
36572case OP_ShlUint16Uint64:
36573 Text.Op = PrintName("ShlUint16Uint64");
36574 break;
36575case OP_ShlUint16IntAP:
36576 Text.Op = PrintName("ShlUint16IntAP");
36577 break;
36578case OP_ShlUint16IntAPS:
36579 Text.Op = PrintName("ShlUint16IntAPS");
36580 break;
36581case OP_ShlSint32Sint8:
36582 Text.Op = PrintName("ShlSint32Sint8");
36583 break;
36584case OP_ShlSint32Uint8:
36585 Text.Op = PrintName("ShlSint32Uint8");
36586 break;
36587case OP_ShlSint32Sint16:
36588 Text.Op = PrintName("ShlSint32Sint16");
36589 break;
36590case OP_ShlSint32Uint16:
36591 Text.Op = PrintName("ShlSint32Uint16");
36592 break;
36593case OP_ShlSint32Sint32:
36594 Text.Op = PrintName("ShlSint32Sint32");
36595 break;
36596case OP_ShlSint32Uint32:
36597 Text.Op = PrintName("ShlSint32Uint32");
36598 break;
36599case OP_ShlSint32Sint64:
36600 Text.Op = PrintName("ShlSint32Sint64");
36601 break;
36602case OP_ShlSint32Uint64:
36603 Text.Op = PrintName("ShlSint32Uint64");
36604 break;
36605case OP_ShlSint32IntAP:
36606 Text.Op = PrintName("ShlSint32IntAP");
36607 break;
36608case OP_ShlSint32IntAPS:
36609 Text.Op = PrintName("ShlSint32IntAPS");
36610 break;
36611case OP_ShlUint32Sint8:
36612 Text.Op = PrintName("ShlUint32Sint8");
36613 break;
36614case OP_ShlUint32Uint8:
36615 Text.Op = PrintName("ShlUint32Uint8");
36616 break;
36617case OP_ShlUint32Sint16:
36618 Text.Op = PrintName("ShlUint32Sint16");
36619 break;
36620case OP_ShlUint32Uint16:
36621 Text.Op = PrintName("ShlUint32Uint16");
36622 break;
36623case OP_ShlUint32Sint32:
36624 Text.Op = PrintName("ShlUint32Sint32");
36625 break;
36626case OP_ShlUint32Uint32:
36627 Text.Op = PrintName("ShlUint32Uint32");
36628 break;
36629case OP_ShlUint32Sint64:
36630 Text.Op = PrintName("ShlUint32Sint64");
36631 break;
36632case OP_ShlUint32Uint64:
36633 Text.Op = PrintName("ShlUint32Uint64");
36634 break;
36635case OP_ShlUint32IntAP:
36636 Text.Op = PrintName("ShlUint32IntAP");
36637 break;
36638case OP_ShlUint32IntAPS:
36639 Text.Op = PrintName("ShlUint32IntAPS");
36640 break;
36641case OP_ShlSint64Sint8:
36642 Text.Op = PrintName("ShlSint64Sint8");
36643 break;
36644case OP_ShlSint64Uint8:
36645 Text.Op = PrintName("ShlSint64Uint8");
36646 break;
36647case OP_ShlSint64Sint16:
36648 Text.Op = PrintName("ShlSint64Sint16");
36649 break;
36650case OP_ShlSint64Uint16:
36651 Text.Op = PrintName("ShlSint64Uint16");
36652 break;
36653case OP_ShlSint64Sint32:
36654 Text.Op = PrintName("ShlSint64Sint32");
36655 break;
36656case OP_ShlSint64Uint32:
36657 Text.Op = PrintName("ShlSint64Uint32");
36658 break;
36659case OP_ShlSint64Sint64:
36660 Text.Op = PrintName("ShlSint64Sint64");
36661 break;
36662case OP_ShlSint64Uint64:
36663 Text.Op = PrintName("ShlSint64Uint64");
36664 break;
36665case OP_ShlSint64IntAP:
36666 Text.Op = PrintName("ShlSint64IntAP");
36667 break;
36668case OP_ShlSint64IntAPS:
36669 Text.Op = PrintName("ShlSint64IntAPS");
36670 break;
36671case OP_ShlUint64Sint8:
36672 Text.Op = PrintName("ShlUint64Sint8");
36673 break;
36674case OP_ShlUint64Uint8:
36675 Text.Op = PrintName("ShlUint64Uint8");
36676 break;
36677case OP_ShlUint64Sint16:
36678 Text.Op = PrintName("ShlUint64Sint16");
36679 break;
36680case OP_ShlUint64Uint16:
36681 Text.Op = PrintName("ShlUint64Uint16");
36682 break;
36683case OP_ShlUint64Sint32:
36684 Text.Op = PrintName("ShlUint64Sint32");
36685 break;
36686case OP_ShlUint64Uint32:
36687 Text.Op = PrintName("ShlUint64Uint32");
36688 break;
36689case OP_ShlUint64Sint64:
36690 Text.Op = PrintName("ShlUint64Sint64");
36691 break;
36692case OP_ShlUint64Uint64:
36693 Text.Op = PrintName("ShlUint64Uint64");
36694 break;
36695case OP_ShlUint64IntAP:
36696 Text.Op = PrintName("ShlUint64IntAP");
36697 break;
36698case OP_ShlUint64IntAPS:
36699 Text.Op = PrintName("ShlUint64IntAPS");
36700 break;
36701case OP_ShlIntAPSint8:
36702 Text.Op = PrintName("ShlIntAPSint8");
36703 break;
36704case OP_ShlIntAPUint8:
36705 Text.Op = PrintName("ShlIntAPUint8");
36706 break;
36707case OP_ShlIntAPSint16:
36708 Text.Op = PrintName("ShlIntAPSint16");
36709 break;
36710case OP_ShlIntAPUint16:
36711 Text.Op = PrintName("ShlIntAPUint16");
36712 break;
36713case OP_ShlIntAPSint32:
36714 Text.Op = PrintName("ShlIntAPSint32");
36715 break;
36716case OP_ShlIntAPUint32:
36717 Text.Op = PrintName("ShlIntAPUint32");
36718 break;
36719case OP_ShlIntAPSint64:
36720 Text.Op = PrintName("ShlIntAPSint64");
36721 break;
36722case OP_ShlIntAPUint64:
36723 Text.Op = PrintName("ShlIntAPUint64");
36724 break;
36725case OP_ShlIntAPIntAP:
36726 Text.Op = PrintName("ShlIntAPIntAP");
36727 break;
36728case OP_ShlIntAPIntAPS:
36729 Text.Op = PrintName("ShlIntAPIntAPS");
36730 break;
36731case OP_ShlIntAPSSint8:
36732 Text.Op = PrintName("ShlIntAPSSint8");
36733 break;
36734case OP_ShlIntAPSUint8:
36735 Text.Op = PrintName("ShlIntAPSUint8");
36736 break;
36737case OP_ShlIntAPSSint16:
36738 Text.Op = PrintName("ShlIntAPSSint16");
36739 break;
36740case OP_ShlIntAPSUint16:
36741 Text.Op = PrintName("ShlIntAPSUint16");
36742 break;
36743case OP_ShlIntAPSSint32:
36744 Text.Op = PrintName("ShlIntAPSSint32");
36745 break;
36746case OP_ShlIntAPSUint32:
36747 Text.Op = PrintName("ShlIntAPSUint32");
36748 break;
36749case OP_ShlIntAPSSint64:
36750 Text.Op = PrintName("ShlIntAPSSint64");
36751 break;
36752case OP_ShlIntAPSUint64:
36753 Text.Op = PrintName("ShlIntAPSUint64");
36754 break;
36755case OP_ShlIntAPSIntAP:
36756 Text.Op = PrintName("ShlIntAPSIntAP");
36757 break;
36758case OP_ShlIntAPSIntAPS:
36759 Text.Op = PrintName("ShlIntAPSIntAPS");
36760 break;
36761#endif
36762#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36763bool emitShlSint8Sint8(SourceInfo);
36764bool emitShlSint8Uint8(SourceInfo);
36765bool emitShlSint8Sint16(SourceInfo);
36766bool emitShlSint8Uint16(SourceInfo);
36767bool emitShlSint8Sint32(SourceInfo);
36768bool emitShlSint8Uint32(SourceInfo);
36769bool emitShlSint8Sint64(SourceInfo);
36770bool emitShlSint8Uint64(SourceInfo);
36771bool emitShlSint8IntAP(SourceInfo);
36772bool emitShlSint8IntAPS(SourceInfo);
36773bool emitShlUint8Sint8(SourceInfo);
36774bool emitShlUint8Uint8(SourceInfo);
36775bool emitShlUint8Sint16(SourceInfo);
36776bool emitShlUint8Uint16(SourceInfo);
36777bool emitShlUint8Sint32(SourceInfo);
36778bool emitShlUint8Uint32(SourceInfo);
36779bool emitShlUint8Sint64(SourceInfo);
36780bool emitShlUint8Uint64(SourceInfo);
36781bool emitShlUint8IntAP(SourceInfo);
36782bool emitShlUint8IntAPS(SourceInfo);
36783bool emitShlSint16Sint8(SourceInfo);
36784bool emitShlSint16Uint8(SourceInfo);
36785bool emitShlSint16Sint16(SourceInfo);
36786bool emitShlSint16Uint16(SourceInfo);
36787bool emitShlSint16Sint32(SourceInfo);
36788bool emitShlSint16Uint32(SourceInfo);
36789bool emitShlSint16Sint64(SourceInfo);
36790bool emitShlSint16Uint64(SourceInfo);
36791bool emitShlSint16IntAP(SourceInfo);
36792bool emitShlSint16IntAPS(SourceInfo);
36793bool emitShlUint16Sint8(SourceInfo);
36794bool emitShlUint16Uint8(SourceInfo);
36795bool emitShlUint16Sint16(SourceInfo);
36796bool emitShlUint16Uint16(SourceInfo);
36797bool emitShlUint16Sint32(SourceInfo);
36798bool emitShlUint16Uint32(SourceInfo);
36799bool emitShlUint16Sint64(SourceInfo);
36800bool emitShlUint16Uint64(SourceInfo);
36801bool emitShlUint16IntAP(SourceInfo);
36802bool emitShlUint16IntAPS(SourceInfo);
36803bool emitShlSint32Sint8(SourceInfo);
36804bool emitShlSint32Uint8(SourceInfo);
36805bool emitShlSint32Sint16(SourceInfo);
36806bool emitShlSint32Uint16(SourceInfo);
36807bool emitShlSint32Sint32(SourceInfo);
36808bool emitShlSint32Uint32(SourceInfo);
36809bool emitShlSint32Sint64(SourceInfo);
36810bool emitShlSint32Uint64(SourceInfo);
36811bool emitShlSint32IntAP(SourceInfo);
36812bool emitShlSint32IntAPS(SourceInfo);
36813bool emitShlUint32Sint8(SourceInfo);
36814bool emitShlUint32Uint8(SourceInfo);
36815bool emitShlUint32Sint16(SourceInfo);
36816bool emitShlUint32Uint16(SourceInfo);
36817bool emitShlUint32Sint32(SourceInfo);
36818bool emitShlUint32Uint32(SourceInfo);
36819bool emitShlUint32Sint64(SourceInfo);
36820bool emitShlUint32Uint64(SourceInfo);
36821bool emitShlUint32IntAP(SourceInfo);
36822bool emitShlUint32IntAPS(SourceInfo);
36823bool emitShlSint64Sint8(SourceInfo);
36824bool emitShlSint64Uint8(SourceInfo);
36825bool emitShlSint64Sint16(SourceInfo);
36826bool emitShlSint64Uint16(SourceInfo);
36827bool emitShlSint64Sint32(SourceInfo);
36828bool emitShlSint64Uint32(SourceInfo);
36829bool emitShlSint64Sint64(SourceInfo);
36830bool emitShlSint64Uint64(SourceInfo);
36831bool emitShlSint64IntAP(SourceInfo);
36832bool emitShlSint64IntAPS(SourceInfo);
36833bool emitShlUint64Sint8(SourceInfo);
36834bool emitShlUint64Uint8(SourceInfo);
36835bool emitShlUint64Sint16(SourceInfo);
36836bool emitShlUint64Uint16(SourceInfo);
36837bool emitShlUint64Sint32(SourceInfo);
36838bool emitShlUint64Uint32(SourceInfo);
36839bool emitShlUint64Sint64(SourceInfo);
36840bool emitShlUint64Uint64(SourceInfo);
36841bool emitShlUint64IntAP(SourceInfo);
36842bool emitShlUint64IntAPS(SourceInfo);
36843bool emitShlIntAPSint8(SourceInfo);
36844bool emitShlIntAPUint8(SourceInfo);
36845bool emitShlIntAPSint16(SourceInfo);
36846bool emitShlIntAPUint16(SourceInfo);
36847bool emitShlIntAPSint32(SourceInfo);
36848bool emitShlIntAPUint32(SourceInfo);
36849bool emitShlIntAPSint64(SourceInfo);
36850bool emitShlIntAPUint64(SourceInfo);
36851bool emitShlIntAPIntAP(SourceInfo);
36852bool emitShlIntAPIntAPS(SourceInfo);
36853bool emitShlIntAPSSint8(SourceInfo);
36854bool emitShlIntAPSUint8(SourceInfo);
36855bool emitShlIntAPSSint16(SourceInfo);
36856bool emitShlIntAPSUint16(SourceInfo);
36857bool emitShlIntAPSSint32(SourceInfo);
36858bool emitShlIntAPSUint32(SourceInfo);
36859bool emitShlIntAPSSint64(SourceInfo);
36860bool emitShlIntAPSUint64(SourceInfo);
36861bool emitShlIntAPSIntAP(SourceInfo);
36862bool emitShlIntAPSIntAPS(SourceInfo);
36863#endif
36864#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36865[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
36866#endif
36867#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36868bool
36869#if defined(GET_EVAL_IMPL)
36870EvalEmitter
36871#else
36872ByteCodeEmitter
36873#endif
36874::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
36875 switch (T0) {
36876 case PT_Sint8:
36877 switch (T1) {
36878 case PT_Sint8:
36879 return emitShlSint8Sint8(I);
36880 case PT_Uint8:
36881 return emitShlSint8Uint8(I);
36882 case PT_Sint16:
36883 return emitShlSint8Sint16(I);
36884 case PT_Uint16:
36885 return emitShlSint8Uint16(I);
36886 case PT_Sint32:
36887 return emitShlSint8Sint32(I);
36888 case PT_Uint32:
36889 return emitShlSint8Uint32(I);
36890 case PT_Sint64:
36891 return emitShlSint8Sint64(I);
36892 case PT_Uint64:
36893 return emitShlSint8Uint64(I);
36894 case PT_IntAP:
36895 return emitShlSint8IntAP(I);
36896 case PT_IntAPS:
36897 return emitShlSint8IntAPS(I);
36898 default: llvm_unreachable("invalid type: emitShl");
36899 }
36900 llvm_unreachable("invalid enum value");
36901 case PT_Uint8:
36902 switch (T1) {
36903 case PT_Sint8:
36904 return emitShlUint8Sint8(I);
36905 case PT_Uint8:
36906 return emitShlUint8Uint8(I);
36907 case PT_Sint16:
36908 return emitShlUint8Sint16(I);
36909 case PT_Uint16:
36910 return emitShlUint8Uint16(I);
36911 case PT_Sint32:
36912 return emitShlUint8Sint32(I);
36913 case PT_Uint32:
36914 return emitShlUint8Uint32(I);
36915 case PT_Sint64:
36916 return emitShlUint8Sint64(I);
36917 case PT_Uint64:
36918 return emitShlUint8Uint64(I);
36919 case PT_IntAP:
36920 return emitShlUint8IntAP(I);
36921 case PT_IntAPS:
36922 return emitShlUint8IntAPS(I);
36923 default: llvm_unreachable("invalid type: emitShl");
36924 }
36925 llvm_unreachable("invalid enum value");
36926 case PT_Sint16:
36927 switch (T1) {
36928 case PT_Sint8:
36929 return emitShlSint16Sint8(I);
36930 case PT_Uint8:
36931 return emitShlSint16Uint8(I);
36932 case PT_Sint16:
36933 return emitShlSint16Sint16(I);
36934 case PT_Uint16:
36935 return emitShlSint16Uint16(I);
36936 case PT_Sint32:
36937 return emitShlSint16Sint32(I);
36938 case PT_Uint32:
36939 return emitShlSint16Uint32(I);
36940 case PT_Sint64:
36941 return emitShlSint16Sint64(I);
36942 case PT_Uint64:
36943 return emitShlSint16Uint64(I);
36944 case PT_IntAP:
36945 return emitShlSint16IntAP(I);
36946 case PT_IntAPS:
36947 return emitShlSint16IntAPS(I);
36948 default: llvm_unreachable("invalid type: emitShl");
36949 }
36950 llvm_unreachable("invalid enum value");
36951 case PT_Uint16:
36952 switch (T1) {
36953 case PT_Sint8:
36954 return emitShlUint16Sint8(I);
36955 case PT_Uint8:
36956 return emitShlUint16Uint8(I);
36957 case PT_Sint16:
36958 return emitShlUint16Sint16(I);
36959 case PT_Uint16:
36960 return emitShlUint16Uint16(I);
36961 case PT_Sint32:
36962 return emitShlUint16Sint32(I);
36963 case PT_Uint32:
36964 return emitShlUint16Uint32(I);
36965 case PT_Sint64:
36966 return emitShlUint16Sint64(I);
36967 case PT_Uint64:
36968 return emitShlUint16Uint64(I);
36969 case PT_IntAP:
36970 return emitShlUint16IntAP(I);
36971 case PT_IntAPS:
36972 return emitShlUint16IntAPS(I);
36973 default: llvm_unreachable("invalid type: emitShl");
36974 }
36975 llvm_unreachable("invalid enum value");
36976 case PT_Sint32:
36977 switch (T1) {
36978 case PT_Sint8:
36979 return emitShlSint32Sint8(I);
36980 case PT_Uint8:
36981 return emitShlSint32Uint8(I);
36982 case PT_Sint16:
36983 return emitShlSint32Sint16(I);
36984 case PT_Uint16:
36985 return emitShlSint32Uint16(I);
36986 case PT_Sint32:
36987 return emitShlSint32Sint32(I);
36988 case PT_Uint32:
36989 return emitShlSint32Uint32(I);
36990 case PT_Sint64:
36991 return emitShlSint32Sint64(I);
36992 case PT_Uint64:
36993 return emitShlSint32Uint64(I);
36994 case PT_IntAP:
36995 return emitShlSint32IntAP(I);
36996 case PT_IntAPS:
36997 return emitShlSint32IntAPS(I);
36998 default: llvm_unreachable("invalid type: emitShl");
36999 }
37000 llvm_unreachable("invalid enum value");
37001 case PT_Uint32:
37002 switch (T1) {
37003 case PT_Sint8:
37004 return emitShlUint32Sint8(I);
37005 case PT_Uint8:
37006 return emitShlUint32Uint8(I);
37007 case PT_Sint16:
37008 return emitShlUint32Sint16(I);
37009 case PT_Uint16:
37010 return emitShlUint32Uint16(I);
37011 case PT_Sint32:
37012 return emitShlUint32Sint32(I);
37013 case PT_Uint32:
37014 return emitShlUint32Uint32(I);
37015 case PT_Sint64:
37016 return emitShlUint32Sint64(I);
37017 case PT_Uint64:
37018 return emitShlUint32Uint64(I);
37019 case PT_IntAP:
37020 return emitShlUint32IntAP(I);
37021 case PT_IntAPS:
37022 return emitShlUint32IntAPS(I);
37023 default: llvm_unreachable("invalid type: emitShl");
37024 }
37025 llvm_unreachable("invalid enum value");
37026 case PT_Sint64:
37027 switch (T1) {
37028 case PT_Sint8:
37029 return emitShlSint64Sint8(I);
37030 case PT_Uint8:
37031 return emitShlSint64Uint8(I);
37032 case PT_Sint16:
37033 return emitShlSint64Sint16(I);
37034 case PT_Uint16:
37035 return emitShlSint64Uint16(I);
37036 case PT_Sint32:
37037 return emitShlSint64Sint32(I);
37038 case PT_Uint32:
37039 return emitShlSint64Uint32(I);
37040 case PT_Sint64:
37041 return emitShlSint64Sint64(I);
37042 case PT_Uint64:
37043 return emitShlSint64Uint64(I);
37044 case PT_IntAP:
37045 return emitShlSint64IntAP(I);
37046 case PT_IntAPS:
37047 return emitShlSint64IntAPS(I);
37048 default: llvm_unreachable("invalid type: emitShl");
37049 }
37050 llvm_unreachable("invalid enum value");
37051 case PT_Uint64:
37052 switch (T1) {
37053 case PT_Sint8:
37054 return emitShlUint64Sint8(I);
37055 case PT_Uint8:
37056 return emitShlUint64Uint8(I);
37057 case PT_Sint16:
37058 return emitShlUint64Sint16(I);
37059 case PT_Uint16:
37060 return emitShlUint64Uint16(I);
37061 case PT_Sint32:
37062 return emitShlUint64Sint32(I);
37063 case PT_Uint32:
37064 return emitShlUint64Uint32(I);
37065 case PT_Sint64:
37066 return emitShlUint64Sint64(I);
37067 case PT_Uint64:
37068 return emitShlUint64Uint64(I);
37069 case PT_IntAP:
37070 return emitShlUint64IntAP(I);
37071 case PT_IntAPS:
37072 return emitShlUint64IntAPS(I);
37073 default: llvm_unreachable("invalid type: emitShl");
37074 }
37075 llvm_unreachable("invalid enum value");
37076 case PT_IntAP:
37077 switch (T1) {
37078 case PT_Sint8:
37079 return emitShlIntAPSint8(I);
37080 case PT_Uint8:
37081 return emitShlIntAPUint8(I);
37082 case PT_Sint16:
37083 return emitShlIntAPSint16(I);
37084 case PT_Uint16:
37085 return emitShlIntAPUint16(I);
37086 case PT_Sint32:
37087 return emitShlIntAPSint32(I);
37088 case PT_Uint32:
37089 return emitShlIntAPUint32(I);
37090 case PT_Sint64:
37091 return emitShlIntAPSint64(I);
37092 case PT_Uint64:
37093 return emitShlIntAPUint64(I);
37094 case PT_IntAP:
37095 return emitShlIntAPIntAP(I);
37096 case PT_IntAPS:
37097 return emitShlIntAPIntAPS(I);
37098 default: llvm_unreachable("invalid type: emitShl");
37099 }
37100 llvm_unreachable("invalid enum value");
37101 case PT_IntAPS:
37102 switch (T1) {
37103 case PT_Sint8:
37104 return emitShlIntAPSSint8(I);
37105 case PT_Uint8:
37106 return emitShlIntAPSUint8(I);
37107 case PT_Sint16:
37108 return emitShlIntAPSSint16(I);
37109 case PT_Uint16:
37110 return emitShlIntAPSUint16(I);
37111 case PT_Sint32:
37112 return emitShlIntAPSSint32(I);
37113 case PT_Uint32:
37114 return emitShlIntAPSUint32(I);
37115 case PT_Sint64:
37116 return emitShlIntAPSSint64(I);
37117 case PT_Uint64:
37118 return emitShlIntAPSUint64(I);
37119 case PT_IntAP:
37120 return emitShlIntAPSIntAP(I);
37121 case PT_IntAPS:
37122 return emitShlIntAPSIntAPS(I);
37123 default: llvm_unreachable("invalid type: emitShl");
37124 }
37125 llvm_unreachable("invalid enum value");
37126 default: llvm_unreachable("invalid type: emitShl");
37127 }
37128 llvm_unreachable("invalid enum value");
37129}
37130#endif
37131#ifdef GET_LINK_IMPL
37132bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
37133 return emitOp<>(OP_ShlSint8Sint8, L);
37134}
37135bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
37136 return emitOp<>(OP_ShlSint8Uint8, L);
37137}
37138bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
37139 return emitOp<>(OP_ShlSint8Sint16, L);
37140}
37141bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
37142 return emitOp<>(OP_ShlSint8Uint16, L);
37143}
37144bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
37145 return emitOp<>(OP_ShlSint8Sint32, L);
37146}
37147bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
37148 return emitOp<>(OP_ShlSint8Uint32, L);
37149}
37150bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
37151 return emitOp<>(OP_ShlSint8Sint64, L);
37152}
37153bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
37154 return emitOp<>(OP_ShlSint8Uint64, L);
37155}
37156bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
37157 return emitOp<>(OP_ShlSint8IntAP, L);
37158}
37159bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
37160 return emitOp<>(OP_ShlSint8IntAPS, L);
37161}
37162bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
37163 return emitOp<>(OP_ShlUint8Sint8, L);
37164}
37165bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
37166 return emitOp<>(OP_ShlUint8Uint8, L);
37167}
37168bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
37169 return emitOp<>(OP_ShlUint8Sint16, L);
37170}
37171bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
37172 return emitOp<>(OP_ShlUint8Uint16, L);
37173}
37174bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
37175 return emitOp<>(OP_ShlUint8Sint32, L);
37176}
37177bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
37178 return emitOp<>(OP_ShlUint8Uint32, L);
37179}
37180bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
37181 return emitOp<>(OP_ShlUint8Sint64, L);
37182}
37183bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
37184 return emitOp<>(OP_ShlUint8Uint64, L);
37185}
37186bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
37187 return emitOp<>(OP_ShlUint8IntAP, L);
37188}
37189bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
37190 return emitOp<>(OP_ShlUint8IntAPS, L);
37191}
37192bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
37193 return emitOp<>(OP_ShlSint16Sint8, L);
37194}
37195bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
37196 return emitOp<>(OP_ShlSint16Uint8, L);
37197}
37198bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
37199 return emitOp<>(OP_ShlSint16Sint16, L);
37200}
37201bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
37202 return emitOp<>(OP_ShlSint16Uint16, L);
37203}
37204bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
37205 return emitOp<>(OP_ShlSint16Sint32, L);
37206}
37207bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
37208 return emitOp<>(OP_ShlSint16Uint32, L);
37209}
37210bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
37211 return emitOp<>(OP_ShlSint16Sint64, L);
37212}
37213bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
37214 return emitOp<>(OP_ShlSint16Uint64, L);
37215}
37216bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
37217 return emitOp<>(OP_ShlSint16IntAP, L);
37218}
37219bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
37220 return emitOp<>(OP_ShlSint16IntAPS, L);
37221}
37222bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
37223 return emitOp<>(OP_ShlUint16Sint8, L);
37224}
37225bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
37226 return emitOp<>(OP_ShlUint16Uint8, L);
37227}
37228bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
37229 return emitOp<>(OP_ShlUint16Sint16, L);
37230}
37231bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
37232 return emitOp<>(OP_ShlUint16Uint16, L);
37233}
37234bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
37235 return emitOp<>(OP_ShlUint16Sint32, L);
37236}
37237bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
37238 return emitOp<>(OP_ShlUint16Uint32, L);
37239}
37240bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
37241 return emitOp<>(OP_ShlUint16Sint64, L);
37242}
37243bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
37244 return emitOp<>(OP_ShlUint16Uint64, L);
37245}
37246bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
37247 return emitOp<>(OP_ShlUint16IntAP, L);
37248}
37249bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
37250 return emitOp<>(OP_ShlUint16IntAPS, L);
37251}
37252bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
37253 return emitOp<>(OP_ShlSint32Sint8, L);
37254}
37255bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
37256 return emitOp<>(OP_ShlSint32Uint8, L);
37257}
37258bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
37259 return emitOp<>(OP_ShlSint32Sint16, L);
37260}
37261bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
37262 return emitOp<>(OP_ShlSint32Uint16, L);
37263}
37264bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
37265 return emitOp<>(OP_ShlSint32Sint32, L);
37266}
37267bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
37268 return emitOp<>(OP_ShlSint32Uint32, L);
37269}
37270bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
37271 return emitOp<>(OP_ShlSint32Sint64, L);
37272}
37273bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
37274 return emitOp<>(OP_ShlSint32Uint64, L);
37275}
37276bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
37277 return emitOp<>(OP_ShlSint32IntAP, L);
37278}
37279bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
37280 return emitOp<>(OP_ShlSint32IntAPS, L);
37281}
37282bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
37283 return emitOp<>(OP_ShlUint32Sint8, L);
37284}
37285bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
37286 return emitOp<>(OP_ShlUint32Uint8, L);
37287}
37288bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
37289 return emitOp<>(OP_ShlUint32Sint16, L);
37290}
37291bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
37292 return emitOp<>(OP_ShlUint32Uint16, L);
37293}
37294bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
37295 return emitOp<>(OP_ShlUint32Sint32, L);
37296}
37297bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
37298 return emitOp<>(OP_ShlUint32Uint32, L);
37299}
37300bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
37301 return emitOp<>(OP_ShlUint32Sint64, L);
37302}
37303bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
37304 return emitOp<>(OP_ShlUint32Uint64, L);
37305}
37306bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
37307 return emitOp<>(OP_ShlUint32IntAP, L);
37308}
37309bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
37310 return emitOp<>(OP_ShlUint32IntAPS, L);
37311}
37312bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
37313 return emitOp<>(OP_ShlSint64Sint8, L);
37314}
37315bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
37316 return emitOp<>(OP_ShlSint64Uint8, L);
37317}
37318bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
37319 return emitOp<>(OP_ShlSint64Sint16, L);
37320}
37321bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
37322 return emitOp<>(OP_ShlSint64Uint16, L);
37323}
37324bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
37325 return emitOp<>(OP_ShlSint64Sint32, L);
37326}
37327bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
37328 return emitOp<>(OP_ShlSint64Uint32, L);
37329}
37330bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
37331 return emitOp<>(OP_ShlSint64Sint64, L);
37332}
37333bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
37334 return emitOp<>(OP_ShlSint64Uint64, L);
37335}
37336bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
37337 return emitOp<>(OP_ShlSint64IntAP, L);
37338}
37339bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
37340 return emitOp<>(OP_ShlSint64IntAPS, L);
37341}
37342bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
37343 return emitOp<>(OP_ShlUint64Sint8, L);
37344}
37345bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
37346 return emitOp<>(OP_ShlUint64Uint8, L);
37347}
37348bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
37349 return emitOp<>(OP_ShlUint64Sint16, L);
37350}
37351bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
37352 return emitOp<>(OP_ShlUint64Uint16, L);
37353}
37354bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
37355 return emitOp<>(OP_ShlUint64Sint32, L);
37356}
37357bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
37358 return emitOp<>(OP_ShlUint64Uint32, L);
37359}
37360bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
37361 return emitOp<>(OP_ShlUint64Sint64, L);
37362}
37363bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
37364 return emitOp<>(OP_ShlUint64Uint64, L);
37365}
37366bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
37367 return emitOp<>(OP_ShlUint64IntAP, L);
37368}
37369bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
37370 return emitOp<>(OP_ShlUint64IntAPS, L);
37371}
37372bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
37373 return emitOp<>(OP_ShlIntAPSint8, L);
37374}
37375bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
37376 return emitOp<>(OP_ShlIntAPUint8, L);
37377}
37378bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
37379 return emitOp<>(OP_ShlIntAPSint16, L);
37380}
37381bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
37382 return emitOp<>(OP_ShlIntAPUint16, L);
37383}
37384bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
37385 return emitOp<>(OP_ShlIntAPSint32, L);
37386}
37387bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
37388 return emitOp<>(OP_ShlIntAPUint32, L);
37389}
37390bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
37391 return emitOp<>(OP_ShlIntAPSint64, L);
37392}
37393bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
37394 return emitOp<>(OP_ShlIntAPUint64, L);
37395}
37396bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
37397 return emitOp<>(OP_ShlIntAPIntAP, L);
37398}
37399bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
37400 return emitOp<>(OP_ShlIntAPIntAPS, L);
37401}
37402bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
37403 return emitOp<>(OP_ShlIntAPSSint8, L);
37404}
37405bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
37406 return emitOp<>(OP_ShlIntAPSUint8, L);
37407}
37408bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
37409 return emitOp<>(OP_ShlIntAPSSint16, L);
37410}
37411bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
37412 return emitOp<>(OP_ShlIntAPSUint16, L);
37413}
37414bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
37415 return emitOp<>(OP_ShlIntAPSSint32, L);
37416}
37417bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
37418 return emitOp<>(OP_ShlIntAPSUint32, L);
37419}
37420bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
37421 return emitOp<>(OP_ShlIntAPSSint64, L);
37422}
37423bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
37424 return emitOp<>(OP_ShlIntAPSUint64, L);
37425}
37426bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
37427 return emitOp<>(OP_ShlIntAPSIntAP, L);
37428}
37429bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
37430 return emitOp<>(OP_ShlIntAPSIntAPS, L);
37431}
37432#endif
37433#ifdef GET_EVAL_IMPL
37434bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
37435 if (!isActive()) return true;
37436 CurrentSource = L;
37437 return Shl<PT_Sint8, PT_Sint8>(S, OpPC);
37438}
37439bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
37440 if (!isActive()) return true;
37441 CurrentSource = L;
37442 return Shl<PT_Sint8, PT_Uint8>(S, OpPC);
37443}
37444bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
37445 if (!isActive()) return true;
37446 CurrentSource = L;
37447 return Shl<PT_Sint8, PT_Sint16>(S, OpPC);
37448}
37449bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
37450 if (!isActive()) return true;
37451 CurrentSource = L;
37452 return Shl<PT_Sint8, PT_Uint16>(S, OpPC);
37453}
37454bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
37455 if (!isActive()) return true;
37456 CurrentSource = L;
37457 return Shl<PT_Sint8, PT_Sint32>(S, OpPC);
37458}
37459bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
37460 if (!isActive()) return true;
37461 CurrentSource = L;
37462 return Shl<PT_Sint8, PT_Uint32>(S, OpPC);
37463}
37464bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
37465 if (!isActive()) return true;
37466 CurrentSource = L;
37467 return Shl<PT_Sint8, PT_Sint64>(S, OpPC);
37468}
37469bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
37470 if (!isActive()) return true;
37471 CurrentSource = L;
37472 return Shl<PT_Sint8, PT_Uint64>(S, OpPC);
37473}
37474bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
37475 if (!isActive()) return true;
37476 CurrentSource = L;
37477 return Shl<PT_Sint8, PT_IntAP>(S, OpPC);
37478}
37479bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
37480 if (!isActive()) return true;
37481 CurrentSource = L;
37482 return Shl<PT_Sint8, PT_IntAPS>(S, OpPC);
37483}
37484bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
37485 if (!isActive()) return true;
37486 CurrentSource = L;
37487 return Shl<PT_Uint8, PT_Sint8>(S, OpPC);
37488}
37489bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
37490 if (!isActive()) return true;
37491 CurrentSource = L;
37492 return Shl<PT_Uint8, PT_Uint8>(S, OpPC);
37493}
37494bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
37495 if (!isActive()) return true;
37496 CurrentSource = L;
37497 return Shl<PT_Uint8, PT_Sint16>(S, OpPC);
37498}
37499bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
37500 if (!isActive()) return true;
37501 CurrentSource = L;
37502 return Shl<PT_Uint8, PT_Uint16>(S, OpPC);
37503}
37504bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
37505 if (!isActive()) return true;
37506 CurrentSource = L;
37507 return Shl<PT_Uint8, PT_Sint32>(S, OpPC);
37508}
37509bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
37510 if (!isActive()) return true;
37511 CurrentSource = L;
37512 return Shl<PT_Uint8, PT_Uint32>(S, OpPC);
37513}
37514bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
37515 if (!isActive()) return true;
37516 CurrentSource = L;
37517 return Shl<PT_Uint8, PT_Sint64>(S, OpPC);
37518}
37519bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
37520 if (!isActive()) return true;
37521 CurrentSource = L;
37522 return Shl<PT_Uint8, PT_Uint64>(S, OpPC);
37523}
37524bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
37525 if (!isActive()) return true;
37526 CurrentSource = L;
37527 return Shl<PT_Uint8, PT_IntAP>(S, OpPC);
37528}
37529bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
37530 if (!isActive()) return true;
37531 CurrentSource = L;
37532 return Shl<PT_Uint8, PT_IntAPS>(S, OpPC);
37533}
37534bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
37535 if (!isActive()) return true;
37536 CurrentSource = L;
37537 return Shl<PT_Sint16, PT_Sint8>(S, OpPC);
37538}
37539bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
37540 if (!isActive()) return true;
37541 CurrentSource = L;
37542 return Shl<PT_Sint16, PT_Uint8>(S, OpPC);
37543}
37544bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
37545 if (!isActive()) return true;
37546 CurrentSource = L;
37547 return Shl<PT_Sint16, PT_Sint16>(S, OpPC);
37548}
37549bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
37550 if (!isActive()) return true;
37551 CurrentSource = L;
37552 return Shl<PT_Sint16, PT_Uint16>(S, OpPC);
37553}
37554bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
37555 if (!isActive()) return true;
37556 CurrentSource = L;
37557 return Shl<PT_Sint16, PT_Sint32>(S, OpPC);
37558}
37559bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
37560 if (!isActive()) return true;
37561 CurrentSource = L;
37562 return Shl<PT_Sint16, PT_Uint32>(S, OpPC);
37563}
37564bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
37565 if (!isActive()) return true;
37566 CurrentSource = L;
37567 return Shl<PT_Sint16, PT_Sint64>(S, OpPC);
37568}
37569bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
37570 if (!isActive()) return true;
37571 CurrentSource = L;
37572 return Shl<PT_Sint16, PT_Uint64>(S, OpPC);
37573}
37574bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
37575 if (!isActive()) return true;
37576 CurrentSource = L;
37577 return Shl<PT_Sint16, PT_IntAP>(S, OpPC);
37578}
37579bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
37580 if (!isActive()) return true;
37581 CurrentSource = L;
37582 return Shl<PT_Sint16, PT_IntAPS>(S, OpPC);
37583}
37584bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
37585 if (!isActive()) return true;
37586 CurrentSource = L;
37587 return Shl<PT_Uint16, PT_Sint8>(S, OpPC);
37588}
37589bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
37590 if (!isActive()) return true;
37591 CurrentSource = L;
37592 return Shl<PT_Uint16, PT_Uint8>(S, OpPC);
37593}
37594bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
37595 if (!isActive()) return true;
37596 CurrentSource = L;
37597 return Shl<PT_Uint16, PT_Sint16>(S, OpPC);
37598}
37599bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
37600 if (!isActive()) return true;
37601 CurrentSource = L;
37602 return Shl<PT_Uint16, PT_Uint16>(S, OpPC);
37603}
37604bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
37605 if (!isActive()) return true;
37606 CurrentSource = L;
37607 return Shl<PT_Uint16, PT_Sint32>(S, OpPC);
37608}
37609bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
37610 if (!isActive()) return true;
37611 CurrentSource = L;
37612 return Shl<PT_Uint16, PT_Uint32>(S, OpPC);
37613}
37614bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
37615 if (!isActive()) return true;
37616 CurrentSource = L;
37617 return Shl<PT_Uint16, PT_Sint64>(S, OpPC);
37618}
37619bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
37620 if (!isActive()) return true;
37621 CurrentSource = L;
37622 return Shl<PT_Uint16, PT_Uint64>(S, OpPC);
37623}
37624bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
37625 if (!isActive()) return true;
37626 CurrentSource = L;
37627 return Shl<PT_Uint16, PT_IntAP>(S, OpPC);
37628}
37629bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
37630 if (!isActive()) return true;
37631 CurrentSource = L;
37632 return Shl<PT_Uint16, PT_IntAPS>(S, OpPC);
37633}
37634bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
37635 if (!isActive()) return true;
37636 CurrentSource = L;
37637 return Shl<PT_Sint32, PT_Sint8>(S, OpPC);
37638}
37639bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
37640 if (!isActive()) return true;
37641 CurrentSource = L;
37642 return Shl<PT_Sint32, PT_Uint8>(S, OpPC);
37643}
37644bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
37645 if (!isActive()) return true;
37646 CurrentSource = L;
37647 return Shl<PT_Sint32, PT_Sint16>(S, OpPC);
37648}
37649bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
37650 if (!isActive()) return true;
37651 CurrentSource = L;
37652 return Shl<PT_Sint32, PT_Uint16>(S, OpPC);
37653}
37654bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
37655 if (!isActive()) return true;
37656 CurrentSource = L;
37657 return Shl<PT_Sint32, PT_Sint32>(S, OpPC);
37658}
37659bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
37660 if (!isActive()) return true;
37661 CurrentSource = L;
37662 return Shl<PT_Sint32, PT_Uint32>(S, OpPC);
37663}
37664bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
37665 if (!isActive()) return true;
37666 CurrentSource = L;
37667 return Shl<PT_Sint32, PT_Sint64>(S, OpPC);
37668}
37669bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
37670 if (!isActive()) return true;
37671 CurrentSource = L;
37672 return Shl<PT_Sint32, PT_Uint64>(S, OpPC);
37673}
37674bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
37675 if (!isActive()) return true;
37676 CurrentSource = L;
37677 return Shl<PT_Sint32, PT_IntAP>(S, OpPC);
37678}
37679bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
37680 if (!isActive()) return true;
37681 CurrentSource = L;
37682 return Shl<PT_Sint32, PT_IntAPS>(S, OpPC);
37683}
37684bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
37685 if (!isActive()) return true;
37686 CurrentSource = L;
37687 return Shl<PT_Uint32, PT_Sint8>(S, OpPC);
37688}
37689bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
37690 if (!isActive()) return true;
37691 CurrentSource = L;
37692 return Shl<PT_Uint32, PT_Uint8>(S, OpPC);
37693}
37694bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
37695 if (!isActive()) return true;
37696 CurrentSource = L;
37697 return Shl<PT_Uint32, PT_Sint16>(S, OpPC);
37698}
37699bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
37700 if (!isActive()) return true;
37701 CurrentSource = L;
37702 return Shl<PT_Uint32, PT_Uint16>(S, OpPC);
37703}
37704bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
37705 if (!isActive()) return true;
37706 CurrentSource = L;
37707 return Shl<PT_Uint32, PT_Sint32>(S, OpPC);
37708}
37709bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
37710 if (!isActive()) return true;
37711 CurrentSource = L;
37712 return Shl<PT_Uint32, PT_Uint32>(S, OpPC);
37713}
37714bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
37715 if (!isActive()) return true;
37716 CurrentSource = L;
37717 return Shl<PT_Uint32, PT_Sint64>(S, OpPC);
37718}
37719bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
37720 if (!isActive()) return true;
37721 CurrentSource = L;
37722 return Shl<PT_Uint32, PT_Uint64>(S, OpPC);
37723}
37724bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
37725 if (!isActive()) return true;
37726 CurrentSource = L;
37727 return Shl<PT_Uint32, PT_IntAP>(S, OpPC);
37728}
37729bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
37730 if (!isActive()) return true;
37731 CurrentSource = L;
37732 return Shl<PT_Uint32, PT_IntAPS>(S, OpPC);
37733}
37734bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
37735 if (!isActive()) return true;
37736 CurrentSource = L;
37737 return Shl<PT_Sint64, PT_Sint8>(S, OpPC);
37738}
37739bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
37740 if (!isActive()) return true;
37741 CurrentSource = L;
37742 return Shl<PT_Sint64, PT_Uint8>(S, OpPC);
37743}
37744bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
37745 if (!isActive()) return true;
37746 CurrentSource = L;
37747 return Shl<PT_Sint64, PT_Sint16>(S, OpPC);
37748}
37749bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
37750 if (!isActive()) return true;
37751 CurrentSource = L;
37752 return Shl<PT_Sint64, PT_Uint16>(S, OpPC);
37753}
37754bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
37755 if (!isActive()) return true;
37756 CurrentSource = L;
37757 return Shl<PT_Sint64, PT_Sint32>(S, OpPC);
37758}
37759bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
37760 if (!isActive()) return true;
37761 CurrentSource = L;
37762 return Shl<PT_Sint64, PT_Uint32>(S, OpPC);
37763}
37764bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
37765 if (!isActive()) return true;
37766 CurrentSource = L;
37767 return Shl<PT_Sint64, PT_Sint64>(S, OpPC);
37768}
37769bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
37770 if (!isActive()) return true;
37771 CurrentSource = L;
37772 return Shl<PT_Sint64, PT_Uint64>(S, OpPC);
37773}
37774bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
37775 if (!isActive()) return true;
37776 CurrentSource = L;
37777 return Shl<PT_Sint64, PT_IntAP>(S, OpPC);
37778}
37779bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
37780 if (!isActive()) return true;
37781 CurrentSource = L;
37782 return Shl<PT_Sint64, PT_IntAPS>(S, OpPC);
37783}
37784bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
37785 if (!isActive()) return true;
37786 CurrentSource = L;
37787 return Shl<PT_Uint64, PT_Sint8>(S, OpPC);
37788}
37789bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
37790 if (!isActive()) return true;
37791 CurrentSource = L;
37792 return Shl<PT_Uint64, PT_Uint8>(S, OpPC);
37793}
37794bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
37795 if (!isActive()) return true;
37796 CurrentSource = L;
37797 return Shl<PT_Uint64, PT_Sint16>(S, OpPC);
37798}
37799bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
37800 if (!isActive()) return true;
37801 CurrentSource = L;
37802 return Shl<PT_Uint64, PT_Uint16>(S, OpPC);
37803}
37804bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
37805 if (!isActive()) return true;
37806 CurrentSource = L;
37807 return Shl<PT_Uint64, PT_Sint32>(S, OpPC);
37808}
37809bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
37810 if (!isActive()) return true;
37811 CurrentSource = L;
37812 return Shl<PT_Uint64, PT_Uint32>(S, OpPC);
37813}
37814bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
37815 if (!isActive()) return true;
37816 CurrentSource = L;
37817 return Shl<PT_Uint64, PT_Sint64>(S, OpPC);
37818}
37819bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
37820 if (!isActive()) return true;
37821 CurrentSource = L;
37822 return Shl<PT_Uint64, PT_Uint64>(S, OpPC);
37823}
37824bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
37825 if (!isActive()) return true;
37826 CurrentSource = L;
37827 return Shl<PT_Uint64, PT_IntAP>(S, OpPC);
37828}
37829bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
37830 if (!isActive()) return true;
37831 CurrentSource = L;
37832 return Shl<PT_Uint64, PT_IntAPS>(S, OpPC);
37833}
37834bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
37835 if (!isActive()) return true;
37836 CurrentSource = L;
37837 return Shl<PT_IntAP, PT_Sint8>(S, OpPC);
37838}
37839bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
37840 if (!isActive()) return true;
37841 CurrentSource = L;
37842 return Shl<PT_IntAP, PT_Uint8>(S, OpPC);
37843}
37844bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
37845 if (!isActive()) return true;
37846 CurrentSource = L;
37847 return Shl<PT_IntAP, PT_Sint16>(S, OpPC);
37848}
37849bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
37850 if (!isActive()) return true;
37851 CurrentSource = L;
37852 return Shl<PT_IntAP, PT_Uint16>(S, OpPC);
37853}
37854bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
37855 if (!isActive()) return true;
37856 CurrentSource = L;
37857 return Shl<PT_IntAP, PT_Sint32>(S, OpPC);
37858}
37859bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
37860 if (!isActive()) return true;
37861 CurrentSource = L;
37862 return Shl<PT_IntAP, PT_Uint32>(S, OpPC);
37863}
37864bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
37865 if (!isActive()) return true;
37866 CurrentSource = L;
37867 return Shl<PT_IntAP, PT_Sint64>(S, OpPC);
37868}
37869bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
37870 if (!isActive()) return true;
37871 CurrentSource = L;
37872 return Shl<PT_IntAP, PT_Uint64>(S, OpPC);
37873}
37874bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
37875 if (!isActive()) return true;
37876 CurrentSource = L;
37877 return Shl<PT_IntAP, PT_IntAP>(S, OpPC);
37878}
37879bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
37880 if (!isActive()) return true;
37881 CurrentSource = L;
37882 return Shl<PT_IntAP, PT_IntAPS>(S, OpPC);
37883}
37884bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
37885 if (!isActive()) return true;
37886 CurrentSource = L;
37887 return Shl<PT_IntAPS, PT_Sint8>(S, OpPC);
37888}
37889bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
37890 if (!isActive()) return true;
37891 CurrentSource = L;
37892 return Shl<PT_IntAPS, PT_Uint8>(S, OpPC);
37893}
37894bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
37895 if (!isActive()) return true;
37896 CurrentSource = L;
37897 return Shl<PT_IntAPS, PT_Sint16>(S, OpPC);
37898}
37899bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
37900 if (!isActive()) return true;
37901 CurrentSource = L;
37902 return Shl<PT_IntAPS, PT_Uint16>(S, OpPC);
37903}
37904bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
37905 if (!isActive()) return true;
37906 CurrentSource = L;
37907 return Shl<PT_IntAPS, PT_Sint32>(S, OpPC);
37908}
37909bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
37910 if (!isActive()) return true;
37911 CurrentSource = L;
37912 return Shl<PT_IntAPS, PT_Uint32>(S, OpPC);
37913}
37914bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
37915 if (!isActive()) return true;
37916 CurrentSource = L;
37917 return Shl<PT_IntAPS, PT_Sint64>(S, OpPC);
37918}
37919bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
37920 if (!isActive()) return true;
37921 CurrentSource = L;
37922 return Shl<PT_IntAPS, PT_Uint64>(S, OpPC);
37923}
37924bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
37925 if (!isActive()) return true;
37926 CurrentSource = L;
37927 return Shl<PT_IntAPS, PT_IntAP>(S, OpPC);
37928}
37929bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
37930 if (!isActive()) return true;
37931 CurrentSource = L;
37932 return Shl<PT_IntAPS, PT_IntAPS>(S, OpPC);
37933}
37934#endif
37935#ifdef GET_OPCODE_NAMES
37936OP_ShrSint8Sint8,
37937OP_ShrSint8Uint8,
37938OP_ShrSint8Sint16,
37939OP_ShrSint8Uint16,
37940OP_ShrSint8Sint32,
37941OP_ShrSint8Uint32,
37942OP_ShrSint8Sint64,
37943OP_ShrSint8Uint64,
37944OP_ShrSint8IntAP,
37945OP_ShrSint8IntAPS,
37946OP_ShrUint8Sint8,
37947OP_ShrUint8Uint8,
37948OP_ShrUint8Sint16,
37949OP_ShrUint8Uint16,
37950OP_ShrUint8Sint32,
37951OP_ShrUint8Uint32,
37952OP_ShrUint8Sint64,
37953OP_ShrUint8Uint64,
37954OP_ShrUint8IntAP,
37955OP_ShrUint8IntAPS,
37956OP_ShrSint16Sint8,
37957OP_ShrSint16Uint8,
37958OP_ShrSint16Sint16,
37959OP_ShrSint16Uint16,
37960OP_ShrSint16Sint32,
37961OP_ShrSint16Uint32,
37962OP_ShrSint16Sint64,
37963OP_ShrSint16Uint64,
37964OP_ShrSint16IntAP,
37965OP_ShrSint16IntAPS,
37966OP_ShrUint16Sint8,
37967OP_ShrUint16Uint8,
37968OP_ShrUint16Sint16,
37969OP_ShrUint16Uint16,
37970OP_ShrUint16Sint32,
37971OP_ShrUint16Uint32,
37972OP_ShrUint16Sint64,
37973OP_ShrUint16Uint64,
37974OP_ShrUint16IntAP,
37975OP_ShrUint16IntAPS,
37976OP_ShrSint32Sint8,
37977OP_ShrSint32Uint8,
37978OP_ShrSint32Sint16,
37979OP_ShrSint32Uint16,
37980OP_ShrSint32Sint32,
37981OP_ShrSint32Uint32,
37982OP_ShrSint32Sint64,
37983OP_ShrSint32Uint64,
37984OP_ShrSint32IntAP,
37985OP_ShrSint32IntAPS,
37986OP_ShrUint32Sint8,
37987OP_ShrUint32Uint8,
37988OP_ShrUint32Sint16,
37989OP_ShrUint32Uint16,
37990OP_ShrUint32Sint32,
37991OP_ShrUint32Uint32,
37992OP_ShrUint32Sint64,
37993OP_ShrUint32Uint64,
37994OP_ShrUint32IntAP,
37995OP_ShrUint32IntAPS,
37996OP_ShrSint64Sint8,
37997OP_ShrSint64Uint8,
37998OP_ShrSint64Sint16,
37999OP_ShrSint64Uint16,
38000OP_ShrSint64Sint32,
38001OP_ShrSint64Uint32,
38002OP_ShrSint64Sint64,
38003OP_ShrSint64Uint64,
38004OP_ShrSint64IntAP,
38005OP_ShrSint64IntAPS,
38006OP_ShrUint64Sint8,
38007OP_ShrUint64Uint8,
38008OP_ShrUint64Sint16,
38009OP_ShrUint64Uint16,
38010OP_ShrUint64Sint32,
38011OP_ShrUint64Uint32,
38012OP_ShrUint64Sint64,
38013OP_ShrUint64Uint64,
38014OP_ShrUint64IntAP,
38015OP_ShrUint64IntAPS,
38016OP_ShrIntAPSint8,
38017OP_ShrIntAPUint8,
38018OP_ShrIntAPSint16,
38019OP_ShrIntAPUint16,
38020OP_ShrIntAPSint32,
38021OP_ShrIntAPUint32,
38022OP_ShrIntAPSint64,
38023OP_ShrIntAPUint64,
38024OP_ShrIntAPIntAP,
38025OP_ShrIntAPIntAPS,
38026OP_ShrIntAPSSint8,
38027OP_ShrIntAPSUint8,
38028OP_ShrIntAPSSint16,
38029OP_ShrIntAPSUint16,
38030OP_ShrIntAPSSint32,
38031OP_ShrIntAPSUint32,
38032OP_ShrIntAPSSint64,
38033OP_ShrIntAPSUint64,
38034OP_ShrIntAPSIntAP,
38035OP_ShrIntAPSIntAPS,
38036#endif
38037#ifdef GET_INTERP
38038case OP_ShrSint8Sint8: {
38039 if (!Shr<PT_Sint8, PT_Sint8>(S, OpPC))
38040 return false;
38041 continue;
38042}
38043case OP_ShrSint8Uint8: {
38044 if (!Shr<PT_Sint8, PT_Uint8>(S, OpPC))
38045 return false;
38046 continue;
38047}
38048case OP_ShrSint8Sint16: {
38049 if (!Shr<PT_Sint8, PT_Sint16>(S, OpPC))
38050 return false;
38051 continue;
38052}
38053case OP_ShrSint8Uint16: {
38054 if (!Shr<PT_Sint8, PT_Uint16>(S, OpPC))
38055 return false;
38056 continue;
38057}
38058case OP_ShrSint8Sint32: {
38059 if (!Shr<PT_Sint8, PT_Sint32>(S, OpPC))
38060 return false;
38061 continue;
38062}
38063case OP_ShrSint8Uint32: {
38064 if (!Shr<PT_Sint8, PT_Uint32>(S, OpPC))
38065 return false;
38066 continue;
38067}
38068case OP_ShrSint8Sint64: {
38069 if (!Shr<PT_Sint8, PT_Sint64>(S, OpPC))
38070 return false;
38071 continue;
38072}
38073case OP_ShrSint8Uint64: {
38074 if (!Shr<PT_Sint8, PT_Uint64>(S, OpPC))
38075 return false;
38076 continue;
38077}
38078case OP_ShrSint8IntAP: {
38079 if (!Shr<PT_Sint8, PT_IntAP>(S, OpPC))
38080 return false;
38081 continue;
38082}
38083case OP_ShrSint8IntAPS: {
38084 if (!Shr<PT_Sint8, PT_IntAPS>(S, OpPC))
38085 return false;
38086 continue;
38087}
38088case OP_ShrUint8Sint8: {
38089 if (!Shr<PT_Uint8, PT_Sint8>(S, OpPC))
38090 return false;
38091 continue;
38092}
38093case OP_ShrUint8Uint8: {
38094 if (!Shr<PT_Uint8, PT_Uint8>(S, OpPC))
38095 return false;
38096 continue;
38097}
38098case OP_ShrUint8Sint16: {
38099 if (!Shr<PT_Uint8, PT_Sint16>(S, OpPC))
38100 return false;
38101 continue;
38102}
38103case OP_ShrUint8Uint16: {
38104 if (!Shr<PT_Uint8, PT_Uint16>(S, OpPC))
38105 return false;
38106 continue;
38107}
38108case OP_ShrUint8Sint32: {
38109 if (!Shr<PT_Uint8, PT_Sint32>(S, OpPC))
38110 return false;
38111 continue;
38112}
38113case OP_ShrUint8Uint32: {
38114 if (!Shr<PT_Uint8, PT_Uint32>(S, OpPC))
38115 return false;
38116 continue;
38117}
38118case OP_ShrUint8Sint64: {
38119 if (!Shr<PT_Uint8, PT_Sint64>(S, OpPC))
38120 return false;
38121 continue;
38122}
38123case OP_ShrUint8Uint64: {
38124 if (!Shr<PT_Uint8, PT_Uint64>(S, OpPC))
38125 return false;
38126 continue;
38127}
38128case OP_ShrUint8IntAP: {
38129 if (!Shr<PT_Uint8, PT_IntAP>(S, OpPC))
38130 return false;
38131 continue;
38132}
38133case OP_ShrUint8IntAPS: {
38134 if (!Shr<PT_Uint8, PT_IntAPS>(S, OpPC))
38135 return false;
38136 continue;
38137}
38138case OP_ShrSint16Sint8: {
38139 if (!Shr<PT_Sint16, PT_Sint8>(S, OpPC))
38140 return false;
38141 continue;
38142}
38143case OP_ShrSint16Uint8: {
38144 if (!Shr<PT_Sint16, PT_Uint8>(S, OpPC))
38145 return false;
38146 continue;
38147}
38148case OP_ShrSint16Sint16: {
38149 if (!Shr<PT_Sint16, PT_Sint16>(S, OpPC))
38150 return false;
38151 continue;
38152}
38153case OP_ShrSint16Uint16: {
38154 if (!Shr<PT_Sint16, PT_Uint16>(S, OpPC))
38155 return false;
38156 continue;
38157}
38158case OP_ShrSint16Sint32: {
38159 if (!Shr<PT_Sint16, PT_Sint32>(S, OpPC))
38160 return false;
38161 continue;
38162}
38163case OP_ShrSint16Uint32: {
38164 if (!Shr<PT_Sint16, PT_Uint32>(S, OpPC))
38165 return false;
38166 continue;
38167}
38168case OP_ShrSint16Sint64: {
38169 if (!Shr<PT_Sint16, PT_Sint64>(S, OpPC))
38170 return false;
38171 continue;
38172}
38173case OP_ShrSint16Uint64: {
38174 if (!Shr<PT_Sint16, PT_Uint64>(S, OpPC))
38175 return false;
38176 continue;
38177}
38178case OP_ShrSint16IntAP: {
38179 if (!Shr<PT_Sint16, PT_IntAP>(S, OpPC))
38180 return false;
38181 continue;
38182}
38183case OP_ShrSint16IntAPS: {
38184 if (!Shr<PT_Sint16, PT_IntAPS>(S, OpPC))
38185 return false;
38186 continue;
38187}
38188case OP_ShrUint16Sint8: {
38189 if (!Shr<PT_Uint16, PT_Sint8>(S, OpPC))
38190 return false;
38191 continue;
38192}
38193case OP_ShrUint16Uint8: {
38194 if (!Shr<PT_Uint16, PT_Uint8>(S, OpPC))
38195 return false;
38196 continue;
38197}
38198case OP_ShrUint16Sint16: {
38199 if (!Shr<PT_Uint16, PT_Sint16>(S, OpPC))
38200 return false;
38201 continue;
38202}
38203case OP_ShrUint16Uint16: {
38204 if (!Shr<PT_Uint16, PT_Uint16>(S, OpPC))
38205 return false;
38206 continue;
38207}
38208case OP_ShrUint16Sint32: {
38209 if (!Shr<PT_Uint16, PT_Sint32>(S, OpPC))
38210 return false;
38211 continue;
38212}
38213case OP_ShrUint16Uint32: {
38214 if (!Shr<PT_Uint16, PT_Uint32>(S, OpPC))
38215 return false;
38216 continue;
38217}
38218case OP_ShrUint16Sint64: {
38219 if (!Shr<PT_Uint16, PT_Sint64>(S, OpPC))
38220 return false;
38221 continue;
38222}
38223case OP_ShrUint16Uint64: {
38224 if (!Shr<PT_Uint16, PT_Uint64>(S, OpPC))
38225 return false;
38226 continue;
38227}
38228case OP_ShrUint16IntAP: {
38229 if (!Shr<PT_Uint16, PT_IntAP>(S, OpPC))
38230 return false;
38231 continue;
38232}
38233case OP_ShrUint16IntAPS: {
38234 if (!Shr<PT_Uint16, PT_IntAPS>(S, OpPC))
38235 return false;
38236 continue;
38237}
38238case OP_ShrSint32Sint8: {
38239 if (!Shr<PT_Sint32, PT_Sint8>(S, OpPC))
38240 return false;
38241 continue;
38242}
38243case OP_ShrSint32Uint8: {
38244 if (!Shr<PT_Sint32, PT_Uint8>(S, OpPC))
38245 return false;
38246 continue;
38247}
38248case OP_ShrSint32Sint16: {
38249 if (!Shr<PT_Sint32, PT_Sint16>(S, OpPC))
38250 return false;
38251 continue;
38252}
38253case OP_ShrSint32Uint16: {
38254 if (!Shr<PT_Sint32, PT_Uint16>(S, OpPC))
38255 return false;
38256 continue;
38257}
38258case OP_ShrSint32Sint32: {
38259 if (!Shr<PT_Sint32, PT_Sint32>(S, OpPC))
38260 return false;
38261 continue;
38262}
38263case OP_ShrSint32Uint32: {
38264 if (!Shr<PT_Sint32, PT_Uint32>(S, OpPC))
38265 return false;
38266 continue;
38267}
38268case OP_ShrSint32Sint64: {
38269 if (!Shr<PT_Sint32, PT_Sint64>(S, OpPC))
38270 return false;
38271 continue;
38272}
38273case OP_ShrSint32Uint64: {
38274 if (!Shr<PT_Sint32, PT_Uint64>(S, OpPC))
38275 return false;
38276 continue;
38277}
38278case OP_ShrSint32IntAP: {
38279 if (!Shr<PT_Sint32, PT_IntAP>(S, OpPC))
38280 return false;
38281 continue;
38282}
38283case OP_ShrSint32IntAPS: {
38284 if (!Shr<PT_Sint32, PT_IntAPS>(S, OpPC))
38285 return false;
38286 continue;
38287}
38288case OP_ShrUint32Sint8: {
38289 if (!Shr<PT_Uint32, PT_Sint8>(S, OpPC))
38290 return false;
38291 continue;
38292}
38293case OP_ShrUint32Uint8: {
38294 if (!Shr<PT_Uint32, PT_Uint8>(S, OpPC))
38295 return false;
38296 continue;
38297}
38298case OP_ShrUint32Sint16: {
38299 if (!Shr<PT_Uint32, PT_Sint16>(S, OpPC))
38300 return false;
38301 continue;
38302}
38303case OP_ShrUint32Uint16: {
38304 if (!Shr<PT_Uint32, PT_Uint16>(S, OpPC))
38305 return false;
38306 continue;
38307}
38308case OP_ShrUint32Sint32: {
38309 if (!Shr<PT_Uint32, PT_Sint32>(S, OpPC))
38310 return false;
38311 continue;
38312}
38313case OP_ShrUint32Uint32: {
38314 if (!Shr<PT_Uint32, PT_Uint32>(S, OpPC))
38315 return false;
38316 continue;
38317}
38318case OP_ShrUint32Sint64: {
38319 if (!Shr<PT_Uint32, PT_Sint64>(S, OpPC))
38320 return false;
38321 continue;
38322}
38323case OP_ShrUint32Uint64: {
38324 if (!Shr<PT_Uint32, PT_Uint64>(S, OpPC))
38325 return false;
38326 continue;
38327}
38328case OP_ShrUint32IntAP: {
38329 if (!Shr<PT_Uint32, PT_IntAP>(S, OpPC))
38330 return false;
38331 continue;
38332}
38333case OP_ShrUint32IntAPS: {
38334 if (!Shr<PT_Uint32, PT_IntAPS>(S, OpPC))
38335 return false;
38336 continue;
38337}
38338case OP_ShrSint64Sint8: {
38339 if (!Shr<PT_Sint64, PT_Sint8>(S, OpPC))
38340 return false;
38341 continue;
38342}
38343case OP_ShrSint64Uint8: {
38344 if (!Shr<PT_Sint64, PT_Uint8>(S, OpPC))
38345 return false;
38346 continue;
38347}
38348case OP_ShrSint64Sint16: {
38349 if (!Shr<PT_Sint64, PT_Sint16>(S, OpPC))
38350 return false;
38351 continue;
38352}
38353case OP_ShrSint64Uint16: {
38354 if (!Shr<PT_Sint64, PT_Uint16>(S, OpPC))
38355 return false;
38356 continue;
38357}
38358case OP_ShrSint64Sint32: {
38359 if (!Shr<PT_Sint64, PT_Sint32>(S, OpPC))
38360 return false;
38361 continue;
38362}
38363case OP_ShrSint64Uint32: {
38364 if (!Shr<PT_Sint64, PT_Uint32>(S, OpPC))
38365 return false;
38366 continue;
38367}
38368case OP_ShrSint64Sint64: {
38369 if (!Shr<PT_Sint64, PT_Sint64>(S, OpPC))
38370 return false;
38371 continue;
38372}
38373case OP_ShrSint64Uint64: {
38374 if (!Shr<PT_Sint64, PT_Uint64>(S, OpPC))
38375 return false;
38376 continue;
38377}
38378case OP_ShrSint64IntAP: {
38379 if (!Shr<PT_Sint64, PT_IntAP>(S, OpPC))
38380 return false;
38381 continue;
38382}
38383case OP_ShrSint64IntAPS: {
38384 if (!Shr<PT_Sint64, PT_IntAPS>(S, OpPC))
38385 return false;
38386 continue;
38387}
38388case OP_ShrUint64Sint8: {
38389 if (!Shr<PT_Uint64, PT_Sint8>(S, OpPC))
38390 return false;
38391 continue;
38392}
38393case OP_ShrUint64Uint8: {
38394 if (!Shr<PT_Uint64, PT_Uint8>(S, OpPC))
38395 return false;
38396 continue;
38397}
38398case OP_ShrUint64Sint16: {
38399 if (!Shr<PT_Uint64, PT_Sint16>(S, OpPC))
38400 return false;
38401 continue;
38402}
38403case OP_ShrUint64Uint16: {
38404 if (!Shr<PT_Uint64, PT_Uint16>(S, OpPC))
38405 return false;
38406 continue;
38407}
38408case OP_ShrUint64Sint32: {
38409 if (!Shr<PT_Uint64, PT_Sint32>(S, OpPC))
38410 return false;
38411 continue;
38412}
38413case OP_ShrUint64Uint32: {
38414 if (!Shr<PT_Uint64, PT_Uint32>(S, OpPC))
38415 return false;
38416 continue;
38417}
38418case OP_ShrUint64Sint64: {
38419 if (!Shr<PT_Uint64, PT_Sint64>(S, OpPC))
38420 return false;
38421 continue;
38422}
38423case OP_ShrUint64Uint64: {
38424 if (!Shr<PT_Uint64, PT_Uint64>(S, OpPC))
38425 return false;
38426 continue;
38427}
38428case OP_ShrUint64IntAP: {
38429 if (!Shr<PT_Uint64, PT_IntAP>(S, OpPC))
38430 return false;
38431 continue;
38432}
38433case OP_ShrUint64IntAPS: {
38434 if (!Shr<PT_Uint64, PT_IntAPS>(S, OpPC))
38435 return false;
38436 continue;
38437}
38438case OP_ShrIntAPSint8: {
38439 if (!Shr<PT_IntAP, PT_Sint8>(S, OpPC))
38440 return false;
38441 continue;
38442}
38443case OP_ShrIntAPUint8: {
38444 if (!Shr<PT_IntAP, PT_Uint8>(S, OpPC))
38445 return false;
38446 continue;
38447}
38448case OP_ShrIntAPSint16: {
38449 if (!Shr<PT_IntAP, PT_Sint16>(S, OpPC))
38450 return false;
38451 continue;
38452}
38453case OP_ShrIntAPUint16: {
38454 if (!Shr<PT_IntAP, PT_Uint16>(S, OpPC))
38455 return false;
38456 continue;
38457}
38458case OP_ShrIntAPSint32: {
38459 if (!Shr<PT_IntAP, PT_Sint32>(S, OpPC))
38460 return false;
38461 continue;
38462}
38463case OP_ShrIntAPUint32: {
38464 if (!Shr<PT_IntAP, PT_Uint32>(S, OpPC))
38465 return false;
38466 continue;
38467}
38468case OP_ShrIntAPSint64: {
38469 if (!Shr<PT_IntAP, PT_Sint64>(S, OpPC))
38470 return false;
38471 continue;
38472}
38473case OP_ShrIntAPUint64: {
38474 if (!Shr<PT_IntAP, PT_Uint64>(S, OpPC))
38475 return false;
38476 continue;
38477}
38478case OP_ShrIntAPIntAP: {
38479 if (!Shr<PT_IntAP, PT_IntAP>(S, OpPC))
38480 return false;
38481 continue;
38482}
38483case OP_ShrIntAPIntAPS: {
38484 if (!Shr<PT_IntAP, PT_IntAPS>(S, OpPC))
38485 return false;
38486 continue;
38487}
38488case OP_ShrIntAPSSint8: {
38489 if (!Shr<PT_IntAPS, PT_Sint8>(S, OpPC))
38490 return false;
38491 continue;
38492}
38493case OP_ShrIntAPSUint8: {
38494 if (!Shr<PT_IntAPS, PT_Uint8>(S, OpPC))
38495 return false;
38496 continue;
38497}
38498case OP_ShrIntAPSSint16: {
38499 if (!Shr<PT_IntAPS, PT_Sint16>(S, OpPC))
38500 return false;
38501 continue;
38502}
38503case OP_ShrIntAPSUint16: {
38504 if (!Shr<PT_IntAPS, PT_Uint16>(S, OpPC))
38505 return false;
38506 continue;
38507}
38508case OP_ShrIntAPSSint32: {
38509 if (!Shr<PT_IntAPS, PT_Sint32>(S, OpPC))
38510 return false;
38511 continue;
38512}
38513case OP_ShrIntAPSUint32: {
38514 if (!Shr<PT_IntAPS, PT_Uint32>(S, OpPC))
38515 return false;
38516 continue;
38517}
38518case OP_ShrIntAPSSint64: {
38519 if (!Shr<PT_IntAPS, PT_Sint64>(S, OpPC))
38520 return false;
38521 continue;
38522}
38523case OP_ShrIntAPSUint64: {
38524 if (!Shr<PT_IntAPS, PT_Uint64>(S, OpPC))
38525 return false;
38526 continue;
38527}
38528case OP_ShrIntAPSIntAP: {
38529 if (!Shr<PT_IntAPS, PT_IntAP>(S, OpPC))
38530 return false;
38531 continue;
38532}
38533case OP_ShrIntAPSIntAPS: {
38534 if (!Shr<PT_IntAPS, PT_IntAPS>(S, OpPC))
38535 return false;
38536 continue;
38537}
38538#endif
38539#ifdef GET_DISASM
38540case OP_ShrSint8Sint8:
38541 Text.Op = PrintName("ShrSint8Sint8");
38542 break;
38543case OP_ShrSint8Uint8:
38544 Text.Op = PrintName("ShrSint8Uint8");
38545 break;
38546case OP_ShrSint8Sint16:
38547 Text.Op = PrintName("ShrSint8Sint16");
38548 break;
38549case OP_ShrSint8Uint16:
38550 Text.Op = PrintName("ShrSint8Uint16");
38551 break;
38552case OP_ShrSint8Sint32:
38553 Text.Op = PrintName("ShrSint8Sint32");
38554 break;
38555case OP_ShrSint8Uint32:
38556 Text.Op = PrintName("ShrSint8Uint32");
38557 break;
38558case OP_ShrSint8Sint64:
38559 Text.Op = PrintName("ShrSint8Sint64");
38560 break;
38561case OP_ShrSint8Uint64:
38562 Text.Op = PrintName("ShrSint8Uint64");
38563 break;
38564case OP_ShrSint8IntAP:
38565 Text.Op = PrintName("ShrSint8IntAP");
38566 break;
38567case OP_ShrSint8IntAPS:
38568 Text.Op = PrintName("ShrSint8IntAPS");
38569 break;
38570case OP_ShrUint8Sint8:
38571 Text.Op = PrintName("ShrUint8Sint8");
38572 break;
38573case OP_ShrUint8Uint8:
38574 Text.Op = PrintName("ShrUint8Uint8");
38575 break;
38576case OP_ShrUint8Sint16:
38577 Text.Op = PrintName("ShrUint8Sint16");
38578 break;
38579case OP_ShrUint8Uint16:
38580 Text.Op = PrintName("ShrUint8Uint16");
38581 break;
38582case OP_ShrUint8Sint32:
38583 Text.Op = PrintName("ShrUint8Sint32");
38584 break;
38585case OP_ShrUint8Uint32:
38586 Text.Op = PrintName("ShrUint8Uint32");
38587 break;
38588case OP_ShrUint8Sint64:
38589 Text.Op = PrintName("ShrUint8Sint64");
38590 break;
38591case OP_ShrUint8Uint64:
38592 Text.Op = PrintName("ShrUint8Uint64");
38593 break;
38594case OP_ShrUint8IntAP:
38595 Text.Op = PrintName("ShrUint8IntAP");
38596 break;
38597case OP_ShrUint8IntAPS:
38598 Text.Op = PrintName("ShrUint8IntAPS");
38599 break;
38600case OP_ShrSint16Sint8:
38601 Text.Op = PrintName("ShrSint16Sint8");
38602 break;
38603case OP_ShrSint16Uint8:
38604 Text.Op = PrintName("ShrSint16Uint8");
38605 break;
38606case OP_ShrSint16Sint16:
38607 Text.Op = PrintName("ShrSint16Sint16");
38608 break;
38609case OP_ShrSint16Uint16:
38610 Text.Op = PrintName("ShrSint16Uint16");
38611 break;
38612case OP_ShrSint16Sint32:
38613 Text.Op = PrintName("ShrSint16Sint32");
38614 break;
38615case OP_ShrSint16Uint32:
38616 Text.Op = PrintName("ShrSint16Uint32");
38617 break;
38618case OP_ShrSint16Sint64:
38619 Text.Op = PrintName("ShrSint16Sint64");
38620 break;
38621case OP_ShrSint16Uint64:
38622 Text.Op = PrintName("ShrSint16Uint64");
38623 break;
38624case OP_ShrSint16IntAP:
38625 Text.Op = PrintName("ShrSint16IntAP");
38626 break;
38627case OP_ShrSint16IntAPS:
38628 Text.Op = PrintName("ShrSint16IntAPS");
38629 break;
38630case OP_ShrUint16Sint8:
38631 Text.Op = PrintName("ShrUint16Sint8");
38632 break;
38633case OP_ShrUint16Uint8:
38634 Text.Op = PrintName("ShrUint16Uint8");
38635 break;
38636case OP_ShrUint16Sint16:
38637 Text.Op = PrintName("ShrUint16Sint16");
38638 break;
38639case OP_ShrUint16Uint16:
38640 Text.Op = PrintName("ShrUint16Uint16");
38641 break;
38642case OP_ShrUint16Sint32:
38643 Text.Op = PrintName("ShrUint16Sint32");
38644 break;
38645case OP_ShrUint16Uint32:
38646 Text.Op = PrintName("ShrUint16Uint32");
38647 break;
38648case OP_ShrUint16Sint64:
38649 Text.Op = PrintName("ShrUint16Sint64");
38650 break;
38651case OP_ShrUint16Uint64:
38652 Text.Op = PrintName("ShrUint16Uint64");
38653 break;
38654case OP_ShrUint16IntAP:
38655 Text.Op = PrintName("ShrUint16IntAP");
38656 break;
38657case OP_ShrUint16IntAPS:
38658 Text.Op = PrintName("ShrUint16IntAPS");
38659 break;
38660case OP_ShrSint32Sint8:
38661 Text.Op = PrintName("ShrSint32Sint8");
38662 break;
38663case OP_ShrSint32Uint8:
38664 Text.Op = PrintName("ShrSint32Uint8");
38665 break;
38666case OP_ShrSint32Sint16:
38667 Text.Op = PrintName("ShrSint32Sint16");
38668 break;
38669case OP_ShrSint32Uint16:
38670 Text.Op = PrintName("ShrSint32Uint16");
38671 break;
38672case OP_ShrSint32Sint32:
38673 Text.Op = PrintName("ShrSint32Sint32");
38674 break;
38675case OP_ShrSint32Uint32:
38676 Text.Op = PrintName("ShrSint32Uint32");
38677 break;
38678case OP_ShrSint32Sint64:
38679 Text.Op = PrintName("ShrSint32Sint64");
38680 break;
38681case OP_ShrSint32Uint64:
38682 Text.Op = PrintName("ShrSint32Uint64");
38683 break;
38684case OP_ShrSint32IntAP:
38685 Text.Op = PrintName("ShrSint32IntAP");
38686 break;
38687case OP_ShrSint32IntAPS:
38688 Text.Op = PrintName("ShrSint32IntAPS");
38689 break;
38690case OP_ShrUint32Sint8:
38691 Text.Op = PrintName("ShrUint32Sint8");
38692 break;
38693case OP_ShrUint32Uint8:
38694 Text.Op = PrintName("ShrUint32Uint8");
38695 break;
38696case OP_ShrUint32Sint16:
38697 Text.Op = PrintName("ShrUint32Sint16");
38698 break;
38699case OP_ShrUint32Uint16:
38700 Text.Op = PrintName("ShrUint32Uint16");
38701 break;
38702case OP_ShrUint32Sint32:
38703 Text.Op = PrintName("ShrUint32Sint32");
38704 break;
38705case OP_ShrUint32Uint32:
38706 Text.Op = PrintName("ShrUint32Uint32");
38707 break;
38708case OP_ShrUint32Sint64:
38709 Text.Op = PrintName("ShrUint32Sint64");
38710 break;
38711case OP_ShrUint32Uint64:
38712 Text.Op = PrintName("ShrUint32Uint64");
38713 break;
38714case OP_ShrUint32IntAP:
38715 Text.Op = PrintName("ShrUint32IntAP");
38716 break;
38717case OP_ShrUint32IntAPS:
38718 Text.Op = PrintName("ShrUint32IntAPS");
38719 break;
38720case OP_ShrSint64Sint8:
38721 Text.Op = PrintName("ShrSint64Sint8");
38722 break;
38723case OP_ShrSint64Uint8:
38724 Text.Op = PrintName("ShrSint64Uint8");
38725 break;
38726case OP_ShrSint64Sint16:
38727 Text.Op = PrintName("ShrSint64Sint16");
38728 break;
38729case OP_ShrSint64Uint16:
38730 Text.Op = PrintName("ShrSint64Uint16");
38731 break;
38732case OP_ShrSint64Sint32:
38733 Text.Op = PrintName("ShrSint64Sint32");
38734 break;
38735case OP_ShrSint64Uint32:
38736 Text.Op = PrintName("ShrSint64Uint32");
38737 break;
38738case OP_ShrSint64Sint64:
38739 Text.Op = PrintName("ShrSint64Sint64");
38740 break;
38741case OP_ShrSint64Uint64:
38742 Text.Op = PrintName("ShrSint64Uint64");
38743 break;
38744case OP_ShrSint64IntAP:
38745 Text.Op = PrintName("ShrSint64IntAP");
38746 break;
38747case OP_ShrSint64IntAPS:
38748 Text.Op = PrintName("ShrSint64IntAPS");
38749 break;
38750case OP_ShrUint64Sint8:
38751 Text.Op = PrintName("ShrUint64Sint8");
38752 break;
38753case OP_ShrUint64Uint8:
38754 Text.Op = PrintName("ShrUint64Uint8");
38755 break;
38756case OP_ShrUint64Sint16:
38757 Text.Op = PrintName("ShrUint64Sint16");
38758 break;
38759case OP_ShrUint64Uint16:
38760 Text.Op = PrintName("ShrUint64Uint16");
38761 break;
38762case OP_ShrUint64Sint32:
38763 Text.Op = PrintName("ShrUint64Sint32");
38764 break;
38765case OP_ShrUint64Uint32:
38766 Text.Op = PrintName("ShrUint64Uint32");
38767 break;
38768case OP_ShrUint64Sint64:
38769 Text.Op = PrintName("ShrUint64Sint64");
38770 break;
38771case OP_ShrUint64Uint64:
38772 Text.Op = PrintName("ShrUint64Uint64");
38773 break;
38774case OP_ShrUint64IntAP:
38775 Text.Op = PrintName("ShrUint64IntAP");
38776 break;
38777case OP_ShrUint64IntAPS:
38778 Text.Op = PrintName("ShrUint64IntAPS");
38779 break;
38780case OP_ShrIntAPSint8:
38781 Text.Op = PrintName("ShrIntAPSint8");
38782 break;
38783case OP_ShrIntAPUint8:
38784 Text.Op = PrintName("ShrIntAPUint8");
38785 break;
38786case OP_ShrIntAPSint16:
38787 Text.Op = PrintName("ShrIntAPSint16");
38788 break;
38789case OP_ShrIntAPUint16:
38790 Text.Op = PrintName("ShrIntAPUint16");
38791 break;
38792case OP_ShrIntAPSint32:
38793 Text.Op = PrintName("ShrIntAPSint32");
38794 break;
38795case OP_ShrIntAPUint32:
38796 Text.Op = PrintName("ShrIntAPUint32");
38797 break;
38798case OP_ShrIntAPSint64:
38799 Text.Op = PrintName("ShrIntAPSint64");
38800 break;
38801case OP_ShrIntAPUint64:
38802 Text.Op = PrintName("ShrIntAPUint64");
38803 break;
38804case OP_ShrIntAPIntAP:
38805 Text.Op = PrintName("ShrIntAPIntAP");
38806 break;
38807case OP_ShrIntAPIntAPS:
38808 Text.Op = PrintName("ShrIntAPIntAPS");
38809 break;
38810case OP_ShrIntAPSSint8:
38811 Text.Op = PrintName("ShrIntAPSSint8");
38812 break;
38813case OP_ShrIntAPSUint8:
38814 Text.Op = PrintName("ShrIntAPSUint8");
38815 break;
38816case OP_ShrIntAPSSint16:
38817 Text.Op = PrintName("ShrIntAPSSint16");
38818 break;
38819case OP_ShrIntAPSUint16:
38820 Text.Op = PrintName("ShrIntAPSUint16");
38821 break;
38822case OP_ShrIntAPSSint32:
38823 Text.Op = PrintName("ShrIntAPSSint32");
38824 break;
38825case OP_ShrIntAPSUint32:
38826 Text.Op = PrintName("ShrIntAPSUint32");
38827 break;
38828case OP_ShrIntAPSSint64:
38829 Text.Op = PrintName("ShrIntAPSSint64");
38830 break;
38831case OP_ShrIntAPSUint64:
38832 Text.Op = PrintName("ShrIntAPSUint64");
38833 break;
38834case OP_ShrIntAPSIntAP:
38835 Text.Op = PrintName("ShrIntAPSIntAP");
38836 break;
38837case OP_ShrIntAPSIntAPS:
38838 Text.Op = PrintName("ShrIntAPSIntAPS");
38839 break;
38840#endif
38841#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38842bool emitShrSint8Sint8(SourceInfo);
38843bool emitShrSint8Uint8(SourceInfo);
38844bool emitShrSint8Sint16(SourceInfo);
38845bool emitShrSint8Uint16(SourceInfo);
38846bool emitShrSint8Sint32(SourceInfo);
38847bool emitShrSint8Uint32(SourceInfo);
38848bool emitShrSint8Sint64(SourceInfo);
38849bool emitShrSint8Uint64(SourceInfo);
38850bool emitShrSint8IntAP(SourceInfo);
38851bool emitShrSint8IntAPS(SourceInfo);
38852bool emitShrUint8Sint8(SourceInfo);
38853bool emitShrUint8Uint8(SourceInfo);
38854bool emitShrUint8Sint16(SourceInfo);
38855bool emitShrUint8Uint16(SourceInfo);
38856bool emitShrUint8Sint32(SourceInfo);
38857bool emitShrUint8Uint32(SourceInfo);
38858bool emitShrUint8Sint64(SourceInfo);
38859bool emitShrUint8Uint64(SourceInfo);
38860bool emitShrUint8IntAP(SourceInfo);
38861bool emitShrUint8IntAPS(SourceInfo);
38862bool emitShrSint16Sint8(SourceInfo);
38863bool emitShrSint16Uint8(SourceInfo);
38864bool emitShrSint16Sint16(SourceInfo);
38865bool emitShrSint16Uint16(SourceInfo);
38866bool emitShrSint16Sint32(SourceInfo);
38867bool emitShrSint16Uint32(SourceInfo);
38868bool emitShrSint16Sint64(SourceInfo);
38869bool emitShrSint16Uint64(SourceInfo);
38870bool emitShrSint16IntAP(SourceInfo);
38871bool emitShrSint16IntAPS(SourceInfo);
38872bool emitShrUint16Sint8(SourceInfo);
38873bool emitShrUint16Uint8(SourceInfo);
38874bool emitShrUint16Sint16(SourceInfo);
38875bool emitShrUint16Uint16(SourceInfo);
38876bool emitShrUint16Sint32(SourceInfo);
38877bool emitShrUint16Uint32(SourceInfo);
38878bool emitShrUint16Sint64(SourceInfo);
38879bool emitShrUint16Uint64(SourceInfo);
38880bool emitShrUint16IntAP(SourceInfo);
38881bool emitShrUint16IntAPS(SourceInfo);
38882bool emitShrSint32Sint8(SourceInfo);
38883bool emitShrSint32Uint8(SourceInfo);
38884bool emitShrSint32Sint16(SourceInfo);
38885bool emitShrSint32Uint16(SourceInfo);
38886bool emitShrSint32Sint32(SourceInfo);
38887bool emitShrSint32Uint32(SourceInfo);
38888bool emitShrSint32Sint64(SourceInfo);
38889bool emitShrSint32Uint64(SourceInfo);
38890bool emitShrSint32IntAP(SourceInfo);
38891bool emitShrSint32IntAPS(SourceInfo);
38892bool emitShrUint32Sint8(SourceInfo);
38893bool emitShrUint32Uint8(SourceInfo);
38894bool emitShrUint32Sint16(SourceInfo);
38895bool emitShrUint32Uint16(SourceInfo);
38896bool emitShrUint32Sint32(SourceInfo);
38897bool emitShrUint32Uint32(SourceInfo);
38898bool emitShrUint32Sint64(SourceInfo);
38899bool emitShrUint32Uint64(SourceInfo);
38900bool emitShrUint32IntAP(SourceInfo);
38901bool emitShrUint32IntAPS(SourceInfo);
38902bool emitShrSint64Sint8(SourceInfo);
38903bool emitShrSint64Uint8(SourceInfo);
38904bool emitShrSint64Sint16(SourceInfo);
38905bool emitShrSint64Uint16(SourceInfo);
38906bool emitShrSint64Sint32(SourceInfo);
38907bool emitShrSint64Uint32(SourceInfo);
38908bool emitShrSint64Sint64(SourceInfo);
38909bool emitShrSint64Uint64(SourceInfo);
38910bool emitShrSint64IntAP(SourceInfo);
38911bool emitShrSint64IntAPS(SourceInfo);
38912bool emitShrUint64Sint8(SourceInfo);
38913bool emitShrUint64Uint8(SourceInfo);
38914bool emitShrUint64Sint16(SourceInfo);
38915bool emitShrUint64Uint16(SourceInfo);
38916bool emitShrUint64Sint32(SourceInfo);
38917bool emitShrUint64Uint32(SourceInfo);
38918bool emitShrUint64Sint64(SourceInfo);
38919bool emitShrUint64Uint64(SourceInfo);
38920bool emitShrUint64IntAP(SourceInfo);
38921bool emitShrUint64IntAPS(SourceInfo);
38922bool emitShrIntAPSint8(SourceInfo);
38923bool emitShrIntAPUint8(SourceInfo);
38924bool emitShrIntAPSint16(SourceInfo);
38925bool emitShrIntAPUint16(SourceInfo);
38926bool emitShrIntAPSint32(SourceInfo);
38927bool emitShrIntAPUint32(SourceInfo);
38928bool emitShrIntAPSint64(SourceInfo);
38929bool emitShrIntAPUint64(SourceInfo);
38930bool emitShrIntAPIntAP(SourceInfo);
38931bool emitShrIntAPIntAPS(SourceInfo);
38932bool emitShrIntAPSSint8(SourceInfo);
38933bool emitShrIntAPSUint8(SourceInfo);
38934bool emitShrIntAPSSint16(SourceInfo);
38935bool emitShrIntAPSUint16(SourceInfo);
38936bool emitShrIntAPSSint32(SourceInfo);
38937bool emitShrIntAPSUint32(SourceInfo);
38938bool emitShrIntAPSSint64(SourceInfo);
38939bool emitShrIntAPSUint64(SourceInfo);
38940bool emitShrIntAPSIntAP(SourceInfo);
38941bool emitShrIntAPSIntAPS(SourceInfo);
38942#endif
38943#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38944[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
38945#endif
38946#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
38947bool
38948#if defined(GET_EVAL_IMPL)
38949EvalEmitter
38950#else
38951ByteCodeEmitter
38952#endif
38953::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
38954 switch (T0) {
38955 case PT_Sint8:
38956 switch (T1) {
38957 case PT_Sint8:
38958 return emitShrSint8Sint8(I);
38959 case PT_Uint8:
38960 return emitShrSint8Uint8(I);
38961 case PT_Sint16:
38962 return emitShrSint8Sint16(I);
38963 case PT_Uint16:
38964 return emitShrSint8Uint16(I);
38965 case PT_Sint32:
38966 return emitShrSint8Sint32(I);
38967 case PT_Uint32:
38968 return emitShrSint8Uint32(I);
38969 case PT_Sint64:
38970 return emitShrSint8Sint64(I);
38971 case PT_Uint64:
38972 return emitShrSint8Uint64(I);
38973 case PT_IntAP:
38974 return emitShrSint8IntAP(I);
38975 case PT_IntAPS:
38976 return emitShrSint8IntAPS(I);
38977 default: llvm_unreachable("invalid type: emitShr");
38978 }
38979 llvm_unreachable("invalid enum value");
38980 case PT_Uint8:
38981 switch (T1) {
38982 case PT_Sint8:
38983 return emitShrUint8Sint8(I);
38984 case PT_Uint8:
38985 return emitShrUint8Uint8(I);
38986 case PT_Sint16:
38987 return emitShrUint8Sint16(I);
38988 case PT_Uint16:
38989 return emitShrUint8Uint16(I);
38990 case PT_Sint32:
38991 return emitShrUint8Sint32(I);
38992 case PT_Uint32:
38993 return emitShrUint8Uint32(I);
38994 case PT_Sint64:
38995 return emitShrUint8Sint64(I);
38996 case PT_Uint64:
38997 return emitShrUint8Uint64(I);
38998 case PT_IntAP:
38999 return emitShrUint8IntAP(I);
39000 case PT_IntAPS:
39001 return emitShrUint8IntAPS(I);
39002 default: llvm_unreachable("invalid type: emitShr");
39003 }
39004 llvm_unreachable("invalid enum value");
39005 case PT_Sint16:
39006 switch (T1) {
39007 case PT_Sint8:
39008 return emitShrSint16Sint8(I);
39009 case PT_Uint8:
39010 return emitShrSint16Uint8(I);
39011 case PT_Sint16:
39012 return emitShrSint16Sint16(I);
39013 case PT_Uint16:
39014 return emitShrSint16Uint16(I);
39015 case PT_Sint32:
39016 return emitShrSint16Sint32(I);
39017 case PT_Uint32:
39018 return emitShrSint16Uint32(I);
39019 case PT_Sint64:
39020 return emitShrSint16Sint64(I);
39021 case PT_Uint64:
39022 return emitShrSint16Uint64(I);
39023 case PT_IntAP:
39024 return emitShrSint16IntAP(I);
39025 case PT_IntAPS:
39026 return emitShrSint16IntAPS(I);
39027 default: llvm_unreachable("invalid type: emitShr");
39028 }
39029 llvm_unreachable("invalid enum value");
39030 case PT_Uint16:
39031 switch (T1) {
39032 case PT_Sint8:
39033 return emitShrUint16Sint8(I);
39034 case PT_Uint8:
39035 return emitShrUint16Uint8(I);
39036 case PT_Sint16:
39037 return emitShrUint16Sint16(I);
39038 case PT_Uint16:
39039 return emitShrUint16Uint16(I);
39040 case PT_Sint32:
39041 return emitShrUint16Sint32(I);
39042 case PT_Uint32:
39043 return emitShrUint16Uint32(I);
39044 case PT_Sint64:
39045 return emitShrUint16Sint64(I);
39046 case PT_Uint64:
39047 return emitShrUint16Uint64(I);
39048 case PT_IntAP:
39049 return emitShrUint16IntAP(I);
39050 case PT_IntAPS:
39051 return emitShrUint16IntAPS(I);
39052 default: llvm_unreachable("invalid type: emitShr");
39053 }
39054 llvm_unreachable("invalid enum value");
39055 case PT_Sint32:
39056 switch (T1) {
39057 case PT_Sint8:
39058 return emitShrSint32Sint8(I);
39059 case PT_Uint8:
39060 return emitShrSint32Uint8(I);
39061 case PT_Sint16:
39062 return emitShrSint32Sint16(I);
39063 case PT_Uint16:
39064 return emitShrSint32Uint16(I);
39065 case PT_Sint32:
39066 return emitShrSint32Sint32(I);
39067 case PT_Uint32:
39068 return emitShrSint32Uint32(I);
39069 case PT_Sint64:
39070 return emitShrSint32Sint64(I);
39071 case PT_Uint64:
39072 return emitShrSint32Uint64(I);
39073 case PT_IntAP:
39074 return emitShrSint32IntAP(I);
39075 case PT_IntAPS:
39076 return emitShrSint32IntAPS(I);
39077 default: llvm_unreachable("invalid type: emitShr");
39078 }
39079 llvm_unreachable("invalid enum value");
39080 case PT_Uint32:
39081 switch (T1) {
39082 case PT_Sint8:
39083 return emitShrUint32Sint8(I);
39084 case PT_Uint8:
39085 return emitShrUint32Uint8(I);
39086 case PT_Sint16:
39087 return emitShrUint32Sint16(I);
39088 case PT_Uint16:
39089 return emitShrUint32Uint16(I);
39090 case PT_Sint32:
39091 return emitShrUint32Sint32(I);
39092 case PT_Uint32:
39093 return emitShrUint32Uint32(I);
39094 case PT_Sint64:
39095 return emitShrUint32Sint64(I);
39096 case PT_Uint64:
39097 return emitShrUint32Uint64(I);
39098 case PT_IntAP:
39099 return emitShrUint32IntAP(I);
39100 case PT_IntAPS:
39101 return emitShrUint32IntAPS(I);
39102 default: llvm_unreachable("invalid type: emitShr");
39103 }
39104 llvm_unreachable("invalid enum value");
39105 case PT_Sint64:
39106 switch (T1) {
39107 case PT_Sint8:
39108 return emitShrSint64Sint8(I);
39109 case PT_Uint8:
39110 return emitShrSint64Uint8(I);
39111 case PT_Sint16:
39112 return emitShrSint64Sint16(I);
39113 case PT_Uint16:
39114 return emitShrSint64Uint16(I);
39115 case PT_Sint32:
39116 return emitShrSint64Sint32(I);
39117 case PT_Uint32:
39118 return emitShrSint64Uint32(I);
39119 case PT_Sint64:
39120 return emitShrSint64Sint64(I);
39121 case PT_Uint64:
39122 return emitShrSint64Uint64(I);
39123 case PT_IntAP:
39124 return emitShrSint64IntAP(I);
39125 case PT_IntAPS:
39126 return emitShrSint64IntAPS(I);
39127 default: llvm_unreachable("invalid type: emitShr");
39128 }
39129 llvm_unreachable("invalid enum value");
39130 case PT_Uint64:
39131 switch (T1) {
39132 case PT_Sint8:
39133 return emitShrUint64Sint8(I);
39134 case PT_Uint8:
39135 return emitShrUint64Uint8(I);
39136 case PT_Sint16:
39137 return emitShrUint64Sint16(I);
39138 case PT_Uint16:
39139 return emitShrUint64Uint16(I);
39140 case PT_Sint32:
39141 return emitShrUint64Sint32(I);
39142 case PT_Uint32:
39143 return emitShrUint64Uint32(I);
39144 case PT_Sint64:
39145 return emitShrUint64Sint64(I);
39146 case PT_Uint64:
39147 return emitShrUint64Uint64(I);
39148 case PT_IntAP:
39149 return emitShrUint64IntAP(I);
39150 case PT_IntAPS:
39151 return emitShrUint64IntAPS(I);
39152 default: llvm_unreachable("invalid type: emitShr");
39153 }
39154 llvm_unreachable("invalid enum value");
39155 case PT_IntAP:
39156 switch (T1) {
39157 case PT_Sint8:
39158 return emitShrIntAPSint8(I);
39159 case PT_Uint8:
39160 return emitShrIntAPUint8(I);
39161 case PT_Sint16:
39162 return emitShrIntAPSint16(I);
39163 case PT_Uint16:
39164 return emitShrIntAPUint16(I);
39165 case PT_Sint32:
39166 return emitShrIntAPSint32(I);
39167 case PT_Uint32:
39168 return emitShrIntAPUint32(I);
39169 case PT_Sint64:
39170 return emitShrIntAPSint64(I);
39171 case PT_Uint64:
39172 return emitShrIntAPUint64(I);
39173 case PT_IntAP:
39174 return emitShrIntAPIntAP(I);
39175 case PT_IntAPS:
39176 return emitShrIntAPIntAPS(I);
39177 default: llvm_unreachable("invalid type: emitShr");
39178 }
39179 llvm_unreachable("invalid enum value");
39180 case PT_IntAPS:
39181 switch (T1) {
39182 case PT_Sint8:
39183 return emitShrIntAPSSint8(I);
39184 case PT_Uint8:
39185 return emitShrIntAPSUint8(I);
39186 case PT_Sint16:
39187 return emitShrIntAPSSint16(I);
39188 case PT_Uint16:
39189 return emitShrIntAPSUint16(I);
39190 case PT_Sint32:
39191 return emitShrIntAPSSint32(I);
39192 case PT_Uint32:
39193 return emitShrIntAPSUint32(I);
39194 case PT_Sint64:
39195 return emitShrIntAPSSint64(I);
39196 case PT_Uint64:
39197 return emitShrIntAPSUint64(I);
39198 case PT_IntAP:
39199 return emitShrIntAPSIntAP(I);
39200 case PT_IntAPS:
39201 return emitShrIntAPSIntAPS(I);
39202 default: llvm_unreachable("invalid type: emitShr");
39203 }
39204 llvm_unreachable("invalid enum value");
39205 default: llvm_unreachable("invalid type: emitShr");
39206 }
39207 llvm_unreachable("invalid enum value");
39208}
39209#endif
39210#ifdef GET_LINK_IMPL
39211bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
39212 return emitOp<>(OP_ShrSint8Sint8, L);
39213}
39214bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
39215 return emitOp<>(OP_ShrSint8Uint8, L);
39216}
39217bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
39218 return emitOp<>(OP_ShrSint8Sint16, L);
39219}
39220bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
39221 return emitOp<>(OP_ShrSint8Uint16, L);
39222}
39223bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
39224 return emitOp<>(OP_ShrSint8Sint32, L);
39225}
39226bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
39227 return emitOp<>(OP_ShrSint8Uint32, L);
39228}
39229bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
39230 return emitOp<>(OP_ShrSint8Sint64, L);
39231}
39232bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
39233 return emitOp<>(OP_ShrSint8Uint64, L);
39234}
39235bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
39236 return emitOp<>(OP_ShrSint8IntAP, L);
39237}
39238bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
39239 return emitOp<>(OP_ShrSint8IntAPS, L);
39240}
39241bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
39242 return emitOp<>(OP_ShrUint8Sint8, L);
39243}
39244bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
39245 return emitOp<>(OP_ShrUint8Uint8, L);
39246}
39247bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
39248 return emitOp<>(OP_ShrUint8Sint16, L);
39249}
39250bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
39251 return emitOp<>(OP_ShrUint8Uint16, L);
39252}
39253bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
39254 return emitOp<>(OP_ShrUint8Sint32, L);
39255}
39256bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
39257 return emitOp<>(OP_ShrUint8Uint32, L);
39258}
39259bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
39260 return emitOp<>(OP_ShrUint8Sint64, L);
39261}
39262bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
39263 return emitOp<>(OP_ShrUint8Uint64, L);
39264}
39265bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
39266 return emitOp<>(OP_ShrUint8IntAP, L);
39267}
39268bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
39269 return emitOp<>(OP_ShrUint8IntAPS, L);
39270}
39271bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
39272 return emitOp<>(OP_ShrSint16Sint8, L);
39273}
39274bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
39275 return emitOp<>(OP_ShrSint16Uint8, L);
39276}
39277bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
39278 return emitOp<>(OP_ShrSint16Sint16, L);
39279}
39280bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
39281 return emitOp<>(OP_ShrSint16Uint16, L);
39282}
39283bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
39284 return emitOp<>(OP_ShrSint16Sint32, L);
39285}
39286bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
39287 return emitOp<>(OP_ShrSint16Uint32, L);
39288}
39289bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
39290 return emitOp<>(OP_ShrSint16Sint64, L);
39291}
39292bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
39293 return emitOp<>(OP_ShrSint16Uint64, L);
39294}
39295bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
39296 return emitOp<>(OP_ShrSint16IntAP, L);
39297}
39298bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
39299 return emitOp<>(OP_ShrSint16IntAPS, L);
39300}
39301bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
39302 return emitOp<>(OP_ShrUint16Sint8, L);
39303}
39304bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
39305 return emitOp<>(OP_ShrUint16Uint8, L);
39306}
39307bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
39308 return emitOp<>(OP_ShrUint16Sint16, L);
39309}
39310bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
39311 return emitOp<>(OP_ShrUint16Uint16, L);
39312}
39313bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
39314 return emitOp<>(OP_ShrUint16Sint32, L);
39315}
39316bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
39317 return emitOp<>(OP_ShrUint16Uint32, L);
39318}
39319bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
39320 return emitOp<>(OP_ShrUint16Sint64, L);
39321}
39322bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
39323 return emitOp<>(OP_ShrUint16Uint64, L);
39324}
39325bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
39326 return emitOp<>(OP_ShrUint16IntAP, L);
39327}
39328bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
39329 return emitOp<>(OP_ShrUint16IntAPS, L);
39330}
39331bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
39332 return emitOp<>(OP_ShrSint32Sint8, L);
39333}
39334bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
39335 return emitOp<>(OP_ShrSint32Uint8, L);
39336}
39337bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
39338 return emitOp<>(OP_ShrSint32Sint16, L);
39339}
39340bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
39341 return emitOp<>(OP_ShrSint32Uint16, L);
39342}
39343bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
39344 return emitOp<>(OP_ShrSint32Sint32, L);
39345}
39346bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
39347 return emitOp<>(OP_ShrSint32Uint32, L);
39348}
39349bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
39350 return emitOp<>(OP_ShrSint32Sint64, L);
39351}
39352bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
39353 return emitOp<>(OP_ShrSint32Uint64, L);
39354}
39355bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
39356 return emitOp<>(OP_ShrSint32IntAP, L);
39357}
39358bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
39359 return emitOp<>(OP_ShrSint32IntAPS, L);
39360}
39361bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
39362 return emitOp<>(OP_ShrUint32Sint8, L);
39363}
39364bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
39365 return emitOp<>(OP_ShrUint32Uint8, L);
39366}
39367bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
39368 return emitOp<>(OP_ShrUint32Sint16, L);
39369}
39370bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
39371 return emitOp<>(OP_ShrUint32Uint16, L);
39372}
39373bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
39374 return emitOp<>(OP_ShrUint32Sint32, L);
39375}
39376bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
39377 return emitOp<>(OP_ShrUint32Uint32, L);
39378}
39379bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
39380 return emitOp<>(OP_ShrUint32Sint64, L);
39381}
39382bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
39383 return emitOp<>(OP_ShrUint32Uint64, L);
39384}
39385bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
39386 return emitOp<>(OP_ShrUint32IntAP, L);
39387}
39388bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
39389 return emitOp<>(OP_ShrUint32IntAPS, L);
39390}
39391bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
39392 return emitOp<>(OP_ShrSint64Sint8, L);
39393}
39394bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
39395 return emitOp<>(OP_ShrSint64Uint8, L);
39396}
39397bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
39398 return emitOp<>(OP_ShrSint64Sint16, L);
39399}
39400bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
39401 return emitOp<>(OP_ShrSint64Uint16, L);
39402}
39403bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
39404 return emitOp<>(OP_ShrSint64Sint32, L);
39405}
39406bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
39407 return emitOp<>(OP_ShrSint64Uint32, L);
39408}
39409bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
39410 return emitOp<>(OP_ShrSint64Sint64, L);
39411}
39412bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
39413 return emitOp<>(OP_ShrSint64Uint64, L);
39414}
39415bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
39416 return emitOp<>(OP_ShrSint64IntAP, L);
39417}
39418bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
39419 return emitOp<>(OP_ShrSint64IntAPS, L);
39420}
39421bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
39422 return emitOp<>(OP_ShrUint64Sint8, L);
39423}
39424bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
39425 return emitOp<>(OP_ShrUint64Uint8, L);
39426}
39427bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
39428 return emitOp<>(OP_ShrUint64Sint16, L);
39429}
39430bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
39431 return emitOp<>(OP_ShrUint64Uint16, L);
39432}
39433bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
39434 return emitOp<>(OP_ShrUint64Sint32, L);
39435}
39436bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
39437 return emitOp<>(OP_ShrUint64Uint32, L);
39438}
39439bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
39440 return emitOp<>(OP_ShrUint64Sint64, L);
39441}
39442bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
39443 return emitOp<>(OP_ShrUint64Uint64, L);
39444}
39445bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
39446 return emitOp<>(OP_ShrUint64IntAP, L);
39447}
39448bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
39449 return emitOp<>(OP_ShrUint64IntAPS, L);
39450}
39451bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
39452 return emitOp<>(OP_ShrIntAPSint8, L);
39453}
39454bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
39455 return emitOp<>(OP_ShrIntAPUint8, L);
39456}
39457bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
39458 return emitOp<>(OP_ShrIntAPSint16, L);
39459}
39460bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
39461 return emitOp<>(OP_ShrIntAPUint16, L);
39462}
39463bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
39464 return emitOp<>(OP_ShrIntAPSint32, L);
39465}
39466bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
39467 return emitOp<>(OP_ShrIntAPUint32, L);
39468}
39469bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
39470 return emitOp<>(OP_ShrIntAPSint64, L);
39471}
39472bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
39473 return emitOp<>(OP_ShrIntAPUint64, L);
39474}
39475bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
39476 return emitOp<>(OP_ShrIntAPIntAP, L);
39477}
39478bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
39479 return emitOp<>(OP_ShrIntAPIntAPS, L);
39480}
39481bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
39482 return emitOp<>(OP_ShrIntAPSSint8, L);
39483}
39484bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
39485 return emitOp<>(OP_ShrIntAPSUint8, L);
39486}
39487bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
39488 return emitOp<>(OP_ShrIntAPSSint16, L);
39489}
39490bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
39491 return emitOp<>(OP_ShrIntAPSUint16, L);
39492}
39493bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
39494 return emitOp<>(OP_ShrIntAPSSint32, L);
39495}
39496bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
39497 return emitOp<>(OP_ShrIntAPSUint32, L);
39498}
39499bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
39500 return emitOp<>(OP_ShrIntAPSSint64, L);
39501}
39502bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
39503 return emitOp<>(OP_ShrIntAPSUint64, L);
39504}
39505bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
39506 return emitOp<>(OP_ShrIntAPSIntAP, L);
39507}
39508bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
39509 return emitOp<>(OP_ShrIntAPSIntAPS, L);
39510}
39511#endif
39512#ifdef GET_EVAL_IMPL
39513bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
39514 if (!isActive()) return true;
39515 CurrentSource = L;
39516 return Shr<PT_Sint8, PT_Sint8>(S, OpPC);
39517}
39518bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
39519 if (!isActive()) return true;
39520 CurrentSource = L;
39521 return Shr<PT_Sint8, PT_Uint8>(S, OpPC);
39522}
39523bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
39524 if (!isActive()) return true;
39525 CurrentSource = L;
39526 return Shr<PT_Sint8, PT_Sint16>(S, OpPC);
39527}
39528bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
39529 if (!isActive()) return true;
39530 CurrentSource = L;
39531 return Shr<PT_Sint8, PT_Uint16>(S, OpPC);
39532}
39533bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
39534 if (!isActive()) return true;
39535 CurrentSource = L;
39536 return Shr<PT_Sint8, PT_Sint32>(S, OpPC);
39537}
39538bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
39539 if (!isActive()) return true;
39540 CurrentSource = L;
39541 return Shr<PT_Sint8, PT_Uint32>(S, OpPC);
39542}
39543bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
39544 if (!isActive()) return true;
39545 CurrentSource = L;
39546 return Shr<PT_Sint8, PT_Sint64>(S, OpPC);
39547}
39548bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
39549 if (!isActive()) return true;
39550 CurrentSource = L;
39551 return Shr<PT_Sint8, PT_Uint64>(S, OpPC);
39552}
39553bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
39554 if (!isActive()) return true;
39555 CurrentSource = L;
39556 return Shr<PT_Sint8, PT_IntAP>(S, OpPC);
39557}
39558bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
39559 if (!isActive()) return true;
39560 CurrentSource = L;
39561 return Shr<PT_Sint8, PT_IntAPS>(S, OpPC);
39562}
39563bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
39564 if (!isActive()) return true;
39565 CurrentSource = L;
39566 return Shr<PT_Uint8, PT_Sint8>(S, OpPC);
39567}
39568bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
39569 if (!isActive()) return true;
39570 CurrentSource = L;
39571 return Shr<PT_Uint8, PT_Uint8>(S, OpPC);
39572}
39573bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
39574 if (!isActive()) return true;
39575 CurrentSource = L;
39576 return Shr<PT_Uint8, PT_Sint16>(S, OpPC);
39577}
39578bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
39579 if (!isActive()) return true;
39580 CurrentSource = L;
39581 return Shr<PT_Uint8, PT_Uint16>(S, OpPC);
39582}
39583bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
39584 if (!isActive()) return true;
39585 CurrentSource = L;
39586 return Shr<PT_Uint8, PT_Sint32>(S, OpPC);
39587}
39588bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
39589 if (!isActive()) return true;
39590 CurrentSource = L;
39591 return Shr<PT_Uint8, PT_Uint32>(S, OpPC);
39592}
39593bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
39594 if (!isActive()) return true;
39595 CurrentSource = L;
39596 return Shr<PT_Uint8, PT_Sint64>(S, OpPC);
39597}
39598bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
39599 if (!isActive()) return true;
39600 CurrentSource = L;
39601 return Shr<PT_Uint8, PT_Uint64>(S, OpPC);
39602}
39603bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
39604 if (!isActive()) return true;
39605 CurrentSource = L;
39606 return Shr<PT_Uint8, PT_IntAP>(S, OpPC);
39607}
39608bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
39609 if (!isActive()) return true;
39610 CurrentSource = L;
39611 return Shr<PT_Uint8, PT_IntAPS>(S, OpPC);
39612}
39613bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
39614 if (!isActive()) return true;
39615 CurrentSource = L;
39616 return Shr<PT_Sint16, PT_Sint8>(S, OpPC);
39617}
39618bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
39619 if (!isActive()) return true;
39620 CurrentSource = L;
39621 return Shr<PT_Sint16, PT_Uint8>(S, OpPC);
39622}
39623bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
39624 if (!isActive()) return true;
39625 CurrentSource = L;
39626 return Shr<PT_Sint16, PT_Sint16>(S, OpPC);
39627}
39628bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
39629 if (!isActive()) return true;
39630 CurrentSource = L;
39631 return Shr<PT_Sint16, PT_Uint16>(S, OpPC);
39632}
39633bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
39634 if (!isActive()) return true;
39635 CurrentSource = L;
39636 return Shr<PT_Sint16, PT_Sint32>(S, OpPC);
39637}
39638bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
39639 if (!isActive()) return true;
39640 CurrentSource = L;
39641 return Shr<PT_Sint16, PT_Uint32>(S, OpPC);
39642}
39643bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
39644 if (!isActive()) return true;
39645 CurrentSource = L;
39646 return Shr<PT_Sint16, PT_Sint64>(S, OpPC);
39647}
39648bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
39649 if (!isActive()) return true;
39650 CurrentSource = L;
39651 return Shr<PT_Sint16, PT_Uint64>(S, OpPC);
39652}
39653bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
39654 if (!isActive()) return true;
39655 CurrentSource = L;
39656 return Shr<PT_Sint16, PT_IntAP>(S, OpPC);
39657}
39658bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
39659 if (!isActive()) return true;
39660 CurrentSource = L;
39661 return Shr<PT_Sint16, PT_IntAPS>(S, OpPC);
39662}
39663bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
39664 if (!isActive()) return true;
39665 CurrentSource = L;
39666 return Shr<PT_Uint16, PT_Sint8>(S, OpPC);
39667}
39668bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
39669 if (!isActive()) return true;
39670 CurrentSource = L;
39671 return Shr<PT_Uint16, PT_Uint8>(S, OpPC);
39672}
39673bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
39674 if (!isActive()) return true;
39675 CurrentSource = L;
39676 return Shr<PT_Uint16, PT_Sint16>(S, OpPC);
39677}
39678bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
39679 if (!isActive()) return true;
39680 CurrentSource = L;
39681 return Shr<PT_Uint16, PT_Uint16>(S, OpPC);
39682}
39683bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
39684 if (!isActive()) return true;
39685 CurrentSource = L;
39686 return Shr<PT_Uint16, PT_Sint32>(S, OpPC);
39687}
39688bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
39689 if (!isActive()) return true;
39690 CurrentSource = L;
39691 return Shr<PT_Uint16, PT_Uint32>(S, OpPC);
39692}
39693bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
39694 if (!isActive()) return true;
39695 CurrentSource = L;
39696 return Shr<PT_Uint16, PT_Sint64>(S, OpPC);
39697}
39698bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
39699 if (!isActive()) return true;
39700 CurrentSource = L;
39701 return Shr<PT_Uint16, PT_Uint64>(S, OpPC);
39702}
39703bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
39704 if (!isActive()) return true;
39705 CurrentSource = L;
39706 return Shr<PT_Uint16, PT_IntAP>(S, OpPC);
39707}
39708bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
39709 if (!isActive()) return true;
39710 CurrentSource = L;
39711 return Shr<PT_Uint16, PT_IntAPS>(S, OpPC);
39712}
39713bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
39714 if (!isActive()) return true;
39715 CurrentSource = L;
39716 return Shr<PT_Sint32, PT_Sint8>(S, OpPC);
39717}
39718bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
39719 if (!isActive()) return true;
39720 CurrentSource = L;
39721 return Shr<PT_Sint32, PT_Uint8>(S, OpPC);
39722}
39723bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
39724 if (!isActive()) return true;
39725 CurrentSource = L;
39726 return Shr<PT_Sint32, PT_Sint16>(S, OpPC);
39727}
39728bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
39729 if (!isActive()) return true;
39730 CurrentSource = L;
39731 return Shr<PT_Sint32, PT_Uint16>(S, OpPC);
39732}
39733bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
39734 if (!isActive()) return true;
39735 CurrentSource = L;
39736 return Shr<PT_Sint32, PT_Sint32>(S, OpPC);
39737}
39738bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
39739 if (!isActive()) return true;
39740 CurrentSource = L;
39741 return Shr<PT_Sint32, PT_Uint32>(S, OpPC);
39742}
39743bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
39744 if (!isActive()) return true;
39745 CurrentSource = L;
39746 return Shr<PT_Sint32, PT_Sint64>(S, OpPC);
39747}
39748bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
39749 if (!isActive()) return true;
39750 CurrentSource = L;
39751 return Shr<PT_Sint32, PT_Uint64>(S, OpPC);
39752}
39753bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
39754 if (!isActive()) return true;
39755 CurrentSource = L;
39756 return Shr<PT_Sint32, PT_IntAP>(S, OpPC);
39757}
39758bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
39759 if (!isActive()) return true;
39760 CurrentSource = L;
39761 return Shr<PT_Sint32, PT_IntAPS>(S, OpPC);
39762}
39763bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
39764 if (!isActive()) return true;
39765 CurrentSource = L;
39766 return Shr<PT_Uint32, PT_Sint8>(S, OpPC);
39767}
39768bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
39769 if (!isActive()) return true;
39770 CurrentSource = L;
39771 return Shr<PT_Uint32, PT_Uint8>(S, OpPC);
39772}
39773bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
39774 if (!isActive()) return true;
39775 CurrentSource = L;
39776 return Shr<PT_Uint32, PT_Sint16>(S, OpPC);
39777}
39778bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
39779 if (!isActive()) return true;
39780 CurrentSource = L;
39781 return Shr<PT_Uint32, PT_Uint16>(S, OpPC);
39782}
39783bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
39784 if (!isActive()) return true;
39785 CurrentSource = L;
39786 return Shr<PT_Uint32, PT_Sint32>(S, OpPC);
39787}
39788bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
39789 if (!isActive()) return true;
39790 CurrentSource = L;
39791 return Shr<PT_Uint32, PT_Uint32>(S, OpPC);
39792}
39793bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
39794 if (!isActive()) return true;
39795 CurrentSource = L;
39796 return Shr<PT_Uint32, PT_Sint64>(S, OpPC);
39797}
39798bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
39799 if (!isActive()) return true;
39800 CurrentSource = L;
39801 return Shr<PT_Uint32, PT_Uint64>(S, OpPC);
39802}
39803bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
39804 if (!isActive()) return true;
39805 CurrentSource = L;
39806 return Shr<PT_Uint32, PT_IntAP>(S, OpPC);
39807}
39808bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
39809 if (!isActive()) return true;
39810 CurrentSource = L;
39811 return Shr<PT_Uint32, PT_IntAPS>(S, OpPC);
39812}
39813bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
39814 if (!isActive()) return true;
39815 CurrentSource = L;
39816 return Shr<PT_Sint64, PT_Sint8>(S, OpPC);
39817}
39818bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
39819 if (!isActive()) return true;
39820 CurrentSource = L;
39821 return Shr<PT_Sint64, PT_Uint8>(S, OpPC);
39822}
39823bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
39824 if (!isActive()) return true;
39825 CurrentSource = L;
39826 return Shr<PT_Sint64, PT_Sint16>(S, OpPC);
39827}
39828bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
39829 if (!isActive()) return true;
39830 CurrentSource = L;
39831 return Shr<PT_Sint64, PT_Uint16>(S, OpPC);
39832}
39833bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
39834 if (!isActive()) return true;
39835 CurrentSource = L;
39836 return Shr<PT_Sint64, PT_Sint32>(S, OpPC);
39837}
39838bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
39839 if (!isActive()) return true;
39840 CurrentSource = L;
39841 return Shr<PT_Sint64, PT_Uint32>(S, OpPC);
39842}
39843bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
39844 if (!isActive()) return true;
39845 CurrentSource = L;
39846 return Shr<PT_Sint64, PT_Sint64>(S, OpPC);
39847}
39848bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
39849 if (!isActive()) return true;
39850 CurrentSource = L;
39851 return Shr<PT_Sint64, PT_Uint64>(S, OpPC);
39852}
39853bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
39854 if (!isActive()) return true;
39855 CurrentSource = L;
39856 return Shr<PT_Sint64, PT_IntAP>(S, OpPC);
39857}
39858bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
39859 if (!isActive()) return true;
39860 CurrentSource = L;
39861 return Shr<PT_Sint64, PT_IntAPS>(S, OpPC);
39862}
39863bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
39864 if (!isActive()) return true;
39865 CurrentSource = L;
39866 return Shr<PT_Uint64, PT_Sint8>(S, OpPC);
39867}
39868bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
39869 if (!isActive()) return true;
39870 CurrentSource = L;
39871 return Shr<PT_Uint64, PT_Uint8>(S, OpPC);
39872}
39873bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
39874 if (!isActive()) return true;
39875 CurrentSource = L;
39876 return Shr<PT_Uint64, PT_Sint16>(S, OpPC);
39877}
39878bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
39879 if (!isActive()) return true;
39880 CurrentSource = L;
39881 return Shr<PT_Uint64, PT_Uint16>(S, OpPC);
39882}
39883bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
39884 if (!isActive()) return true;
39885 CurrentSource = L;
39886 return Shr<PT_Uint64, PT_Sint32>(S, OpPC);
39887}
39888bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
39889 if (!isActive()) return true;
39890 CurrentSource = L;
39891 return Shr<PT_Uint64, PT_Uint32>(S, OpPC);
39892}
39893bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
39894 if (!isActive()) return true;
39895 CurrentSource = L;
39896 return Shr<PT_Uint64, PT_Sint64>(S, OpPC);
39897}
39898bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
39899 if (!isActive()) return true;
39900 CurrentSource = L;
39901 return Shr<PT_Uint64, PT_Uint64>(S, OpPC);
39902}
39903bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
39904 if (!isActive()) return true;
39905 CurrentSource = L;
39906 return Shr<PT_Uint64, PT_IntAP>(S, OpPC);
39907}
39908bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
39909 if (!isActive()) return true;
39910 CurrentSource = L;
39911 return Shr<PT_Uint64, PT_IntAPS>(S, OpPC);
39912}
39913bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
39914 if (!isActive()) return true;
39915 CurrentSource = L;
39916 return Shr<PT_IntAP, PT_Sint8>(S, OpPC);
39917}
39918bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
39919 if (!isActive()) return true;
39920 CurrentSource = L;
39921 return Shr<PT_IntAP, PT_Uint8>(S, OpPC);
39922}
39923bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
39924 if (!isActive()) return true;
39925 CurrentSource = L;
39926 return Shr<PT_IntAP, PT_Sint16>(S, OpPC);
39927}
39928bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
39929 if (!isActive()) return true;
39930 CurrentSource = L;
39931 return Shr<PT_IntAP, PT_Uint16>(S, OpPC);
39932}
39933bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
39934 if (!isActive()) return true;
39935 CurrentSource = L;
39936 return Shr<PT_IntAP, PT_Sint32>(S, OpPC);
39937}
39938bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
39939 if (!isActive()) return true;
39940 CurrentSource = L;
39941 return Shr<PT_IntAP, PT_Uint32>(S, OpPC);
39942}
39943bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
39944 if (!isActive()) return true;
39945 CurrentSource = L;
39946 return Shr<PT_IntAP, PT_Sint64>(S, OpPC);
39947}
39948bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
39949 if (!isActive()) return true;
39950 CurrentSource = L;
39951 return Shr<PT_IntAP, PT_Uint64>(S, OpPC);
39952}
39953bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
39954 if (!isActive()) return true;
39955 CurrentSource = L;
39956 return Shr<PT_IntAP, PT_IntAP>(S, OpPC);
39957}
39958bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
39959 if (!isActive()) return true;
39960 CurrentSource = L;
39961 return Shr<PT_IntAP, PT_IntAPS>(S, OpPC);
39962}
39963bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
39964 if (!isActive()) return true;
39965 CurrentSource = L;
39966 return Shr<PT_IntAPS, PT_Sint8>(S, OpPC);
39967}
39968bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
39969 if (!isActive()) return true;
39970 CurrentSource = L;
39971 return Shr<PT_IntAPS, PT_Uint8>(S, OpPC);
39972}
39973bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
39974 if (!isActive()) return true;
39975 CurrentSource = L;
39976 return Shr<PT_IntAPS, PT_Sint16>(S, OpPC);
39977}
39978bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
39979 if (!isActive()) return true;
39980 CurrentSource = L;
39981 return Shr<PT_IntAPS, PT_Uint16>(S, OpPC);
39982}
39983bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
39984 if (!isActive()) return true;
39985 CurrentSource = L;
39986 return Shr<PT_IntAPS, PT_Sint32>(S, OpPC);
39987}
39988bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
39989 if (!isActive()) return true;
39990 CurrentSource = L;
39991 return Shr<PT_IntAPS, PT_Uint32>(S, OpPC);
39992}
39993bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
39994 if (!isActive()) return true;
39995 CurrentSource = L;
39996 return Shr<PT_IntAPS, PT_Sint64>(S, OpPC);
39997}
39998bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
39999 if (!isActive()) return true;
40000 CurrentSource = L;
40001 return Shr<PT_IntAPS, PT_Uint64>(S, OpPC);
40002}
40003bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
40004 if (!isActive()) return true;
40005 CurrentSource = L;
40006 return Shr<PT_IntAPS, PT_IntAP>(S, OpPC);
40007}
40008bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
40009 if (!isActive()) return true;
40010 CurrentSource = L;
40011 return Shr<PT_IntAPS, PT_IntAPS>(S, OpPC);
40012}
40013#endif
40014#ifdef GET_OPCODE_NAMES
40015OP_SideEffect,
40016#endif
40017#ifdef GET_INTERP
40018case OP_SideEffect: {
40019 if (!SideEffect(S, OpPC))
40020 return false;
40021 continue;
40022}
40023#endif
40024#ifdef GET_DISASM
40025case OP_SideEffect:
40026 Text.Op = PrintName("SideEffect");
40027 break;
40028#endif
40029#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40030bool emitSideEffect(SourceInfo);
40031#endif
40032#ifdef GET_LINK_IMPL
40033bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
40034 return emitOp<>(OP_SideEffect, L);
40035}
40036#endif
40037#ifdef GET_EVAL_IMPL
40038bool EvalEmitter::emitSideEffect(SourceInfo L) {
40039 if (!isActive()) return true;
40040 CurrentSource = L;
40041 return SideEffect(S, OpPC);
40042}
40043#endif
40044#ifdef GET_OPCODE_NAMES
40045OP_SizelessVectorElementSize,
40046#endif
40047#ifdef GET_INTERP
40048case OP_SizelessVectorElementSize: {
40049 if (!SizelessVectorElementSize(S, OpPC))
40050 return false;
40051 continue;
40052}
40053#endif
40054#ifdef GET_DISASM
40055case OP_SizelessVectorElementSize:
40056 Text.Op = PrintName("SizelessVectorElementSize");
40057 break;
40058#endif
40059#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40060bool emitSizelessVectorElementSize(SourceInfo);
40061#endif
40062#ifdef GET_LINK_IMPL
40063bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
40064 return emitOp<>(OP_SizelessVectorElementSize, L);
40065}
40066#endif
40067#ifdef GET_EVAL_IMPL
40068bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
40069 if (!isActive()) return true;
40070 CurrentSource = L;
40071 return SizelessVectorElementSize(S, OpPC);
40072}
40073#endif
40074#ifdef GET_OPCODE_NAMES
40075OP_StartLifetime,
40076#endif
40077#ifdef GET_INTERP
40078case OP_StartLifetime: {
40079 if (!StartLifetime(S, OpPC))
40080 return false;
40081 continue;
40082}
40083#endif
40084#ifdef GET_DISASM
40085case OP_StartLifetime:
40086 Text.Op = PrintName("StartLifetime");
40087 break;
40088#endif
40089#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40090bool emitStartLifetime(SourceInfo);
40091#endif
40092#ifdef GET_LINK_IMPL
40093bool ByteCodeEmitter::emitStartLifetime(SourceInfo L) {
40094 return emitOp<>(OP_StartLifetime, L);
40095}
40096#endif
40097#ifdef GET_EVAL_IMPL
40098bool EvalEmitter::emitStartLifetime(SourceInfo L) {
40099 if (!isActive()) return true;
40100 CurrentSource = L;
40101 return StartLifetime(S, OpPC);
40102}
40103#endif
40104#ifdef GET_OPCODE_NAMES
40105OP_StartSpeculation,
40106#endif
40107#ifdef GET_INTERP
40108case OP_StartSpeculation: {
40109 if (!StartSpeculation(S, OpPC))
40110 return false;
40111 continue;
40112}
40113#endif
40114#ifdef GET_DISASM
40115case OP_StartSpeculation:
40116 Text.Op = PrintName("StartSpeculation");
40117 break;
40118#endif
40119#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40120bool emitStartSpeculation(SourceInfo);
40121#endif
40122#ifdef GET_LINK_IMPL
40123bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
40124 return emitOp<>(OP_StartSpeculation, L);
40125}
40126#endif
40127#ifdef GET_EVAL_IMPL
40128bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
40129 if (!isActive()) return true;
40130 CurrentSource = L;
40131 return StartSpeculation(S, OpPC);
40132}
40133#endif
40134#ifdef GET_OPCODE_NAMES
40135OP_StoreSint8,
40136OP_StoreUint8,
40137OP_StoreSint16,
40138OP_StoreUint16,
40139OP_StoreSint32,
40140OP_StoreUint32,
40141OP_StoreSint64,
40142OP_StoreUint64,
40143OP_StoreIntAP,
40144OP_StoreIntAPS,
40145OP_StoreBool,
40146OP_StoreFixedPoint,
40147OP_StorePtr,
40148OP_StoreMemberPtr,
40149OP_StoreFloat,
40150#endif
40151#ifdef GET_INTERP
40152case OP_StoreSint8: {
40153 if (!Store<PT_Sint8>(S, OpPC))
40154 return false;
40155 continue;
40156}
40157case OP_StoreUint8: {
40158 if (!Store<PT_Uint8>(S, OpPC))
40159 return false;
40160 continue;
40161}
40162case OP_StoreSint16: {
40163 if (!Store<PT_Sint16>(S, OpPC))
40164 return false;
40165 continue;
40166}
40167case OP_StoreUint16: {
40168 if (!Store<PT_Uint16>(S, OpPC))
40169 return false;
40170 continue;
40171}
40172case OP_StoreSint32: {
40173 if (!Store<PT_Sint32>(S, OpPC))
40174 return false;
40175 continue;
40176}
40177case OP_StoreUint32: {
40178 if (!Store<PT_Uint32>(S, OpPC))
40179 return false;
40180 continue;
40181}
40182case OP_StoreSint64: {
40183 if (!Store<PT_Sint64>(S, OpPC))
40184 return false;
40185 continue;
40186}
40187case OP_StoreUint64: {
40188 if (!Store<PT_Uint64>(S, OpPC))
40189 return false;
40190 continue;
40191}
40192case OP_StoreIntAP: {
40193 if (!Store<PT_IntAP>(S, OpPC))
40194 return false;
40195 continue;
40196}
40197case OP_StoreIntAPS: {
40198 if (!Store<PT_IntAPS>(S, OpPC))
40199 return false;
40200 continue;
40201}
40202case OP_StoreBool: {
40203 if (!Store<PT_Bool>(S, OpPC))
40204 return false;
40205 continue;
40206}
40207case OP_StoreFixedPoint: {
40208 if (!Store<PT_FixedPoint>(S, OpPC))
40209 return false;
40210 continue;
40211}
40212case OP_StorePtr: {
40213 if (!Store<PT_Ptr>(S, OpPC))
40214 return false;
40215 continue;
40216}
40217case OP_StoreMemberPtr: {
40218 if (!Store<PT_MemberPtr>(S, OpPC))
40219 return false;
40220 continue;
40221}
40222case OP_StoreFloat: {
40223 if (!Store<PT_Float>(S, OpPC))
40224 return false;
40225 continue;
40226}
40227#endif
40228#ifdef GET_DISASM
40229case OP_StoreSint8:
40230 Text.Op = PrintName("StoreSint8");
40231 break;
40232case OP_StoreUint8:
40233 Text.Op = PrintName("StoreUint8");
40234 break;
40235case OP_StoreSint16:
40236 Text.Op = PrintName("StoreSint16");
40237 break;
40238case OP_StoreUint16:
40239 Text.Op = PrintName("StoreUint16");
40240 break;
40241case OP_StoreSint32:
40242 Text.Op = PrintName("StoreSint32");
40243 break;
40244case OP_StoreUint32:
40245 Text.Op = PrintName("StoreUint32");
40246 break;
40247case OP_StoreSint64:
40248 Text.Op = PrintName("StoreSint64");
40249 break;
40250case OP_StoreUint64:
40251 Text.Op = PrintName("StoreUint64");
40252 break;
40253case OP_StoreIntAP:
40254 Text.Op = PrintName("StoreIntAP");
40255 break;
40256case OP_StoreIntAPS:
40257 Text.Op = PrintName("StoreIntAPS");
40258 break;
40259case OP_StoreBool:
40260 Text.Op = PrintName("StoreBool");
40261 break;
40262case OP_StoreFixedPoint:
40263 Text.Op = PrintName("StoreFixedPoint");
40264 break;
40265case OP_StorePtr:
40266 Text.Op = PrintName("StorePtr");
40267 break;
40268case OP_StoreMemberPtr:
40269 Text.Op = PrintName("StoreMemberPtr");
40270 break;
40271case OP_StoreFloat:
40272 Text.Op = PrintName("StoreFloat");
40273 break;
40274#endif
40275#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40276bool emitStoreSint8(SourceInfo);
40277bool emitStoreUint8(SourceInfo);
40278bool emitStoreSint16(SourceInfo);
40279bool emitStoreUint16(SourceInfo);
40280bool emitStoreSint32(SourceInfo);
40281bool emitStoreUint32(SourceInfo);
40282bool emitStoreSint64(SourceInfo);
40283bool emitStoreUint64(SourceInfo);
40284bool emitStoreIntAP(SourceInfo);
40285bool emitStoreIntAPS(SourceInfo);
40286bool emitStoreBool(SourceInfo);
40287bool emitStoreFixedPoint(SourceInfo);
40288bool emitStorePtr(SourceInfo);
40289bool emitStoreMemberPtr(SourceInfo);
40290bool emitStoreFloat(SourceInfo);
40291#endif
40292#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40293[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
40294#endif
40295#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40296bool
40297#if defined(GET_EVAL_IMPL)
40298EvalEmitter
40299#else
40300ByteCodeEmitter
40301#endif
40302::emitStore(PrimType T0, SourceInfo I) {
40303 switch (T0) {
40304 case PT_Sint8:
40305 return emitStoreSint8(I);
40306 case PT_Uint8:
40307 return emitStoreUint8(I);
40308 case PT_Sint16:
40309 return emitStoreSint16(I);
40310 case PT_Uint16:
40311 return emitStoreUint16(I);
40312 case PT_Sint32:
40313 return emitStoreSint32(I);
40314 case PT_Uint32:
40315 return emitStoreUint32(I);
40316 case PT_Sint64:
40317 return emitStoreSint64(I);
40318 case PT_Uint64:
40319 return emitStoreUint64(I);
40320 case PT_IntAP:
40321 return emitStoreIntAP(I);
40322 case PT_IntAPS:
40323 return emitStoreIntAPS(I);
40324 case PT_Bool:
40325 return emitStoreBool(I);
40326 case PT_FixedPoint:
40327 return emitStoreFixedPoint(I);
40328 case PT_Ptr:
40329 return emitStorePtr(I);
40330 case PT_MemberPtr:
40331 return emitStoreMemberPtr(I);
40332 case PT_Float:
40333 return emitStoreFloat(I);
40334 }
40335 llvm_unreachable("invalid enum value");
40336}
40337#endif
40338#ifdef GET_LINK_IMPL
40339bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
40340 return emitOp<>(OP_StoreSint8, L);
40341}
40342bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
40343 return emitOp<>(OP_StoreUint8, L);
40344}
40345bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
40346 return emitOp<>(OP_StoreSint16, L);
40347}
40348bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
40349 return emitOp<>(OP_StoreUint16, L);
40350}
40351bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
40352 return emitOp<>(OP_StoreSint32, L);
40353}
40354bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
40355 return emitOp<>(OP_StoreUint32, L);
40356}
40357bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
40358 return emitOp<>(OP_StoreSint64, L);
40359}
40360bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
40361 return emitOp<>(OP_StoreUint64, L);
40362}
40363bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
40364 return emitOp<>(OP_StoreIntAP, L);
40365}
40366bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
40367 return emitOp<>(OP_StoreIntAPS, L);
40368}
40369bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
40370 return emitOp<>(OP_StoreBool, L);
40371}
40372bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
40373 return emitOp<>(OP_StoreFixedPoint, L);
40374}
40375bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
40376 return emitOp<>(OP_StorePtr, L);
40377}
40378bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
40379 return emitOp<>(OP_StoreMemberPtr, L);
40380}
40381bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
40382 return emitOp<>(OP_StoreFloat, L);
40383}
40384#endif
40385#ifdef GET_EVAL_IMPL
40386bool EvalEmitter::emitStoreSint8(SourceInfo L) {
40387 if (!isActive()) return true;
40388 CurrentSource = L;
40389 return Store<PT_Sint8>(S, OpPC);
40390}
40391bool EvalEmitter::emitStoreUint8(SourceInfo L) {
40392 if (!isActive()) return true;
40393 CurrentSource = L;
40394 return Store<PT_Uint8>(S, OpPC);
40395}
40396bool EvalEmitter::emitStoreSint16(SourceInfo L) {
40397 if (!isActive()) return true;
40398 CurrentSource = L;
40399 return Store<PT_Sint16>(S, OpPC);
40400}
40401bool EvalEmitter::emitStoreUint16(SourceInfo L) {
40402 if (!isActive()) return true;
40403 CurrentSource = L;
40404 return Store<PT_Uint16>(S, OpPC);
40405}
40406bool EvalEmitter::emitStoreSint32(SourceInfo L) {
40407 if (!isActive()) return true;
40408 CurrentSource = L;
40409 return Store<PT_Sint32>(S, OpPC);
40410}
40411bool EvalEmitter::emitStoreUint32(SourceInfo L) {
40412 if (!isActive()) return true;
40413 CurrentSource = L;
40414 return Store<PT_Uint32>(S, OpPC);
40415}
40416bool EvalEmitter::emitStoreSint64(SourceInfo L) {
40417 if (!isActive()) return true;
40418 CurrentSource = L;
40419 return Store<PT_Sint64>(S, OpPC);
40420}
40421bool EvalEmitter::emitStoreUint64(SourceInfo L) {
40422 if (!isActive()) return true;
40423 CurrentSource = L;
40424 return Store<PT_Uint64>(S, OpPC);
40425}
40426bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
40427 if (!isActive()) return true;
40428 CurrentSource = L;
40429 return Store<PT_IntAP>(S, OpPC);
40430}
40431bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
40432 if (!isActive()) return true;
40433 CurrentSource = L;
40434 return Store<PT_IntAPS>(S, OpPC);
40435}
40436bool EvalEmitter::emitStoreBool(SourceInfo L) {
40437 if (!isActive()) return true;
40438 CurrentSource = L;
40439 return Store<PT_Bool>(S, OpPC);
40440}
40441bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
40442 if (!isActive()) return true;
40443 CurrentSource = L;
40444 return Store<PT_FixedPoint>(S, OpPC);
40445}
40446bool EvalEmitter::emitStorePtr(SourceInfo L) {
40447 if (!isActive()) return true;
40448 CurrentSource = L;
40449 return Store<PT_Ptr>(S, OpPC);
40450}
40451bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
40452 if (!isActive()) return true;
40453 CurrentSource = L;
40454 return Store<PT_MemberPtr>(S, OpPC);
40455}
40456bool EvalEmitter::emitStoreFloat(SourceInfo L) {
40457 if (!isActive()) return true;
40458 CurrentSource = L;
40459 return Store<PT_Float>(S, OpPC);
40460}
40461#endif
40462#ifdef GET_OPCODE_NAMES
40463OP_StoreActivateSint8,
40464OP_StoreActivateUint8,
40465OP_StoreActivateSint16,
40466OP_StoreActivateUint16,
40467OP_StoreActivateSint32,
40468OP_StoreActivateUint32,
40469OP_StoreActivateSint64,
40470OP_StoreActivateUint64,
40471OP_StoreActivateIntAP,
40472OP_StoreActivateIntAPS,
40473OP_StoreActivateBool,
40474OP_StoreActivateFixedPoint,
40475OP_StoreActivatePtr,
40476OP_StoreActivateMemberPtr,
40477OP_StoreActivateFloat,
40478#endif
40479#ifdef GET_INTERP
40480case OP_StoreActivateSint8: {
40481 if (!StoreActivate<PT_Sint8>(S, OpPC))
40482 return false;
40483 continue;
40484}
40485case OP_StoreActivateUint8: {
40486 if (!StoreActivate<PT_Uint8>(S, OpPC))
40487 return false;
40488 continue;
40489}
40490case OP_StoreActivateSint16: {
40491 if (!StoreActivate<PT_Sint16>(S, OpPC))
40492 return false;
40493 continue;
40494}
40495case OP_StoreActivateUint16: {
40496 if (!StoreActivate<PT_Uint16>(S, OpPC))
40497 return false;
40498 continue;
40499}
40500case OP_StoreActivateSint32: {
40501 if (!StoreActivate<PT_Sint32>(S, OpPC))
40502 return false;
40503 continue;
40504}
40505case OP_StoreActivateUint32: {
40506 if (!StoreActivate<PT_Uint32>(S, OpPC))
40507 return false;
40508 continue;
40509}
40510case OP_StoreActivateSint64: {
40511 if (!StoreActivate<PT_Sint64>(S, OpPC))
40512 return false;
40513 continue;
40514}
40515case OP_StoreActivateUint64: {
40516 if (!StoreActivate<PT_Uint64>(S, OpPC))
40517 return false;
40518 continue;
40519}
40520case OP_StoreActivateIntAP: {
40521 if (!StoreActivate<PT_IntAP>(S, OpPC))
40522 return false;
40523 continue;
40524}
40525case OP_StoreActivateIntAPS: {
40526 if (!StoreActivate<PT_IntAPS>(S, OpPC))
40527 return false;
40528 continue;
40529}
40530case OP_StoreActivateBool: {
40531 if (!StoreActivate<PT_Bool>(S, OpPC))
40532 return false;
40533 continue;
40534}
40535case OP_StoreActivateFixedPoint: {
40536 if (!StoreActivate<PT_FixedPoint>(S, OpPC))
40537 return false;
40538 continue;
40539}
40540case OP_StoreActivatePtr: {
40541 if (!StoreActivate<PT_Ptr>(S, OpPC))
40542 return false;
40543 continue;
40544}
40545case OP_StoreActivateMemberPtr: {
40546 if (!StoreActivate<PT_MemberPtr>(S, OpPC))
40547 return false;
40548 continue;
40549}
40550case OP_StoreActivateFloat: {
40551 if (!StoreActivate<PT_Float>(S, OpPC))
40552 return false;
40553 continue;
40554}
40555#endif
40556#ifdef GET_DISASM
40557case OP_StoreActivateSint8:
40558 Text.Op = PrintName("StoreActivateSint8");
40559 break;
40560case OP_StoreActivateUint8:
40561 Text.Op = PrintName("StoreActivateUint8");
40562 break;
40563case OP_StoreActivateSint16:
40564 Text.Op = PrintName("StoreActivateSint16");
40565 break;
40566case OP_StoreActivateUint16:
40567 Text.Op = PrintName("StoreActivateUint16");
40568 break;
40569case OP_StoreActivateSint32:
40570 Text.Op = PrintName("StoreActivateSint32");
40571 break;
40572case OP_StoreActivateUint32:
40573 Text.Op = PrintName("StoreActivateUint32");
40574 break;
40575case OP_StoreActivateSint64:
40576 Text.Op = PrintName("StoreActivateSint64");
40577 break;
40578case OP_StoreActivateUint64:
40579 Text.Op = PrintName("StoreActivateUint64");
40580 break;
40581case OP_StoreActivateIntAP:
40582 Text.Op = PrintName("StoreActivateIntAP");
40583 break;
40584case OP_StoreActivateIntAPS:
40585 Text.Op = PrintName("StoreActivateIntAPS");
40586 break;
40587case OP_StoreActivateBool:
40588 Text.Op = PrintName("StoreActivateBool");
40589 break;
40590case OP_StoreActivateFixedPoint:
40591 Text.Op = PrintName("StoreActivateFixedPoint");
40592 break;
40593case OP_StoreActivatePtr:
40594 Text.Op = PrintName("StoreActivatePtr");
40595 break;
40596case OP_StoreActivateMemberPtr:
40597 Text.Op = PrintName("StoreActivateMemberPtr");
40598 break;
40599case OP_StoreActivateFloat:
40600 Text.Op = PrintName("StoreActivateFloat");
40601 break;
40602#endif
40603#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40604bool emitStoreActivateSint8(SourceInfo);
40605bool emitStoreActivateUint8(SourceInfo);
40606bool emitStoreActivateSint16(SourceInfo);
40607bool emitStoreActivateUint16(SourceInfo);
40608bool emitStoreActivateSint32(SourceInfo);
40609bool emitStoreActivateUint32(SourceInfo);
40610bool emitStoreActivateSint64(SourceInfo);
40611bool emitStoreActivateUint64(SourceInfo);
40612bool emitStoreActivateIntAP(SourceInfo);
40613bool emitStoreActivateIntAPS(SourceInfo);
40614bool emitStoreActivateBool(SourceInfo);
40615bool emitStoreActivateFixedPoint(SourceInfo);
40616bool emitStoreActivatePtr(SourceInfo);
40617bool emitStoreActivateMemberPtr(SourceInfo);
40618bool emitStoreActivateFloat(SourceInfo);
40619#endif
40620#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40621[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
40622#endif
40623#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40624bool
40625#if defined(GET_EVAL_IMPL)
40626EvalEmitter
40627#else
40628ByteCodeEmitter
40629#endif
40630::emitStoreActivate(PrimType T0, SourceInfo I) {
40631 switch (T0) {
40632 case PT_Sint8:
40633 return emitStoreActivateSint8(I);
40634 case PT_Uint8:
40635 return emitStoreActivateUint8(I);
40636 case PT_Sint16:
40637 return emitStoreActivateSint16(I);
40638 case PT_Uint16:
40639 return emitStoreActivateUint16(I);
40640 case PT_Sint32:
40641 return emitStoreActivateSint32(I);
40642 case PT_Uint32:
40643 return emitStoreActivateUint32(I);
40644 case PT_Sint64:
40645 return emitStoreActivateSint64(I);
40646 case PT_Uint64:
40647 return emitStoreActivateUint64(I);
40648 case PT_IntAP:
40649 return emitStoreActivateIntAP(I);
40650 case PT_IntAPS:
40651 return emitStoreActivateIntAPS(I);
40652 case PT_Bool:
40653 return emitStoreActivateBool(I);
40654 case PT_FixedPoint:
40655 return emitStoreActivateFixedPoint(I);
40656 case PT_Ptr:
40657 return emitStoreActivatePtr(I);
40658 case PT_MemberPtr:
40659 return emitStoreActivateMemberPtr(I);
40660 case PT_Float:
40661 return emitStoreActivateFloat(I);
40662 }
40663 llvm_unreachable("invalid enum value");
40664}
40665#endif
40666#ifdef GET_LINK_IMPL
40667bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
40668 return emitOp<>(OP_StoreActivateSint8, L);
40669}
40670bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
40671 return emitOp<>(OP_StoreActivateUint8, L);
40672}
40673bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
40674 return emitOp<>(OP_StoreActivateSint16, L);
40675}
40676bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
40677 return emitOp<>(OP_StoreActivateUint16, L);
40678}
40679bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
40680 return emitOp<>(OP_StoreActivateSint32, L);
40681}
40682bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
40683 return emitOp<>(OP_StoreActivateUint32, L);
40684}
40685bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
40686 return emitOp<>(OP_StoreActivateSint64, L);
40687}
40688bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
40689 return emitOp<>(OP_StoreActivateUint64, L);
40690}
40691bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
40692 return emitOp<>(OP_StoreActivateIntAP, L);
40693}
40694bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
40695 return emitOp<>(OP_StoreActivateIntAPS, L);
40696}
40697bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
40698 return emitOp<>(OP_StoreActivateBool, L);
40699}
40700bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
40701 return emitOp<>(OP_StoreActivateFixedPoint, L);
40702}
40703bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
40704 return emitOp<>(OP_StoreActivatePtr, L);
40705}
40706bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
40707 return emitOp<>(OP_StoreActivateMemberPtr, L);
40708}
40709bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
40710 return emitOp<>(OP_StoreActivateFloat, L);
40711}
40712#endif
40713#ifdef GET_EVAL_IMPL
40714bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
40715 if (!isActive()) return true;
40716 CurrentSource = L;
40717 return StoreActivate<PT_Sint8>(S, OpPC);
40718}
40719bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
40720 if (!isActive()) return true;
40721 CurrentSource = L;
40722 return StoreActivate<PT_Uint8>(S, OpPC);
40723}
40724bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
40725 if (!isActive()) return true;
40726 CurrentSource = L;
40727 return StoreActivate<PT_Sint16>(S, OpPC);
40728}
40729bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
40730 if (!isActive()) return true;
40731 CurrentSource = L;
40732 return StoreActivate<PT_Uint16>(S, OpPC);
40733}
40734bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
40735 if (!isActive()) return true;
40736 CurrentSource = L;
40737 return StoreActivate<PT_Sint32>(S, OpPC);
40738}
40739bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
40740 if (!isActive()) return true;
40741 CurrentSource = L;
40742 return StoreActivate<PT_Uint32>(S, OpPC);
40743}
40744bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
40745 if (!isActive()) return true;
40746 CurrentSource = L;
40747 return StoreActivate<PT_Sint64>(S, OpPC);
40748}
40749bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
40750 if (!isActive()) return true;
40751 CurrentSource = L;
40752 return StoreActivate<PT_Uint64>(S, OpPC);
40753}
40754bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
40755 if (!isActive()) return true;
40756 CurrentSource = L;
40757 return StoreActivate<PT_IntAP>(S, OpPC);
40758}
40759bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
40760 if (!isActive()) return true;
40761 CurrentSource = L;
40762 return StoreActivate<PT_IntAPS>(S, OpPC);
40763}
40764bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
40765 if (!isActive()) return true;
40766 CurrentSource = L;
40767 return StoreActivate<PT_Bool>(S, OpPC);
40768}
40769bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
40770 if (!isActive()) return true;
40771 CurrentSource = L;
40772 return StoreActivate<PT_FixedPoint>(S, OpPC);
40773}
40774bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
40775 if (!isActive()) return true;
40776 CurrentSource = L;
40777 return StoreActivate<PT_Ptr>(S, OpPC);
40778}
40779bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
40780 if (!isActive()) return true;
40781 CurrentSource = L;
40782 return StoreActivate<PT_MemberPtr>(S, OpPC);
40783}
40784bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
40785 if (!isActive()) return true;
40786 CurrentSource = L;
40787 return StoreActivate<PT_Float>(S, OpPC);
40788}
40789#endif
40790#ifdef GET_OPCODE_NAMES
40791OP_StoreActivatePopSint8,
40792OP_StoreActivatePopUint8,
40793OP_StoreActivatePopSint16,
40794OP_StoreActivatePopUint16,
40795OP_StoreActivatePopSint32,
40796OP_StoreActivatePopUint32,
40797OP_StoreActivatePopSint64,
40798OP_StoreActivatePopUint64,
40799OP_StoreActivatePopIntAP,
40800OP_StoreActivatePopIntAPS,
40801OP_StoreActivatePopBool,
40802OP_StoreActivatePopFixedPoint,
40803OP_StoreActivatePopPtr,
40804OP_StoreActivatePopMemberPtr,
40805OP_StoreActivatePopFloat,
40806#endif
40807#ifdef GET_INTERP
40808case OP_StoreActivatePopSint8: {
40809 if (!StoreActivatePop<PT_Sint8>(S, OpPC))
40810 return false;
40811 continue;
40812}
40813case OP_StoreActivatePopUint8: {
40814 if (!StoreActivatePop<PT_Uint8>(S, OpPC))
40815 return false;
40816 continue;
40817}
40818case OP_StoreActivatePopSint16: {
40819 if (!StoreActivatePop<PT_Sint16>(S, OpPC))
40820 return false;
40821 continue;
40822}
40823case OP_StoreActivatePopUint16: {
40824 if (!StoreActivatePop<PT_Uint16>(S, OpPC))
40825 return false;
40826 continue;
40827}
40828case OP_StoreActivatePopSint32: {
40829 if (!StoreActivatePop<PT_Sint32>(S, OpPC))
40830 return false;
40831 continue;
40832}
40833case OP_StoreActivatePopUint32: {
40834 if (!StoreActivatePop<PT_Uint32>(S, OpPC))
40835 return false;
40836 continue;
40837}
40838case OP_StoreActivatePopSint64: {
40839 if (!StoreActivatePop<PT_Sint64>(S, OpPC))
40840 return false;
40841 continue;
40842}
40843case OP_StoreActivatePopUint64: {
40844 if (!StoreActivatePop<PT_Uint64>(S, OpPC))
40845 return false;
40846 continue;
40847}
40848case OP_StoreActivatePopIntAP: {
40849 if (!StoreActivatePop<PT_IntAP>(S, OpPC))
40850 return false;
40851 continue;
40852}
40853case OP_StoreActivatePopIntAPS: {
40854 if (!StoreActivatePop<PT_IntAPS>(S, OpPC))
40855 return false;
40856 continue;
40857}
40858case OP_StoreActivatePopBool: {
40859 if (!StoreActivatePop<PT_Bool>(S, OpPC))
40860 return false;
40861 continue;
40862}
40863case OP_StoreActivatePopFixedPoint: {
40864 if (!StoreActivatePop<PT_FixedPoint>(S, OpPC))
40865 return false;
40866 continue;
40867}
40868case OP_StoreActivatePopPtr: {
40869 if (!StoreActivatePop<PT_Ptr>(S, OpPC))
40870 return false;
40871 continue;
40872}
40873case OP_StoreActivatePopMemberPtr: {
40874 if (!StoreActivatePop<PT_MemberPtr>(S, OpPC))
40875 return false;
40876 continue;
40877}
40878case OP_StoreActivatePopFloat: {
40879 if (!StoreActivatePop<PT_Float>(S, OpPC))
40880 return false;
40881 continue;
40882}
40883#endif
40884#ifdef GET_DISASM
40885case OP_StoreActivatePopSint8:
40886 Text.Op = PrintName("StoreActivatePopSint8");
40887 break;
40888case OP_StoreActivatePopUint8:
40889 Text.Op = PrintName("StoreActivatePopUint8");
40890 break;
40891case OP_StoreActivatePopSint16:
40892 Text.Op = PrintName("StoreActivatePopSint16");
40893 break;
40894case OP_StoreActivatePopUint16:
40895 Text.Op = PrintName("StoreActivatePopUint16");
40896 break;
40897case OP_StoreActivatePopSint32:
40898 Text.Op = PrintName("StoreActivatePopSint32");
40899 break;
40900case OP_StoreActivatePopUint32:
40901 Text.Op = PrintName("StoreActivatePopUint32");
40902 break;
40903case OP_StoreActivatePopSint64:
40904 Text.Op = PrintName("StoreActivatePopSint64");
40905 break;
40906case OP_StoreActivatePopUint64:
40907 Text.Op = PrintName("StoreActivatePopUint64");
40908 break;
40909case OP_StoreActivatePopIntAP:
40910 Text.Op = PrintName("StoreActivatePopIntAP");
40911 break;
40912case OP_StoreActivatePopIntAPS:
40913 Text.Op = PrintName("StoreActivatePopIntAPS");
40914 break;
40915case OP_StoreActivatePopBool:
40916 Text.Op = PrintName("StoreActivatePopBool");
40917 break;
40918case OP_StoreActivatePopFixedPoint:
40919 Text.Op = PrintName("StoreActivatePopFixedPoint");
40920 break;
40921case OP_StoreActivatePopPtr:
40922 Text.Op = PrintName("StoreActivatePopPtr");
40923 break;
40924case OP_StoreActivatePopMemberPtr:
40925 Text.Op = PrintName("StoreActivatePopMemberPtr");
40926 break;
40927case OP_StoreActivatePopFloat:
40928 Text.Op = PrintName("StoreActivatePopFloat");
40929 break;
40930#endif
40931#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40932bool emitStoreActivatePopSint8(SourceInfo);
40933bool emitStoreActivatePopUint8(SourceInfo);
40934bool emitStoreActivatePopSint16(SourceInfo);
40935bool emitStoreActivatePopUint16(SourceInfo);
40936bool emitStoreActivatePopSint32(SourceInfo);
40937bool emitStoreActivatePopUint32(SourceInfo);
40938bool emitStoreActivatePopSint64(SourceInfo);
40939bool emitStoreActivatePopUint64(SourceInfo);
40940bool emitStoreActivatePopIntAP(SourceInfo);
40941bool emitStoreActivatePopIntAPS(SourceInfo);
40942bool emitStoreActivatePopBool(SourceInfo);
40943bool emitStoreActivatePopFixedPoint(SourceInfo);
40944bool emitStoreActivatePopPtr(SourceInfo);
40945bool emitStoreActivatePopMemberPtr(SourceInfo);
40946bool emitStoreActivatePopFloat(SourceInfo);
40947#endif
40948#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40949[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
40950#endif
40951#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40952bool
40953#if defined(GET_EVAL_IMPL)
40954EvalEmitter
40955#else
40956ByteCodeEmitter
40957#endif
40958::emitStoreActivatePop(PrimType T0, SourceInfo I) {
40959 switch (T0) {
40960 case PT_Sint8:
40961 return emitStoreActivatePopSint8(I);
40962 case PT_Uint8:
40963 return emitStoreActivatePopUint8(I);
40964 case PT_Sint16:
40965 return emitStoreActivatePopSint16(I);
40966 case PT_Uint16:
40967 return emitStoreActivatePopUint16(I);
40968 case PT_Sint32:
40969 return emitStoreActivatePopSint32(I);
40970 case PT_Uint32:
40971 return emitStoreActivatePopUint32(I);
40972 case PT_Sint64:
40973 return emitStoreActivatePopSint64(I);
40974 case PT_Uint64:
40975 return emitStoreActivatePopUint64(I);
40976 case PT_IntAP:
40977 return emitStoreActivatePopIntAP(I);
40978 case PT_IntAPS:
40979 return emitStoreActivatePopIntAPS(I);
40980 case PT_Bool:
40981 return emitStoreActivatePopBool(I);
40982 case PT_FixedPoint:
40983 return emitStoreActivatePopFixedPoint(I);
40984 case PT_Ptr:
40985 return emitStoreActivatePopPtr(I);
40986 case PT_MemberPtr:
40987 return emitStoreActivatePopMemberPtr(I);
40988 case PT_Float:
40989 return emitStoreActivatePopFloat(I);
40990 }
40991 llvm_unreachable("invalid enum value");
40992}
40993#endif
40994#ifdef GET_LINK_IMPL
40995bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
40996 return emitOp<>(OP_StoreActivatePopSint8, L);
40997}
40998bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
40999 return emitOp<>(OP_StoreActivatePopUint8, L);
41000}
41001bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
41002 return emitOp<>(OP_StoreActivatePopSint16, L);
41003}
41004bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
41005 return emitOp<>(OP_StoreActivatePopUint16, L);
41006}
41007bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
41008 return emitOp<>(OP_StoreActivatePopSint32, L);
41009}
41010bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
41011 return emitOp<>(OP_StoreActivatePopUint32, L);
41012}
41013bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
41014 return emitOp<>(OP_StoreActivatePopSint64, L);
41015}
41016bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
41017 return emitOp<>(OP_StoreActivatePopUint64, L);
41018}
41019bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
41020 return emitOp<>(OP_StoreActivatePopIntAP, L);
41021}
41022bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
41023 return emitOp<>(OP_StoreActivatePopIntAPS, L);
41024}
41025bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
41026 return emitOp<>(OP_StoreActivatePopBool, L);
41027}
41028bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
41029 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
41030}
41031bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
41032 return emitOp<>(OP_StoreActivatePopPtr, L);
41033}
41034bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
41035 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
41036}
41037bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
41038 return emitOp<>(OP_StoreActivatePopFloat, L);
41039}
41040#endif
41041#ifdef GET_EVAL_IMPL
41042bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
41043 if (!isActive()) return true;
41044 CurrentSource = L;
41045 return StoreActivatePop<PT_Sint8>(S, OpPC);
41046}
41047bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
41048 if (!isActive()) return true;
41049 CurrentSource = L;
41050 return StoreActivatePop<PT_Uint8>(S, OpPC);
41051}
41052bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
41053 if (!isActive()) return true;
41054 CurrentSource = L;
41055 return StoreActivatePop<PT_Sint16>(S, OpPC);
41056}
41057bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
41058 if (!isActive()) return true;
41059 CurrentSource = L;
41060 return StoreActivatePop<PT_Uint16>(S, OpPC);
41061}
41062bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
41063 if (!isActive()) return true;
41064 CurrentSource = L;
41065 return StoreActivatePop<PT_Sint32>(S, OpPC);
41066}
41067bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
41068 if (!isActive()) return true;
41069 CurrentSource = L;
41070 return StoreActivatePop<PT_Uint32>(S, OpPC);
41071}
41072bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
41073 if (!isActive()) return true;
41074 CurrentSource = L;
41075 return StoreActivatePop<PT_Sint64>(S, OpPC);
41076}
41077bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
41078 if (!isActive()) return true;
41079 CurrentSource = L;
41080 return StoreActivatePop<PT_Uint64>(S, OpPC);
41081}
41082bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
41083 if (!isActive()) return true;
41084 CurrentSource = L;
41085 return StoreActivatePop<PT_IntAP>(S, OpPC);
41086}
41087bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
41088 if (!isActive()) return true;
41089 CurrentSource = L;
41090 return StoreActivatePop<PT_IntAPS>(S, OpPC);
41091}
41092bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
41093 if (!isActive()) return true;
41094 CurrentSource = L;
41095 return StoreActivatePop<PT_Bool>(S, OpPC);
41096}
41097bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
41098 if (!isActive()) return true;
41099 CurrentSource = L;
41100 return StoreActivatePop<PT_FixedPoint>(S, OpPC);
41101}
41102bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
41103 if (!isActive()) return true;
41104 CurrentSource = L;
41105 return StoreActivatePop<PT_Ptr>(S, OpPC);
41106}
41107bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
41108 if (!isActive()) return true;
41109 CurrentSource = L;
41110 return StoreActivatePop<PT_MemberPtr>(S, OpPC);
41111}
41112bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
41113 if (!isActive()) return true;
41114 CurrentSource = L;
41115 return StoreActivatePop<PT_Float>(S, OpPC);
41116}
41117#endif
41118#ifdef GET_OPCODE_NAMES
41119OP_StoreBitFieldSint8,
41120OP_StoreBitFieldUint8,
41121OP_StoreBitFieldSint16,
41122OP_StoreBitFieldUint16,
41123OP_StoreBitFieldSint32,
41124OP_StoreBitFieldUint32,
41125OP_StoreBitFieldSint64,
41126OP_StoreBitFieldUint64,
41127OP_StoreBitFieldIntAP,
41128OP_StoreBitFieldIntAPS,
41129OP_StoreBitFieldBool,
41130OP_StoreBitFieldFixedPoint,
41131#endif
41132#ifdef GET_INTERP
41133case OP_StoreBitFieldSint8: {
41134 if (!StoreBitField<PT_Sint8>(S, OpPC))
41135 return false;
41136 continue;
41137}
41138case OP_StoreBitFieldUint8: {
41139 if (!StoreBitField<PT_Uint8>(S, OpPC))
41140 return false;
41141 continue;
41142}
41143case OP_StoreBitFieldSint16: {
41144 if (!StoreBitField<PT_Sint16>(S, OpPC))
41145 return false;
41146 continue;
41147}
41148case OP_StoreBitFieldUint16: {
41149 if (!StoreBitField<PT_Uint16>(S, OpPC))
41150 return false;
41151 continue;
41152}
41153case OP_StoreBitFieldSint32: {
41154 if (!StoreBitField<PT_Sint32>(S, OpPC))
41155 return false;
41156 continue;
41157}
41158case OP_StoreBitFieldUint32: {
41159 if (!StoreBitField<PT_Uint32>(S, OpPC))
41160 return false;
41161 continue;
41162}
41163case OP_StoreBitFieldSint64: {
41164 if (!StoreBitField<PT_Sint64>(S, OpPC))
41165 return false;
41166 continue;
41167}
41168case OP_StoreBitFieldUint64: {
41169 if (!StoreBitField<PT_Uint64>(S, OpPC))
41170 return false;
41171 continue;
41172}
41173case OP_StoreBitFieldIntAP: {
41174 if (!StoreBitField<PT_IntAP>(S, OpPC))
41175 return false;
41176 continue;
41177}
41178case OP_StoreBitFieldIntAPS: {
41179 if (!StoreBitField<PT_IntAPS>(S, OpPC))
41180 return false;
41181 continue;
41182}
41183case OP_StoreBitFieldBool: {
41184 if (!StoreBitField<PT_Bool>(S, OpPC))
41185 return false;
41186 continue;
41187}
41188case OP_StoreBitFieldFixedPoint: {
41189 if (!StoreBitField<PT_FixedPoint>(S, OpPC))
41190 return false;
41191 continue;
41192}
41193#endif
41194#ifdef GET_DISASM
41195case OP_StoreBitFieldSint8:
41196 Text.Op = PrintName("StoreBitFieldSint8");
41197 break;
41198case OP_StoreBitFieldUint8:
41199 Text.Op = PrintName("StoreBitFieldUint8");
41200 break;
41201case OP_StoreBitFieldSint16:
41202 Text.Op = PrintName("StoreBitFieldSint16");
41203 break;
41204case OP_StoreBitFieldUint16:
41205 Text.Op = PrintName("StoreBitFieldUint16");
41206 break;
41207case OP_StoreBitFieldSint32:
41208 Text.Op = PrintName("StoreBitFieldSint32");
41209 break;
41210case OP_StoreBitFieldUint32:
41211 Text.Op = PrintName("StoreBitFieldUint32");
41212 break;
41213case OP_StoreBitFieldSint64:
41214 Text.Op = PrintName("StoreBitFieldSint64");
41215 break;
41216case OP_StoreBitFieldUint64:
41217 Text.Op = PrintName("StoreBitFieldUint64");
41218 break;
41219case OP_StoreBitFieldIntAP:
41220 Text.Op = PrintName("StoreBitFieldIntAP");
41221 break;
41222case OP_StoreBitFieldIntAPS:
41223 Text.Op = PrintName("StoreBitFieldIntAPS");
41224 break;
41225case OP_StoreBitFieldBool:
41226 Text.Op = PrintName("StoreBitFieldBool");
41227 break;
41228case OP_StoreBitFieldFixedPoint:
41229 Text.Op = PrintName("StoreBitFieldFixedPoint");
41230 break;
41231#endif
41232#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41233bool emitStoreBitFieldSint8(SourceInfo);
41234bool emitStoreBitFieldUint8(SourceInfo);
41235bool emitStoreBitFieldSint16(SourceInfo);
41236bool emitStoreBitFieldUint16(SourceInfo);
41237bool emitStoreBitFieldSint32(SourceInfo);
41238bool emitStoreBitFieldUint32(SourceInfo);
41239bool emitStoreBitFieldSint64(SourceInfo);
41240bool emitStoreBitFieldUint64(SourceInfo);
41241bool emitStoreBitFieldIntAP(SourceInfo);
41242bool emitStoreBitFieldIntAPS(SourceInfo);
41243bool emitStoreBitFieldBool(SourceInfo);
41244bool emitStoreBitFieldFixedPoint(SourceInfo);
41245#endif
41246#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41247[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
41248#endif
41249#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41250bool
41251#if defined(GET_EVAL_IMPL)
41252EvalEmitter
41253#else
41254ByteCodeEmitter
41255#endif
41256::emitStoreBitField(PrimType T0, SourceInfo I) {
41257 switch (T0) {
41258 case PT_Sint8:
41259 return emitStoreBitFieldSint8(I);
41260 case PT_Uint8:
41261 return emitStoreBitFieldUint8(I);
41262 case PT_Sint16:
41263 return emitStoreBitFieldSint16(I);
41264 case PT_Uint16:
41265 return emitStoreBitFieldUint16(I);
41266 case PT_Sint32:
41267 return emitStoreBitFieldSint32(I);
41268 case PT_Uint32:
41269 return emitStoreBitFieldUint32(I);
41270 case PT_Sint64:
41271 return emitStoreBitFieldSint64(I);
41272 case PT_Uint64:
41273 return emitStoreBitFieldUint64(I);
41274 case PT_IntAP:
41275 return emitStoreBitFieldIntAP(I);
41276 case PT_IntAPS:
41277 return emitStoreBitFieldIntAPS(I);
41278 case PT_Bool:
41279 return emitStoreBitFieldBool(I);
41280 case PT_FixedPoint:
41281 return emitStoreBitFieldFixedPoint(I);
41282 default: llvm_unreachable("invalid type: emitStoreBitField");
41283 }
41284 llvm_unreachable("invalid enum value");
41285}
41286#endif
41287#ifdef GET_LINK_IMPL
41288bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
41289 return emitOp<>(OP_StoreBitFieldSint8, L);
41290}
41291bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
41292 return emitOp<>(OP_StoreBitFieldUint8, L);
41293}
41294bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
41295 return emitOp<>(OP_StoreBitFieldSint16, L);
41296}
41297bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
41298 return emitOp<>(OP_StoreBitFieldUint16, L);
41299}
41300bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
41301 return emitOp<>(OP_StoreBitFieldSint32, L);
41302}
41303bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
41304 return emitOp<>(OP_StoreBitFieldUint32, L);
41305}
41306bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
41307 return emitOp<>(OP_StoreBitFieldSint64, L);
41308}
41309bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
41310 return emitOp<>(OP_StoreBitFieldUint64, L);
41311}
41312bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
41313 return emitOp<>(OP_StoreBitFieldIntAP, L);
41314}
41315bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
41316 return emitOp<>(OP_StoreBitFieldIntAPS, L);
41317}
41318bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
41319 return emitOp<>(OP_StoreBitFieldBool, L);
41320}
41321bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
41322 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
41323}
41324#endif
41325#ifdef GET_EVAL_IMPL
41326bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
41327 if (!isActive()) return true;
41328 CurrentSource = L;
41329 return StoreBitField<PT_Sint8>(S, OpPC);
41330}
41331bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
41332 if (!isActive()) return true;
41333 CurrentSource = L;
41334 return StoreBitField<PT_Uint8>(S, OpPC);
41335}
41336bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
41337 if (!isActive()) return true;
41338 CurrentSource = L;
41339 return StoreBitField<PT_Sint16>(S, OpPC);
41340}
41341bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
41342 if (!isActive()) return true;
41343 CurrentSource = L;
41344 return StoreBitField<PT_Uint16>(S, OpPC);
41345}
41346bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
41347 if (!isActive()) return true;
41348 CurrentSource = L;
41349 return StoreBitField<PT_Sint32>(S, OpPC);
41350}
41351bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
41352 if (!isActive()) return true;
41353 CurrentSource = L;
41354 return StoreBitField<PT_Uint32>(S, OpPC);
41355}
41356bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
41357 if (!isActive()) return true;
41358 CurrentSource = L;
41359 return StoreBitField<PT_Sint64>(S, OpPC);
41360}
41361bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
41362 if (!isActive()) return true;
41363 CurrentSource = L;
41364 return StoreBitField<PT_Uint64>(S, OpPC);
41365}
41366bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
41367 if (!isActive()) return true;
41368 CurrentSource = L;
41369 return StoreBitField<PT_IntAP>(S, OpPC);
41370}
41371bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
41372 if (!isActive()) return true;
41373 CurrentSource = L;
41374 return StoreBitField<PT_IntAPS>(S, OpPC);
41375}
41376bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
41377 if (!isActive()) return true;
41378 CurrentSource = L;
41379 return StoreBitField<PT_Bool>(S, OpPC);
41380}
41381bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
41382 if (!isActive()) return true;
41383 CurrentSource = L;
41384 return StoreBitField<PT_FixedPoint>(S, OpPC);
41385}
41386#endif
41387#ifdef GET_OPCODE_NAMES
41388OP_StoreBitFieldActivateSint8,
41389OP_StoreBitFieldActivateUint8,
41390OP_StoreBitFieldActivateSint16,
41391OP_StoreBitFieldActivateUint16,
41392OP_StoreBitFieldActivateSint32,
41393OP_StoreBitFieldActivateUint32,
41394OP_StoreBitFieldActivateSint64,
41395OP_StoreBitFieldActivateUint64,
41396OP_StoreBitFieldActivateIntAP,
41397OP_StoreBitFieldActivateIntAPS,
41398OP_StoreBitFieldActivateBool,
41399OP_StoreBitFieldActivateFixedPoint,
41400#endif
41401#ifdef GET_INTERP
41402case OP_StoreBitFieldActivateSint8: {
41403 if (!StoreBitFieldActivate<PT_Sint8>(S, OpPC))
41404 return false;
41405 continue;
41406}
41407case OP_StoreBitFieldActivateUint8: {
41408 if (!StoreBitFieldActivate<PT_Uint8>(S, OpPC))
41409 return false;
41410 continue;
41411}
41412case OP_StoreBitFieldActivateSint16: {
41413 if (!StoreBitFieldActivate<PT_Sint16>(S, OpPC))
41414 return false;
41415 continue;
41416}
41417case OP_StoreBitFieldActivateUint16: {
41418 if (!StoreBitFieldActivate<PT_Uint16>(S, OpPC))
41419 return false;
41420 continue;
41421}
41422case OP_StoreBitFieldActivateSint32: {
41423 if (!StoreBitFieldActivate<PT_Sint32>(S, OpPC))
41424 return false;
41425 continue;
41426}
41427case OP_StoreBitFieldActivateUint32: {
41428 if (!StoreBitFieldActivate<PT_Uint32>(S, OpPC))
41429 return false;
41430 continue;
41431}
41432case OP_StoreBitFieldActivateSint64: {
41433 if (!StoreBitFieldActivate<PT_Sint64>(S, OpPC))
41434 return false;
41435 continue;
41436}
41437case OP_StoreBitFieldActivateUint64: {
41438 if (!StoreBitFieldActivate<PT_Uint64>(S, OpPC))
41439 return false;
41440 continue;
41441}
41442case OP_StoreBitFieldActivateIntAP: {
41443 if (!StoreBitFieldActivate<PT_IntAP>(S, OpPC))
41444 return false;
41445 continue;
41446}
41447case OP_StoreBitFieldActivateIntAPS: {
41448 if (!StoreBitFieldActivate<PT_IntAPS>(S, OpPC))
41449 return false;
41450 continue;
41451}
41452case OP_StoreBitFieldActivateBool: {
41453 if (!StoreBitFieldActivate<PT_Bool>(S, OpPC))
41454 return false;
41455 continue;
41456}
41457case OP_StoreBitFieldActivateFixedPoint: {
41458 if (!StoreBitFieldActivate<PT_FixedPoint>(S, OpPC))
41459 return false;
41460 continue;
41461}
41462#endif
41463#ifdef GET_DISASM
41464case OP_StoreBitFieldActivateSint8:
41465 Text.Op = PrintName("StoreBitFieldActivateSint8");
41466 break;
41467case OP_StoreBitFieldActivateUint8:
41468 Text.Op = PrintName("StoreBitFieldActivateUint8");
41469 break;
41470case OP_StoreBitFieldActivateSint16:
41471 Text.Op = PrintName("StoreBitFieldActivateSint16");
41472 break;
41473case OP_StoreBitFieldActivateUint16:
41474 Text.Op = PrintName("StoreBitFieldActivateUint16");
41475 break;
41476case OP_StoreBitFieldActivateSint32:
41477 Text.Op = PrintName("StoreBitFieldActivateSint32");
41478 break;
41479case OP_StoreBitFieldActivateUint32:
41480 Text.Op = PrintName("StoreBitFieldActivateUint32");
41481 break;
41482case OP_StoreBitFieldActivateSint64:
41483 Text.Op = PrintName("StoreBitFieldActivateSint64");
41484 break;
41485case OP_StoreBitFieldActivateUint64:
41486 Text.Op = PrintName("StoreBitFieldActivateUint64");
41487 break;
41488case OP_StoreBitFieldActivateIntAP:
41489 Text.Op = PrintName("StoreBitFieldActivateIntAP");
41490 break;
41491case OP_StoreBitFieldActivateIntAPS:
41492 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
41493 break;
41494case OP_StoreBitFieldActivateBool:
41495 Text.Op = PrintName("StoreBitFieldActivateBool");
41496 break;
41497case OP_StoreBitFieldActivateFixedPoint:
41498 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
41499 break;
41500#endif
41501#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41502bool emitStoreBitFieldActivateSint8(SourceInfo);
41503bool emitStoreBitFieldActivateUint8(SourceInfo);
41504bool emitStoreBitFieldActivateSint16(SourceInfo);
41505bool emitStoreBitFieldActivateUint16(SourceInfo);
41506bool emitStoreBitFieldActivateSint32(SourceInfo);
41507bool emitStoreBitFieldActivateUint32(SourceInfo);
41508bool emitStoreBitFieldActivateSint64(SourceInfo);
41509bool emitStoreBitFieldActivateUint64(SourceInfo);
41510bool emitStoreBitFieldActivateIntAP(SourceInfo);
41511bool emitStoreBitFieldActivateIntAPS(SourceInfo);
41512bool emitStoreBitFieldActivateBool(SourceInfo);
41513bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
41514#endif
41515#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41516[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
41517#endif
41518#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41519bool
41520#if defined(GET_EVAL_IMPL)
41521EvalEmitter
41522#else
41523ByteCodeEmitter
41524#endif
41525::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
41526 switch (T0) {
41527 case PT_Sint8:
41528 return emitStoreBitFieldActivateSint8(I);
41529 case PT_Uint8:
41530 return emitStoreBitFieldActivateUint8(I);
41531 case PT_Sint16:
41532 return emitStoreBitFieldActivateSint16(I);
41533 case PT_Uint16:
41534 return emitStoreBitFieldActivateUint16(I);
41535 case PT_Sint32:
41536 return emitStoreBitFieldActivateSint32(I);
41537 case PT_Uint32:
41538 return emitStoreBitFieldActivateUint32(I);
41539 case PT_Sint64:
41540 return emitStoreBitFieldActivateSint64(I);
41541 case PT_Uint64:
41542 return emitStoreBitFieldActivateUint64(I);
41543 case PT_IntAP:
41544 return emitStoreBitFieldActivateIntAP(I);
41545 case PT_IntAPS:
41546 return emitStoreBitFieldActivateIntAPS(I);
41547 case PT_Bool:
41548 return emitStoreBitFieldActivateBool(I);
41549 case PT_FixedPoint:
41550 return emitStoreBitFieldActivateFixedPoint(I);
41551 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
41552 }
41553 llvm_unreachable("invalid enum value");
41554}
41555#endif
41556#ifdef GET_LINK_IMPL
41557bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
41558 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
41559}
41560bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
41561 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
41562}
41563bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
41564 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
41565}
41566bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
41567 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
41568}
41569bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
41570 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
41571}
41572bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
41573 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
41574}
41575bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
41576 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
41577}
41578bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
41579 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
41580}
41581bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
41582 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
41583}
41584bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
41585 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
41586}
41587bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
41588 return emitOp<>(OP_StoreBitFieldActivateBool, L);
41589}
41590bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
41591 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
41592}
41593#endif
41594#ifdef GET_EVAL_IMPL
41595bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
41596 if (!isActive()) return true;
41597 CurrentSource = L;
41598 return StoreBitFieldActivate<PT_Sint8>(S, OpPC);
41599}
41600bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
41601 if (!isActive()) return true;
41602 CurrentSource = L;
41603 return StoreBitFieldActivate<PT_Uint8>(S, OpPC);
41604}
41605bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
41606 if (!isActive()) return true;
41607 CurrentSource = L;
41608 return StoreBitFieldActivate<PT_Sint16>(S, OpPC);
41609}
41610bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
41611 if (!isActive()) return true;
41612 CurrentSource = L;
41613 return StoreBitFieldActivate<PT_Uint16>(S, OpPC);
41614}
41615bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
41616 if (!isActive()) return true;
41617 CurrentSource = L;
41618 return StoreBitFieldActivate<PT_Sint32>(S, OpPC);
41619}
41620bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
41621 if (!isActive()) return true;
41622 CurrentSource = L;
41623 return StoreBitFieldActivate<PT_Uint32>(S, OpPC);
41624}
41625bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
41626 if (!isActive()) return true;
41627 CurrentSource = L;
41628 return StoreBitFieldActivate<PT_Sint64>(S, OpPC);
41629}
41630bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
41631 if (!isActive()) return true;
41632 CurrentSource = L;
41633 return StoreBitFieldActivate<PT_Uint64>(S, OpPC);
41634}
41635bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
41636 if (!isActive()) return true;
41637 CurrentSource = L;
41638 return StoreBitFieldActivate<PT_IntAP>(S, OpPC);
41639}
41640bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
41641 if (!isActive()) return true;
41642 CurrentSource = L;
41643 return StoreBitFieldActivate<PT_IntAPS>(S, OpPC);
41644}
41645bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
41646 if (!isActive()) return true;
41647 CurrentSource = L;
41648 return StoreBitFieldActivate<PT_Bool>(S, OpPC);
41649}
41650bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
41651 if (!isActive()) return true;
41652 CurrentSource = L;
41653 return StoreBitFieldActivate<PT_FixedPoint>(S, OpPC);
41654}
41655#endif
41656#ifdef GET_OPCODE_NAMES
41657OP_StoreBitFieldActivatePopSint8,
41658OP_StoreBitFieldActivatePopUint8,
41659OP_StoreBitFieldActivatePopSint16,
41660OP_StoreBitFieldActivatePopUint16,
41661OP_StoreBitFieldActivatePopSint32,
41662OP_StoreBitFieldActivatePopUint32,
41663OP_StoreBitFieldActivatePopSint64,
41664OP_StoreBitFieldActivatePopUint64,
41665OP_StoreBitFieldActivatePopIntAP,
41666OP_StoreBitFieldActivatePopIntAPS,
41667OP_StoreBitFieldActivatePopBool,
41668OP_StoreBitFieldActivatePopFixedPoint,
41669#endif
41670#ifdef GET_INTERP
41671case OP_StoreBitFieldActivatePopSint8: {
41672 if (!StoreBitFieldActivatePop<PT_Sint8>(S, OpPC))
41673 return false;
41674 continue;
41675}
41676case OP_StoreBitFieldActivatePopUint8: {
41677 if (!StoreBitFieldActivatePop<PT_Uint8>(S, OpPC))
41678 return false;
41679 continue;
41680}
41681case OP_StoreBitFieldActivatePopSint16: {
41682 if (!StoreBitFieldActivatePop<PT_Sint16>(S, OpPC))
41683 return false;
41684 continue;
41685}
41686case OP_StoreBitFieldActivatePopUint16: {
41687 if (!StoreBitFieldActivatePop<PT_Uint16>(S, OpPC))
41688 return false;
41689 continue;
41690}
41691case OP_StoreBitFieldActivatePopSint32: {
41692 if (!StoreBitFieldActivatePop<PT_Sint32>(S, OpPC))
41693 return false;
41694 continue;
41695}
41696case OP_StoreBitFieldActivatePopUint32: {
41697 if (!StoreBitFieldActivatePop<PT_Uint32>(S, OpPC))
41698 return false;
41699 continue;
41700}
41701case OP_StoreBitFieldActivatePopSint64: {
41702 if (!StoreBitFieldActivatePop<PT_Sint64>(S, OpPC))
41703 return false;
41704 continue;
41705}
41706case OP_StoreBitFieldActivatePopUint64: {
41707 if (!StoreBitFieldActivatePop<PT_Uint64>(S, OpPC))
41708 return false;
41709 continue;
41710}
41711case OP_StoreBitFieldActivatePopIntAP: {
41712 if (!StoreBitFieldActivatePop<PT_IntAP>(S, OpPC))
41713 return false;
41714 continue;
41715}
41716case OP_StoreBitFieldActivatePopIntAPS: {
41717 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC))
41718 return false;
41719 continue;
41720}
41721case OP_StoreBitFieldActivatePopBool: {
41722 if (!StoreBitFieldActivatePop<PT_Bool>(S, OpPC))
41723 return false;
41724 continue;
41725}
41726case OP_StoreBitFieldActivatePopFixedPoint: {
41727 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC))
41728 return false;
41729 continue;
41730}
41731#endif
41732#ifdef GET_DISASM
41733case OP_StoreBitFieldActivatePopSint8:
41734 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
41735 break;
41736case OP_StoreBitFieldActivatePopUint8:
41737 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
41738 break;
41739case OP_StoreBitFieldActivatePopSint16:
41740 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
41741 break;
41742case OP_StoreBitFieldActivatePopUint16:
41743 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
41744 break;
41745case OP_StoreBitFieldActivatePopSint32:
41746 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
41747 break;
41748case OP_StoreBitFieldActivatePopUint32:
41749 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
41750 break;
41751case OP_StoreBitFieldActivatePopSint64:
41752 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
41753 break;
41754case OP_StoreBitFieldActivatePopUint64:
41755 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
41756 break;
41757case OP_StoreBitFieldActivatePopIntAP:
41758 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
41759 break;
41760case OP_StoreBitFieldActivatePopIntAPS:
41761 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
41762 break;
41763case OP_StoreBitFieldActivatePopBool:
41764 Text.Op = PrintName("StoreBitFieldActivatePopBool");
41765 break;
41766case OP_StoreBitFieldActivatePopFixedPoint:
41767 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
41768 break;
41769#endif
41770#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41771bool emitStoreBitFieldActivatePopSint8(SourceInfo);
41772bool emitStoreBitFieldActivatePopUint8(SourceInfo);
41773bool emitStoreBitFieldActivatePopSint16(SourceInfo);
41774bool emitStoreBitFieldActivatePopUint16(SourceInfo);
41775bool emitStoreBitFieldActivatePopSint32(SourceInfo);
41776bool emitStoreBitFieldActivatePopUint32(SourceInfo);
41777bool emitStoreBitFieldActivatePopSint64(SourceInfo);
41778bool emitStoreBitFieldActivatePopUint64(SourceInfo);
41779bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
41780bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
41781bool emitStoreBitFieldActivatePopBool(SourceInfo);
41782bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
41783#endif
41784#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41785[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
41786#endif
41787#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41788bool
41789#if defined(GET_EVAL_IMPL)
41790EvalEmitter
41791#else
41792ByteCodeEmitter
41793#endif
41794::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
41795 switch (T0) {
41796 case PT_Sint8:
41797 return emitStoreBitFieldActivatePopSint8(I);
41798 case PT_Uint8:
41799 return emitStoreBitFieldActivatePopUint8(I);
41800 case PT_Sint16:
41801 return emitStoreBitFieldActivatePopSint16(I);
41802 case PT_Uint16:
41803 return emitStoreBitFieldActivatePopUint16(I);
41804 case PT_Sint32:
41805 return emitStoreBitFieldActivatePopSint32(I);
41806 case PT_Uint32:
41807 return emitStoreBitFieldActivatePopUint32(I);
41808 case PT_Sint64:
41809 return emitStoreBitFieldActivatePopSint64(I);
41810 case PT_Uint64:
41811 return emitStoreBitFieldActivatePopUint64(I);
41812 case PT_IntAP:
41813 return emitStoreBitFieldActivatePopIntAP(I);
41814 case PT_IntAPS:
41815 return emitStoreBitFieldActivatePopIntAPS(I);
41816 case PT_Bool:
41817 return emitStoreBitFieldActivatePopBool(I);
41818 case PT_FixedPoint:
41819 return emitStoreBitFieldActivatePopFixedPoint(I);
41820 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
41821 }
41822 llvm_unreachable("invalid enum value");
41823}
41824#endif
41825#ifdef GET_LINK_IMPL
41826bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
41827 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
41828}
41829bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
41830 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
41831}
41832bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
41833 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
41834}
41835bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
41836 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
41837}
41838bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
41839 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
41840}
41841bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
41842 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
41843}
41844bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
41845 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
41846}
41847bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
41848 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
41849}
41850bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
41851 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
41852}
41853bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
41854 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
41855}
41856bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
41857 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
41858}
41859bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
41860 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
41861}
41862#endif
41863#ifdef GET_EVAL_IMPL
41864bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
41865 if (!isActive()) return true;
41866 CurrentSource = L;
41867 return StoreBitFieldActivatePop<PT_Sint8>(S, OpPC);
41868}
41869bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
41870 if (!isActive()) return true;
41871 CurrentSource = L;
41872 return StoreBitFieldActivatePop<PT_Uint8>(S, OpPC);
41873}
41874bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
41875 if (!isActive()) return true;
41876 CurrentSource = L;
41877 return StoreBitFieldActivatePop<PT_Sint16>(S, OpPC);
41878}
41879bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
41880 if (!isActive()) return true;
41881 CurrentSource = L;
41882 return StoreBitFieldActivatePop<PT_Uint16>(S, OpPC);
41883}
41884bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
41885 if (!isActive()) return true;
41886 CurrentSource = L;
41887 return StoreBitFieldActivatePop<PT_Sint32>(S, OpPC);
41888}
41889bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
41890 if (!isActive()) return true;
41891 CurrentSource = L;
41892 return StoreBitFieldActivatePop<PT_Uint32>(S, OpPC);
41893}
41894bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
41895 if (!isActive()) return true;
41896 CurrentSource = L;
41897 return StoreBitFieldActivatePop<PT_Sint64>(S, OpPC);
41898}
41899bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
41900 if (!isActive()) return true;
41901 CurrentSource = L;
41902 return StoreBitFieldActivatePop<PT_Uint64>(S, OpPC);
41903}
41904bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
41905 if (!isActive()) return true;
41906 CurrentSource = L;
41907 return StoreBitFieldActivatePop<PT_IntAP>(S, OpPC);
41908}
41909bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
41910 if (!isActive()) return true;
41911 CurrentSource = L;
41912 return StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC);
41913}
41914bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
41915 if (!isActive()) return true;
41916 CurrentSource = L;
41917 return StoreBitFieldActivatePop<PT_Bool>(S, OpPC);
41918}
41919bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
41920 if (!isActive()) return true;
41921 CurrentSource = L;
41922 return StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC);
41923}
41924#endif
41925#ifdef GET_OPCODE_NAMES
41926OP_StoreBitFieldPopSint8,
41927OP_StoreBitFieldPopUint8,
41928OP_StoreBitFieldPopSint16,
41929OP_StoreBitFieldPopUint16,
41930OP_StoreBitFieldPopSint32,
41931OP_StoreBitFieldPopUint32,
41932OP_StoreBitFieldPopSint64,
41933OP_StoreBitFieldPopUint64,
41934OP_StoreBitFieldPopIntAP,
41935OP_StoreBitFieldPopIntAPS,
41936OP_StoreBitFieldPopBool,
41937OP_StoreBitFieldPopFixedPoint,
41938#endif
41939#ifdef GET_INTERP
41940case OP_StoreBitFieldPopSint8: {
41941 if (!StoreBitFieldPop<PT_Sint8>(S, OpPC))
41942 return false;
41943 continue;
41944}
41945case OP_StoreBitFieldPopUint8: {
41946 if (!StoreBitFieldPop<PT_Uint8>(S, OpPC))
41947 return false;
41948 continue;
41949}
41950case OP_StoreBitFieldPopSint16: {
41951 if (!StoreBitFieldPop<PT_Sint16>(S, OpPC))
41952 return false;
41953 continue;
41954}
41955case OP_StoreBitFieldPopUint16: {
41956 if (!StoreBitFieldPop<PT_Uint16>(S, OpPC))
41957 return false;
41958 continue;
41959}
41960case OP_StoreBitFieldPopSint32: {
41961 if (!StoreBitFieldPop<PT_Sint32>(S, OpPC))
41962 return false;
41963 continue;
41964}
41965case OP_StoreBitFieldPopUint32: {
41966 if (!StoreBitFieldPop<PT_Uint32>(S, OpPC))
41967 return false;
41968 continue;
41969}
41970case OP_StoreBitFieldPopSint64: {
41971 if (!StoreBitFieldPop<PT_Sint64>(S, OpPC))
41972 return false;
41973 continue;
41974}
41975case OP_StoreBitFieldPopUint64: {
41976 if (!StoreBitFieldPop<PT_Uint64>(S, OpPC))
41977 return false;
41978 continue;
41979}
41980case OP_StoreBitFieldPopIntAP: {
41981 if (!StoreBitFieldPop<PT_IntAP>(S, OpPC))
41982 return false;
41983 continue;
41984}
41985case OP_StoreBitFieldPopIntAPS: {
41986 if (!StoreBitFieldPop<PT_IntAPS>(S, OpPC))
41987 return false;
41988 continue;
41989}
41990case OP_StoreBitFieldPopBool: {
41991 if (!StoreBitFieldPop<PT_Bool>(S, OpPC))
41992 return false;
41993 continue;
41994}
41995case OP_StoreBitFieldPopFixedPoint: {
41996 if (!StoreBitFieldPop<PT_FixedPoint>(S, OpPC))
41997 return false;
41998 continue;
41999}
42000#endif
42001#ifdef GET_DISASM
42002case OP_StoreBitFieldPopSint8:
42003 Text.Op = PrintName("StoreBitFieldPopSint8");
42004 break;
42005case OP_StoreBitFieldPopUint8:
42006 Text.Op = PrintName("StoreBitFieldPopUint8");
42007 break;
42008case OP_StoreBitFieldPopSint16:
42009 Text.Op = PrintName("StoreBitFieldPopSint16");
42010 break;
42011case OP_StoreBitFieldPopUint16:
42012 Text.Op = PrintName("StoreBitFieldPopUint16");
42013 break;
42014case OP_StoreBitFieldPopSint32:
42015 Text.Op = PrintName("StoreBitFieldPopSint32");
42016 break;
42017case OP_StoreBitFieldPopUint32:
42018 Text.Op = PrintName("StoreBitFieldPopUint32");
42019 break;
42020case OP_StoreBitFieldPopSint64:
42021 Text.Op = PrintName("StoreBitFieldPopSint64");
42022 break;
42023case OP_StoreBitFieldPopUint64:
42024 Text.Op = PrintName("StoreBitFieldPopUint64");
42025 break;
42026case OP_StoreBitFieldPopIntAP:
42027 Text.Op = PrintName("StoreBitFieldPopIntAP");
42028 break;
42029case OP_StoreBitFieldPopIntAPS:
42030 Text.Op = PrintName("StoreBitFieldPopIntAPS");
42031 break;
42032case OP_StoreBitFieldPopBool:
42033 Text.Op = PrintName("StoreBitFieldPopBool");
42034 break;
42035case OP_StoreBitFieldPopFixedPoint:
42036 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
42037 break;
42038#endif
42039#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42040bool emitStoreBitFieldPopSint8(SourceInfo);
42041bool emitStoreBitFieldPopUint8(SourceInfo);
42042bool emitStoreBitFieldPopSint16(SourceInfo);
42043bool emitStoreBitFieldPopUint16(SourceInfo);
42044bool emitStoreBitFieldPopSint32(SourceInfo);
42045bool emitStoreBitFieldPopUint32(SourceInfo);
42046bool emitStoreBitFieldPopSint64(SourceInfo);
42047bool emitStoreBitFieldPopUint64(SourceInfo);
42048bool emitStoreBitFieldPopIntAP(SourceInfo);
42049bool emitStoreBitFieldPopIntAPS(SourceInfo);
42050bool emitStoreBitFieldPopBool(SourceInfo);
42051bool emitStoreBitFieldPopFixedPoint(SourceInfo);
42052#endif
42053#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42054[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
42055#endif
42056#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42057bool
42058#if defined(GET_EVAL_IMPL)
42059EvalEmitter
42060#else
42061ByteCodeEmitter
42062#endif
42063::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
42064 switch (T0) {
42065 case PT_Sint8:
42066 return emitStoreBitFieldPopSint8(I);
42067 case PT_Uint8:
42068 return emitStoreBitFieldPopUint8(I);
42069 case PT_Sint16:
42070 return emitStoreBitFieldPopSint16(I);
42071 case PT_Uint16:
42072 return emitStoreBitFieldPopUint16(I);
42073 case PT_Sint32:
42074 return emitStoreBitFieldPopSint32(I);
42075 case PT_Uint32:
42076 return emitStoreBitFieldPopUint32(I);
42077 case PT_Sint64:
42078 return emitStoreBitFieldPopSint64(I);
42079 case PT_Uint64:
42080 return emitStoreBitFieldPopUint64(I);
42081 case PT_IntAP:
42082 return emitStoreBitFieldPopIntAP(I);
42083 case PT_IntAPS:
42084 return emitStoreBitFieldPopIntAPS(I);
42085 case PT_Bool:
42086 return emitStoreBitFieldPopBool(I);
42087 case PT_FixedPoint:
42088 return emitStoreBitFieldPopFixedPoint(I);
42089 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
42090 }
42091 llvm_unreachable("invalid enum value");
42092}
42093#endif
42094#ifdef GET_LINK_IMPL
42095bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
42096 return emitOp<>(OP_StoreBitFieldPopSint8, L);
42097}
42098bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
42099 return emitOp<>(OP_StoreBitFieldPopUint8, L);
42100}
42101bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
42102 return emitOp<>(OP_StoreBitFieldPopSint16, L);
42103}
42104bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
42105 return emitOp<>(OP_StoreBitFieldPopUint16, L);
42106}
42107bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
42108 return emitOp<>(OP_StoreBitFieldPopSint32, L);
42109}
42110bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
42111 return emitOp<>(OP_StoreBitFieldPopUint32, L);
42112}
42113bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
42114 return emitOp<>(OP_StoreBitFieldPopSint64, L);
42115}
42116bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
42117 return emitOp<>(OP_StoreBitFieldPopUint64, L);
42118}
42119bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
42120 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
42121}
42122bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
42123 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
42124}
42125bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
42126 return emitOp<>(OP_StoreBitFieldPopBool, L);
42127}
42128bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
42129 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
42130}
42131#endif
42132#ifdef GET_EVAL_IMPL
42133bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
42134 if (!isActive()) return true;
42135 CurrentSource = L;
42136 return StoreBitFieldPop<PT_Sint8>(S, OpPC);
42137}
42138bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
42139 if (!isActive()) return true;
42140 CurrentSource = L;
42141 return StoreBitFieldPop<PT_Uint8>(S, OpPC);
42142}
42143bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
42144 if (!isActive()) return true;
42145 CurrentSource = L;
42146 return StoreBitFieldPop<PT_Sint16>(S, OpPC);
42147}
42148bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
42149 if (!isActive()) return true;
42150 CurrentSource = L;
42151 return StoreBitFieldPop<PT_Uint16>(S, OpPC);
42152}
42153bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
42154 if (!isActive()) return true;
42155 CurrentSource = L;
42156 return StoreBitFieldPop<PT_Sint32>(S, OpPC);
42157}
42158bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
42159 if (!isActive()) return true;
42160 CurrentSource = L;
42161 return StoreBitFieldPop<PT_Uint32>(S, OpPC);
42162}
42163bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
42164 if (!isActive()) return true;
42165 CurrentSource = L;
42166 return StoreBitFieldPop<PT_Sint64>(S, OpPC);
42167}
42168bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
42169 if (!isActive()) return true;
42170 CurrentSource = L;
42171 return StoreBitFieldPop<PT_Uint64>(S, OpPC);
42172}
42173bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
42174 if (!isActive()) return true;
42175 CurrentSource = L;
42176 return StoreBitFieldPop<PT_IntAP>(S, OpPC);
42177}
42178bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
42179 if (!isActive()) return true;
42180 CurrentSource = L;
42181 return StoreBitFieldPop<PT_IntAPS>(S, OpPC);
42182}
42183bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
42184 if (!isActive()) return true;
42185 CurrentSource = L;
42186 return StoreBitFieldPop<PT_Bool>(S, OpPC);
42187}
42188bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
42189 if (!isActive()) return true;
42190 CurrentSource = L;
42191 return StoreBitFieldPop<PT_FixedPoint>(S, OpPC);
42192}
42193#endif
42194#ifdef GET_OPCODE_NAMES
42195OP_StorePopSint8,
42196OP_StorePopUint8,
42197OP_StorePopSint16,
42198OP_StorePopUint16,
42199OP_StorePopSint32,
42200OP_StorePopUint32,
42201OP_StorePopSint64,
42202OP_StorePopUint64,
42203OP_StorePopIntAP,
42204OP_StorePopIntAPS,
42205OP_StorePopBool,
42206OP_StorePopFixedPoint,
42207OP_StorePopPtr,
42208OP_StorePopMemberPtr,
42209OP_StorePopFloat,
42210#endif
42211#ifdef GET_INTERP
42212case OP_StorePopSint8: {
42213 if (!StorePop<PT_Sint8>(S, OpPC))
42214 return false;
42215 continue;
42216}
42217case OP_StorePopUint8: {
42218 if (!StorePop<PT_Uint8>(S, OpPC))
42219 return false;
42220 continue;
42221}
42222case OP_StorePopSint16: {
42223 if (!StorePop<PT_Sint16>(S, OpPC))
42224 return false;
42225 continue;
42226}
42227case OP_StorePopUint16: {
42228 if (!StorePop<PT_Uint16>(S, OpPC))
42229 return false;
42230 continue;
42231}
42232case OP_StorePopSint32: {
42233 if (!StorePop<PT_Sint32>(S, OpPC))
42234 return false;
42235 continue;
42236}
42237case OP_StorePopUint32: {
42238 if (!StorePop<PT_Uint32>(S, OpPC))
42239 return false;
42240 continue;
42241}
42242case OP_StorePopSint64: {
42243 if (!StorePop<PT_Sint64>(S, OpPC))
42244 return false;
42245 continue;
42246}
42247case OP_StorePopUint64: {
42248 if (!StorePop<PT_Uint64>(S, OpPC))
42249 return false;
42250 continue;
42251}
42252case OP_StorePopIntAP: {
42253 if (!StorePop<PT_IntAP>(S, OpPC))
42254 return false;
42255 continue;
42256}
42257case OP_StorePopIntAPS: {
42258 if (!StorePop<PT_IntAPS>(S, OpPC))
42259 return false;
42260 continue;
42261}
42262case OP_StorePopBool: {
42263 if (!StorePop<PT_Bool>(S, OpPC))
42264 return false;
42265 continue;
42266}
42267case OP_StorePopFixedPoint: {
42268 if (!StorePop<PT_FixedPoint>(S, OpPC))
42269 return false;
42270 continue;
42271}
42272case OP_StorePopPtr: {
42273 if (!StorePop<PT_Ptr>(S, OpPC))
42274 return false;
42275 continue;
42276}
42277case OP_StorePopMemberPtr: {
42278 if (!StorePop<PT_MemberPtr>(S, OpPC))
42279 return false;
42280 continue;
42281}
42282case OP_StorePopFloat: {
42283 if (!StorePop<PT_Float>(S, OpPC))
42284 return false;
42285 continue;
42286}
42287#endif
42288#ifdef GET_DISASM
42289case OP_StorePopSint8:
42290 Text.Op = PrintName("StorePopSint8");
42291 break;
42292case OP_StorePopUint8:
42293 Text.Op = PrintName("StorePopUint8");
42294 break;
42295case OP_StorePopSint16:
42296 Text.Op = PrintName("StorePopSint16");
42297 break;
42298case OP_StorePopUint16:
42299 Text.Op = PrintName("StorePopUint16");
42300 break;
42301case OP_StorePopSint32:
42302 Text.Op = PrintName("StorePopSint32");
42303 break;
42304case OP_StorePopUint32:
42305 Text.Op = PrintName("StorePopUint32");
42306 break;
42307case OP_StorePopSint64:
42308 Text.Op = PrintName("StorePopSint64");
42309 break;
42310case OP_StorePopUint64:
42311 Text.Op = PrintName("StorePopUint64");
42312 break;
42313case OP_StorePopIntAP:
42314 Text.Op = PrintName("StorePopIntAP");
42315 break;
42316case OP_StorePopIntAPS:
42317 Text.Op = PrintName("StorePopIntAPS");
42318 break;
42319case OP_StorePopBool:
42320 Text.Op = PrintName("StorePopBool");
42321 break;
42322case OP_StorePopFixedPoint:
42323 Text.Op = PrintName("StorePopFixedPoint");
42324 break;
42325case OP_StorePopPtr:
42326 Text.Op = PrintName("StorePopPtr");
42327 break;
42328case OP_StorePopMemberPtr:
42329 Text.Op = PrintName("StorePopMemberPtr");
42330 break;
42331case OP_StorePopFloat:
42332 Text.Op = PrintName("StorePopFloat");
42333 break;
42334#endif
42335#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42336bool emitStorePopSint8(SourceInfo);
42337bool emitStorePopUint8(SourceInfo);
42338bool emitStorePopSint16(SourceInfo);
42339bool emitStorePopUint16(SourceInfo);
42340bool emitStorePopSint32(SourceInfo);
42341bool emitStorePopUint32(SourceInfo);
42342bool emitStorePopSint64(SourceInfo);
42343bool emitStorePopUint64(SourceInfo);
42344bool emitStorePopIntAP(SourceInfo);
42345bool emitStorePopIntAPS(SourceInfo);
42346bool emitStorePopBool(SourceInfo);
42347bool emitStorePopFixedPoint(SourceInfo);
42348bool emitStorePopPtr(SourceInfo);
42349bool emitStorePopMemberPtr(SourceInfo);
42350bool emitStorePopFloat(SourceInfo);
42351#endif
42352#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42353[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
42354#endif
42355#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42356bool
42357#if defined(GET_EVAL_IMPL)
42358EvalEmitter
42359#else
42360ByteCodeEmitter
42361#endif
42362::emitStorePop(PrimType T0, SourceInfo I) {
42363 switch (T0) {
42364 case PT_Sint8:
42365 return emitStorePopSint8(I);
42366 case PT_Uint8:
42367 return emitStorePopUint8(I);
42368 case PT_Sint16:
42369 return emitStorePopSint16(I);
42370 case PT_Uint16:
42371 return emitStorePopUint16(I);
42372 case PT_Sint32:
42373 return emitStorePopSint32(I);
42374 case PT_Uint32:
42375 return emitStorePopUint32(I);
42376 case PT_Sint64:
42377 return emitStorePopSint64(I);
42378 case PT_Uint64:
42379 return emitStorePopUint64(I);
42380 case PT_IntAP:
42381 return emitStorePopIntAP(I);
42382 case PT_IntAPS:
42383 return emitStorePopIntAPS(I);
42384 case PT_Bool:
42385 return emitStorePopBool(I);
42386 case PT_FixedPoint:
42387 return emitStorePopFixedPoint(I);
42388 case PT_Ptr:
42389 return emitStorePopPtr(I);
42390 case PT_MemberPtr:
42391 return emitStorePopMemberPtr(I);
42392 case PT_Float:
42393 return emitStorePopFloat(I);
42394 }
42395 llvm_unreachable("invalid enum value");
42396}
42397#endif
42398#ifdef GET_LINK_IMPL
42399bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
42400 return emitOp<>(OP_StorePopSint8, L);
42401}
42402bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
42403 return emitOp<>(OP_StorePopUint8, L);
42404}
42405bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
42406 return emitOp<>(OP_StorePopSint16, L);
42407}
42408bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
42409 return emitOp<>(OP_StorePopUint16, L);
42410}
42411bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
42412 return emitOp<>(OP_StorePopSint32, L);
42413}
42414bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
42415 return emitOp<>(OP_StorePopUint32, L);
42416}
42417bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
42418 return emitOp<>(OP_StorePopSint64, L);
42419}
42420bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
42421 return emitOp<>(OP_StorePopUint64, L);
42422}
42423bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
42424 return emitOp<>(OP_StorePopIntAP, L);
42425}
42426bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
42427 return emitOp<>(OP_StorePopIntAPS, L);
42428}
42429bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
42430 return emitOp<>(OP_StorePopBool, L);
42431}
42432bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
42433 return emitOp<>(OP_StorePopFixedPoint, L);
42434}
42435bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
42436 return emitOp<>(OP_StorePopPtr, L);
42437}
42438bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
42439 return emitOp<>(OP_StorePopMemberPtr, L);
42440}
42441bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
42442 return emitOp<>(OP_StorePopFloat, L);
42443}
42444#endif
42445#ifdef GET_EVAL_IMPL
42446bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
42447 if (!isActive()) return true;
42448 CurrentSource = L;
42449 return StorePop<PT_Sint8>(S, OpPC);
42450}
42451bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
42452 if (!isActive()) return true;
42453 CurrentSource = L;
42454 return StorePop<PT_Uint8>(S, OpPC);
42455}
42456bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
42457 if (!isActive()) return true;
42458 CurrentSource = L;
42459 return StorePop<PT_Sint16>(S, OpPC);
42460}
42461bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
42462 if (!isActive()) return true;
42463 CurrentSource = L;
42464 return StorePop<PT_Uint16>(S, OpPC);
42465}
42466bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
42467 if (!isActive()) return true;
42468 CurrentSource = L;
42469 return StorePop<PT_Sint32>(S, OpPC);
42470}
42471bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
42472 if (!isActive()) return true;
42473 CurrentSource = L;
42474 return StorePop<PT_Uint32>(S, OpPC);
42475}
42476bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
42477 if (!isActive()) return true;
42478 CurrentSource = L;
42479 return StorePop<PT_Sint64>(S, OpPC);
42480}
42481bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
42482 if (!isActive()) return true;
42483 CurrentSource = L;
42484 return StorePop<PT_Uint64>(S, OpPC);
42485}
42486bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
42487 if (!isActive()) return true;
42488 CurrentSource = L;
42489 return StorePop<PT_IntAP>(S, OpPC);
42490}
42491bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
42492 if (!isActive()) return true;
42493 CurrentSource = L;
42494 return StorePop<PT_IntAPS>(S, OpPC);
42495}
42496bool EvalEmitter::emitStorePopBool(SourceInfo L) {
42497 if (!isActive()) return true;
42498 CurrentSource = L;
42499 return StorePop<PT_Bool>(S, OpPC);
42500}
42501bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
42502 if (!isActive()) return true;
42503 CurrentSource = L;
42504 return StorePop<PT_FixedPoint>(S, OpPC);
42505}
42506bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
42507 if (!isActive()) return true;
42508 CurrentSource = L;
42509 return StorePop<PT_Ptr>(S, OpPC);
42510}
42511bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
42512 if (!isActive()) return true;
42513 CurrentSource = L;
42514 return StorePop<PT_MemberPtr>(S, OpPC);
42515}
42516bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
42517 if (!isActive()) return true;
42518 CurrentSource = L;
42519 return StorePop<PT_Float>(S, OpPC);
42520}
42521#endif
42522#ifdef GET_OPCODE_NAMES
42523OP_SubSint8,
42524OP_SubUint8,
42525OP_SubSint16,
42526OP_SubUint16,
42527OP_SubSint32,
42528OP_SubUint32,
42529OP_SubSint64,
42530OP_SubUint64,
42531OP_SubIntAP,
42532OP_SubIntAPS,
42533OP_SubBool,
42534OP_SubFixedPoint,
42535#endif
42536#ifdef GET_INTERP
42537case OP_SubSint8: {
42538 if (!Sub<PT_Sint8>(S, OpPC))
42539 return false;
42540 continue;
42541}
42542case OP_SubUint8: {
42543 if (!Sub<PT_Uint8>(S, OpPC))
42544 return false;
42545 continue;
42546}
42547case OP_SubSint16: {
42548 if (!Sub<PT_Sint16>(S, OpPC))
42549 return false;
42550 continue;
42551}
42552case OP_SubUint16: {
42553 if (!Sub<PT_Uint16>(S, OpPC))
42554 return false;
42555 continue;
42556}
42557case OP_SubSint32: {
42558 if (!Sub<PT_Sint32>(S, OpPC))
42559 return false;
42560 continue;
42561}
42562case OP_SubUint32: {
42563 if (!Sub<PT_Uint32>(S, OpPC))
42564 return false;
42565 continue;
42566}
42567case OP_SubSint64: {
42568 if (!Sub<PT_Sint64>(S, OpPC))
42569 return false;
42570 continue;
42571}
42572case OP_SubUint64: {
42573 if (!Sub<PT_Uint64>(S, OpPC))
42574 return false;
42575 continue;
42576}
42577case OP_SubIntAP: {
42578 if (!Sub<PT_IntAP>(S, OpPC))
42579 return false;
42580 continue;
42581}
42582case OP_SubIntAPS: {
42583 if (!Sub<PT_IntAPS>(S, OpPC))
42584 return false;
42585 continue;
42586}
42587case OP_SubBool: {
42588 if (!Sub<PT_Bool>(S, OpPC))
42589 return false;
42590 continue;
42591}
42592case OP_SubFixedPoint: {
42593 if (!Sub<PT_FixedPoint>(S, OpPC))
42594 return false;
42595 continue;
42596}
42597#endif
42598#ifdef GET_DISASM
42599case OP_SubSint8:
42600 Text.Op = PrintName("SubSint8");
42601 break;
42602case OP_SubUint8:
42603 Text.Op = PrintName("SubUint8");
42604 break;
42605case OP_SubSint16:
42606 Text.Op = PrintName("SubSint16");
42607 break;
42608case OP_SubUint16:
42609 Text.Op = PrintName("SubUint16");
42610 break;
42611case OP_SubSint32:
42612 Text.Op = PrintName("SubSint32");
42613 break;
42614case OP_SubUint32:
42615 Text.Op = PrintName("SubUint32");
42616 break;
42617case OP_SubSint64:
42618 Text.Op = PrintName("SubSint64");
42619 break;
42620case OP_SubUint64:
42621 Text.Op = PrintName("SubUint64");
42622 break;
42623case OP_SubIntAP:
42624 Text.Op = PrintName("SubIntAP");
42625 break;
42626case OP_SubIntAPS:
42627 Text.Op = PrintName("SubIntAPS");
42628 break;
42629case OP_SubBool:
42630 Text.Op = PrintName("SubBool");
42631 break;
42632case OP_SubFixedPoint:
42633 Text.Op = PrintName("SubFixedPoint");
42634 break;
42635#endif
42636#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42637bool emitSubSint8(SourceInfo);
42638bool emitSubUint8(SourceInfo);
42639bool emitSubSint16(SourceInfo);
42640bool emitSubUint16(SourceInfo);
42641bool emitSubSint32(SourceInfo);
42642bool emitSubUint32(SourceInfo);
42643bool emitSubSint64(SourceInfo);
42644bool emitSubUint64(SourceInfo);
42645bool emitSubIntAP(SourceInfo);
42646bool emitSubIntAPS(SourceInfo);
42647bool emitSubBool(SourceInfo);
42648bool emitSubFixedPoint(SourceInfo);
42649#endif
42650#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42651[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
42652#endif
42653#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42654bool
42655#if defined(GET_EVAL_IMPL)
42656EvalEmitter
42657#else
42658ByteCodeEmitter
42659#endif
42660::emitSub(PrimType T0, SourceInfo I) {
42661 switch (T0) {
42662 case PT_Sint8:
42663 return emitSubSint8(I);
42664 case PT_Uint8:
42665 return emitSubUint8(I);
42666 case PT_Sint16:
42667 return emitSubSint16(I);
42668 case PT_Uint16:
42669 return emitSubUint16(I);
42670 case PT_Sint32:
42671 return emitSubSint32(I);
42672 case PT_Uint32:
42673 return emitSubUint32(I);
42674 case PT_Sint64:
42675 return emitSubSint64(I);
42676 case PT_Uint64:
42677 return emitSubUint64(I);
42678 case PT_IntAP:
42679 return emitSubIntAP(I);
42680 case PT_IntAPS:
42681 return emitSubIntAPS(I);
42682 case PT_Bool:
42683 return emitSubBool(I);
42684 case PT_FixedPoint:
42685 return emitSubFixedPoint(I);
42686 default: llvm_unreachable("invalid type: emitSub");
42687 }
42688 llvm_unreachable("invalid enum value");
42689}
42690#endif
42691#ifdef GET_LINK_IMPL
42692bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
42693 return emitOp<>(OP_SubSint8, L);
42694}
42695bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
42696 return emitOp<>(OP_SubUint8, L);
42697}
42698bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
42699 return emitOp<>(OP_SubSint16, L);
42700}
42701bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
42702 return emitOp<>(OP_SubUint16, L);
42703}
42704bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
42705 return emitOp<>(OP_SubSint32, L);
42706}
42707bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
42708 return emitOp<>(OP_SubUint32, L);
42709}
42710bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
42711 return emitOp<>(OP_SubSint64, L);
42712}
42713bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
42714 return emitOp<>(OP_SubUint64, L);
42715}
42716bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
42717 return emitOp<>(OP_SubIntAP, L);
42718}
42719bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
42720 return emitOp<>(OP_SubIntAPS, L);
42721}
42722bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
42723 return emitOp<>(OP_SubBool, L);
42724}
42725bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
42726 return emitOp<>(OP_SubFixedPoint, L);
42727}
42728#endif
42729#ifdef GET_EVAL_IMPL
42730bool EvalEmitter::emitSubSint8(SourceInfo L) {
42731 if (!isActive()) return true;
42732 CurrentSource = L;
42733 return Sub<PT_Sint8>(S, OpPC);
42734}
42735bool EvalEmitter::emitSubUint8(SourceInfo L) {
42736 if (!isActive()) return true;
42737 CurrentSource = L;
42738 return Sub<PT_Uint8>(S, OpPC);
42739}
42740bool EvalEmitter::emitSubSint16(SourceInfo L) {
42741 if (!isActive()) return true;
42742 CurrentSource = L;
42743 return Sub<PT_Sint16>(S, OpPC);
42744}
42745bool EvalEmitter::emitSubUint16(SourceInfo L) {
42746 if (!isActive()) return true;
42747 CurrentSource = L;
42748 return Sub<PT_Uint16>(S, OpPC);
42749}
42750bool EvalEmitter::emitSubSint32(SourceInfo L) {
42751 if (!isActive()) return true;
42752 CurrentSource = L;
42753 return Sub<PT_Sint32>(S, OpPC);
42754}
42755bool EvalEmitter::emitSubUint32(SourceInfo L) {
42756 if (!isActive()) return true;
42757 CurrentSource = L;
42758 return Sub<PT_Uint32>(S, OpPC);
42759}
42760bool EvalEmitter::emitSubSint64(SourceInfo L) {
42761 if (!isActive()) return true;
42762 CurrentSource = L;
42763 return Sub<PT_Sint64>(S, OpPC);
42764}
42765bool EvalEmitter::emitSubUint64(SourceInfo L) {
42766 if (!isActive()) return true;
42767 CurrentSource = L;
42768 return Sub<PT_Uint64>(S, OpPC);
42769}
42770bool EvalEmitter::emitSubIntAP(SourceInfo L) {
42771 if (!isActive()) return true;
42772 CurrentSource = L;
42773 return Sub<PT_IntAP>(S, OpPC);
42774}
42775bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
42776 if (!isActive()) return true;
42777 CurrentSource = L;
42778 return Sub<PT_IntAPS>(S, OpPC);
42779}
42780bool EvalEmitter::emitSubBool(SourceInfo L) {
42781 if (!isActive()) return true;
42782 CurrentSource = L;
42783 return Sub<PT_Bool>(S, OpPC);
42784}
42785bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
42786 if (!isActive()) return true;
42787 CurrentSource = L;
42788 return Sub<PT_FixedPoint>(S, OpPC);
42789}
42790#endif
42791#ifdef GET_OPCODE_NAMES
42792OP_SubOffsetSint8,
42793OP_SubOffsetUint8,
42794OP_SubOffsetSint16,
42795OP_SubOffsetUint16,
42796OP_SubOffsetSint32,
42797OP_SubOffsetUint32,
42798OP_SubOffsetSint64,
42799OP_SubOffsetUint64,
42800OP_SubOffsetIntAP,
42801OP_SubOffsetIntAPS,
42802OP_SubOffsetBool,
42803#endif
42804#ifdef GET_INTERP
42805case OP_SubOffsetSint8: {
42806 if (!SubOffset<PT_Sint8>(S, OpPC))
42807 return false;
42808 continue;
42809}
42810case OP_SubOffsetUint8: {
42811 if (!SubOffset<PT_Uint8>(S, OpPC))
42812 return false;
42813 continue;
42814}
42815case OP_SubOffsetSint16: {
42816 if (!SubOffset<PT_Sint16>(S, OpPC))
42817 return false;
42818 continue;
42819}
42820case OP_SubOffsetUint16: {
42821 if (!SubOffset<PT_Uint16>(S, OpPC))
42822 return false;
42823 continue;
42824}
42825case OP_SubOffsetSint32: {
42826 if (!SubOffset<PT_Sint32>(S, OpPC))
42827 return false;
42828 continue;
42829}
42830case OP_SubOffsetUint32: {
42831 if (!SubOffset<PT_Uint32>(S, OpPC))
42832 return false;
42833 continue;
42834}
42835case OP_SubOffsetSint64: {
42836 if (!SubOffset<PT_Sint64>(S, OpPC))
42837 return false;
42838 continue;
42839}
42840case OP_SubOffsetUint64: {
42841 if (!SubOffset<PT_Uint64>(S, OpPC))
42842 return false;
42843 continue;
42844}
42845case OP_SubOffsetIntAP: {
42846 if (!SubOffset<PT_IntAP>(S, OpPC))
42847 return false;
42848 continue;
42849}
42850case OP_SubOffsetIntAPS: {
42851 if (!SubOffset<PT_IntAPS>(S, OpPC))
42852 return false;
42853 continue;
42854}
42855case OP_SubOffsetBool: {
42856 if (!SubOffset<PT_Bool>(S, OpPC))
42857 return false;
42858 continue;
42859}
42860#endif
42861#ifdef GET_DISASM
42862case OP_SubOffsetSint8:
42863 Text.Op = PrintName("SubOffsetSint8");
42864 break;
42865case OP_SubOffsetUint8:
42866 Text.Op = PrintName("SubOffsetUint8");
42867 break;
42868case OP_SubOffsetSint16:
42869 Text.Op = PrintName("SubOffsetSint16");
42870 break;
42871case OP_SubOffsetUint16:
42872 Text.Op = PrintName("SubOffsetUint16");
42873 break;
42874case OP_SubOffsetSint32:
42875 Text.Op = PrintName("SubOffsetSint32");
42876 break;
42877case OP_SubOffsetUint32:
42878 Text.Op = PrintName("SubOffsetUint32");
42879 break;
42880case OP_SubOffsetSint64:
42881 Text.Op = PrintName("SubOffsetSint64");
42882 break;
42883case OP_SubOffsetUint64:
42884 Text.Op = PrintName("SubOffsetUint64");
42885 break;
42886case OP_SubOffsetIntAP:
42887 Text.Op = PrintName("SubOffsetIntAP");
42888 break;
42889case OP_SubOffsetIntAPS:
42890 Text.Op = PrintName("SubOffsetIntAPS");
42891 break;
42892case OP_SubOffsetBool:
42893 Text.Op = PrintName("SubOffsetBool");
42894 break;
42895#endif
42896#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42897bool emitSubOffsetSint8(SourceInfo);
42898bool emitSubOffsetUint8(SourceInfo);
42899bool emitSubOffsetSint16(SourceInfo);
42900bool emitSubOffsetUint16(SourceInfo);
42901bool emitSubOffsetSint32(SourceInfo);
42902bool emitSubOffsetUint32(SourceInfo);
42903bool emitSubOffsetSint64(SourceInfo);
42904bool emitSubOffsetUint64(SourceInfo);
42905bool emitSubOffsetIntAP(SourceInfo);
42906bool emitSubOffsetIntAPS(SourceInfo);
42907bool emitSubOffsetBool(SourceInfo);
42908#endif
42909#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42910[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
42911#endif
42912#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42913bool
42914#if defined(GET_EVAL_IMPL)
42915EvalEmitter
42916#else
42917ByteCodeEmitter
42918#endif
42919::emitSubOffset(PrimType T0, SourceInfo I) {
42920 switch (T0) {
42921 case PT_Sint8:
42922 return emitSubOffsetSint8(I);
42923 case PT_Uint8:
42924 return emitSubOffsetUint8(I);
42925 case PT_Sint16:
42926 return emitSubOffsetSint16(I);
42927 case PT_Uint16:
42928 return emitSubOffsetUint16(I);
42929 case PT_Sint32:
42930 return emitSubOffsetSint32(I);
42931 case PT_Uint32:
42932 return emitSubOffsetUint32(I);
42933 case PT_Sint64:
42934 return emitSubOffsetSint64(I);
42935 case PT_Uint64:
42936 return emitSubOffsetUint64(I);
42937 case PT_IntAP:
42938 return emitSubOffsetIntAP(I);
42939 case PT_IntAPS:
42940 return emitSubOffsetIntAPS(I);
42941 case PT_Bool:
42942 return emitSubOffsetBool(I);
42943 default: llvm_unreachable("invalid type: emitSubOffset");
42944 }
42945 llvm_unreachable("invalid enum value");
42946}
42947#endif
42948#ifdef GET_LINK_IMPL
42949bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
42950 return emitOp<>(OP_SubOffsetSint8, L);
42951}
42952bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
42953 return emitOp<>(OP_SubOffsetUint8, L);
42954}
42955bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
42956 return emitOp<>(OP_SubOffsetSint16, L);
42957}
42958bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
42959 return emitOp<>(OP_SubOffsetUint16, L);
42960}
42961bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
42962 return emitOp<>(OP_SubOffsetSint32, L);
42963}
42964bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
42965 return emitOp<>(OP_SubOffsetUint32, L);
42966}
42967bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
42968 return emitOp<>(OP_SubOffsetSint64, L);
42969}
42970bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
42971 return emitOp<>(OP_SubOffsetUint64, L);
42972}
42973bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
42974 return emitOp<>(OP_SubOffsetIntAP, L);
42975}
42976bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
42977 return emitOp<>(OP_SubOffsetIntAPS, L);
42978}
42979bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
42980 return emitOp<>(OP_SubOffsetBool, L);
42981}
42982#endif
42983#ifdef GET_EVAL_IMPL
42984bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
42985 if (!isActive()) return true;
42986 CurrentSource = L;
42987 return SubOffset<PT_Sint8>(S, OpPC);
42988}
42989bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
42990 if (!isActive()) return true;
42991 CurrentSource = L;
42992 return SubOffset<PT_Uint8>(S, OpPC);
42993}
42994bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
42995 if (!isActive()) return true;
42996 CurrentSource = L;
42997 return SubOffset<PT_Sint16>(S, OpPC);
42998}
42999bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
43000 if (!isActive()) return true;
43001 CurrentSource = L;
43002 return SubOffset<PT_Uint16>(S, OpPC);
43003}
43004bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
43005 if (!isActive()) return true;
43006 CurrentSource = L;
43007 return SubOffset<PT_Sint32>(S, OpPC);
43008}
43009bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
43010 if (!isActive()) return true;
43011 CurrentSource = L;
43012 return SubOffset<PT_Uint32>(S, OpPC);
43013}
43014bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
43015 if (!isActive()) return true;
43016 CurrentSource = L;
43017 return SubOffset<PT_Sint64>(S, OpPC);
43018}
43019bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
43020 if (!isActive()) return true;
43021 CurrentSource = L;
43022 return SubOffset<PT_Uint64>(S, OpPC);
43023}
43024bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
43025 if (!isActive()) return true;
43026 CurrentSource = L;
43027 return SubOffset<PT_IntAP>(S, OpPC);
43028}
43029bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
43030 if (!isActive()) return true;
43031 CurrentSource = L;
43032 return SubOffset<PT_IntAPS>(S, OpPC);
43033}
43034bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
43035 if (!isActive()) return true;
43036 CurrentSource = L;
43037 return SubOffset<PT_Bool>(S, OpPC);
43038}
43039#endif
43040#ifdef GET_OPCODE_NAMES
43041OP_SubPtrSint8,
43042OP_SubPtrUint8,
43043OP_SubPtrSint16,
43044OP_SubPtrUint16,
43045OP_SubPtrSint32,
43046OP_SubPtrUint32,
43047OP_SubPtrSint64,
43048OP_SubPtrUint64,
43049OP_SubPtrIntAP,
43050OP_SubPtrIntAPS,
43051#endif
43052#ifdef GET_INTERP
43053case OP_SubPtrSint8: {
43054 const auto V0 = ReadArg<bool>(S, PC);
43055 if (!SubPtr<PT_Sint8>(S, OpPC, V0))
43056 return false;
43057 continue;
43058}
43059case OP_SubPtrUint8: {
43060 const auto V0 = ReadArg<bool>(S, PC);
43061 if (!SubPtr<PT_Uint8>(S, OpPC, V0))
43062 return false;
43063 continue;
43064}
43065case OP_SubPtrSint16: {
43066 const auto V0 = ReadArg<bool>(S, PC);
43067 if (!SubPtr<PT_Sint16>(S, OpPC, V0))
43068 return false;
43069 continue;
43070}
43071case OP_SubPtrUint16: {
43072 const auto V0 = ReadArg<bool>(S, PC);
43073 if (!SubPtr<PT_Uint16>(S, OpPC, V0))
43074 return false;
43075 continue;
43076}
43077case OP_SubPtrSint32: {
43078 const auto V0 = ReadArg<bool>(S, PC);
43079 if (!SubPtr<PT_Sint32>(S, OpPC, V0))
43080 return false;
43081 continue;
43082}
43083case OP_SubPtrUint32: {
43084 const auto V0 = ReadArg<bool>(S, PC);
43085 if (!SubPtr<PT_Uint32>(S, OpPC, V0))
43086 return false;
43087 continue;
43088}
43089case OP_SubPtrSint64: {
43090 const auto V0 = ReadArg<bool>(S, PC);
43091 if (!SubPtr<PT_Sint64>(S, OpPC, V0))
43092 return false;
43093 continue;
43094}
43095case OP_SubPtrUint64: {
43096 const auto V0 = ReadArg<bool>(S, PC);
43097 if (!SubPtr<PT_Uint64>(S, OpPC, V0))
43098 return false;
43099 continue;
43100}
43101case OP_SubPtrIntAP: {
43102 const auto V0 = ReadArg<bool>(S, PC);
43103 if (!SubPtr<PT_IntAP>(S, OpPC, V0))
43104 return false;
43105 continue;
43106}
43107case OP_SubPtrIntAPS: {
43108 const auto V0 = ReadArg<bool>(S, PC);
43109 if (!SubPtr<PT_IntAPS>(S, OpPC, V0))
43110 return false;
43111 continue;
43112}
43113#endif
43114#ifdef GET_DISASM
43115case OP_SubPtrSint8:
43116 Text.Op = PrintName("SubPtrSint8");
43117 Text.Args.push_back(printArg<bool>(P, PC));
43118 break;
43119case OP_SubPtrUint8:
43120 Text.Op = PrintName("SubPtrUint8");
43121 Text.Args.push_back(printArg<bool>(P, PC));
43122 break;
43123case OP_SubPtrSint16:
43124 Text.Op = PrintName("SubPtrSint16");
43125 Text.Args.push_back(printArg<bool>(P, PC));
43126 break;
43127case OP_SubPtrUint16:
43128 Text.Op = PrintName("SubPtrUint16");
43129 Text.Args.push_back(printArg<bool>(P, PC));
43130 break;
43131case OP_SubPtrSint32:
43132 Text.Op = PrintName("SubPtrSint32");
43133 Text.Args.push_back(printArg<bool>(P, PC));
43134 break;
43135case OP_SubPtrUint32:
43136 Text.Op = PrintName("SubPtrUint32");
43137 Text.Args.push_back(printArg<bool>(P, PC));
43138 break;
43139case OP_SubPtrSint64:
43140 Text.Op = PrintName("SubPtrSint64");
43141 Text.Args.push_back(printArg<bool>(P, PC));
43142 break;
43143case OP_SubPtrUint64:
43144 Text.Op = PrintName("SubPtrUint64");
43145 Text.Args.push_back(printArg<bool>(P, PC));
43146 break;
43147case OP_SubPtrIntAP:
43148 Text.Op = PrintName("SubPtrIntAP");
43149 Text.Args.push_back(printArg<bool>(P, PC));
43150 break;
43151case OP_SubPtrIntAPS:
43152 Text.Op = PrintName("SubPtrIntAPS");
43153 Text.Args.push_back(printArg<bool>(P, PC));
43154 break;
43155#endif
43156#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43157bool emitSubPtrSint8( bool , SourceInfo);
43158bool emitSubPtrUint8( bool , SourceInfo);
43159bool emitSubPtrSint16( bool , SourceInfo);
43160bool emitSubPtrUint16( bool , SourceInfo);
43161bool emitSubPtrSint32( bool , SourceInfo);
43162bool emitSubPtrUint32( bool , SourceInfo);
43163bool emitSubPtrSint64( bool , SourceInfo);
43164bool emitSubPtrUint64( bool , SourceInfo);
43165bool emitSubPtrIntAP( bool , SourceInfo);
43166bool emitSubPtrIntAPS( bool , SourceInfo);
43167#endif
43168#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43169[[nodiscard]] bool emitSubPtr(PrimType, bool, SourceInfo I);
43170#endif
43171#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43172bool
43173#if defined(GET_EVAL_IMPL)
43174EvalEmitter
43175#else
43176ByteCodeEmitter
43177#endif
43178::emitSubPtr(PrimType T0, bool A0, SourceInfo I) {
43179 switch (T0) {
43180 case PT_Sint8:
43181 return emitSubPtrSint8(A0, I);
43182 case PT_Uint8:
43183 return emitSubPtrUint8(A0, I);
43184 case PT_Sint16:
43185 return emitSubPtrSint16(A0, I);
43186 case PT_Uint16:
43187 return emitSubPtrUint16(A0, I);
43188 case PT_Sint32:
43189 return emitSubPtrSint32(A0, I);
43190 case PT_Uint32:
43191 return emitSubPtrUint32(A0, I);
43192 case PT_Sint64:
43193 return emitSubPtrSint64(A0, I);
43194 case PT_Uint64:
43195 return emitSubPtrUint64(A0, I);
43196 case PT_IntAP:
43197 return emitSubPtrIntAP(A0, I);
43198 case PT_IntAPS:
43199 return emitSubPtrIntAPS(A0, I);
43200 default: llvm_unreachable("invalid type: emitSubPtr");
43201 }
43202 llvm_unreachable("invalid enum value");
43203}
43204#endif
43205#ifdef GET_LINK_IMPL
43206bool ByteCodeEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
43207 return emitOp<bool>(OP_SubPtrSint8, A0, L);
43208}
43209bool ByteCodeEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
43210 return emitOp<bool>(OP_SubPtrUint8, A0, L);
43211}
43212bool ByteCodeEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
43213 return emitOp<bool>(OP_SubPtrSint16, A0, L);
43214}
43215bool ByteCodeEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
43216 return emitOp<bool>(OP_SubPtrUint16, A0, L);
43217}
43218bool ByteCodeEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
43219 return emitOp<bool>(OP_SubPtrSint32, A0, L);
43220}
43221bool ByteCodeEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
43222 return emitOp<bool>(OP_SubPtrUint32, A0, L);
43223}
43224bool ByteCodeEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
43225 return emitOp<bool>(OP_SubPtrSint64, A0, L);
43226}
43227bool ByteCodeEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
43228 return emitOp<bool>(OP_SubPtrUint64, A0, L);
43229}
43230bool ByteCodeEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
43231 return emitOp<bool>(OP_SubPtrIntAP, A0, L);
43232}
43233bool ByteCodeEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
43234 return emitOp<bool>(OP_SubPtrIntAPS, A0, L);
43235}
43236#endif
43237#ifdef GET_EVAL_IMPL
43238bool EvalEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
43239 if (!isActive()) return true;
43240 CurrentSource = L;
43241 return SubPtr<PT_Sint8>(S, OpPC, A0);
43242}
43243bool EvalEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
43244 if (!isActive()) return true;
43245 CurrentSource = L;
43246 return SubPtr<PT_Uint8>(S, OpPC, A0);
43247}
43248bool EvalEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
43249 if (!isActive()) return true;
43250 CurrentSource = L;
43251 return SubPtr<PT_Sint16>(S, OpPC, A0);
43252}
43253bool EvalEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
43254 if (!isActive()) return true;
43255 CurrentSource = L;
43256 return SubPtr<PT_Uint16>(S, OpPC, A0);
43257}
43258bool EvalEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
43259 if (!isActive()) return true;
43260 CurrentSource = L;
43261 return SubPtr<PT_Sint32>(S, OpPC, A0);
43262}
43263bool EvalEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
43264 if (!isActive()) return true;
43265 CurrentSource = L;
43266 return SubPtr<PT_Uint32>(S, OpPC, A0);
43267}
43268bool EvalEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
43269 if (!isActive()) return true;
43270 CurrentSource = L;
43271 return SubPtr<PT_Sint64>(S, OpPC, A0);
43272}
43273bool EvalEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
43274 if (!isActive()) return true;
43275 CurrentSource = L;
43276 return SubPtr<PT_Uint64>(S, OpPC, A0);
43277}
43278bool EvalEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
43279 if (!isActive()) return true;
43280 CurrentSource = L;
43281 return SubPtr<PT_IntAP>(S, OpPC, A0);
43282}
43283bool EvalEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
43284 if (!isActive()) return true;
43285 CurrentSource = L;
43286 return SubPtr<PT_IntAPS>(S, OpPC, A0);
43287}
43288#endif
43289#ifdef GET_OPCODE_NAMES
43290OP_Subf,
43291#endif
43292#ifdef GET_INTERP
43293case OP_Subf: {
43294 const auto V0 = ReadArg<uint32_t>(S, PC);
43295 if (!Subf(S, OpPC, V0))
43296 return false;
43297 continue;
43298}
43299#endif
43300#ifdef GET_DISASM
43301case OP_Subf:
43302 Text.Op = PrintName("Subf");
43303 Text.Args.push_back(printArg<uint32_t>(P, PC));
43304 break;
43305#endif
43306#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43307bool emitSubf( uint32_t , SourceInfo);
43308#endif
43309#ifdef GET_LINK_IMPL
43310bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
43311 return emitOp<uint32_t>(OP_Subf, A0, L);
43312}
43313#endif
43314#ifdef GET_EVAL_IMPL
43315bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
43316 if (!isActive()) return true;
43317 CurrentSource = L;
43318 return Subf(S, OpPC, A0);
43319}
43320#endif
43321#ifdef GET_OPCODE_NAMES
43322OP_This,
43323#endif
43324#ifdef GET_INTERP
43325case OP_This: {
43326 if (!This(S, OpPC))
43327 return false;
43328 continue;
43329}
43330#endif
43331#ifdef GET_DISASM
43332case OP_This:
43333 Text.Op = PrintName("This");
43334 break;
43335#endif
43336#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43337bool emitThis(SourceInfo);
43338#endif
43339#ifdef GET_LINK_IMPL
43340bool ByteCodeEmitter::emitThis(SourceInfo L) {
43341 return emitOp<>(OP_This, L);
43342}
43343#endif
43344#ifdef GET_EVAL_IMPL
43345bool EvalEmitter::emitThis(SourceInfo L) {
43346 if (!isActive()) return true;
43347 CurrentSource = L;
43348 return This(S, OpPC);
43349}
43350#endif
43351#ifdef GET_OPCODE_NAMES
43352OP_ToMemberPtr,
43353#endif
43354#ifdef GET_INTERP
43355case OP_ToMemberPtr: {
43356 if (!ToMemberPtr(S, OpPC))
43357 return false;
43358 continue;
43359}
43360#endif
43361#ifdef GET_DISASM
43362case OP_ToMemberPtr:
43363 Text.Op = PrintName("ToMemberPtr");
43364 break;
43365#endif
43366#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43367bool emitToMemberPtr(SourceInfo);
43368#endif
43369#ifdef GET_LINK_IMPL
43370bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
43371 return emitOp<>(OP_ToMemberPtr, L);
43372}
43373#endif
43374#ifdef GET_EVAL_IMPL
43375bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
43376 if (!isActive()) return true;
43377 CurrentSource = L;
43378 return ToMemberPtr(S, OpPC);
43379}
43380#endif
43381#ifdef GET_OPCODE_NAMES
43382OP_Unsupported,
43383#endif
43384#ifdef GET_INTERP
43385case OP_Unsupported: {
43386 if (!Unsupported(S, OpPC))
43387 return false;
43388 continue;
43389}
43390#endif
43391#ifdef GET_DISASM
43392case OP_Unsupported:
43393 Text.Op = PrintName("Unsupported");
43394 break;
43395#endif
43396#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43397bool emitUnsupported(SourceInfo);
43398#endif
43399#ifdef GET_LINK_IMPL
43400bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
43401 return emitOp<>(OP_Unsupported, L);
43402}
43403#endif
43404#ifdef GET_EVAL_IMPL
43405bool EvalEmitter::emitUnsupported(SourceInfo L) {
43406 if (!isActive()) return true;
43407 CurrentSource = L;
43408 return Unsupported(S, OpPC);
43409}
43410#endif
43411#ifdef GET_OPCODE_NAMES
43412OP_ZeroSint8,
43413OP_ZeroUint8,
43414OP_ZeroSint16,
43415OP_ZeroUint16,
43416OP_ZeroSint32,
43417OP_ZeroUint32,
43418OP_ZeroSint64,
43419OP_ZeroUint64,
43420OP_ZeroBool,
43421#endif
43422#ifdef GET_INTERP
43423case OP_ZeroSint8: {
43424 if (!Zero<PT_Sint8>(S, OpPC))
43425 return false;
43426 continue;
43427}
43428case OP_ZeroUint8: {
43429 if (!Zero<PT_Uint8>(S, OpPC))
43430 return false;
43431 continue;
43432}
43433case OP_ZeroSint16: {
43434 if (!Zero<PT_Sint16>(S, OpPC))
43435 return false;
43436 continue;
43437}
43438case OP_ZeroUint16: {
43439 if (!Zero<PT_Uint16>(S, OpPC))
43440 return false;
43441 continue;
43442}
43443case OP_ZeroSint32: {
43444 if (!Zero<PT_Sint32>(S, OpPC))
43445 return false;
43446 continue;
43447}
43448case OP_ZeroUint32: {
43449 if (!Zero<PT_Uint32>(S, OpPC))
43450 return false;
43451 continue;
43452}
43453case OP_ZeroSint64: {
43454 if (!Zero<PT_Sint64>(S, OpPC))
43455 return false;
43456 continue;
43457}
43458case OP_ZeroUint64: {
43459 if (!Zero<PT_Uint64>(S, OpPC))
43460 return false;
43461 continue;
43462}
43463case OP_ZeroBool: {
43464 if (!Zero<PT_Bool>(S, OpPC))
43465 return false;
43466 continue;
43467}
43468#endif
43469#ifdef GET_DISASM
43470case OP_ZeroSint8:
43471 Text.Op = PrintName("ZeroSint8");
43472 break;
43473case OP_ZeroUint8:
43474 Text.Op = PrintName("ZeroUint8");
43475 break;
43476case OP_ZeroSint16:
43477 Text.Op = PrintName("ZeroSint16");
43478 break;
43479case OP_ZeroUint16:
43480 Text.Op = PrintName("ZeroUint16");
43481 break;
43482case OP_ZeroSint32:
43483 Text.Op = PrintName("ZeroSint32");
43484 break;
43485case OP_ZeroUint32:
43486 Text.Op = PrintName("ZeroUint32");
43487 break;
43488case OP_ZeroSint64:
43489 Text.Op = PrintName("ZeroSint64");
43490 break;
43491case OP_ZeroUint64:
43492 Text.Op = PrintName("ZeroUint64");
43493 break;
43494case OP_ZeroBool:
43495 Text.Op = PrintName("ZeroBool");
43496 break;
43497#endif
43498#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43499bool emitZeroSint8(SourceInfo);
43500bool emitZeroUint8(SourceInfo);
43501bool emitZeroSint16(SourceInfo);
43502bool emitZeroUint16(SourceInfo);
43503bool emitZeroSint32(SourceInfo);
43504bool emitZeroUint32(SourceInfo);
43505bool emitZeroSint64(SourceInfo);
43506bool emitZeroUint64(SourceInfo);
43507bool emitZeroBool(SourceInfo);
43508#endif
43509#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43510[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
43511#endif
43512#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43513bool
43514#if defined(GET_EVAL_IMPL)
43515EvalEmitter
43516#else
43517ByteCodeEmitter
43518#endif
43519::emitZero(PrimType T0, SourceInfo I) {
43520 switch (T0) {
43521 case PT_Sint8:
43522 return emitZeroSint8(I);
43523 case PT_Uint8:
43524 return emitZeroUint8(I);
43525 case PT_Sint16:
43526 return emitZeroSint16(I);
43527 case PT_Uint16:
43528 return emitZeroUint16(I);
43529 case PT_Sint32:
43530 return emitZeroSint32(I);
43531 case PT_Uint32:
43532 return emitZeroUint32(I);
43533 case PT_Sint64:
43534 return emitZeroSint64(I);
43535 case PT_Uint64:
43536 return emitZeroUint64(I);
43537 case PT_Bool:
43538 return emitZeroBool(I);
43539 default: llvm_unreachable("invalid type: emitZero");
43540 }
43541 llvm_unreachable("invalid enum value");
43542}
43543#endif
43544#ifdef GET_LINK_IMPL
43545bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
43546 return emitOp<>(OP_ZeroSint8, L);
43547}
43548bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
43549 return emitOp<>(OP_ZeroUint8, L);
43550}
43551bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
43552 return emitOp<>(OP_ZeroSint16, L);
43553}
43554bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
43555 return emitOp<>(OP_ZeroUint16, L);
43556}
43557bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
43558 return emitOp<>(OP_ZeroSint32, L);
43559}
43560bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
43561 return emitOp<>(OP_ZeroUint32, L);
43562}
43563bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
43564 return emitOp<>(OP_ZeroSint64, L);
43565}
43566bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
43567 return emitOp<>(OP_ZeroUint64, L);
43568}
43569bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
43570 return emitOp<>(OP_ZeroBool, L);
43571}
43572#endif
43573#ifdef GET_EVAL_IMPL
43574bool EvalEmitter::emitZeroSint8(SourceInfo L) {
43575 if (!isActive()) return true;
43576 CurrentSource = L;
43577 return Zero<PT_Sint8>(S, OpPC);
43578}
43579bool EvalEmitter::emitZeroUint8(SourceInfo L) {
43580 if (!isActive()) return true;
43581 CurrentSource = L;
43582 return Zero<PT_Uint8>(S, OpPC);
43583}
43584bool EvalEmitter::emitZeroSint16(SourceInfo L) {
43585 if (!isActive()) return true;
43586 CurrentSource = L;
43587 return Zero<PT_Sint16>(S, OpPC);
43588}
43589bool EvalEmitter::emitZeroUint16(SourceInfo L) {
43590 if (!isActive()) return true;
43591 CurrentSource = L;
43592 return Zero<PT_Uint16>(S, OpPC);
43593}
43594bool EvalEmitter::emitZeroSint32(SourceInfo L) {
43595 if (!isActive()) return true;
43596 CurrentSource = L;
43597 return Zero<PT_Sint32>(S, OpPC);
43598}
43599bool EvalEmitter::emitZeroUint32(SourceInfo L) {
43600 if (!isActive()) return true;
43601 CurrentSource = L;
43602 return Zero<PT_Uint32>(S, OpPC);
43603}
43604bool EvalEmitter::emitZeroSint64(SourceInfo L) {
43605 if (!isActive()) return true;
43606 CurrentSource = L;
43607 return Zero<PT_Sint64>(S, OpPC);
43608}
43609bool EvalEmitter::emitZeroUint64(SourceInfo L) {
43610 if (!isActive()) return true;
43611 CurrentSource = L;
43612 return Zero<PT_Uint64>(S, OpPC);
43613}
43614bool EvalEmitter::emitZeroBool(SourceInfo L) {
43615 if (!isActive()) return true;
43616 CurrentSource = L;
43617 return Zero<PT_Bool>(S, OpPC);
43618}
43619#endif
43620#ifdef GET_OPCODE_NAMES
43621OP_ZeroIntAP,
43622#endif
43623#ifdef GET_INTERP
43624case OP_ZeroIntAP: {
43625 const auto V0 = ReadArg<uint32_t>(S, PC);
43626 if (!ZeroIntAP(S, OpPC, V0))
43627 return false;
43628 continue;
43629}
43630#endif
43631#ifdef GET_DISASM
43632case OP_ZeroIntAP:
43633 Text.Op = PrintName("ZeroIntAP");
43634 Text.Args.push_back(printArg<uint32_t>(P, PC));
43635 break;
43636#endif
43637#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43638bool emitZeroIntAP( uint32_t , SourceInfo);
43639#endif
43640#ifdef GET_LINK_IMPL
43641bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
43642 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
43643}
43644#endif
43645#ifdef GET_EVAL_IMPL
43646bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
43647 if (!isActive()) return true;
43648 CurrentSource = L;
43649 return ZeroIntAP(S, OpPC, A0);
43650}
43651#endif
43652#ifdef GET_OPCODE_NAMES
43653OP_ZeroIntAPS,
43654#endif
43655#ifdef GET_INTERP
43656case OP_ZeroIntAPS: {
43657 const auto V0 = ReadArg<uint32_t>(S, PC);
43658 if (!ZeroIntAPS(S, OpPC, V0))
43659 return false;
43660 continue;
43661}
43662#endif
43663#ifdef GET_DISASM
43664case OP_ZeroIntAPS:
43665 Text.Op = PrintName("ZeroIntAPS");
43666 Text.Args.push_back(printArg<uint32_t>(P, PC));
43667 break;
43668#endif
43669#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43670bool emitZeroIntAPS( uint32_t , SourceInfo);
43671#endif
43672#ifdef GET_LINK_IMPL
43673bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
43674 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
43675}
43676#endif
43677#ifdef GET_EVAL_IMPL
43678bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
43679 if (!isActive()) return true;
43680 CurrentSource = L;
43681 return ZeroIntAPS(S, OpPC, A0);
43682}
43683#endif
43684