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,
656OP_AllocCNBool,
657#endif
658#ifdef GET_INTERP
659case OP_AllocCNSint8: {
660 const auto V0 = ReadArg<const Descriptor *>(S, PC);
661 const auto V1 = ReadArg<bool>(S, PC);
662 if (!AllocCN<PT_Sint8>(S, OpPC, V0, V1))
663 return false;
664 continue;
665}
666case OP_AllocCNUint8: {
667 const auto V0 = ReadArg<const Descriptor *>(S, PC);
668 const auto V1 = ReadArg<bool>(S, PC);
669 if (!AllocCN<PT_Uint8>(S, OpPC, V0, V1))
670 return false;
671 continue;
672}
673case OP_AllocCNSint16: {
674 const auto V0 = ReadArg<const Descriptor *>(S, PC);
675 const auto V1 = ReadArg<bool>(S, PC);
676 if (!AllocCN<PT_Sint16>(S, OpPC, V0, V1))
677 return false;
678 continue;
679}
680case OP_AllocCNUint16: {
681 const auto V0 = ReadArg<const Descriptor *>(S, PC);
682 const auto V1 = ReadArg<bool>(S, PC);
683 if (!AllocCN<PT_Uint16>(S, OpPC, V0, V1))
684 return false;
685 continue;
686}
687case OP_AllocCNSint32: {
688 const auto V0 = ReadArg<const Descriptor *>(S, PC);
689 const auto V1 = ReadArg<bool>(S, PC);
690 if (!AllocCN<PT_Sint32>(S, OpPC, V0, V1))
691 return false;
692 continue;
693}
694case OP_AllocCNUint32: {
695 const auto V0 = ReadArg<const Descriptor *>(S, PC);
696 const auto V1 = ReadArg<bool>(S, PC);
697 if (!AllocCN<PT_Uint32>(S, OpPC, V0, V1))
698 return false;
699 continue;
700}
701case OP_AllocCNSint64: {
702 const auto V0 = ReadArg<const Descriptor *>(S, PC);
703 const auto V1 = ReadArg<bool>(S, PC);
704 if (!AllocCN<PT_Sint64>(S, OpPC, V0, V1))
705 return false;
706 continue;
707}
708case OP_AllocCNUint64: {
709 const auto V0 = ReadArg<const Descriptor *>(S, PC);
710 const auto V1 = ReadArg<bool>(S, PC);
711 if (!AllocCN<PT_Uint64>(S, OpPC, V0, V1))
712 return false;
713 continue;
714}
715case OP_AllocCNIntAP: {
716 const auto V0 = ReadArg<const Descriptor *>(S, PC);
717 const auto V1 = ReadArg<bool>(S, PC);
718 if (!AllocCN<PT_IntAP>(S, OpPC, V0, V1))
719 return false;
720 continue;
721}
722case OP_AllocCNIntAPS: {
723 const auto V0 = ReadArg<const Descriptor *>(S, PC);
724 const auto V1 = ReadArg<bool>(S, PC);
725 if (!AllocCN<PT_IntAPS>(S, OpPC, V0, V1))
726 return false;
727 continue;
728}
729case OP_AllocCNBool: {
730 const auto V0 = ReadArg<const Descriptor *>(S, PC);
731 const auto V1 = ReadArg<bool>(S, PC);
732 if (!AllocCN<PT_Bool>(S, OpPC, V0, V1))
733 return false;
734 continue;
735}
736#endif
737#ifdef GET_DISASM
738case OP_AllocCNSint8:
739 Text.Op = PrintName("AllocCNSint8");
740 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
741 Text.Args.push_back(printArg<bool>(P, PC));
742 break;
743case OP_AllocCNUint8:
744 Text.Op = PrintName("AllocCNUint8");
745 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
746 Text.Args.push_back(printArg<bool>(P, PC));
747 break;
748case OP_AllocCNSint16:
749 Text.Op = PrintName("AllocCNSint16");
750 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
751 Text.Args.push_back(printArg<bool>(P, PC));
752 break;
753case OP_AllocCNUint16:
754 Text.Op = PrintName("AllocCNUint16");
755 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
756 Text.Args.push_back(printArg<bool>(P, PC));
757 break;
758case OP_AllocCNSint32:
759 Text.Op = PrintName("AllocCNSint32");
760 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
761 Text.Args.push_back(printArg<bool>(P, PC));
762 break;
763case OP_AllocCNUint32:
764 Text.Op = PrintName("AllocCNUint32");
765 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
766 Text.Args.push_back(printArg<bool>(P, PC));
767 break;
768case OP_AllocCNSint64:
769 Text.Op = PrintName("AllocCNSint64");
770 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
771 Text.Args.push_back(printArg<bool>(P, PC));
772 break;
773case OP_AllocCNUint64:
774 Text.Op = PrintName("AllocCNUint64");
775 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
776 Text.Args.push_back(printArg<bool>(P, PC));
777 break;
778case OP_AllocCNIntAP:
779 Text.Op = PrintName("AllocCNIntAP");
780 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
781 Text.Args.push_back(printArg<bool>(P, PC));
782 break;
783case OP_AllocCNIntAPS:
784 Text.Op = PrintName("AllocCNIntAPS");
785 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
786 Text.Args.push_back(printArg<bool>(P, PC));
787 break;
788case OP_AllocCNBool:
789 Text.Op = PrintName("AllocCNBool");
790 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
791 Text.Args.push_back(printArg<bool>(P, PC));
792 break;
793#endif
794#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
795bool emitAllocCNSint8( const Descriptor * , bool , SourceInfo);
796bool emitAllocCNUint8( const Descriptor * , bool , SourceInfo);
797bool emitAllocCNSint16( const Descriptor * , bool , SourceInfo);
798bool emitAllocCNUint16( const Descriptor * , bool , SourceInfo);
799bool emitAllocCNSint32( const Descriptor * , bool , SourceInfo);
800bool emitAllocCNUint32( const Descriptor * , bool , SourceInfo);
801bool emitAllocCNSint64( const Descriptor * , bool , SourceInfo);
802bool emitAllocCNUint64( const Descriptor * , bool , SourceInfo);
803bool emitAllocCNIntAP( const Descriptor * , bool , SourceInfo);
804bool emitAllocCNIntAPS( const Descriptor * , bool , SourceInfo);
805bool emitAllocCNBool( const Descriptor * , bool , SourceInfo);
806#endif
807#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
808[[nodiscard]] bool emitAllocCN(PrimType, const Descriptor *, bool, SourceInfo I);
809#endif
810#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
811bool
812#if defined(GET_EVAL_IMPL)
813EvalEmitter
814#else
815ByteCodeEmitter
816#endif
817::emitAllocCN(PrimType T0, const Descriptor * A0, bool A1, SourceInfo I) {
818 switch (T0) {
819 case PT_Sint8:
820 return emitAllocCNSint8(A0, A1, I);
821 case PT_Uint8:
822 return emitAllocCNUint8(A0, A1, I);
823 case PT_Sint16:
824 return emitAllocCNSint16(A0, A1, I);
825 case PT_Uint16:
826 return emitAllocCNUint16(A0, A1, I);
827 case PT_Sint32:
828 return emitAllocCNSint32(A0, A1, I);
829 case PT_Uint32:
830 return emitAllocCNUint32(A0, A1, I);
831 case PT_Sint64:
832 return emitAllocCNSint64(A0, A1, I);
833 case PT_Uint64:
834 return emitAllocCNUint64(A0, A1, I);
835 case PT_IntAP:
836 return emitAllocCNIntAP(A0, A1, I);
837 case PT_IntAPS:
838 return emitAllocCNIntAPS(A0, A1, I);
839 case PT_Bool:
840 return emitAllocCNBool(A0, A1, I);
841 default: llvm_unreachable("invalid type: emitAllocCN");
842 }
843 llvm_unreachable("invalid enum value");
844}
845#endif
846#ifdef GET_LINK_IMPL
847bool ByteCodeEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
848 return emitOp<const Descriptor *, bool>(OP_AllocCNSint8, A0, A1, L);
849}
850bool ByteCodeEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
851 return emitOp<const Descriptor *, bool>(OP_AllocCNUint8, A0, A1, L);
852}
853bool ByteCodeEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
854 return emitOp<const Descriptor *, bool>(OP_AllocCNSint16, A0, A1, L);
855}
856bool ByteCodeEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
857 return emitOp<const Descriptor *, bool>(OP_AllocCNUint16, A0, A1, L);
858}
859bool ByteCodeEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
860 return emitOp<const Descriptor *, bool>(OP_AllocCNSint32, A0, A1, L);
861}
862bool ByteCodeEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
863 return emitOp<const Descriptor *, bool>(OP_AllocCNUint32, A0, A1, L);
864}
865bool ByteCodeEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
866 return emitOp<const Descriptor *, bool>(OP_AllocCNSint64, A0, A1, L);
867}
868bool ByteCodeEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
869 return emitOp<const Descriptor *, bool>(OP_AllocCNUint64, A0, A1, L);
870}
871bool ByteCodeEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
872 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAP, A0, A1, L);
873}
874bool ByteCodeEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
875 return emitOp<const Descriptor *, bool>(OP_AllocCNIntAPS, A0, A1, L);
876}
877bool ByteCodeEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
878 return emitOp<const Descriptor *, bool>(OP_AllocCNBool, A0, A1, L);
879}
880#endif
881#ifdef GET_EVAL_IMPL
882bool EvalEmitter::emitAllocCNSint8( const Descriptor * A0, bool A1, SourceInfo L) {
883 if (!isActive()) return true;
884 CurrentSource = L;
885 return AllocCN<PT_Sint8>(S, OpPC, A0, A1);
886}
887bool EvalEmitter::emitAllocCNUint8( const Descriptor * A0, bool A1, SourceInfo L) {
888 if (!isActive()) return true;
889 CurrentSource = L;
890 return AllocCN<PT_Uint8>(S, OpPC, A0, A1);
891}
892bool EvalEmitter::emitAllocCNSint16( const Descriptor * A0, bool A1, SourceInfo L) {
893 if (!isActive()) return true;
894 CurrentSource = L;
895 return AllocCN<PT_Sint16>(S, OpPC, A0, A1);
896}
897bool EvalEmitter::emitAllocCNUint16( const Descriptor * A0, bool A1, SourceInfo L) {
898 if (!isActive()) return true;
899 CurrentSource = L;
900 return AllocCN<PT_Uint16>(S, OpPC, A0, A1);
901}
902bool EvalEmitter::emitAllocCNSint32( const Descriptor * A0, bool A1, SourceInfo L) {
903 if (!isActive()) return true;
904 CurrentSource = L;
905 return AllocCN<PT_Sint32>(S, OpPC, A0, A1);
906}
907bool EvalEmitter::emitAllocCNUint32( const Descriptor * A0, bool A1, SourceInfo L) {
908 if (!isActive()) return true;
909 CurrentSource = L;
910 return AllocCN<PT_Uint32>(S, OpPC, A0, A1);
911}
912bool EvalEmitter::emitAllocCNSint64( const Descriptor * A0, bool A1, SourceInfo L) {
913 if (!isActive()) return true;
914 CurrentSource = L;
915 return AllocCN<PT_Sint64>(S, OpPC, A0, A1);
916}
917bool EvalEmitter::emitAllocCNUint64( const Descriptor * A0, bool A1, SourceInfo L) {
918 if (!isActive()) return true;
919 CurrentSource = L;
920 return AllocCN<PT_Uint64>(S, OpPC, A0, A1);
921}
922bool EvalEmitter::emitAllocCNIntAP( const Descriptor * A0, bool A1, SourceInfo L) {
923 if (!isActive()) return true;
924 CurrentSource = L;
925 return AllocCN<PT_IntAP>(S, OpPC, A0, A1);
926}
927bool EvalEmitter::emitAllocCNIntAPS( const Descriptor * A0, bool A1, SourceInfo L) {
928 if (!isActive()) return true;
929 CurrentSource = L;
930 return AllocCN<PT_IntAPS>(S, OpPC, A0, A1);
931}
932bool EvalEmitter::emitAllocCNBool( const Descriptor * A0, bool A1, SourceInfo L) {
933 if (!isActive()) return true;
934 CurrentSource = L;
935 return AllocCN<PT_Bool>(S, OpPC, A0, A1);
936}
937#endif
938#ifdef GET_OPCODE_NAMES
939OP_AllocNSint8,
940OP_AllocNUint8,
941OP_AllocNSint16,
942OP_AllocNUint16,
943OP_AllocNSint32,
944OP_AllocNUint32,
945OP_AllocNSint64,
946OP_AllocNUint64,
947OP_AllocNIntAP,
948OP_AllocNIntAPS,
949OP_AllocNBool,
950#endif
951#ifdef GET_INTERP
952case OP_AllocNSint8: {
953 const auto V0 = ReadArg<PrimType>(S, PC);
954 const auto V1 = ReadArg<const Expr *>(S, PC);
955 const auto V2 = ReadArg<bool>(S, PC);
956 if (!AllocN<PT_Sint8>(S, OpPC, V0, V1, V2))
957 return false;
958 continue;
959}
960case OP_AllocNUint8: {
961 const auto V0 = ReadArg<PrimType>(S, PC);
962 const auto V1 = ReadArg<const Expr *>(S, PC);
963 const auto V2 = ReadArg<bool>(S, PC);
964 if (!AllocN<PT_Uint8>(S, OpPC, V0, V1, V2))
965 return false;
966 continue;
967}
968case OP_AllocNSint16: {
969 const auto V0 = ReadArg<PrimType>(S, PC);
970 const auto V1 = ReadArg<const Expr *>(S, PC);
971 const auto V2 = ReadArg<bool>(S, PC);
972 if (!AllocN<PT_Sint16>(S, OpPC, V0, V1, V2))
973 return false;
974 continue;
975}
976case OP_AllocNUint16: {
977 const auto V0 = ReadArg<PrimType>(S, PC);
978 const auto V1 = ReadArg<const Expr *>(S, PC);
979 const auto V2 = ReadArg<bool>(S, PC);
980 if (!AllocN<PT_Uint16>(S, OpPC, V0, V1, V2))
981 return false;
982 continue;
983}
984case OP_AllocNSint32: {
985 const auto V0 = ReadArg<PrimType>(S, PC);
986 const auto V1 = ReadArg<const Expr *>(S, PC);
987 const auto V2 = ReadArg<bool>(S, PC);
988 if (!AllocN<PT_Sint32>(S, OpPC, V0, V1, V2))
989 return false;
990 continue;
991}
992case OP_AllocNUint32: {
993 const auto V0 = ReadArg<PrimType>(S, PC);
994 const auto V1 = ReadArg<const Expr *>(S, PC);
995 const auto V2 = ReadArg<bool>(S, PC);
996 if (!AllocN<PT_Uint32>(S, OpPC, V0, V1, V2))
997 return false;
998 continue;
999}
1000case OP_AllocNSint64: {
1001 const auto V0 = ReadArg<PrimType>(S, PC);
1002 const auto V1 = ReadArg<const Expr *>(S, PC);
1003 const auto V2 = ReadArg<bool>(S, PC);
1004 if (!AllocN<PT_Sint64>(S, OpPC, V0, V1, V2))
1005 return false;
1006 continue;
1007}
1008case OP_AllocNUint64: {
1009 const auto V0 = ReadArg<PrimType>(S, PC);
1010 const auto V1 = ReadArg<const Expr *>(S, PC);
1011 const auto V2 = ReadArg<bool>(S, PC);
1012 if (!AllocN<PT_Uint64>(S, OpPC, V0, V1, V2))
1013 return false;
1014 continue;
1015}
1016case OP_AllocNIntAP: {
1017 const auto V0 = ReadArg<PrimType>(S, PC);
1018 const auto V1 = ReadArg<const Expr *>(S, PC);
1019 const auto V2 = ReadArg<bool>(S, PC);
1020 if (!AllocN<PT_IntAP>(S, OpPC, V0, V1, V2))
1021 return false;
1022 continue;
1023}
1024case OP_AllocNIntAPS: {
1025 const auto V0 = ReadArg<PrimType>(S, PC);
1026 const auto V1 = ReadArg<const Expr *>(S, PC);
1027 const auto V2 = ReadArg<bool>(S, PC);
1028 if (!AllocN<PT_IntAPS>(S, OpPC, V0, V1, V2))
1029 return false;
1030 continue;
1031}
1032case OP_AllocNBool: {
1033 const auto V0 = ReadArg<PrimType>(S, PC);
1034 const auto V1 = ReadArg<const Expr *>(S, PC);
1035 const auto V2 = ReadArg<bool>(S, PC);
1036 if (!AllocN<PT_Bool>(S, OpPC, V0, V1, V2))
1037 return false;
1038 continue;
1039}
1040#endif
1041#ifdef GET_DISASM
1042case OP_AllocNSint8:
1043 Text.Op = PrintName("AllocNSint8");
1044 Text.Args.push_back(printArg<PrimType>(P, PC));
1045 Text.Args.push_back(printArg<const Expr *>(P, PC));
1046 Text.Args.push_back(printArg<bool>(P, PC));
1047 break;
1048case OP_AllocNUint8:
1049 Text.Op = PrintName("AllocNUint8");
1050 Text.Args.push_back(printArg<PrimType>(P, PC));
1051 Text.Args.push_back(printArg<const Expr *>(P, PC));
1052 Text.Args.push_back(printArg<bool>(P, PC));
1053 break;
1054case OP_AllocNSint16:
1055 Text.Op = PrintName("AllocNSint16");
1056 Text.Args.push_back(printArg<PrimType>(P, PC));
1057 Text.Args.push_back(printArg<const Expr *>(P, PC));
1058 Text.Args.push_back(printArg<bool>(P, PC));
1059 break;
1060case OP_AllocNUint16:
1061 Text.Op = PrintName("AllocNUint16");
1062 Text.Args.push_back(printArg<PrimType>(P, PC));
1063 Text.Args.push_back(printArg<const Expr *>(P, PC));
1064 Text.Args.push_back(printArg<bool>(P, PC));
1065 break;
1066case OP_AllocNSint32:
1067 Text.Op = PrintName("AllocNSint32");
1068 Text.Args.push_back(printArg<PrimType>(P, PC));
1069 Text.Args.push_back(printArg<const Expr *>(P, PC));
1070 Text.Args.push_back(printArg<bool>(P, PC));
1071 break;
1072case OP_AllocNUint32:
1073 Text.Op = PrintName("AllocNUint32");
1074 Text.Args.push_back(printArg<PrimType>(P, PC));
1075 Text.Args.push_back(printArg<const Expr *>(P, PC));
1076 Text.Args.push_back(printArg<bool>(P, PC));
1077 break;
1078case OP_AllocNSint64:
1079 Text.Op = PrintName("AllocNSint64");
1080 Text.Args.push_back(printArg<PrimType>(P, PC));
1081 Text.Args.push_back(printArg<const Expr *>(P, PC));
1082 Text.Args.push_back(printArg<bool>(P, PC));
1083 break;
1084case OP_AllocNUint64:
1085 Text.Op = PrintName("AllocNUint64");
1086 Text.Args.push_back(printArg<PrimType>(P, PC));
1087 Text.Args.push_back(printArg<const Expr *>(P, PC));
1088 Text.Args.push_back(printArg<bool>(P, PC));
1089 break;
1090case OP_AllocNIntAP:
1091 Text.Op = PrintName("AllocNIntAP");
1092 Text.Args.push_back(printArg<PrimType>(P, PC));
1093 Text.Args.push_back(printArg<const Expr *>(P, PC));
1094 Text.Args.push_back(printArg<bool>(P, PC));
1095 break;
1096case OP_AllocNIntAPS:
1097 Text.Op = PrintName("AllocNIntAPS");
1098 Text.Args.push_back(printArg<PrimType>(P, PC));
1099 Text.Args.push_back(printArg<const Expr *>(P, PC));
1100 Text.Args.push_back(printArg<bool>(P, PC));
1101 break;
1102case OP_AllocNBool:
1103 Text.Op = PrintName("AllocNBool");
1104 Text.Args.push_back(printArg<PrimType>(P, PC));
1105 Text.Args.push_back(printArg<const Expr *>(P, PC));
1106 Text.Args.push_back(printArg<bool>(P, PC));
1107 break;
1108#endif
1109#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1110bool emitAllocNSint8( PrimType , const Expr * , bool , SourceInfo);
1111bool emitAllocNUint8( PrimType , const Expr * , bool , SourceInfo);
1112bool emitAllocNSint16( PrimType , const Expr * , bool , SourceInfo);
1113bool emitAllocNUint16( PrimType , const Expr * , bool , SourceInfo);
1114bool emitAllocNSint32( PrimType , const Expr * , bool , SourceInfo);
1115bool emitAllocNUint32( PrimType , const Expr * , bool , SourceInfo);
1116bool emitAllocNSint64( PrimType , const Expr * , bool , SourceInfo);
1117bool emitAllocNUint64( PrimType , const Expr * , bool , SourceInfo);
1118bool emitAllocNIntAP( PrimType , const Expr * , bool , SourceInfo);
1119bool emitAllocNIntAPS( PrimType , const Expr * , bool , SourceInfo);
1120bool emitAllocNBool( PrimType , const Expr * , bool , SourceInfo);
1121#endif
1122#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1123[[nodiscard]] bool emitAllocN(PrimType, PrimType, const Expr *, bool, SourceInfo I);
1124#endif
1125#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1126bool
1127#if defined(GET_EVAL_IMPL)
1128EvalEmitter
1129#else
1130ByteCodeEmitter
1131#endif
1132::emitAllocN(PrimType T0, PrimType A0, const Expr * A1, bool A2, SourceInfo I) {
1133 switch (T0) {
1134 case PT_Sint8:
1135 return emitAllocNSint8(A0, A1, A2, I);
1136 case PT_Uint8:
1137 return emitAllocNUint8(A0, A1, A2, I);
1138 case PT_Sint16:
1139 return emitAllocNSint16(A0, A1, A2, I);
1140 case PT_Uint16:
1141 return emitAllocNUint16(A0, A1, A2, I);
1142 case PT_Sint32:
1143 return emitAllocNSint32(A0, A1, A2, I);
1144 case PT_Uint32:
1145 return emitAllocNUint32(A0, A1, A2, I);
1146 case PT_Sint64:
1147 return emitAllocNSint64(A0, A1, A2, I);
1148 case PT_Uint64:
1149 return emitAllocNUint64(A0, A1, A2, I);
1150 case PT_IntAP:
1151 return emitAllocNIntAP(A0, A1, A2, I);
1152 case PT_IntAPS:
1153 return emitAllocNIntAPS(A0, A1, A2, I);
1154 case PT_Bool:
1155 return emitAllocNBool(A0, A1, A2, I);
1156 default: llvm_unreachable("invalid type: emitAllocN");
1157 }
1158 llvm_unreachable("invalid enum value");
1159}
1160#endif
1161#ifdef GET_LINK_IMPL
1162bool ByteCodeEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1163 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint8, A0, A1, A2, L);
1164}
1165bool ByteCodeEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1166 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint8, A0, A1, A2, L);
1167}
1168bool ByteCodeEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1169 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint16, A0, A1, A2, L);
1170}
1171bool ByteCodeEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1172 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint16, A0, A1, A2, L);
1173}
1174bool ByteCodeEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1175 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint32, A0, A1, A2, L);
1176}
1177bool ByteCodeEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1178 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint32, A0, A1, A2, L);
1179}
1180bool ByteCodeEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1181 return emitOp<PrimType, const Expr *, bool>(OP_AllocNSint64, A0, A1, A2, L);
1182}
1183bool ByteCodeEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1184 return emitOp<PrimType, const Expr *, bool>(OP_AllocNUint64, A0, A1, A2, L);
1185}
1186bool ByteCodeEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1187 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAP, A0, A1, A2, L);
1188}
1189bool ByteCodeEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1190 return emitOp<PrimType, const Expr *, bool>(OP_AllocNIntAPS, A0, A1, A2, L);
1191}
1192bool ByteCodeEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1193 return emitOp<PrimType, const Expr *, bool>(OP_AllocNBool, A0, A1, A2, L);
1194}
1195#endif
1196#ifdef GET_EVAL_IMPL
1197bool EvalEmitter::emitAllocNSint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1198 if (!isActive()) return true;
1199 CurrentSource = L;
1200 return AllocN<PT_Sint8>(S, OpPC, A0, A1, A2);
1201}
1202bool EvalEmitter::emitAllocNUint8( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1203 if (!isActive()) return true;
1204 CurrentSource = L;
1205 return AllocN<PT_Uint8>(S, OpPC, A0, A1, A2);
1206}
1207bool EvalEmitter::emitAllocNSint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1208 if (!isActive()) return true;
1209 CurrentSource = L;
1210 return AllocN<PT_Sint16>(S, OpPC, A0, A1, A2);
1211}
1212bool EvalEmitter::emitAllocNUint16( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1213 if (!isActive()) return true;
1214 CurrentSource = L;
1215 return AllocN<PT_Uint16>(S, OpPC, A0, A1, A2);
1216}
1217bool EvalEmitter::emitAllocNSint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1218 if (!isActive()) return true;
1219 CurrentSource = L;
1220 return AllocN<PT_Sint32>(S, OpPC, A0, A1, A2);
1221}
1222bool EvalEmitter::emitAllocNUint32( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1223 if (!isActive()) return true;
1224 CurrentSource = L;
1225 return AllocN<PT_Uint32>(S, OpPC, A0, A1, A2);
1226}
1227bool EvalEmitter::emitAllocNSint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1228 if (!isActive()) return true;
1229 CurrentSource = L;
1230 return AllocN<PT_Sint64>(S, OpPC, A0, A1, A2);
1231}
1232bool EvalEmitter::emitAllocNUint64( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1233 if (!isActive()) return true;
1234 CurrentSource = L;
1235 return AllocN<PT_Uint64>(S, OpPC, A0, A1, A2);
1236}
1237bool EvalEmitter::emitAllocNIntAP( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1238 if (!isActive()) return true;
1239 CurrentSource = L;
1240 return AllocN<PT_IntAP>(S, OpPC, A0, A1, A2);
1241}
1242bool EvalEmitter::emitAllocNIntAPS( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1243 if (!isActive()) return true;
1244 CurrentSource = L;
1245 return AllocN<PT_IntAPS>(S, OpPC, A0, A1, A2);
1246}
1247bool EvalEmitter::emitAllocNBool( PrimType A0, const Expr * A1, bool A2, SourceInfo L) {
1248 if (!isActive()) return true;
1249 CurrentSource = L;
1250 return AllocN<PT_Bool>(S, OpPC, A0, A1, A2);
1251}
1252#endif
1253#ifdef GET_OPCODE_NAMES
1254OP_ArrayDecay,
1255#endif
1256#ifdef GET_INTERP
1257case OP_ArrayDecay: {
1258 if (!ArrayDecay(S, OpPC))
1259 return false;
1260 continue;
1261}
1262#endif
1263#ifdef GET_DISASM
1264case OP_ArrayDecay:
1265 Text.Op = PrintName("ArrayDecay");
1266 break;
1267#endif
1268#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1269bool emitArrayDecay(SourceInfo);
1270#endif
1271#ifdef GET_LINK_IMPL
1272bool ByteCodeEmitter::emitArrayDecay(SourceInfo L) {
1273 return emitOp<>(OP_ArrayDecay, L);
1274}
1275#endif
1276#ifdef GET_EVAL_IMPL
1277bool EvalEmitter::emitArrayDecay(SourceInfo L) {
1278 if (!isActive()) return true;
1279 CurrentSource = L;
1280 return ArrayDecay(S, OpPC);
1281}
1282#endif
1283#ifdef GET_OPCODE_NAMES
1284OP_ArrayElemSint8,
1285OP_ArrayElemUint8,
1286OP_ArrayElemSint16,
1287OP_ArrayElemUint16,
1288OP_ArrayElemSint32,
1289OP_ArrayElemUint32,
1290OP_ArrayElemSint64,
1291OP_ArrayElemUint64,
1292OP_ArrayElemIntAP,
1293OP_ArrayElemIntAPS,
1294OP_ArrayElemBool,
1295OP_ArrayElemFixedPoint,
1296OP_ArrayElemPtr,
1297OP_ArrayElemMemberPtr,
1298OP_ArrayElemFloat,
1299#endif
1300#ifdef GET_INTERP
1301case OP_ArrayElemSint8: {
1302 const auto V0 = ReadArg<uint32_t>(S, PC);
1303 if (!ArrayElem<PT_Sint8>(S, OpPC, V0))
1304 return false;
1305 continue;
1306}
1307case OP_ArrayElemUint8: {
1308 const auto V0 = ReadArg<uint32_t>(S, PC);
1309 if (!ArrayElem<PT_Uint8>(S, OpPC, V0))
1310 return false;
1311 continue;
1312}
1313case OP_ArrayElemSint16: {
1314 const auto V0 = ReadArg<uint32_t>(S, PC);
1315 if (!ArrayElem<PT_Sint16>(S, OpPC, V0))
1316 return false;
1317 continue;
1318}
1319case OP_ArrayElemUint16: {
1320 const auto V0 = ReadArg<uint32_t>(S, PC);
1321 if (!ArrayElem<PT_Uint16>(S, OpPC, V0))
1322 return false;
1323 continue;
1324}
1325case OP_ArrayElemSint32: {
1326 const auto V0 = ReadArg<uint32_t>(S, PC);
1327 if (!ArrayElem<PT_Sint32>(S, OpPC, V0))
1328 return false;
1329 continue;
1330}
1331case OP_ArrayElemUint32: {
1332 const auto V0 = ReadArg<uint32_t>(S, PC);
1333 if (!ArrayElem<PT_Uint32>(S, OpPC, V0))
1334 return false;
1335 continue;
1336}
1337case OP_ArrayElemSint64: {
1338 const auto V0 = ReadArg<uint32_t>(S, PC);
1339 if (!ArrayElem<PT_Sint64>(S, OpPC, V0))
1340 return false;
1341 continue;
1342}
1343case OP_ArrayElemUint64: {
1344 const auto V0 = ReadArg<uint32_t>(S, PC);
1345 if (!ArrayElem<PT_Uint64>(S, OpPC, V0))
1346 return false;
1347 continue;
1348}
1349case OP_ArrayElemIntAP: {
1350 const auto V0 = ReadArg<uint32_t>(S, PC);
1351 if (!ArrayElem<PT_IntAP>(S, OpPC, V0))
1352 return false;
1353 continue;
1354}
1355case OP_ArrayElemIntAPS: {
1356 const auto V0 = ReadArg<uint32_t>(S, PC);
1357 if (!ArrayElem<PT_IntAPS>(S, OpPC, V0))
1358 return false;
1359 continue;
1360}
1361case OP_ArrayElemBool: {
1362 const auto V0 = ReadArg<uint32_t>(S, PC);
1363 if (!ArrayElem<PT_Bool>(S, OpPC, V0))
1364 return false;
1365 continue;
1366}
1367case OP_ArrayElemFixedPoint: {
1368 const auto V0 = ReadArg<uint32_t>(S, PC);
1369 if (!ArrayElem<PT_FixedPoint>(S, OpPC, V0))
1370 return false;
1371 continue;
1372}
1373case OP_ArrayElemPtr: {
1374 const auto V0 = ReadArg<uint32_t>(S, PC);
1375 if (!ArrayElem<PT_Ptr>(S, OpPC, V0))
1376 return false;
1377 continue;
1378}
1379case OP_ArrayElemMemberPtr: {
1380 const auto V0 = ReadArg<uint32_t>(S, PC);
1381 if (!ArrayElem<PT_MemberPtr>(S, OpPC, V0))
1382 return false;
1383 continue;
1384}
1385case OP_ArrayElemFloat: {
1386 const auto V0 = ReadArg<uint32_t>(S, PC);
1387 if (!ArrayElem<PT_Float>(S, OpPC, V0))
1388 return false;
1389 continue;
1390}
1391#endif
1392#ifdef GET_DISASM
1393case OP_ArrayElemSint8:
1394 Text.Op = PrintName("ArrayElemSint8");
1395 Text.Args.push_back(printArg<uint32_t>(P, PC));
1396 break;
1397case OP_ArrayElemUint8:
1398 Text.Op = PrintName("ArrayElemUint8");
1399 Text.Args.push_back(printArg<uint32_t>(P, PC));
1400 break;
1401case OP_ArrayElemSint16:
1402 Text.Op = PrintName("ArrayElemSint16");
1403 Text.Args.push_back(printArg<uint32_t>(P, PC));
1404 break;
1405case OP_ArrayElemUint16:
1406 Text.Op = PrintName("ArrayElemUint16");
1407 Text.Args.push_back(printArg<uint32_t>(P, PC));
1408 break;
1409case OP_ArrayElemSint32:
1410 Text.Op = PrintName("ArrayElemSint32");
1411 Text.Args.push_back(printArg<uint32_t>(P, PC));
1412 break;
1413case OP_ArrayElemUint32:
1414 Text.Op = PrintName("ArrayElemUint32");
1415 Text.Args.push_back(printArg<uint32_t>(P, PC));
1416 break;
1417case OP_ArrayElemSint64:
1418 Text.Op = PrintName("ArrayElemSint64");
1419 Text.Args.push_back(printArg<uint32_t>(P, PC));
1420 break;
1421case OP_ArrayElemUint64:
1422 Text.Op = PrintName("ArrayElemUint64");
1423 Text.Args.push_back(printArg<uint32_t>(P, PC));
1424 break;
1425case OP_ArrayElemIntAP:
1426 Text.Op = PrintName("ArrayElemIntAP");
1427 Text.Args.push_back(printArg<uint32_t>(P, PC));
1428 break;
1429case OP_ArrayElemIntAPS:
1430 Text.Op = PrintName("ArrayElemIntAPS");
1431 Text.Args.push_back(printArg<uint32_t>(P, PC));
1432 break;
1433case OP_ArrayElemBool:
1434 Text.Op = PrintName("ArrayElemBool");
1435 Text.Args.push_back(printArg<uint32_t>(P, PC));
1436 break;
1437case OP_ArrayElemFixedPoint:
1438 Text.Op = PrintName("ArrayElemFixedPoint");
1439 Text.Args.push_back(printArg<uint32_t>(P, PC));
1440 break;
1441case OP_ArrayElemPtr:
1442 Text.Op = PrintName("ArrayElemPtr");
1443 Text.Args.push_back(printArg<uint32_t>(P, PC));
1444 break;
1445case OP_ArrayElemMemberPtr:
1446 Text.Op = PrintName("ArrayElemMemberPtr");
1447 Text.Args.push_back(printArg<uint32_t>(P, PC));
1448 break;
1449case OP_ArrayElemFloat:
1450 Text.Op = PrintName("ArrayElemFloat");
1451 Text.Args.push_back(printArg<uint32_t>(P, PC));
1452 break;
1453#endif
1454#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1455bool emitArrayElemSint8( uint32_t , SourceInfo);
1456bool emitArrayElemUint8( uint32_t , SourceInfo);
1457bool emitArrayElemSint16( uint32_t , SourceInfo);
1458bool emitArrayElemUint16( uint32_t , SourceInfo);
1459bool emitArrayElemSint32( uint32_t , SourceInfo);
1460bool emitArrayElemUint32( uint32_t , SourceInfo);
1461bool emitArrayElemSint64( uint32_t , SourceInfo);
1462bool emitArrayElemUint64( uint32_t , SourceInfo);
1463bool emitArrayElemIntAP( uint32_t , SourceInfo);
1464bool emitArrayElemIntAPS( uint32_t , SourceInfo);
1465bool emitArrayElemBool( uint32_t , SourceInfo);
1466bool emitArrayElemFixedPoint( uint32_t , SourceInfo);
1467bool emitArrayElemPtr( uint32_t , SourceInfo);
1468bool emitArrayElemMemberPtr( uint32_t , SourceInfo);
1469bool emitArrayElemFloat( uint32_t , SourceInfo);
1470#endif
1471#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1472[[nodiscard]] bool emitArrayElem(PrimType, uint32_t, SourceInfo I);
1473#endif
1474#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1475bool
1476#if defined(GET_EVAL_IMPL)
1477EvalEmitter
1478#else
1479ByteCodeEmitter
1480#endif
1481::emitArrayElem(PrimType T0, uint32_t A0, SourceInfo I) {
1482 switch (T0) {
1483 case PT_Sint8:
1484 return emitArrayElemSint8(A0, I);
1485 case PT_Uint8:
1486 return emitArrayElemUint8(A0, I);
1487 case PT_Sint16:
1488 return emitArrayElemSint16(A0, I);
1489 case PT_Uint16:
1490 return emitArrayElemUint16(A0, I);
1491 case PT_Sint32:
1492 return emitArrayElemSint32(A0, I);
1493 case PT_Uint32:
1494 return emitArrayElemUint32(A0, I);
1495 case PT_Sint64:
1496 return emitArrayElemSint64(A0, I);
1497 case PT_Uint64:
1498 return emitArrayElemUint64(A0, I);
1499 case PT_IntAP:
1500 return emitArrayElemIntAP(A0, I);
1501 case PT_IntAPS:
1502 return emitArrayElemIntAPS(A0, I);
1503 case PT_Bool:
1504 return emitArrayElemBool(A0, I);
1505 case PT_FixedPoint:
1506 return emitArrayElemFixedPoint(A0, I);
1507 case PT_Ptr:
1508 return emitArrayElemPtr(A0, I);
1509 case PT_MemberPtr:
1510 return emitArrayElemMemberPtr(A0, I);
1511 case PT_Float:
1512 return emitArrayElemFloat(A0, I);
1513 }
1514 llvm_unreachable("invalid enum value");
1515}
1516#endif
1517#ifdef GET_LINK_IMPL
1518bool ByteCodeEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1519 return emitOp<uint32_t>(OP_ArrayElemSint8, A0, L);
1520}
1521bool ByteCodeEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1522 return emitOp<uint32_t>(OP_ArrayElemUint8, A0, L);
1523}
1524bool ByteCodeEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1525 return emitOp<uint32_t>(OP_ArrayElemSint16, A0, L);
1526}
1527bool ByteCodeEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1528 return emitOp<uint32_t>(OP_ArrayElemUint16, A0, L);
1529}
1530bool ByteCodeEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1531 return emitOp<uint32_t>(OP_ArrayElemSint32, A0, L);
1532}
1533bool ByteCodeEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1534 return emitOp<uint32_t>(OP_ArrayElemUint32, A0, L);
1535}
1536bool ByteCodeEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
1537 return emitOp<uint32_t>(OP_ArrayElemSint64, A0, L);
1538}
1539bool ByteCodeEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
1540 return emitOp<uint32_t>(OP_ArrayElemUint64, A0, L);
1541}
1542bool ByteCodeEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
1543 return emitOp<uint32_t>(OP_ArrayElemIntAP, A0, L);
1544}
1545bool ByteCodeEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
1546 return emitOp<uint32_t>(OP_ArrayElemIntAPS, A0, L);
1547}
1548bool ByteCodeEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
1549 return emitOp<uint32_t>(OP_ArrayElemBool, A0, L);
1550}
1551bool ByteCodeEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
1552 return emitOp<uint32_t>(OP_ArrayElemFixedPoint, A0, L);
1553}
1554bool ByteCodeEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
1555 return emitOp<uint32_t>(OP_ArrayElemPtr, A0, L);
1556}
1557bool ByteCodeEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
1558 return emitOp<uint32_t>(OP_ArrayElemMemberPtr, A0, L);
1559}
1560bool ByteCodeEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
1561 return emitOp<uint32_t>(OP_ArrayElemFloat, A0, L);
1562}
1563#endif
1564#ifdef GET_EVAL_IMPL
1565bool EvalEmitter::emitArrayElemSint8( uint32_t A0, SourceInfo L) {
1566 if (!isActive()) return true;
1567 CurrentSource = L;
1568 return ArrayElem<PT_Sint8>(S, OpPC, A0);
1569}
1570bool EvalEmitter::emitArrayElemUint8( uint32_t A0, SourceInfo L) {
1571 if (!isActive()) return true;
1572 CurrentSource = L;
1573 return ArrayElem<PT_Uint8>(S, OpPC, A0);
1574}
1575bool EvalEmitter::emitArrayElemSint16( uint32_t A0, SourceInfo L) {
1576 if (!isActive()) return true;
1577 CurrentSource = L;
1578 return ArrayElem<PT_Sint16>(S, OpPC, A0);
1579}
1580bool EvalEmitter::emitArrayElemUint16( uint32_t A0, SourceInfo L) {
1581 if (!isActive()) return true;
1582 CurrentSource = L;
1583 return ArrayElem<PT_Uint16>(S, OpPC, A0);
1584}
1585bool EvalEmitter::emitArrayElemSint32( uint32_t A0, SourceInfo L) {
1586 if (!isActive()) return true;
1587 CurrentSource = L;
1588 return ArrayElem<PT_Sint32>(S, OpPC, A0);
1589}
1590bool EvalEmitter::emitArrayElemUint32( uint32_t A0, SourceInfo L) {
1591 if (!isActive()) return true;
1592 CurrentSource = L;
1593 return ArrayElem<PT_Uint32>(S, OpPC, A0);
1594}
1595bool EvalEmitter::emitArrayElemSint64( uint32_t A0, SourceInfo L) {
1596 if (!isActive()) return true;
1597 CurrentSource = L;
1598 return ArrayElem<PT_Sint64>(S, OpPC, A0);
1599}
1600bool EvalEmitter::emitArrayElemUint64( uint32_t A0, SourceInfo L) {
1601 if (!isActive()) return true;
1602 CurrentSource = L;
1603 return ArrayElem<PT_Uint64>(S, OpPC, A0);
1604}
1605bool EvalEmitter::emitArrayElemIntAP( uint32_t A0, SourceInfo L) {
1606 if (!isActive()) return true;
1607 CurrentSource = L;
1608 return ArrayElem<PT_IntAP>(S, OpPC, A0);
1609}
1610bool EvalEmitter::emitArrayElemIntAPS( uint32_t A0, SourceInfo L) {
1611 if (!isActive()) return true;
1612 CurrentSource = L;
1613 return ArrayElem<PT_IntAPS>(S, OpPC, A0);
1614}
1615bool EvalEmitter::emitArrayElemBool( uint32_t A0, SourceInfo L) {
1616 if (!isActive()) return true;
1617 CurrentSource = L;
1618 return ArrayElem<PT_Bool>(S, OpPC, A0);
1619}
1620bool EvalEmitter::emitArrayElemFixedPoint( uint32_t A0, SourceInfo L) {
1621 if (!isActive()) return true;
1622 CurrentSource = L;
1623 return ArrayElem<PT_FixedPoint>(S, OpPC, A0);
1624}
1625bool EvalEmitter::emitArrayElemPtr( uint32_t A0, SourceInfo L) {
1626 if (!isActive()) return true;
1627 CurrentSource = L;
1628 return ArrayElem<PT_Ptr>(S, OpPC, A0);
1629}
1630bool EvalEmitter::emitArrayElemMemberPtr( uint32_t A0, SourceInfo L) {
1631 if (!isActive()) return true;
1632 CurrentSource = L;
1633 return ArrayElem<PT_MemberPtr>(S, OpPC, A0);
1634}
1635bool EvalEmitter::emitArrayElemFloat( uint32_t A0, SourceInfo L) {
1636 if (!isActive()) return true;
1637 CurrentSource = L;
1638 return ArrayElem<PT_Float>(S, OpPC, A0);
1639}
1640#endif
1641#ifdef GET_OPCODE_NAMES
1642OP_ArrayElemPopSint8,
1643OP_ArrayElemPopUint8,
1644OP_ArrayElemPopSint16,
1645OP_ArrayElemPopUint16,
1646OP_ArrayElemPopSint32,
1647OP_ArrayElemPopUint32,
1648OP_ArrayElemPopSint64,
1649OP_ArrayElemPopUint64,
1650OP_ArrayElemPopIntAP,
1651OP_ArrayElemPopIntAPS,
1652OP_ArrayElemPopBool,
1653OP_ArrayElemPopFixedPoint,
1654OP_ArrayElemPopPtr,
1655OP_ArrayElemPopMemberPtr,
1656OP_ArrayElemPopFloat,
1657#endif
1658#ifdef GET_INTERP
1659case OP_ArrayElemPopSint8: {
1660 const auto V0 = ReadArg<uint32_t>(S, PC);
1661 if (!ArrayElemPop<PT_Sint8>(S, OpPC, V0))
1662 return false;
1663 continue;
1664}
1665case OP_ArrayElemPopUint8: {
1666 const auto V0 = ReadArg<uint32_t>(S, PC);
1667 if (!ArrayElemPop<PT_Uint8>(S, OpPC, V0))
1668 return false;
1669 continue;
1670}
1671case OP_ArrayElemPopSint16: {
1672 const auto V0 = ReadArg<uint32_t>(S, PC);
1673 if (!ArrayElemPop<PT_Sint16>(S, OpPC, V0))
1674 return false;
1675 continue;
1676}
1677case OP_ArrayElemPopUint16: {
1678 const auto V0 = ReadArg<uint32_t>(S, PC);
1679 if (!ArrayElemPop<PT_Uint16>(S, OpPC, V0))
1680 return false;
1681 continue;
1682}
1683case OP_ArrayElemPopSint32: {
1684 const auto V0 = ReadArg<uint32_t>(S, PC);
1685 if (!ArrayElemPop<PT_Sint32>(S, OpPC, V0))
1686 return false;
1687 continue;
1688}
1689case OP_ArrayElemPopUint32: {
1690 const auto V0 = ReadArg<uint32_t>(S, PC);
1691 if (!ArrayElemPop<PT_Uint32>(S, OpPC, V0))
1692 return false;
1693 continue;
1694}
1695case OP_ArrayElemPopSint64: {
1696 const auto V0 = ReadArg<uint32_t>(S, PC);
1697 if (!ArrayElemPop<PT_Sint64>(S, OpPC, V0))
1698 return false;
1699 continue;
1700}
1701case OP_ArrayElemPopUint64: {
1702 const auto V0 = ReadArg<uint32_t>(S, PC);
1703 if (!ArrayElemPop<PT_Uint64>(S, OpPC, V0))
1704 return false;
1705 continue;
1706}
1707case OP_ArrayElemPopIntAP: {
1708 const auto V0 = ReadArg<uint32_t>(S, PC);
1709 if (!ArrayElemPop<PT_IntAP>(S, OpPC, V0))
1710 return false;
1711 continue;
1712}
1713case OP_ArrayElemPopIntAPS: {
1714 const auto V0 = ReadArg<uint32_t>(S, PC);
1715 if (!ArrayElemPop<PT_IntAPS>(S, OpPC, V0))
1716 return false;
1717 continue;
1718}
1719case OP_ArrayElemPopBool: {
1720 const auto V0 = ReadArg<uint32_t>(S, PC);
1721 if (!ArrayElemPop<PT_Bool>(S, OpPC, V0))
1722 return false;
1723 continue;
1724}
1725case OP_ArrayElemPopFixedPoint: {
1726 const auto V0 = ReadArg<uint32_t>(S, PC);
1727 if (!ArrayElemPop<PT_FixedPoint>(S, OpPC, V0))
1728 return false;
1729 continue;
1730}
1731case OP_ArrayElemPopPtr: {
1732 const auto V0 = ReadArg<uint32_t>(S, PC);
1733 if (!ArrayElemPop<PT_Ptr>(S, OpPC, V0))
1734 return false;
1735 continue;
1736}
1737case OP_ArrayElemPopMemberPtr: {
1738 const auto V0 = ReadArg<uint32_t>(S, PC);
1739 if (!ArrayElemPop<PT_MemberPtr>(S, OpPC, V0))
1740 return false;
1741 continue;
1742}
1743case OP_ArrayElemPopFloat: {
1744 const auto V0 = ReadArg<uint32_t>(S, PC);
1745 if (!ArrayElemPop<PT_Float>(S, OpPC, V0))
1746 return false;
1747 continue;
1748}
1749#endif
1750#ifdef GET_DISASM
1751case OP_ArrayElemPopSint8:
1752 Text.Op = PrintName("ArrayElemPopSint8");
1753 Text.Args.push_back(printArg<uint32_t>(P, PC));
1754 break;
1755case OP_ArrayElemPopUint8:
1756 Text.Op = PrintName("ArrayElemPopUint8");
1757 Text.Args.push_back(printArg<uint32_t>(P, PC));
1758 break;
1759case OP_ArrayElemPopSint16:
1760 Text.Op = PrintName("ArrayElemPopSint16");
1761 Text.Args.push_back(printArg<uint32_t>(P, PC));
1762 break;
1763case OP_ArrayElemPopUint16:
1764 Text.Op = PrintName("ArrayElemPopUint16");
1765 Text.Args.push_back(printArg<uint32_t>(P, PC));
1766 break;
1767case OP_ArrayElemPopSint32:
1768 Text.Op = PrintName("ArrayElemPopSint32");
1769 Text.Args.push_back(printArg<uint32_t>(P, PC));
1770 break;
1771case OP_ArrayElemPopUint32:
1772 Text.Op = PrintName("ArrayElemPopUint32");
1773 Text.Args.push_back(printArg<uint32_t>(P, PC));
1774 break;
1775case OP_ArrayElemPopSint64:
1776 Text.Op = PrintName("ArrayElemPopSint64");
1777 Text.Args.push_back(printArg<uint32_t>(P, PC));
1778 break;
1779case OP_ArrayElemPopUint64:
1780 Text.Op = PrintName("ArrayElemPopUint64");
1781 Text.Args.push_back(printArg<uint32_t>(P, PC));
1782 break;
1783case OP_ArrayElemPopIntAP:
1784 Text.Op = PrintName("ArrayElemPopIntAP");
1785 Text.Args.push_back(printArg<uint32_t>(P, PC));
1786 break;
1787case OP_ArrayElemPopIntAPS:
1788 Text.Op = PrintName("ArrayElemPopIntAPS");
1789 Text.Args.push_back(printArg<uint32_t>(P, PC));
1790 break;
1791case OP_ArrayElemPopBool:
1792 Text.Op = PrintName("ArrayElemPopBool");
1793 Text.Args.push_back(printArg<uint32_t>(P, PC));
1794 break;
1795case OP_ArrayElemPopFixedPoint:
1796 Text.Op = PrintName("ArrayElemPopFixedPoint");
1797 Text.Args.push_back(printArg<uint32_t>(P, PC));
1798 break;
1799case OP_ArrayElemPopPtr:
1800 Text.Op = PrintName("ArrayElemPopPtr");
1801 Text.Args.push_back(printArg<uint32_t>(P, PC));
1802 break;
1803case OP_ArrayElemPopMemberPtr:
1804 Text.Op = PrintName("ArrayElemPopMemberPtr");
1805 Text.Args.push_back(printArg<uint32_t>(P, PC));
1806 break;
1807case OP_ArrayElemPopFloat:
1808 Text.Op = PrintName("ArrayElemPopFloat");
1809 Text.Args.push_back(printArg<uint32_t>(P, PC));
1810 break;
1811#endif
1812#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1813bool emitArrayElemPopSint8( uint32_t , SourceInfo);
1814bool emitArrayElemPopUint8( uint32_t , SourceInfo);
1815bool emitArrayElemPopSint16( uint32_t , SourceInfo);
1816bool emitArrayElemPopUint16( uint32_t , SourceInfo);
1817bool emitArrayElemPopSint32( uint32_t , SourceInfo);
1818bool emitArrayElemPopUint32( uint32_t , SourceInfo);
1819bool emitArrayElemPopSint64( uint32_t , SourceInfo);
1820bool emitArrayElemPopUint64( uint32_t , SourceInfo);
1821bool emitArrayElemPopIntAP( uint32_t , SourceInfo);
1822bool emitArrayElemPopIntAPS( uint32_t , SourceInfo);
1823bool emitArrayElemPopBool( uint32_t , SourceInfo);
1824bool emitArrayElemPopFixedPoint( uint32_t , SourceInfo);
1825bool emitArrayElemPopPtr( uint32_t , SourceInfo);
1826bool emitArrayElemPopMemberPtr( uint32_t , SourceInfo);
1827bool emitArrayElemPopFloat( uint32_t , SourceInfo);
1828#endif
1829#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
1830[[nodiscard]] bool emitArrayElemPop(PrimType, uint32_t, SourceInfo I);
1831#endif
1832#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
1833bool
1834#if defined(GET_EVAL_IMPL)
1835EvalEmitter
1836#else
1837ByteCodeEmitter
1838#endif
1839::emitArrayElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
1840 switch (T0) {
1841 case PT_Sint8:
1842 return emitArrayElemPopSint8(A0, I);
1843 case PT_Uint8:
1844 return emitArrayElemPopUint8(A0, I);
1845 case PT_Sint16:
1846 return emitArrayElemPopSint16(A0, I);
1847 case PT_Uint16:
1848 return emitArrayElemPopUint16(A0, I);
1849 case PT_Sint32:
1850 return emitArrayElemPopSint32(A0, I);
1851 case PT_Uint32:
1852 return emitArrayElemPopUint32(A0, I);
1853 case PT_Sint64:
1854 return emitArrayElemPopSint64(A0, I);
1855 case PT_Uint64:
1856 return emitArrayElemPopUint64(A0, I);
1857 case PT_IntAP:
1858 return emitArrayElemPopIntAP(A0, I);
1859 case PT_IntAPS:
1860 return emitArrayElemPopIntAPS(A0, I);
1861 case PT_Bool:
1862 return emitArrayElemPopBool(A0, I);
1863 case PT_FixedPoint:
1864 return emitArrayElemPopFixedPoint(A0, I);
1865 case PT_Ptr:
1866 return emitArrayElemPopPtr(A0, I);
1867 case PT_MemberPtr:
1868 return emitArrayElemPopMemberPtr(A0, I);
1869 case PT_Float:
1870 return emitArrayElemPopFloat(A0, I);
1871 }
1872 llvm_unreachable("invalid enum value");
1873}
1874#endif
1875#ifdef GET_LINK_IMPL
1876bool ByteCodeEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
1877 return emitOp<uint32_t>(OP_ArrayElemPopSint8, A0, L);
1878}
1879bool ByteCodeEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
1880 return emitOp<uint32_t>(OP_ArrayElemPopUint8, A0, L);
1881}
1882bool ByteCodeEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
1883 return emitOp<uint32_t>(OP_ArrayElemPopSint16, A0, L);
1884}
1885bool ByteCodeEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
1886 return emitOp<uint32_t>(OP_ArrayElemPopUint16, A0, L);
1887}
1888bool ByteCodeEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
1889 return emitOp<uint32_t>(OP_ArrayElemPopSint32, A0, L);
1890}
1891bool ByteCodeEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
1892 return emitOp<uint32_t>(OP_ArrayElemPopUint32, A0, L);
1893}
1894bool ByteCodeEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
1895 return emitOp<uint32_t>(OP_ArrayElemPopSint64, A0, L);
1896}
1897bool ByteCodeEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
1898 return emitOp<uint32_t>(OP_ArrayElemPopUint64, A0, L);
1899}
1900bool ByteCodeEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
1901 return emitOp<uint32_t>(OP_ArrayElemPopIntAP, A0, L);
1902}
1903bool ByteCodeEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
1904 return emitOp<uint32_t>(OP_ArrayElemPopIntAPS, A0, L);
1905}
1906bool ByteCodeEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
1907 return emitOp<uint32_t>(OP_ArrayElemPopBool, A0, L);
1908}
1909bool ByteCodeEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
1910 return emitOp<uint32_t>(OP_ArrayElemPopFixedPoint, A0, L);
1911}
1912bool ByteCodeEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
1913 return emitOp<uint32_t>(OP_ArrayElemPopPtr, A0, L);
1914}
1915bool ByteCodeEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
1916 return emitOp<uint32_t>(OP_ArrayElemPopMemberPtr, A0, L);
1917}
1918bool ByteCodeEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
1919 return emitOp<uint32_t>(OP_ArrayElemPopFloat, A0, L);
1920}
1921#endif
1922#ifdef GET_EVAL_IMPL
1923bool EvalEmitter::emitArrayElemPopSint8( uint32_t A0, SourceInfo L) {
1924 if (!isActive()) return true;
1925 CurrentSource = L;
1926 return ArrayElemPop<PT_Sint8>(S, OpPC, A0);
1927}
1928bool EvalEmitter::emitArrayElemPopUint8( uint32_t A0, SourceInfo L) {
1929 if (!isActive()) return true;
1930 CurrentSource = L;
1931 return ArrayElemPop<PT_Uint8>(S, OpPC, A0);
1932}
1933bool EvalEmitter::emitArrayElemPopSint16( uint32_t A0, SourceInfo L) {
1934 if (!isActive()) return true;
1935 CurrentSource = L;
1936 return ArrayElemPop<PT_Sint16>(S, OpPC, A0);
1937}
1938bool EvalEmitter::emitArrayElemPopUint16( uint32_t A0, SourceInfo L) {
1939 if (!isActive()) return true;
1940 CurrentSource = L;
1941 return ArrayElemPop<PT_Uint16>(S, OpPC, A0);
1942}
1943bool EvalEmitter::emitArrayElemPopSint32( uint32_t A0, SourceInfo L) {
1944 if (!isActive()) return true;
1945 CurrentSource = L;
1946 return ArrayElemPop<PT_Sint32>(S, OpPC, A0);
1947}
1948bool EvalEmitter::emitArrayElemPopUint32( uint32_t A0, SourceInfo L) {
1949 if (!isActive()) return true;
1950 CurrentSource = L;
1951 return ArrayElemPop<PT_Uint32>(S, OpPC, A0);
1952}
1953bool EvalEmitter::emitArrayElemPopSint64( uint32_t A0, SourceInfo L) {
1954 if (!isActive()) return true;
1955 CurrentSource = L;
1956 return ArrayElemPop<PT_Sint64>(S, OpPC, A0);
1957}
1958bool EvalEmitter::emitArrayElemPopUint64( uint32_t A0, SourceInfo L) {
1959 if (!isActive()) return true;
1960 CurrentSource = L;
1961 return ArrayElemPop<PT_Uint64>(S, OpPC, A0);
1962}
1963bool EvalEmitter::emitArrayElemPopIntAP( uint32_t A0, SourceInfo L) {
1964 if (!isActive()) return true;
1965 CurrentSource = L;
1966 return ArrayElemPop<PT_IntAP>(S, OpPC, A0);
1967}
1968bool EvalEmitter::emitArrayElemPopIntAPS( uint32_t A0, SourceInfo L) {
1969 if (!isActive()) return true;
1970 CurrentSource = L;
1971 return ArrayElemPop<PT_IntAPS>(S, OpPC, A0);
1972}
1973bool EvalEmitter::emitArrayElemPopBool( uint32_t A0, SourceInfo L) {
1974 if (!isActive()) return true;
1975 CurrentSource = L;
1976 return ArrayElemPop<PT_Bool>(S, OpPC, A0);
1977}
1978bool EvalEmitter::emitArrayElemPopFixedPoint( uint32_t A0, SourceInfo L) {
1979 if (!isActive()) return true;
1980 CurrentSource = L;
1981 return ArrayElemPop<PT_FixedPoint>(S, OpPC, A0);
1982}
1983bool EvalEmitter::emitArrayElemPopPtr( uint32_t A0, SourceInfo L) {
1984 if (!isActive()) return true;
1985 CurrentSource = L;
1986 return ArrayElemPop<PT_Ptr>(S, OpPC, A0);
1987}
1988bool EvalEmitter::emitArrayElemPopMemberPtr( uint32_t A0, SourceInfo L) {
1989 if (!isActive()) return true;
1990 CurrentSource = L;
1991 return ArrayElemPop<PT_MemberPtr>(S, OpPC, A0);
1992}
1993bool EvalEmitter::emitArrayElemPopFloat( uint32_t A0, SourceInfo L) {
1994 if (!isActive()) return true;
1995 CurrentSource = L;
1996 return ArrayElemPop<PT_Float>(S, OpPC, A0);
1997}
1998#endif
1999#ifdef GET_OPCODE_NAMES
2000OP_ArrayElemPtrSint8,
2001OP_ArrayElemPtrUint8,
2002OP_ArrayElemPtrSint16,
2003OP_ArrayElemPtrUint16,
2004OP_ArrayElemPtrSint32,
2005OP_ArrayElemPtrUint32,
2006OP_ArrayElemPtrSint64,
2007OP_ArrayElemPtrUint64,
2008OP_ArrayElemPtrIntAP,
2009OP_ArrayElemPtrIntAPS,
2010OP_ArrayElemPtrBool,
2011#endif
2012#ifdef GET_INTERP
2013case OP_ArrayElemPtrSint8: {
2014 if (!ArrayElemPtr<PT_Sint8>(S, OpPC))
2015 return false;
2016 continue;
2017}
2018case OP_ArrayElemPtrUint8: {
2019 if (!ArrayElemPtr<PT_Uint8>(S, OpPC))
2020 return false;
2021 continue;
2022}
2023case OP_ArrayElemPtrSint16: {
2024 if (!ArrayElemPtr<PT_Sint16>(S, OpPC))
2025 return false;
2026 continue;
2027}
2028case OP_ArrayElemPtrUint16: {
2029 if (!ArrayElemPtr<PT_Uint16>(S, OpPC))
2030 return false;
2031 continue;
2032}
2033case OP_ArrayElemPtrSint32: {
2034 if (!ArrayElemPtr<PT_Sint32>(S, OpPC))
2035 return false;
2036 continue;
2037}
2038case OP_ArrayElemPtrUint32: {
2039 if (!ArrayElemPtr<PT_Uint32>(S, OpPC))
2040 return false;
2041 continue;
2042}
2043case OP_ArrayElemPtrSint64: {
2044 if (!ArrayElemPtr<PT_Sint64>(S, OpPC))
2045 return false;
2046 continue;
2047}
2048case OP_ArrayElemPtrUint64: {
2049 if (!ArrayElemPtr<PT_Uint64>(S, OpPC))
2050 return false;
2051 continue;
2052}
2053case OP_ArrayElemPtrIntAP: {
2054 if (!ArrayElemPtr<PT_IntAP>(S, OpPC))
2055 return false;
2056 continue;
2057}
2058case OP_ArrayElemPtrIntAPS: {
2059 if (!ArrayElemPtr<PT_IntAPS>(S, OpPC))
2060 return false;
2061 continue;
2062}
2063case OP_ArrayElemPtrBool: {
2064 if (!ArrayElemPtr<PT_Bool>(S, OpPC))
2065 return false;
2066 continue;
2067}
2068#endif
2069#ifdef GET_DISASM
2070case OP_ArrayElemPtrSint8:
2071 Text.Op = PrintName("ArrayElemPtrSint8");
2072 break;
2073case OP_ArrayElemPtrUint8:
2074 Text.Op = PrintName("ArrayElemPtrUint8");
2075 break;
2076case OP_ArrayElemPtrSint16:
2077 Text.Op = PrintName("ArrayElemPtrSint16");
2078 break;
2079case OP_ArrayElemPtrUint16:
2080 Text.Op = PrintName("ArrayElemPtrUint16");
2081 break;
2082case OP_ArrayElemPtrSint32:
2083 Text.Op = PrintName("ArrayElemPtrSint32");
2084 break;
2085case OP_ArrayElemPtrUint32:
2086 Text.Op = PrintName("ArrayElemPtrUint32");
2087 break;
2088case OP_ArrayElemPtrSint64:
2089 Text.Op = PrintName("ArrayElemPtrSint64");
2090 break;
2091case OP_ArrayElemPtrUint64:
2092 Text.Op = PrintName("ArrayElemPtrUint64");
2093 break;
2094case OP_ArrayElemPtrIntAP:
2095 Text.Op = PrintName("ArrayElemPtrIntAP");
2096 break;
2097case OP_ArrayElemPtrIntAPS:
2098 Text.Op = PrintName("ArrayElemPtrIntAPS");
2099 break;
2100case OP_ArrayElemPtrBool:
2101 Text.Op = PrintName("ArrayElemPtrBool");
2102 break;
2103#endif
2104#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2105bool emitArrayElemPtrSint8(SourceInfo);
2106bool emitArrayElemPtrUint8(SourceInfo);
2107bool emitArrayElemPtrSint16(SourceInfo);
2108bool emitArrayElemPtrUint16(SourceInfo);
2109bool emitArrayElemPtrSint32(SourceInfo);
2110bool emitArrayElemPtrUint32(SourceInfo);
2111bool emitArrayElemPtrSint64(SourceInfo);
2112bool emitArrayElemPtrUint64(SourceInfo);
2113bool emitArrayElemPtrIntAP(SourceInfo);
2114bool emitArrayElemPtrIntAPS(SourceInfo);
2115bool emitArrayElemPtrBool(SourceInfo);
2116#endif
2117#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2118[[nodiscard]] bool emitArrayElemPtr(PrimType, SourceInfo I);
2119#endif
2120#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2121bool
2122#if defined(GET_EVAL_IMPL)
2123EvalEmitter
2124#else
2125ByteCodeEmitter
2126#endif
2127::emitArrayElemPtr(PrimType T0, SourceInfo I) {
2128 switch (T0) {
2129 case PT_Sint8:
2130 return emitArrayElemPtrSint8(I);
2131 case PT_Uint8:
2132 return emitArrayElemPtrUint8(I);
2133 case PT_Sint16:
2134 return emitArrayElemPtrSint16(I);
2135 case PT_Uint16:
2136 return emitArrayElemPtrUint16(I);
2137 case PT_Sint32:
2138 return emitArrayElemPtrSint32(I);
2139 case PT_Uint32:
2140 return emitArrayElemPtrUint32(I);
2141 case PT_Sint64:
2142 return emitArrayElemPtrSint64(I);
2143 case PT_Uint64:
2144 return emitArrayElemPtrUint64(I);
2145 case PT_IntAP:
2146 return emitArrayElemPtrIntAP(I);
2147 case PT_IntAPS:
2148 return emitArrayElemPtrIntAPS(I);
2149 case PT_Bool:
2150 return emitArrayElemPtrBool(I);
2151 default: llvm_unreachable("invalid type: emitArrayElemPtr");
2152 }
2153 llvm_unreachable("invalid enum value");
2154}
2155#endif
2156#ifdef GET_LINK_IMPL
2157bool ByteCodeEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2158 return emitOp<>(OP_ArrayElemPtrSint8, L);
2159}
2160bool ByteCodeEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2161 return emitOp<>(OP_ArrayElemPtrUint8, L);
2162}
2163bool ByteCodeEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2164 return emitOp<>(OP_ArrayElemPtrSint16, L);
2165}
2166bool ByteCodeEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2167 return emitOp<>(OP_ArrayElemPtrUint16, L);
2168}
2169bool ByteCodeEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2170 return emitOp<>(OP_ArrayElemPtrSint32, L);
2171}
2172bool ByteCodeEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2173 return emitOp<>(OP_ArrayElemPtrUint32, L);
2174}
2175bool ByteCodeEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2176 return emitOp<>(OP_ArrayElemPtrSint64, L);
2177}
2178bool ByteCodeEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2179 return emitOp<>(OP_ArrayElemPtrUint64, L);
2180}
2181bool ByteCodeEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2182 return emitOp<>(OP_ArrayElemPtrIntAP, L);
2183}
2184bool ByteCodeEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2185 return emitOp<>(OP_ArrayElemPtrIntAPS, L);
2186}
2187bool ByteCodeEmitter::emitArrayElemPtrBool(SourceInfo L) {
2188 return emitOp<>(OP_ArrayElemPtrBool, L);
2189}
2190#endif
2191#ifdef GET_EVAL_IMPL
2192bool EvalEmitter::emitArrayElemPtrSint8(SourceInfo L) {
2193 if (!isActive()) return true;
2194 CurrentSource = L;
2195 return ArrayElemPtr<PT_Sint8>(S, OpPC);
2196}
2197bool EvalEmitter::emitArrayElemPtrUint8(SourceInfo L) {
2198 if (!isActive()) return true;
2199 CurrentSource = L;
2200 return ArrayElemPtr<PT_Uint8>(S, OpPC);
2201}
2202bool EvalEmitter::emitArrayElemPtrSint16(SourceInfo L) {
2203 if (!isActive()) return true;
2204 CurrentSource = L;
2205 return ArrayElemPtr<PT_Sint16>(S, OpPC);
2206}
2207bool EvalEmitter::emitArrayElemPtrUint16(SourceInfo L) {
2208 if (!isActive()) return true;
2209 CurrentSource = L;
2210 return ArrayElemPtr<PT_Uint16>(S, OpPC);
2211}
2212bool EvalEmitter::emitArrayElemPtrSint32(SourceInfo L) {
2213 if (!isActive()) return true;
2214 CurrentSource = L;
2215 return ArrayElemPtr<PT_Sint32>(S, OpPC);
2216}
2217bool EvalEmitter::emitArrayElemPtrUint32(SourceInfo L) {
2218 if (!isActive()) return true;
2219 CurrentSource = L;
2220 return ArrayElemPtr<PT_Uint32>(S, OpPC);
2221}
2222bool EvalEmitter::emitArrayElemPtrSint64(SourceInfo L) {
2223 if (!isActive()) return true;
2224 CurrentSource = L;
2225 return ArrayElemPtr<PT_Sint64>(S, OpPC);
2226}
2227bool EvalEmitter::emitArrayElemPtrUint64(SourceInfo L) {
2228 if (!isActive()) return true;
2229 CurrentSource = L;
2230 return ArrayElemPtr<PT_Uint64>(S, OpPC);
2231}
2232bool EvalEmitter::emitArrayElemPtrIntAP(SourceInfo L) {
2233 if (!isActive()) return true;
2234 CurrentSource = L;
2235 return ArrayElemPtr<PT_IntAP>(S, OpPC);
2236}
2237bool EvalEmitter::emitArrayElemPtrIntAPS(SourceInfo L) {
2238 if (!isActive()) return true;
2239 CurrentSource = L;
2240 return ArrayElemPtr<PT_IntAPS>(S, OpPC);
2241}
2242bool EvalEmitter::emitArrayElemPtrBool(SourceInfo L) {
2243 if (!isActive()) return true;
2244 CurrentSource = L;
2245 return ArrayElemPtr<PT_Bool>(S, OpPC);
2246}
2247#endif
2248#ifdef GET_OPCODE_NAMES
2249OP_ArrayElemPtrPopSint8,
2250OP_ArrayElemPtrPopUint8,
2251OP_ArrayElemPtrPopSint16,
2252OP_ArrayElemPtrPopUint16,
2253OP_ArrayElemPtrPopSint32,
2254OP_ArrayElemPtrPopUint32,
2255OP_ArrayElemPtrPopSint64,
2256OP_ArrayElemPtrPopUint64,
2257OP_ArrayElemPtrPopIntAP,
2258OP_ArrayElemPtrPopIntAPS,
2259OP_ArrayElemPtrPopBool,
2260#endif
2261#ifdef GET_INTERP
2262case OP_ArrayElemPtrPopSint8: {
2263 if (!ArrayElemPtrPop<PT_Sint8>(S, OpPC))
2264 return false;
2265 continue;
2266}
2267case OP_ArrayElemPtrPopUint8: {
2268 if (!ArrayElemPtrPop<PT_Uint8>(S, OpPC))
2269 return false;
2270 continue;
2271}
2272case OP_ArrayElemPtrPopSint16: {
2273 if (!ArrayElemPtrPop<PT_Sint16>(S, OpPC))
2274 return false;
2275 continue;
2276}
2277case OP_ArrayElemPtrPopUint16: {
2278 if (!ArrayElemPtrPop<PT_Uint16>(S, OpPC))
2279 return false;
2280 continue;
2281}
2282case OP_ArrayElemPtrPopSint32: {
2283 if (!ArrayElemPtrPop<PT_Sint32>(S, OpPC))
2284 return false;
2285 continue;
2286}
2287case OP_ArrayElemPtrPopUint32: {
2288 if (!ArrayElemPtrPop<PT_Uint32>(S, OpPC))
2289 return false;
2290 continue;
2291}
2292case OP_ArrayElemPtrPopSint64: {
2293 if (!ArrayElemPtrPop<PT_Sint64>(S, OpPC))
2294 return false;
2295 continue;
2296}
2297case OP_ArrayElemPtrPopUint64: {
2298 if (!ArrayElemPtrPop<PT_Uint64>(S, OpPC))
2299 return false;
2300 continue;
2301}
2302case OP_ArrayElemPtrPopIntAP: {
2303 if (!ArrayElemPtrPop<PT_IntAP>(S, OpPC))
2304 return false;
2305 continue;
2306}
2307case OP_ArrayElemPtrPopIntAPS: {
2308 if (!ArrayElemPtrPop<PT_IntAPS>(S, OpPC))
2309 return false;
2310 continue;
2311}
2312case OP_ArrayElemPtrPopBool: {
2313 if (!ArrayElemPtrPop<PT_Bool>(S, OpPC))
2314 return false;
2315 continue;
2316}
2317#endif
2318#ifdef GET_DISASM
2319case OP_ArrayElemPtrPopSint8:
2320 Text.Op = PrintName("ArrayElemPtrPopSint8");
2321 break;
2322case OP_ArrayElemPtrPopUint8:
2323 Text.Op = PrintName("ArrayElemPtrPopUint8");
2324 break;
2325case OP_ArrayElemPtrPopSint16:
2326 Text.Op = PrintName("ArrayElemPtrPopSint16");
2327 break;
2328case OP_ArrayElemPtrPopUint16:
2329 Text.Op = PrintName("ArrayElemPtrPopUint16");
2330 break;
2331case OP_ArrayElemPtrPopSint32:
2332 Text.Op = PrintName("ArrayElemPtrPopSint32");
2333 break;
2334case OP_ArrayElemPtrPopUint32:
2335 Text.Op = PrintName("ArrayElemPtrPopUint32");
2336 break;
2337case OP_ArrayElemPtrPopSint64:
2338 Text.Op = PrintName("ArrayElemPtrPopSint64");
2339 break;
2340case OP_ArrayElemPtrPopUint64:
2341 Text.Op = PrintName("ArrayElemPtrPopUint64");
2342 break;
2343case OP_ArrayElemPtrPopIntAP:
2344 Text.Op = PrintName("ArrayElemPtrPopIntAP");
2345 break;
2346case OP_ArrayElemPtrPopIntAPS:
2347 Text.Op = PrintName("ArrayElemPtrPopIntAPS");
2348 break;
2349case OP_ArrayElemPtrPopBool:
2350 Text.Op = PrintName("ArrayElemPtrPopBool");
2351 break;
2352#endif
2353#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2354bool emitArrayElemPtrPopSint8(SourceInfo);
2355bool emitArrayElemPtrPopUint8(SourceInfo);
2356bool emitArrayElemPtrPopSint16(SourceInfo);
2357bool emitArrayElemPtrPopUint16(SourceInfo);
2358bool emitArrayElemPtrPopSint32(SourceInfo);
2359bool emitArrayElemPtrPopUint32(SourceInfo);
2360bool emitArrayElemPtrPopSint64(SourceInfo);
2361bool emitArrayElemPtrPopUint64(SourceInfo);
2362bool emitArrayElemPtrPopIntAP(SourceInfo);
2363bool emitArrayElemPtrPopIntAPS(SourceInfo);
2364bool emitArrayElemPtrPopBool(SourceInfo);
2365#endif
2366#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2367[[nodiscard]] bool emitArrayElemPtrPop(PrimType, SourceInfo I);
2368#endif
2369#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2370bool
2371#if defined(GET_EVAL_IMPL)
2372EvalEmitter
2373#else
2374ByteCodeEmitter
2375#endif
2376::emitArrayElemPtrPop(PrimType T0, SourceInfo I) {
2377 switch (T0) {
2378 case PT_Sint8:
2379 return emitArrayElemPtrPopSint8(I);
2380 case PT_Uint8:
2381 return emitArrayElemPtrPopUint8(I);
2382 case PT_Sint16:
2383 return emitArrayElemPtrPopSint16(I);
2384 case PT_Uint16:
2385 return emitArrayElemPtrPopUint16(I);
2386 case PT_Sint32:
2387 return emitArrayElemPtrPopSint32(I);
2388 case PT_Uint32:
2389 return emitArrayElemPtrPopUint32(I);
2390 case PT_Sint64:
2391 return emitArrayElemPtrPopSint64(I);
2392 case PT_Uint64:
2393 return emitArrayElemPtrPopUint64(I);
2394 case PT_IntAP:
2395 return emitArrayElemPtrPopIntAP(I);
2396 case PT_IntAPS:
2397 return emitArrayElemPtrPopIntAPS(I);
2398 case PT_Bool:
2399 return emitArrayElemPtrPopBool(I);
2400 default: llvm_unreachable("invalid type: emitArrayElemPtrPop");
2401 }
2402 llvm_unreachable("invalid enum value");
2403}
2404#endif
2405#ifdef GET_LINK_IMPL
2406bool ByteCodeEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
2407 return emitOp<>(OP_ArrayElemPtrPopSint8, L);
2408}
2409bool ByteCodeEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
2410 return emitOp<>(OP_ArrayElemPtrPopUint8, L);
2411}
2412bool ByteCodeEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
2413 return emitOp<>(OP_ArrayElemPtrPopSint16, L);
2414}
2415bool ByteCodeEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
2416 return emitOp<>(OP_ArrayElemPtrPopUint16, L);
2417}
2418bool ByteCodeEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
2419 return emitOp<>(OP_ArrayElemPtrPopSint32, L);
2420}
2421bool ByteCodeEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
2422 return emitOp<>(OP_ArrayElemPtrPopUint32, L);
2423}
2424bool ByteCodeEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
2425 return emitOp<>(OP_ArrayElemPtrPopSint64, L);
2426}
2427bool ByteCodeEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
2428 return emitOp<>(OP_ArrayElemPtrPopUint64, L);
2429}
2430bool ByteCodeEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
2431 return emitOp<>(OP_ArrayElemPtrPopIntAP, L);
2432}
2433bool ByteCodeEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
2434 return emitOp<>(OP_ArrayElemPtrPopIntAPS, L);
2435}
2436bool ByteCodeEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
2437 return emitOp<>(OP_ArrayElemPtrPopBool, L);
2438}
2439#endif
2440#ifdef GET_EVAL_IMPL
2441bool EvalEmitter::emitArrayElemPtrPopSint8(SourceInfo L) {
2442 if (!isActive()) return true;
2443 CurrentSource = L;
2444 return ArrayElemPtrPop<PT_Sint8>(S, OpPC);
2445}
2446bool EvalEmitter::emitArrayElemPtrPopUint8(SourceInfo L) {
2447 if (!isActive()) return true;
2448 CurrentSource = L;
2449 return ArrayElemPtrPop<PT_Uint8>(S, OpPC);
2450}
2451bool EvalEmitter::emitArrayElemPtrPopSint16(SourceInfo L) {
2452 if (!isActive()) return true;
2453 CurrentSource = L;
2454 return ArrayElemPtrPop<PT_Sint16>(S, OpPC);
2455}
2456bool EvalEmitter::emitArrayElemPtrPopUint16(SourceInfo L) {
2457 if (!isActive()) return true;
2458 CurrentSource = L;
2459 return ArrayElemPtrPop<PT_Uint16>(S, OpPC);
2460}
2461bool EvalEmitter::emitArrayElemPtrPopSint32(SourceInfo L) {
2462 if (!isActive()) return true;
2463 CurrentSource = L;
2464 return ArrayElemPtrPop<PT_Sint32>(S, OpPC);
2465}
2466bool EvalEmitter::emitArrayElemPtrPopUint32(SourceInfo L) {
2467 if (!isActive()) return true;
2468 CurrentSource = L;
2469 return ArrayElemPtrPop<PT_Uint32>(S, OpPC);
2470}
2471bool EvalEmitter::emitArrayElemPtrPopSint64(SourceInfo L) {
2472 if (!isActive()) return true;
2473 CurrentSource = L;
2474 return ArrayElemPtrPop<PT_Sint64>(S, OpPC);
2475}
2476bool EvalEmitter::emitArrayElemPtrPopUint64(SourceInfo L) {
2477 if (!isActive()) return true;
2478 CurrentSource = L;
2479 return ArrayElemPtrPop<PT_Uint64>(S, OpPC);
2480}
2481bool EvalEmitter::emitArrayElemPtrPopIntAP(SourceInfo L) {
2482 if (!isActive()) return true;
2483 CurrentSource = L;
2484 return ArrayElemPtrPop<PT_IntAP>(S, OpPC);
2485}
2486bool EvalEmitter::emitArrayElemPtrPopIntAPS(SourceInfo L) {
2487 if (!isActive()) return true;
2488 CurrentSource = L;
2489 return ArrayElemPtrPop<PT_IntAPS>(S, OpPC);
2490}
2491bool EvalEmitter::emitArrayElemPtrPopBool(SourceInfo L) {
2492 if (!isActive()) return true;
2493 CurrentSource = L;
2494 return ArrayElemPtrPop<PT_Bool>(S, OpPC);
2495}
2496#endif
2497#ifdef GET_OPCODE_NAMES
2498OP_Assume,
2499#endif
2500#ifdef GET_INTERP
2501case OP_Assume: {
2502 if (!Assume(S, OpPC))
2503 return false;
2504 continue;
2505}
2506#endif
2507#ifdef GET_DISASM
2508case OP_Assume:
2509 Text.Op = PrintName("Assume");
2510 break;
2511#endif
2512#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2513bool emitAssume(SourceInfo);
2514#endif
2515#ifdef GET_LINK_IMPL
2516bool ByteCodeEmitter::emitAssume(SourceInfo L) {
2517 return emitOp<>(OP_Assume, L);
2518}
2519#endif
2520#ifdef GET_EVAL_IMPL
2521bool EvalEmitter::emitAssume(SourceInfo L) {
2522 if (!isActive()) return true;
2523 CurrentSource = L;
2524 return Assume(S, OpPC);
2525}
2526#endif
2527#ifdef GET_OPCODE_NAMES
2528OP_BCP,
2529#endif
2530#ifdef GET_INTERP
2531case OP_BCP: {
2532 const auto V0 = ReadArg<int32_t>(S, PC);
2533 const auto V1 = ReadArg<PrimType>(S, PC);
2534 if (!BCP(S, PC, V0, V1))
2535 return false;
2536 continue;
2537}
2538#endif
2539#ifdef GET_DISASM
2540case OP_BCP:
2541 Text.Op = PrintName("BCP");
2542 Text.Args.push_back(printArg<int32_t>(P, PC));
2543 Text.Args.push_back(printArg<PrimType>(P, PC));
2544 break;
2545#endif
2546#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2547bool emitBCP( int32_t , PrimType , SourceInfo);
2548#endif
2549#ifdef GET_LINK_IMPL
2550bool ByteCodeEmitter::emitBCP( int32_t A0, PrimType A1, SourceInfo L) {
2551 return emitOp<int32_t, PrimType>(OP_BCP, A0, A1, L);
2552}
2553#endif
2554#ifdef GET_OPCODE_NAMES
2555OP_BitAndSint8,
2556OP_BitAndUint8,
2557OP_BitAndSint16,
2558OP_BitAndUint16,
2559OP_BitAndSint32,
2560OP_BitAndUint32,
2561OP_BitAndSint64,
2562OP_BitAndUint64,
2563OP_BitAndIntAP,
2564OP_BitAndIntAPS,
2565OP_BitAndFixedPoint,
2566#endif
2567#ifdef GET_INTERP
2568case OP_BitAndSint8: {
2569 if (!BitAnd<PT_Sint8>(S, OpPC))
2570 return false;
2571 continue;
2572}
2573case OP_BitAndUint8: {
2574 if (!BitAnd<PT_Uint8>(S, OpPC))
2575 return false;
2576 continue;
2577}
2578case OP_BitAndSint16: {
2579 if (!BitAnd<PT_Sint16>(S, OpPC))
2580 return false;
2581 continue;
2582}
2583case OP_BitAndUint16: {
2584 if (!BitAnd<PT_Uint16>(S, OpPC))
2585 return false;
2586 continue;
2587}
2588case OP_BitAndSint32: {
2589 if (!BitAnd<PT_Sint32>(S, OpPC))
2590 return false;
2591 continue;
2592}
2593case OP_BitAndUint32: {
2594 if (!BitAnd<PT_Uint32>(S, OpPC))
2595 return false;
2596 continue;
2597}
2598case OP_BitAndSint64: {
2599 if (!BitAnd<PT_Sint64>(S, OpPC))
2600 return false;
2601 continue;
2602}
2603case OP_BitAndUint64: {
2604 if (!BitAnd<PT_Uint64>(S, OpPC))
2605 return false;
2606 continue;
2607}
2608case OP_BitAndIntAP: {
2609 if (!BitAnd<PT_IntAP>(S, OpPC))
2610 return false;
2611 continue;
2612}
2613case OP_BitAndIntAPS: {
2614 if (!BitAnd<PT_IntAPS>(S, OpPC))
2615 return false;
2616 continue;
2617}
2618case OP_BitAndFixedPoint: {
2619 if (!BitAnd<PT_FixedPoint>(S, OpPC))
2620 return false;
2621 continue;
2622}
2623#endif
2624#ifdef GET_DISASM
2625case OP_BitAndSint8:
2626 Text.Op = PrintName("BitAndSint8");
2627 break;
2628case OP_BitAndUint8:
2629 Text.Op = PrintName("BitAndUint8");
2630 break;
2631case OP_BitAndSint16:
2632 Text.Op = PrintName("BitAndSint16");
2633 break;
2634case OP_BitAndUint16:
2635 Text.Op = PrintName("BitAndUint16");
2636 break;
2637case OP_BitAndSint32:
2638 Text.Op = PrintName("BitAndSint32");
2639 break;
2640case OP_BitAndUint32:
2641 Text.Op = PrintName("BitAndUint32");
2642 break;
2643case OP_BitAndSint64:
2644 Text.Op = PrintName("BitAndSint64");
2645 break;
2646case OP_BitAndUint64:
2647 Text.Op = PrintName("BitAndUint64");
2648 break;
2649case OP_BitAndIntAP:
2650 Text.Op = PrintName("BitAndIntAP");
2651 break;
2652case OP_BitAndIntAPS:
2653 Text.Op = PrintName("BitAndIntAPS");
2654 break;
2655case OP_BitAndFixedPoint:
2656 Text.Op = PrintName("BitAndFixedPoint");
2657 break;
2658#endif
2659#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2660bool emitBitAndSint8(SourceInfo);
2661bool emitBitAndUint8(SourceInfo);
2662bool emitBitAndSint16(SourceInfo);
2663bool emitBitAndUint16(SourceInfo);
2664bool emitBitAndSint32(SourceInfo);
2665bool emitBitAndUint32(SourceInfo);
2666bool emitBitAndSint64(SourceInfo);
2667bool emitBitAndUint64(SourceInfo);
2668bool emitBitAndIntAP(SourceInfo);
2669bool emitBitAndIntAPS(SourceInfo);
2670bool emitBitAndFixedPoint(SourceInfo);
2671#endif
2672#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2673[[nodiscard]] bool emitBitAnd(PrimType, SourceInfo I);
2674#endif
2675#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
2676bool
2677#if defined(GET_EVAL_IMPL)
2678EvalEmitter
2679#else
2680ByteCodeEmitter
2681#endif
2682::emitBitAnd(PrimType T0, SourceInfo I) {
2683 switch (T0) {
2684 case PT_Sint8:
2685 return emitBitAndSint8(I);
2686 case PT_Uint8:
2687 return emitBitAndUint8(I);
2688 case PT_Sint16:
2689 return emitBitAndSint16(I);
2690 case PT_Uint16:
2691 return emitBitAndUint16(I);
2692 case PT_Sint32:
2693 return emitBitAndSint32(I);
2694 case PT_Uint32:
2695 return emitBitAndUint32(I);
2696 case PT_Sint64:
2697 return emitBitAndSint64(I);
2698 case PT_Uint64:
2699 return emitBitAndUint64(I);
2700 case PT_IntAP:
2701 return emitBitAndIntAP(I);
2702 case PT_IntAPS:
2703 return emitBitAndIntAPS(I);
2704 case PT_FixedPoint:
2705 return emitBitAndFixedPoint(I);
2706 default: llvm_unreachable("invalid type: emitBitAnd");
2707 }
2708 llvm_unreachable("invalid enum value");
2709}
2710#endif
2711#ifdef GET_LINK_IMPL
2712bool ByteCodeEmitter::emitBitAndSint8(SourceInfo L) {
2713 return emitOp<>(OP_BitAndSint8, L);
2714}
2715bool ByteCodeEmitter::emitBitAndUint8(SourceInfo L) {
2716 return emitOp<>(OP_BitAndUint8, L);
2717}
2718bool ByteCodeEmitter::emitBitAndSint16(SourceInfo L) {
2719 return emitOp<>(OP_BitAndSint16, L);
2720}
2721bool ByteCodeEmitter::emitBitAndUint16(SourceInfo L) {
2722 return emitOp<>(OP_BitAndUint16, L);
2723}
2724bool ByteCodeEmitter::emitBitAndSint32(SourceInfo L) {
2725 return emitOp<>(OP_BitAndSint32, L);
2726}
2727bool ByteCodeEmitter::emitBitAndUint32(SourceInfo L) {
2728 return emitOp<>(OP_BitAndUint32, L);
2729}
2730bool ByteCodeEmitter::emitBitAndSint64(SourceInfo L) {
2731 return emitOp<>(OP_BitAndSint64, L);
2732}
2733bool ByteCodeEmitter::emitBitAndUint64(SourceInfo L) {
2734 return emitOp<>(OP_BitAndUint64, L);
2735}
2736bool ByteCodeEmitter::emitBitAndIntAP(SourceInfo L) {
2737 return emitOp<>(OP_BitAndIntAP, L);
2738}
2739bool ByteCodeEmitter::emitBitAndIntAPS(SourceInfo L) {
2740 return emitOp<>(OP_BitAndIntAPS, L);
2741}
2742bool ByteCodeEmitter::emitBitAndFixedPoint(SourceInfo L) {
2743 return emitOp<>(OP_BitAndFixedPoint, L);
2744}
2745#endif
2746#ifdef GET_EVAL_IMPL
2747bool EvalEmitter::emitBitAndSint8(SourceInfo L) {
2748 if (!isActive()) return true;
2749 CurrentSource = L;
2750 return BitAnd<PT_Sint8>(S, OpPC);
2751}
2752bool EvalEmitter::emitBitAndUint8(SourceInfo L) {
2753 if (!isActive()) return true;
2754 CurrentSource = L;
2755 return BitAnd<PT_Uint8>(S, OpPC);
2756}
2757bool EvalEmitter::emitBitAndSint16(SourceInfo L) {
2758 if (!isActive()) return true;
2759 CurrentSource = L;
2760 return BitAnd<PT_Sint16>(S, OpPC);
2761}
2762bool EvalEmitter::emitBitAndUint16(SourceInfo L) {
2763 if (!isActive()) return true;
2764 CurrentSource = L;
2765 return BitAnd<PT_Uint16>(S, OpPC);
2766}
2767bool EvalEmitter::emitBitAndSint32(SourceInfo L) {
2768 if (!isActive()) return true;
2769 CurrentSource = L;
2770 return BitAnd<PT_Sint32>(S, OpPC);
2771}
2772bool EvalEmitter::emitBitAndUint32(SourceInfo L) {
2773 if (!isActive()) return true;
2774 CurrentSource = L;
2775 return BitAnd<PT_Uint32>(S, OpPC);
2776}
2777bool EvalEmitter::emitBitAndSint64(SourceInfo L) {
2778 if (!isActive()) return true;
2779 CurrentSource = L;
2780 return BitAnd<PT_Sint64>(S, OpPC);
2781}
2782bool EvalEmitter::emitBitAndUint64(SourceInfo L) {
2783 if (!isActive()) return true;
2784 CurrentSource = L;
2785 return BitAnd<PT_Uint64>(S, OpPC);
2786}
2787bool EvalEmitter::emitBitAndIntAP(SourceInfo L) {
2788 if (!isActive()) return true;
2789 CurrentSource = L;
2790 return BitAnd<PT_IntAP>(S, OpPC);
2791}
2792bool EvalEmitter::emitBitAndIntAPS(SourceInfo L) {
2793 if (!isActive()) return true;
2794 CurrentSource = L;
2795 return BitAnd<PT_IntAPS>(S, OpPC);
2796}
2797bool EvalEmitter::emitBitAndFixedPoint(SourceInfo L) {
2798 if (!isActive()) return true;
2799 CurrentSource = L;
2800 return BitAnd<PT_FixedPoint>(S, OpPC);
2801}
2802#endif
2803#ifdef GET_OPCODE_NAMES
2804OP_BitCast,
2805#endif
2806#ifdef GET_INTERP
2807case OP_BitCast: {
2808 if (!BitCast(S, OpPC))
2809 return false;
2810 continue;
2811}
2812#endif
2813#ifdef GET_DISASM
2814case OP_BitCast:
2815 Text.Op = PrintName("BitCast");
2816 break;
2817#endif
2818#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
2819bool emitBitCast(SourceInfo);
2820#endif
2821#ifdef GET_LINK_IMPL
2822bool ByteCodeEmitter::emitBitCast(SourceInfo L) {
2823 return emitOp<>(OP_BitCast, L);
2824}
2825#endif
2826#ifdef GET_EVAL_IMPL
2827bool EvalEmitter::emitBitCast(SourceInfo L) {
2828 if (!isActive()) return true;
2829 CurrentSource = L;
2830 return BitCast(S, OpPC);
2831}
2832#endif
2833#ifdef GET_OPCODE_NAMES
2834OP_BitCastPrimUint8,
2835OP_BitCastPrimSint8,
2836OP_BitCastPrimUint16,
2837OP_BitCastPrimSint16,
2838OP_BitCastPrimUint32,
2839OP_BitCastPrimSint32,
2840OP_BitCastPrimUint64,
2841OP_BitCastPrimSint64,
2842OP_BitCastPrimIntAP,
2843OP_BitCastPrimIntAPS,
2844OP_BitCastPrimBool,
2845OP_BitCastPrimFloat,
2846OP_BitCastPrimPtr,
2847OP_BitCastPrimMemberPtr,
2848#endif
2849#ifdef GET_INTERP
2850case OP_BitCastPrimUint8: {
2851 const auto V0 = ReadArg<bool>(S, PC);
2852 const auto V1 = ReadArg<uint32_t>(S, PC);
2853 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2854 const auto V3 = ReadArg<const Type *>(S, PC);
2855 if (!BitCastPrim<PT_Uint8>(S, OpPC, V0, V1, V2, V3))
2856 return false;
2857 continue;
2858}
2859case OP_BitCastPrimSint8: {
2860 const auto V0 = ReadArg<bool>(S, PC);
2861 const auto V1 = ReadArg<uint32_t>(S, PC);
2862 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2863 const auto V3 = ReadArg<const Type *>(S, PC);
2864 if (!BitCastPrim<PT_Sint8>(S, OpPC, V0, V1, V2, V3))
2865 return false;
2866 continue;
2867}
2868case OP_BitCastPrimUint16: {
2869 const auto V0 = ReadArg<bool>(S, PC);
2870 const auto V1 = ReadArg<uint32_t>(S, PC);
2871 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2872 const auto V3 = ReadArg<const Type *>(S, PC);
2873 if (!BitCastPrim<PT_Uint16>(S, OpPC, V0, V1, V2, V3))
2874 return false;
2875 continue;
2876}
2877case OP_BitCastPrimSint16: {
2878 const auto V0 = ReadArg<bool>(S, PC);
2879 const auto V1 = ReadArg<uint32_t>(S, PC);
2880 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2881 const auto V3 = ReadArg<const Type *>(S, PC);
2882 if (!BitCastPrim<PT_Sint16>(S, OpPC, V0, V1, V2, V3))
2883 return false;
2884 continue;
2885}
2886case OP_BitCastPrimUint32: {
2887 const auto V0 = ReadArg<bool>(S, PC);
2888 const auto V1 = ReadArg<uint32_t>(S, PC);
2889 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2890 const auto V3 = ReadArg<const Type *>(S, PC);
2891 if (!BitCastPrim<PT_Uint32>(S, OpPC, V0, V1, V2, V3))
2892 return false;
2893 continue;
2894}
2895case OP_BitCastPrimSint32: {
2896 const auto V0 = ReadArg<bool>(S, PC);
2897 const auto V1 = ReadArg<uint32_t>(S, PC);
2898 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2899 const auto V3 = ReadArg<const Type *>(S, PC);
2900 if (!BitCastPrim<PT_Sint32>(S, OpPC, V0, V1, V2, V3))
2901 return false;
2902 continue;
2903}
2904case OP_BitCastPrimUint64: {
2905 const auto V0 = ReadArg<bool>(S, PC);
2906 const auto V1 = ReadArg<uint32_t>(S, PC);
2907 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2908 const auto V3 = ReadArg<const Type *>(S, PC);
2909 if (!BitCastPrim<PT_Uint64>(S, OpPC, V0, V1, V2, V3))
2910 return false;
2911 continue;
2912}
2913case OP_BitCastPrimSint64: {
2914 const auto V0 = ReadArg<bool>(S, PC);
2915 const auto V1 = ReadArg<uint32_t>(S, PC);
2916 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2917 const auto V3 = ReadArg<const Type *>(S, PC);
2918 if (!BitCastPrim<PT_Sint64>(S, OpPC, V0, V1, V2, V3))
2919 return false;
2920 continue;
2921}
2922case OP_BitCastPrimIntAP: {
2923 const auto V0 = ReadArg<bool>(S, PC);
2924 const auto V1 = ReadArg<uint32_t>(S, PC);
2925 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2926 const auto V3 = ReadArg<const Type *>(S, PC);
2927 if (!BitCastPrim<PT_IntAP>(S, OpPC, V0, V1, V2, V3))
2928 return false;
2929 continue;
2930}
2931case OP_BitCastPrimIntAPS: {
2932 const auto V0 = ReadArg<bool>(S, PC);
2933 const auto V1 = ReadArg<uint32_t>(S, PC);
2934 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2935 const auto V3 = ReadArg<const Type *>(S, PC);
2936 if (!BitCastPrim<PT_IntAPS>(S, OpPC, V0, V1, V2, V3))
2937 return false;
2938 continue;
2939}
2940case OP_BitCastPrimBool: {
2941 const auto V0 = ReadArg<bool>(S, PC);
2942 const auto V1 = ReadArg<uint32_t>(S, PC);
2943 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2944 const auto V3 = ReadArg<const Type *>(S, PC);
2945 if (!BitCastPrim<PT_Bool>(S, OpPC, V0, V1, V2, V3))
2946 return false;
2947 continue;
2948}
2949case OP_BitCastPrimFloat: {
2950 const auto V0 = ReadArg<bool>(S, PC);
2951 const auto V1 = ReadArg<uint32_t>(S, PC);
2952 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2953 const auto V3 = ReadArg<const Type *>(S, PC);
2954 if (!BitCastPrim<PT_Float>(S, OpPC, V0, V1, V2, V3))
2955 return false;
2956 continue;
2957}
2958case OP_BitCastPrimPtr: {
2959 const auto V0 = ReadArg<bool>(S, PC);
2960 const auto V1 = ReadArg<uint32_t>(S, PC);
2961 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2962 const auto V3 = ReadArg<const Type *>(S, PC);
2963 if (!BitCastPrim<PT_Ptr>(S, OpPC, V0, V1, V2, V3))
2964 return false;
2965 continue;
2966}
2967case OP_BitCastPrimMemberPtr: {
2968 const auto V0 = ReadArg<bool>(S, PC);
2969 const auto V1 = ReadArg<uint32_t>(S, PC);
2970 const auto V2 = ReadArg<const llvm::fltSemantics *>(S, PC);
2971 const auto V3 = ReadArg<const Type *>(S, PC);
2972 if (!BitCastPrim<PT_MemberPtr>(S, OpPC, V0, V1, V2, V3))
2973 return false;
2974 continue;
2975}
2976#endif
2977#ifdef GET_DISASM
2978case OP_BitCastPrimUint8:
2979 Text.Op = PrintName("BitCastPrimUint8");
2980 Text.Args.push_back(printArg<bool>(P, PC));
2981 Text.Args.push_back(printArg<uint32_t>(P, PC));
2982 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2983 Text.Args.push_back(printArg<const Type *>(P, PC));
2984 break;
2985case OP_BitCastPrimSint8:
2986 Text.Op = PrintName("BitCastPrimSint8");
2987 Text.Args.push_back(printArg<bool>(P, PC));
2988 Text.Args.push_back(printArg<uint32_t>(P, PC));
2989 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2990 Text.Args.push_back(printArg<const Type *>(P, PC));
2991 break;
2992case OP_BitCastPrimUint16:
2993 Text.Op = PrintName("BitCastPrimUint16");
2994 Text.Args.push_back(printArg<bool>(P, PC));
2995 Text.Args.push_back(printArg<uint32_t>(P, PC));
2996 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
2997 Text.Args.push_back(printArg<const Type *>(P, PC));
2998 break;
2999case OP_BitCastPrimSint16:
3000 Text.Op = PrintName("BitCastPrimSint16");
3001 Text.Args.push_back(printArg<bool>(P, PC));
3002 Text.Args.push_back(printArg<uint32_t>(P, PC));
3003 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3004 Text.Args.push_back(printArg<const Type *>(P, PC));
3005 break;
3006case OP_BitCastPrimUint32:
3007 Text.Op = PrintName("BitCastPrimUint32");
3008 Text.Args.push_back(printArg<bool>(P, PC));
3009 Text.Args.push_back(printArg<uint32_t>(P, PC));
3010 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3011 Text.Args.push_back(printArg<const Type *>(P, PC));
3012 break;
3013case OP_BitCastPrimSint32:
3014 Text.Op = PrintName("BitCastPrimSint32");
3015 Text.Args.push_back(printArg<bool>(P, PC));
3016 Text.Args.push_back(printArg<uint32_t>(P, PC));
3017 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3018 Text.Args.push_back(printArg<const Type *>(P, PC));
3019 break;
3020case OP_BitCastPrimUint64:
3021 Text.Op = PrintName("BitCastPrimUint64");
3022 Text.Args.push_back(printArg<bool>(P, PC));
3023 Text.Args.push_back(printArg<uint32_t>(P, PC));
3024 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3025 Text.Args.push_back(printArg<const Type *>(P, PC));
3026 break;
3027case OP_BitCastPrimSint64:
3028 Text.Op = PrintName("BitCastPrimSint64");
3029 Text.Args.push_back(printArg<bool>(P, PC));
3030 Text.Args.push_back(printArg<uint32_t>(P, PC));
3031 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3032 Text.Args.push_back(printArg<const Type *>(P, PC));
3033 break;
3034case OP_BitCastPrimIntAP:
3035 Text.Op = PrintName("BitCastPrimIntAP");
3036 Text.Args.push_back(printArg<bool>(P, PC));
3037 Text.Args.push_back(printArg<uint32_t>(P, PC));
3038 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3039 Text.Args.push_back(printArg<const Type *>(P, PC));
3040 break;
3041case OP_BitCastPrimIntAPS:
3042 Text.Op = PrintName("BitCastPrimIntAPS");
3043 Text.Args.push_back(printArg<bool>(P, PC));
3044 Text.Args.push_back(printArg<uint32_t>(P, PC));
3045 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3046 Text.Args.push_back(printArg<const Type *>(P, PC));
3047 break;
3048case OP_BitCastPrimBool:
3049 Text.Op = PrintName("BitCastPrimBool");
3050 Text.Args.push_back(printArg<bool>(P, PC));
3051 Text.Args.push_back(printArg<uint32_t>(P, PC));
3052 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3053 Text.Args.push_back(printArg<const Type *>(P, PC));
3054 break;
3055case OP_BitCastPrimFloat:
3056 Text.Op = PrintName("BitCastPrimFloat");
3057 Text.Args.push_back(printArg<bool>(P, PC));
3058 Text.Args.push_back(printArg<uint32_t>(P, PC));
3059 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3060 Text.Args.push_back(printArg<const Type *>(P, PC));
3061 break;
3062case OP_BitCastPrimPtr:
3063 Text.Op = PrintName("BitCastPrimPtr");
3064 Text.Args.push_back(printArg<bool>(P, PC));
3065 Text.Args.push_back(printArg<uint32_t>(P, PC));
3066 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3067 Text.Args.push_back(printArg<const Type *>(P, PC));
3068 break;
3069case OP_BitCastPrimMemberPtr:
3070 Text.Op = PrintName("BitCastPrimMemberPtr");
3071 Text.Args.push_back(printArg<bool>(P, PC));
3072 Text.Args.push_back(printArg<uint32_t>(P, PC));
3073 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
3074 Text.Args.push_back(printArg<const Type *>(P, PC));
3075 break;
3076#endif
3077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3078bool emitBitCastPrimUint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3079bool emitBitCastPrimSint8( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3080bool emitBitCastPrimUint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3081bool emitBitCastPrimSint16( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3082bool emitBitCastPrimUint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3083bool emitBitCastPrimSint32( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3084bool emitBitCastPrimUint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3085bool emitBitCastPrimSint64( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3086bool emitBitCastPrimIntAP( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3087bool emitBitCastPrimIntAPS( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3088bool emitBitCastPrimBool( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3089bool emitBitCastPrimFloat( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3090bool emitBitCastPrimPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3091bool emitBitCastPrimMemberPtr( bool , uint32_t , const llvm::fltSemantics * , const Type * , SourceInfo);
3092#endif
3093#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3094[[nodiscard]] bool emitBitCastPrim(PrimType, bool, uint32_t, const llvm::fltSemantics *, const Type *, SourceInfo I);
3095#endif
3096#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3097bool
3098#if defined(GET_EVAL_IMPL)
3099EvalEmitter
3100#else
3101ByteCodeEmitter
3102#endif
3103::emitBitCastPrim(PrimType T0, bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo I) {
3104 switch (T0) {
3105 case PT_Uint8:
3106 return emitBitCastPrimUint8(A0, A1, A2, A3, I);
3107 case PT_Sint8:
3108 return emitBitCastPrimSint8(A0, A1, A2, A3, I);
3109 case PT_Uint16:
3110 return emitBitCastPrimUint16(A0, A1, A2, A3, I);
3111 case PT_Sint16:
3112 return emitBitCastPrimSint16(A0, A1, A2, A3, I);
3113 case PT_Uint32:
3114 return emitBitCastPrimUint32(A0, A1, A2, A3, I);
3115 case PT_Sint32:
3116 return emitBitCastPrimSint32(A0, A1, A2, A3, I);
3117 case PT_Uint64:
3118 return emitBitCastPrimUint64(A0, A1, A2, A3, I);
3119 case PT_Sint64:
3120 return emitBitCastPrimSint64(A0, A1, A2, A3, I);
3121 case PT_IntAP:
3122 return emitBitCastPrimIntAP(A0, A1, A2, A3, I);
3123 case PT_IntAPS:
3124 return emitBitCastPrimIntAPS(A0, A1, A2, A3, I);
3125 case PT_Bool:
3126 return emitBitCastPrimBool(A0, A1, A2, A3, I);
3127 case PT_Float:
3128 return emitBitCastPrimFloat(A0, A1, A2, A3, I);
3129 case PT_Ptr:
3130 return emitBitCastPrimPtr(A0, A1, A2, A3, I);
3131 case PT_MemberPtr:
3132 return emitBitCastPrimMemberPtr(A0, A1, A2, A3, I);
3133 default: llvm_unreachable("invalid type: emitBitCastPrim");
3134 }
3135 llvm_unreachable("invalid enum value");
3136}
3137#endif
3138#ifdef GET_LINK_IMPL
3139bool ByteCodeEmitter::emitBitCastPrimUint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3140 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint8, A0, A1, A2, A3, L);
3141}
3142bool ByteCodeEmitter::emitBitCastPrimSint8( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3143 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint8, A0, A1, A2, A3, L);
3144}
3145bool ByteCodeEmitter::emitBitCastPrimUint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3146 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint16, A0, A1, A2, A3, L);
3147}
3148bool ByteCodeEmitter::emitBitCastPrimSint16( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3149 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint16, A0, A1, A2, A3, L);
3150}
3151bool ByteCodeEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3152 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint32, A0, A1, A2, A3, L);
3153}
3154bool ByteCodeEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3155 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint32, A0, A1, A2, A3, L);
3156}
3157bool ByteCodeEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3158 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimUint64, A0, A1, A2, A3, L);
3159}
3160bool ByteCodeEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3161 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimSint64, A0, A1, A2, A3, L);
3162}
3163bool ByteCodeEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3164 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAP, A0, A1, A2, A3, L);
3165}
3166bool ByteCodeEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3167 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimIntAPS, A0, A1, A2, A3, L);
3168}
3169bool ByteCodeEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3170 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimBool, A0, A1, A2, A3, L);
3171}
3172bool ByteCodeEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3173 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimFloat, A0, A1, A2, A3, L);
3174}
3175bool ByteCodeEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3176 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimPtr, A0, A1, A2, A3, L);
3177}
3178bool ByteCodeEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3179 return emitOp<bool, uint32_t, const llvm::fltSemantics *, const Type *>(OP_BitCastPrimMemberPtr, A0, A1, A2, A3, L);
3180}
3181#endif
3182#ifdef GET_EVAL_IMPL
3183bool EvalEmitter::emitBitCastPrimUint8( 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_Uint8>(S, OpPC, A0, A1, A2, A3);
3187}
3188bool EvalEmitter::emitBitCastPrimSint8( 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_Sint8>(S, OpPC, A0, A1, A2, A3);
3192}
3193bool EvalEmitter::emitBitCastPrimUint16( 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_Uint16>(S, OpPC, A0, A1, A2, A3);
3197}
3198bool EvalEmitter::emitBitCastPrimSint16( 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_Sint16>(S, OpPC, A0, A1, A2, A3);
3202}
3203bool EvalEmitter::emitBitCastPrimUint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3204 if (!isActive()) return true;
3205 CurrentSource = L;
3206 return BitCastPrim<PT_Uint32>(S, OpPC, A0, A1, A2, A3);
3207}
3208bool EvalEmitter::emitBitCastPrimSint32( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3209 if (!isActive()) return true;
3210 CurrentSource = L;
3211 return BitCastPrim<PT_Sint32>(S, OpPC, A0, A1, A2, A3);
3212}
3213bool EvalEmitter::emitBitCastPrimUint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3214 if (!isActive()) return true;
3215 CurrentSource = L;
3216 return BitCastPrim<PT_Uint64>(S, OpPC, A0, A1, A2, A3);
3217}
3218bool EvalEmitter::emitBitCastPrimSint64( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3219 if (!isActive()) return true;
3220 CurrentSource = L;
3221 return BitCastPrim<PT_Sint64>(S, OpPC, A0, A1, A2, A3);
3222}
3223bool EvalEmitter::emitBitCastPrimIntAP( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3224 if (!isActive()) return true;
3225 CurrentSource = L;
3226 return BitCastPrim<PT_IntAP>(S, OpPC, A0, A1, A2, A3);
3227}
3228bool EvalEmitter::emitBitCastPrimIntAPS( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3229 if (!isActive()) return true;
3230 CurrentSource = L;
3231 return BitCastPrim<PT_IntAPS>(S, OpPC, A0, A1, A2, A3);
3232}
3233bool EvalEmitter::emitBitCastPrimBool( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3234 if (!isActive()) return true;
3235 CurrentSource = L;
3236 return BitCastPrim<PT_Bool>(S, OpPC, A0, A1, A2, A3);
3237}
3238bool EvalEmitter::emitBitCastPrimFloat( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3239 if (!isActive()) return true;
3240 CurrentSource = L;
3241 return BitCastPrim<PT_Float>(S, OpPC, A0, A1, A2, A3);
3242}
3243bool EvalEmitter::emitBitCastPrimPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3244 if (!isActive()) return true;
3245 CurrentSource = L;
3246 return BitCastPrim<PT_Ptr>(S, OpPC, A0, A1, A2, A3);
3247}
3248bool EvalEmitter::emitBitCastPrimMemberPtr( bool A0, uint32_t A1, const llvm::fltSemantics * A2, const Type * A3, SourceInfo L) {
3249 if (!isActive()) return true;
3250 CurrentSource = L;
3251 return BitCastPrim<PT_MemberPtr>(S, OpPC, A0, A1, A2, A3);
3252}
3253#endif
3254#ifdef GET_OPCODE_NAMES
3255OP_BitOrSint8,
3256OP_BitOrUint8,
3257OP_BitOrSint16,
3258OP_BitOrUint16,
3259OP_BitOrSint32,
3260OP_BitOrUint32,
3261OP_BitOrSint64,
3262OP_BitOrUint64,
3263OP_BitOrIntAP,
3264OP_BitOrIntAPS,
3265OP_BitOrFixedPoint,
3266#endif
3267#ifdef GET_INTERP
3268case OP_BitOrSint8: {
3269 if (!BitOr<PT_Sint8>(S, OpPC))
3270 return false;
3271 continue;
3272}
3273case OP_BitOrUint8: {
3274 if (!BitOr<PT_Uint8>(S, OpPC))
3275 return false;
3276 continue;
3277}
3278case OP_BitOrSint16: {
3279 if (!BitOr<PT_Sint16>(S, OpPC))
3280 return false;
3281 continue;
3282}
3283case OP_BitOrUint16: {
3284 if (!BitOr<PT_Uint16>(S, OpPC))
3285 return false;
3286 continue;
3287}
3288case OP_BitOrSint32: {
3289 if (!BitOr<PT_Sint32>(S, OpPC))
3290 return false;
3291 continue;
3292}
3293case OP_BitOrUint32: {
3294 if (!BitOr<PT_Uint32>(S, OpPC))
3295 return false;
3296 continue;
3297}
3298case OP_BitOrSint64: {
3299 if (!BitOr<PT_Sint64>(S, OpPC))
3300 return false;
3301 continue;
3302}
3303case OP_BitOrUint64: {
3304 if (!BitOr<PT_Uint64>(S, OpPC))
3305 return false;
3306 continue;
3307}
3308case OP_BitOrIntAP: {
3309 if (!BitOr<PT_IntAP>(S, OpPC))
3310 return false;
3311 continue;
3312}
3313case OP_BitOrIntAPS: {
3314 if (!BitOr<PT_IntAPS>(S, OpPC))
3315 return false;
3316 continue;
3317}
3318case OP_BitOrFixedPoint: {
3319 if (!BitOr<PT_FixedPoint>(S, OpPC))
3320 return false;
3321 continue;
3322}
3323#endif
3324#ifdef GET_DISASM
3325case OP_BitOrSint8:
3326 Text.Op = PrintName("BitOrSint8");
3327 break;
3328case OP_BitOrUint8:
3329 Text.Op = PrintName("BitOrUint8");
3330 break;
3331case OP_BitOrSint16:
3332 Text.Op = PrintName("BitOrSint16");
3333 break;
3334case OP_BitOrUint16:
3335 Text.Op = PrintName("BitOrUint16");
3336 break;
3337case OP_BitOrSint32:
3338 Text.Op = PrintName("BitOrSint32");
3339 break;
3340case OP_BitOrUint32:
3341 Text.Op = PrintName("BitOrUint32");
3342 break;
3343case OP_BitOrSint64:
3344 Text.Op = PrintName("BitOrSint64");
3345 break;
3346case OP_BitOrUint64:
3347 Text.Op = PrintName("BitOrUint64");
3348 break;
3349case OP_BitOrIntAP:
3350 Text.Op = PrintName("BitOrIntAP");
3351 break;
3352case OP_BitOrIntAPS:
3353 Text.Op = PrintName("BitOrIntAPS");
3354 break;
3355case OP_BitOrFixedPoint:
3356 Text.Op = PrintName("BitOrFixedPoint");
3357 break;
3358#endif
3359#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3360bool emitBitOrSint8(SourceInfo);
3361bool emitBitOrUint8(SourceInfo);
3362bool emitBitOrSint16(SourceInfo);
3363bool emitBitOrUint16(SourceInfo);
3364bool emitBitOrSint32(SourceInfo);
3365bool emitBitOrUint32(SourceInfo);
3366bool emitBitOrSint64(SourceInfo);
3367bool emitBitOrUint64(SourceInfo);
3368bool emitBitOrIntAP(SourceInfo);
3369bool emitBitOrIntAPS(SourceInfo);
3370bool emitBitOrFixedPoint(SourceInfo);
3371#endif
3372#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3373[[nodiscard]] bool emitBitOr(PrimType, SourceInfo I);
3374#endif
3375#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3376bool
3377#if defined(GET_EVAL_IMPL)
3378EvalEmitter
3379#else
3380ByteCodeEmitter
3381#endif
3382::emitBitOr(PrimType T0, SourceInfo I) {
3383 switch (T0) {
3384 case PT_Sint8:
3385 return emitBitOrSint8(I);
3386 case PT_Uint8:
3387 return emitBitOrUint8(I);
3388 case PT_Sint16:
3389 return emitBitOrSint16(I);
3390 case PT_Uint16:
3391 return emitBitOrUint16(I);
3392 case PT_Sint32:
3393 return emitBitOrSint32(I);
3394 case PT_Uint32:
3395 return emitBitOrUint32(I);
3396 case PT_Sint64:
3397 return emitBitOrSint64(I);
3398 case PT_Uint64:
3399 return emitBitOrUint64(I);
3400 case PT_IntAP:
3401 return emitBitOrIntAP(I);
3402 case PT_IntAPS:
3403 return emitBitOrIntAPS(I);
3404 case PT_FixedPoint:
3405 return emitBitOrFixedPoint(I);
3406 default: llvm_unreachable("invalid type: emitBitOr");
3407 }
3408 llvm_unreachable("invalid enum value");
3409}
3410#endif
3411#ifdef GET_LINK_IMPL
3412bool ByteCodeEmitter::emitBitOrSint8(SourceInfo L) {
3413 return emitOp<>(OP_BitOrSint8, L);
3414}
3415bool ByteCodeEmitter::emitBitOrUint8(SourceInfo L) {
3416 return emitOp<>(OP_BitOrUint8, L);
3417}
3418bool ByteCodeEmitter::emitBitOrSint16(SourceInfo L) {
3419 return emitOp<>(OP_BitOrSint16, L);
3420}
3421bool ByteCodeEmitter::emitBitOrUint16(SourceInfo L) {
3422 return emitOp<>(OP_BitOrUint16, L);
3423}
3424bool ByteCodeEmitter::emitBitOrSint32(SourceInfo L) {
3425 return emitOp<>(OP_BitOrSint32, L);
3426}
3427bool ByteCodeEmitter::emitBitOrUint32(SourceInfo L) {
3428 return emitOp<>(OP_BitOrUint32, L);
3429}
3430bool ByteCodeEmitter::emitBitOrSint64(SourceInfo L) {
3431 return emitOp<>(OP_BitOrSint64, L);
3432}
3433bool ByteCodeEmitter::emitBitOrUint64(SourceInfo L) {
3434 return emitOp<>(OP_BitOrUint64, L);
3435}
3436bool ByteCodeEmitter::emitBitOrIntAP(SourceInfo L) {
3437 return emitOp<>(OP_BitOrIntAP, L);
3438}
3439bool ByteCodeEmitter::emitBitOrIntAPS(SourceInfo L) {
3440 return emitOp<>(OP_BitOrIntAPS, L);
3441}
3442bool ByteCodeEmitter::emitBitOrFixedPoint(SourceInfo L) {
3443 return emitOp<>(OP_BitOrFixedPoint, L);
3444}
3445#endif
3446#ifdef GET_EVAL_IMPL
3447bool EvalEmitter::emitBitOrSint8(SourceInfo L) {
3448 if (!isActive()) return true;
3449 CurrentSource = L;
3450 return BitOr<PT_Sint8>(S, OpPC);
3451}
3452bool EvalEmitter::emitBitOrUint8(SourceInfo L) {
3453 if (!isActive()) return true;
3454 CurrentSource = L;
3455 return BitOr<PT_Uint8>(S, OpPC);
3456}
3457bool EvalEmitter::emitBitOrSint16(SourceInfo L) {
3458 if (!isActive()) return true;
3459 CurrentSource = L;
3460 return BitOr<PT_Sint16>(S, OpPC);
3461}
3462bool EvalEmitter::emitBitOrUint16(SourceInfo L) {
3463 if (!isActive()) return true;
3464 CurrentSource = L;
3465 return BitOr<PT_Uint16>(S, OpPC);
3466}
3467bool EvalEmitter::emitBitOrSint32(SourceInfo L) {
3468 if (!isActive()) return true;
3469 CurrentSource = L;
3470 return BitOr<PT_Sint32>(S, OpPC);
3471}
3472bool EvalEmitter::emitBitOrUint32(SourceInfo L) {
3473 if (!isActive()) return true;
3474 CurrentSource = L;
3475 return BitOr<PT_Uint32>(S, OpPC);
3476}
3477bool EvalEmitter::emitBitOrSint64(SourceInfo L) {
3478 if (!isActive()) return true;
3479 CurrentSource = L;
3480 return BitOr<PT_Sint64>(S, OpPC);
3481}
3482bool EvalEmitter::emitBitOrUint64(SourceInfo L) {
3483 if (!isActive()) return true;
3484 CurrentSource = L;
3485 return BitOr<PT_Uint64>(S, OpPC);
3486}
3487bool EvalEmitter::emitBitOrIntAP(SourceInfo L) {
3488 if (!isActive()) return true;
3489 CurrentSource = L;
3490 return BitOr<PT_IntAP>(S, OpPC);
3491}
3492bool EvalEmitter::emitBitOrIntAPS(SourceInfo L) {
3493 if (!isActive()) return true;
3494 CurrentSource = L;
3495 return BitOr<PT_IntAPS>(S, OpPC);
3496}
3497bool EvalEmitter::emitBitOrFixedPoint(SourceInfo L) {
3498 if (!isActive()) return true;
3499 CurrentSource = L;
3500 return BitOr<PT_FixedPoint>(S, OpPC);
3501}
3502#endif
3503#ifdef GET_OPCODE_NAMES
3504OP_BitXorSint8,
3505OP_BitXorUint8,
3506OP_BitXorSint16,
3507OP_BitXorUint16,
3508OP_BitXorSint32,
3509OP_BitXorUint32,
3510OP_BitXorSint64,
3511OP_BitXorUint64,
3512OP_BitXorIntAP,
3513OP_BitXorIntAPS,
3514OP_BitXorFixedPoint,
3515#endif
3516#ifdef GET_INTERP
3517case OP_BitXorSint8: {
3518 if (!BitXor<PT_Sint8>(S, OpPC))
3519 return false;
3520 continue;
3521}
3522case OP_BitXorUint8: {
3523 if (!BitXor<PT_Uint8>(S, OpPC))
3524 return false;
3525 continue;
3526}
3527case OP_BitXorSint16: {
3528 if (!BitXor<PT_Sint16>(S, OpPC))
3529 return false;
3530 continue;
3531}
3532case OP_BitXorUint16: {
3533 if (!BitXor<PT_Uint16>(S, OpPC))
3534 return false;
3535 continue;
3536}
3537case OP_BitXorSint32: {
3538 if (!BitXor<PT_Sint32>(S, OpPC))
3539 return false;
3540 continue;
3541}
3542case OP_BitXorUint32: {
3543 if (!BitXor<PT_Uint32>(S, OpPC))
3544 return false;
3545 continue;
3546}
3547case OP_BitXorSint64: {
3548 if (!BitXor<PT_Sint64>(S, OpPC))
3549 return false;
3550 continue;
3551}
3552case OP_BitXorUint64: {
3553 if (!BitXor<PT_Uint64>(S, OpPC))
3554 return false;
3555 continue;
3556}
3557case OP_BitXorIntAP: {
3558 if (!BitXor<PT_IntAP>(S, OpPC))
3559 return false;
3560 continue;
3561}
3562case OP_BitXorIntAPS: {
3563 if (!BitXor<PT_IntAPS>(S, OpPC))
3564 return false;
3565 continue;
3566}
3567case OP_BitXorFixedPoint: {
3568 if (!BitXor<PT_FixedPoint>(S, OpPC))
3569 return false;
3570 continue;
3571}
3572#endif
3573#ifdef GET_DISASM
3574case OP_BitXorSint8:
3575 Text.Op = PrintName("BitXorSint8");
3576 break;
3577case OP_BitXorUint8:
3578 Text.Op = PrintName("BitXorUint8");
3579 break;
3580case OP_BitXorSint16:
3581 Text.Op = PrintName("BitXorSint16");
3582 break;
3583case OP_BitXorUint16:
3584 Text.Op = PrintName("BitXorUint16");
3585 break;
3586case OP_BitXorSint32:
3587 Text.Op = PrintName("BitXorSint32");
3588 break;
3589case OP_BitXorUint32:
3590 Text.Op = PrintName("BitXorUint32");
3591 break;
3592case OP_BitXorSint64:
3593 Text.Op = PrintName("BitXorSint64");
3594 break;
3595case OP_BitXorUint64:
3596 Text.Op = PrintName("BitXorUint64");
3597 break;
3598case OP_BitXorIntAP:
3599 Text.Op = PrintName("BitXorIntAP");
3600 break;
3601case OP_BitXorIntAPS:
3602 Text.Op = PrintName("BitXorIntAPS");
3603 break;
3604case OP_BitXorFixedPoint:
3605 Text.Op = PrintName("BitXorFixedPoint");
3606 break;
3607#endif
3608#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3609bool emitBitXorSint8(SourceInfo);
3610bool emitBitXorUint8(SourceInfo);
3611bool emitBitXorSint16(SourceInfo);
3612bool emitBitXorUint16(SourceInfo);
3613bool emitBitXorSint32(SourceInfo);
3614bool emitBitXorUint32(SourceInfo);
3615bool emitBitXorSint64(SourceInfo);
3616bool emitBitXorUint64(SourceInfo);
3617bool emitBitXorIntAP(SourceInfo);
3618bool emitBitXorIntAPS(SourceInfo);
3619bool emitBitXorFixedPoint(SourceInfo);
3620#endif
3621#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3622[[nodiscard]] bool emitBitXor(PrimType, SourceInfo I);
3623#endif
3624#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3625bool
3626#if defined(GET_EVAL_IMPL)
3627EvalEmitter
3628#else
3629ByteCodeEmitter
3630#endif
3631::emitBitXor(PrimType T0, SourceInfo I) {
3632 switch (T0) {
3633 case PT_Sint8:
3634 return emitBitXorSint8(I);
3635 case PT_Uint8:
3636 return emitBitXorUint8(I);
3637 case PT_Sint16:
3638 return emitBitXorSint16(I);
3639 case PT_Uint16:
3640 return emitBitXorUint16(I);
3641 case PT_Sint32:
3642 return emitBitXorSint32(I);
3643 case PT_Uint32:
3644 return emitBitXorUint32(I);
3645 case PT_Sint64:
3646 return emitBitXorSint64(I);
3647 case PT_Uint64:
3648 return emitBitXorUint64(I);
3649 case PT_IntAP:
3650 return emitBitXorIntAP(I);
3651 case PT_IntAPS:
3652 return emitBitXorIntAPS(I);
3653 case PT_FixedPoint:
3654 return emitBitXorFixedPoint(I);
3655 default: llvm_unreachable("invalid type: emitBitXor");
3656 }
3657 llvm_unreachable("invalid enum value");
3658}
3659#endif
3660#ifdef GET_LINK_IMPL
3661bool ByteCodeEmitter::emitBitXorSint8(SourceInfo L) {
3662 return emitOp<>(OP_BitXorSint8, L);
3663}
3664bool ByteCodeEmitter::emitBitXorUint8(SourceInfo L) {
3665 return emitOp<>(OP_BitXorUint8, L);
3666}
3667bool ByteCodeEmitter::emitBitXorSint16(SourceInfo L) {
3668 return emitOp<>(OP_BitXorSint16, L);
3669}
3670bool ByteCodeEmitter::emitBitXorUint16(SourceInfo L) {
3671 return emitOp<>(OP_BitXorUint16, L);
3672}
3673bool ByteCodeEmitter::emitBitXorSint32(SourceInfo L) {
3674 return emitOp<>(OP_BitXorSint32, L);
3675}
3676bool ByteCodeEmitter::emitBitXorUint32(SourceInfo L) {
3677 return emitOp<>(OP_BitXorUint32, L);
3678}
3679bool ByteCodeEmitter::emitBitXorSint64(SourceInfo L) {
3680 return emitOp<>(OP_BitXorSint64, L);
3681}
3682bool ByteCodeEmitter::emitBitXorUint64(SourceInfo L) {
3683 return emitOp<>(OP_BitXorUint64, L);
3684}
3685bool ByteCodeEmitter::emitBitXorIntAP(SourceInfo L) {
3686 return emitOp<>(OP_BitXorIntAP, L);
3687}
3688bool ByteCodeEmitter::emitBitXorIntAPS(SourceInfo L) {
3689 return emitOp<>(OP_BitXorIntAPS, L);
3690}
3691bool ByteCodeEmitter::emitBitXorFixedPoint(SourceInfo L) {
3692 return emitOp<>(OP_BitXorFixedPoint, L);
3693}
3694#endif
3695#ifdef GET_EVAL_IMPL
3696bool EvalEmitter::emitBitXorSint8(SourceInfo L) {
3697 if (!isActive()) return true;
3698 CurrentSource = L;
3699 return BitXor<PT_Sint8>(S, OpPC);
3700}
3701bool EvalEmitter::emitBitXorUint8(SourceInfo L) {
3702 if (!isActive()) return true;
3703 CurrentSource = L;
3704 return BitXor<PT_Uint8>(S, OpPC);
3705}
3706bool EvalEmitter::emitBitXorSint16(SourceInfo L) {
3707 if (!isActive()) return true;
3708 CurrentSource = L;
3709 return BitXor<PT_Sint16>(S, OpPC);
3710}
3711bool EvalEmitter::emitBitXorUint16(SourceInfo L) {
3712 if (!isActive()) return true;
3713 CurrentSource = L;
3714 return BitXor<PT_Uint16>(S, OpPC);
3715}
3716bool EvalEmitter::emitBitXorSint32(SourceInfo L) {
3717 if (!isActive()) return true;
3718 CurrentSource = L;
3719 return BitXor<PT_Sint32>(S, OpPC);
3720}
3721bool EvalEmitter::emitBitXorUint32(SourceInfo L) {
3722 if (!isActive()) return true;
3723 CurrentSource = L;
3724 return BitXor<PT_Uint32>(S, OpPC);
3725}
3726bool EvalEmitter::emitBitXorSint64(SourceInfo L) {
3727 if (!isActive()) return true;
3728 CurrentSource = L;
3729 return BitXor<PT_Sint64>(S, OpPC);
3730}
3731bool EvalEmitter::emitBitXorUint64(SourceInfo L) {
3732 if (!isActive()) return true;
3733 CurrentSource = L;
3734 return BitXor<PT_Uint64>(S, OpPC);
3735}
3736bool EvalEmitter::emitBitXorIntAP(SourceInfo L) {
3737 if (!isActive()) return true;
3738 CurrentSource = L;
3739 return BitXor<PT_IntAP>(S, OpPC);
3740}
3741bool EvalEmitter::emitBitXorIntAPS(SourceInfo L) {
3742 if (!isActive()) return true;
3743 CurrentSource = L;
3744 return BitXor<PT_IntAPS>(S, OpPC);
3745}
3746bool EvalEmitter::emitBitXorFixedPoint(SourceInfo L) {
3747 if (!isActive()) return true;
3748 CurrentSource = L;
3749 return BitXor<PT_FixedPoint>(S, OpPC);
3750}
3751#endif
3752#ifdef GET_OPCODE_NAMES
3753OP_CMP3Sint8,
3754OP_CMP3Uint8,
3755OP_CMP3Sint16,
3756OP_CMP3Uint16,
3757OP_CMP3Sint32,
3758OP_CMP3Uint32,
3759OP_CMP3Sint64,
3760OP_CMP3Uint64,
3761OP_CMP3IntAP,
3762OP_CMP3IntAPS,
3763OP_CMP3Bool,
3764OP_CMP3FixedPoint,
3765OP_CMP3Ptr,
3766OP_CMP3Float,
3767#endif
3768#ifdef GET_INTERP
3769case OP_CMP3Sint8: {
3770 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3771 if (!CMP3<PT_Sint8>(S, OpPC, V0))
3772 return false;
3773 continue;
3774}
3775case OP_CMP3Uint8: {
3776 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3777 if (!CMP3<PT_Uint8>(S, OpPC, V0))
3778 return false;
3779 continue;
3780}
3781case OP_CMP3Sint16: {
3782 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3783 if (!CMP3<PT_Sint16>(S, OpPC, V0))
3784 return false;
3785 continue;
3786}
3787case OP_CMP3Uint16: {
3788 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3789 if (!CMP3<PT_Uint16>(S, OpPC, V0))
3790 return false;
3791 continue;
3792}
3793case OP_CMP3Sint32: {
3794 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3795 if (!CMP3<PT_Sint32>(S, OpPC, V0))
3796 return false;
3797 continue;
3798}
3799case OP_CMP3Uint32: {
3800 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3801 if (!CMP3<PT_Uint32>(S, OpPC, V0))
3802 return false;
3803 continue;
3804}
3805case OP_CMP3Sint64: {
3806 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3807 if (!CMP3<PT_Sint64>(S, OpPC, V0))
3808 return false;
3809 continue;
3810}
3811case OP_CMP3Uint64: {
3812 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3813 if (!CMP3<PT_Uint64>(S, OpPC, V0))
3814 return false;
3815 continue;
3816}
3817case OP_CMP3IntAP: {
3818 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3819 if (!CMP3<PT_IntAP>(S, OpPC, V0))
3820 return false;
3821 continue;
3822}
3823case OP_CMP3IntAPS: {
3824 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3825 if (!CMP3<PT_IntAPS>(S, OpPC, V0))
3826 return false;
3827 continue;
3828}
3829case OP_CMP3Bool: {
3830 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3831 if (!CMP3<PT_Bool>(S, OpPC, V0))
3832 return false;
3833 continue;
3834}
3835case OP_CMP3FixedPoint: {
3836 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3837 if (!CMP3<PT_FixedPoint>(S, OpPC, V0))
3838 return false;
3839 continue;
3840}
3841case OP_CMP3Ptr: {
3842 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3843 if (!CMP3<PT_Ptr>(S, OpPC, V0))
3844 return false;
3845 continue;
3846}
3847case OP_CMP3Float: {
3848 const auto V0 = ReadArg<const ComparisonCategoryInfo *>(S, PC);
3849 if (!CMP3<PT_Float>(S, OpPC, V0))
3850 return false;
3851 continue;
3852}
3853#endif
3854#ifdef GET_DISASM
3855case OP_CMP3Sint8:
3856 Text.Op = PrintName("CMP3Sint8");
3857 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3858 break;
3859case OP_CMP3Uint8:
3860 Text.Op = PrintName("CMP3Uint8");
3861 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3862 break;
3863case OP_CMP3Sint16:
3864 Text.Op = PrintName("CMP3Sint16");
3865 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3866 break;
3867case OP_CMP3Uint16:
3868 Text.Op = PrintName("CMP3Uint16");
3869 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3870 break;
3871case OP_CMP3Sint32:
3872 Text.Op = PrintName("CMP3Sint32");
3873 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3874 break;
3875case OP_CMP3Uint32:
3876 Text.Op = PrintName("CMP3Uint32");
3877 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3878 break;
3879case OP_CMP3Sint64:
3880 Text.Op = PrintName("CMP3Sint64");
3881 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3882 break;
3883case OP_CMP3Uint64:
3884 Text.Op = PrintName("CMP3Uint64");
3885 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3886 break;
3887case OP_CMP3IntAP:
3888 Text.Op = PrintName("CMP3IntAP");
3889 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3890 break;
3891case OP_CMP3IntAPS:
3892 Text.Op = PrintName("CMP3IntAPS");
3893 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3894 break;
3895case OP_CMP3Bool:
3896 Text.Op = PrintName("CMP3Bool");
3897 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3898 break;
3899case OP_CMP3FixedPoint:
3900 Text.Op = PrintName("CMP3FixedPoint");
3901 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3902 break;
3903case OP_CMP3Ptr:
3904 Text.Op = PrintName("CMP3Ptr");
3905 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3906 break;
3907case OP_CMP3Float:
3908 Text.Op = PrintName("CMP3Float");
3909 Text.Args.push_back(printArg<const ComparisonCategoryInfo *>(P, PC));
3910 break;
3911#endif
3912#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3913bool emitCMP3Sint8( const ComparisonCategoryInfo * , SourceInfo);
3914bool emitCMP3Uint8( const ComparisonCategoryInfo * , SourceInfo);
3915bool emitCMP3Sint16( const ComparisonCategoryInfo * , SourceInfo);
3916bool emitCMP3Uint16( const ComparisonCategoryInfo * , SourceInfo);
3917bool emitCMP3Sint32( const ComparisonCategoryInfo * , SourceInfo);
3918bool emitCMP3Uint32( const ComparisonCategoryInfo * , SourceInfo);
3919bool emitCMP3Sint64( const ComparisonCategoryInfo * , SourceInfo);
3920bool emitCMP3Uint64( const ComparisonCategoryInfo * , SourceInfo);
3921bool emitCMP3IntAP( const ComparisonCategoryInfo * , SourceInfo);
3922bool emitCMP3IntAPS( const ComparisonCategoryInfo * , SourceInfo);
3923bool emitCMP3Bool( const ComparisonCategoryInfo * , SourceInfo);
3924bool emitCMP3FixedPoint( const ComparisonCategoryInfo * , SourceInfo);
3925bool emitCMP3Ptr( const ComparisonCategoryInfo * , SourceInfo);
3926bool emitCMP3Float( const ComparisonCategoryInfo * , SourceInfo);
3927#endif
3928#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
3929[[nodiscard]] bool emitCMP3(PrimType, const ComparisonCategoryInfo *, SourceInfo I);
3930#endif
3931#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
3932bool
3933#if defined(GET_EVAL_IMPL)
3934EvalEmitter
3935#else
3936ByteCodeEmitter
3937#endif
3938::emitCMP3(PrimType T0, const ComparisonCategoryInfo * A0, SourceInfo I) {
3939 switch (T0) {
3940 case PT_Sint8:
3941 return emitCMP3Sint8(A0, I);
3942 case PT_Uint8:
3943 return emitCMP3Uint8(A0, I);
3944 case PT_Sint16:
3945 return emitCMP3Sint16(A0, I);
3946 case PT_Uint16:
3947 return emitCMP3Uint16(A0, I);
3948 case PT_Sint32:
3949 return emitCMP3Sint32(A0, I);
3950 case PT_Uint32:
3951 return emitCMP3Uint32(A0, I);
3952 case PT_Sint64:
3953 return emitCMP3Sint64(A0, I);
3954 case PT_Uint64:
3955 return emitCMP3Uint64(A0, I);
3956 case PT_IntAP:
3957 return emitCMP3IntAP(A0, I);
3958 case PT_IntAPS:
3959 return emitCMP3IntAPS(A0, I);
3960 case PT_Bool:
3961 return emitCMP3Bool(A0, I);
3962 case PT_FixedPoint:
3963 return emitCMP3FixedPoint(A0, I);
3964 case PT_Ptr:
3965 return emitCMP3Ptr(A0, I);
3966 case PT_Float:
3967 return emitCMP3Float(A0, I);
3968 default: llvm_unreachable("invalid type: emitCMP3");
3969 }
3970 llvm_unreachable("invalid enum value");
3971}
3972#endif
3973#ifdef GET_LINK_IMPL
3974bool ByteCodeEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3975 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint8, A0, L);
3976}
3977bool ByteCodeEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
3978 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint8, A0, L);
3979}
3980bool ByteCodeEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3981 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint16, A0, L);
3982}
3983bool ByteCodeEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
3984 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint16, A0, L);
3985}
3986bool ByteCodeEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3987 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint32, A0, L);
3988}
3989bool ByteCodeEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
3990 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint32, A0, L);
3991}
3992bool ByteCodeEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
3993 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Sint64, A0, L);
3994}
3995bool ByteCodeEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
3996 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Uint64, A0, L);
3997}
3998bool ByteCodeEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
3999 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAP, A0, L);
4000}
4001bool ByteCodeEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
4002 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3IntAPS, A0, L);
4003}
4004bool ByteCodeEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
4005 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Bool, A0, L);
4006}
4007bool ByteCodeEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
4008 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3FixedPoint, A0, L);
4009}
4010bool ByteCodeEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
4011 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Ptr, A0, L);
4012}
4013bool ByteCodeEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
4014 return emitOp<const ComparisonCategoryInfo *>(OP_CMP3Float, A0, L);
4015}
4016#endif
4017#ifdef GET_EVAL_IMPL
4018bool EvalEmitter::emitCMP3Sint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
4019 if (!isActive()) return true;
4020 CurrentSource = L;
4021 return CMP3<PT_Sint8>(S, OpPC, A0);
4022}
4023bool EvalEmitter::emitCMP3Uint8( const ComparisonCategoryInfo * A0, SourceInfo L) {
4024 if (!isActive()) return true;
4025 CurrentSource = L;
4026 return CMP3<PT_Uint8>(S, OpPC, A0);
4027}
4028bool EvalEmitter::emitCMP3Sint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
4029 if (!isActive()) return true;
4030 CurrentSource = L;
4031 return CMP3<PT_Sint16>(S, OpPC, A0);
4032}
4033bool EvalEmitter::emitCMP3Uint16( const ComparisonCategoryInfo * A0, SourceInfo L) {
4034 if (!isActive()) return true;
4035 CurrentSource = L;
4036 return CMP3<PT_Uint16>(S, OpPC, A0);
4037}
4038bool EvalEmitter::emitCMP3Sint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
4039 if (!isActive()) return true;
4040 CurrentSource = L;
4041 return CMP3<PT_Sint32>(S, OpPC, A0);
4042}
4043bool EvalEmitter::emitCMP3Uint32( const ComparisonCategoryInfo * A0, SourceInfo L) {
4044 if (!isActive()) return true;
4045 CurrentSource = L;
4046 return CMP3<PT_Uint32>(S, OpPC, A0);
4047}
4048bool EvalEmitter::emitCMP3Sint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
4049 if (!isActive()) return true;
4050 CurrentSource = L;
4051 return CMP3<PT_Sint64>(S, OpPC, A0);
4052}
4053bool EvalEmitter::emitCMP3Uint64( const ComparisonCategoryInfo * A0, SourceInfo L) {
4054 if (!isActive()) return true;
4055 CurrentSource = L;
4056 return CMP3<PT_Uint64>(S, OpPC, A0);
4057}
4058bool EvalEmitter::emitCMP3IntAP( const ComparisonCategoryInfo * A0, SourceInfo L) {
4059 if (!isActive()) return true;
4060 CurrentSource = L;
4061 return CMP3<PT_IntAP>(S, OpPC, A0);
4062}
4063bool EvalEmitter::emitCMP3IntAPS( const ComparisonCategoryInfo * A0, SourceInfo L) {
4064 if (!isActive()) return true;
4065 CurrentSource = L;
4066 return CMP3<PT_IntAPS>(S, OpPC, A0);
4067}
4068bool EvalEmitter::emitCMP3Bool( const ComparisonCategoryInfo * A0, SourceInfo L) {
4069 if (!isActive()) return true;
4070 CurrentSource = L;
4071 return CMP3<PT_Bool>(S, OpPC, A0);
4072}
4073bool EvalEmitter::emitCMP3FixedPoint( const ComparisonCategoryInfo * A0, SourceInfo L) {
4074 if (!isActive()) return true;
4075 CurrentSource = L;
4076 return CMP3<PT_FixedPoint>(S, OpPC, A0);
4077}
4078bool EvalEmitter::emitCMP3Ptr( const ComparisonCategoryInfo * A0, SourceInfo L) {
4079 if (!isActive()) return true;
4080 CurrentSource = L;
4081 return CMP3<PT_Ptr>(S, OpPC, A0);
4082}
4083bool EvalEmitter::emitCMP3Float( const ComparisonCategoryInfo * A0, SourceInfo L) {
4084 if (!isActive()) return true;
4085 CurrentSource = L;
4086 return CMP3<PT_Float>(S, OpPC, A0);
4087}
4088#endif
4089#ifdef GET_OPCODE_NAMES
4090OP_Call,
4091#endif
4092#ifdef GET_INTERP
4093case OP_Call: {
4094 const auto V0 = ReadArg<const Function *>(S, PC);
4095 const auto V1 = ReadArg<uint32_t>(S, PC);
4096 if (!Call(S, OpPC, V0, V1))
4097 return false;
4098 continue;
4099}
4100#endif
4101#ifdef GET_DISASM
4102case OP_Call:
4103 Text.Op = PrintName("Call");
4104 Text.Args.push_back(printArg<const Function *>(P, PC));
4105 Text.Args.push_back(printArg<uint32_t>(P, PC));
4106 break;
4107#endif
4108#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4109bool emitCall( const Function * , uint32_t , SourceInfo);
4110#endif
4111#ifdef GET_LINK_IMPL
4112bool ByteCodeEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
4113 return emitOp<const Function *, uint32_t>(OP_Call, A0, A1, L);
4114}
4115#endif
4116#ifdef GET_EVAL_IMPL
4117bool EvalEmitter::emitCall( const Function * A0, uint32_t A1, SourceInfo L) {
4118 if (!isActive()) return true;
4119 CurrentSource = L;
4120 return Call(S, OpPC, A0, A1);
4121}
4122#endif
4123#ifdef GET_OPCODE_NAMES
4124OP_CallBI,
4125#endif
4126#ifdef GET_INTERP
4127case OP_CallBI: {
4128 const auto V0 = ReadArg<const CallExpr *>(S, PC);
4129 const auto V1 = ReadArg<uint32_t>(S, PC);
4130 if (!CallBI(S, OpPC, V0, V1))
4131 return false;
4132 continue;
4133}
4134#endif
4135#ifdef GET_DISASM
4136case OP_CallBI:
4137 Text.Op = PrintName("CallBI");
4138 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
4139 Text.Args.push_back(printArg<uint32_t>(P, PC));
4140 break;
4141#endif
4142#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4143bool emitCallBI( const CallExpr * , uint32_t , SourceInfo);
4144#endif
4145#ifdef GET_LINK_IMPL
4146bool ByteCodeEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
4147 return emitOp<const CallExpr *, uint32_t>(OP_CallBI, A0, A1, L);
4148}
4149#endif
4150#ifdef GET_EVAL_IMPL
4151bool EvalEmitter::emitCallBI( const CallExpr * A0, uint32_t A1, SourceInfo L) {
4152 if (!isActive()) return true;
4153 CurrentSource = L;
4154 return CallBI(S, OpPC, A0, A1);
4155}
4156#endif
4157#ifdef GET_OPCODE_NAMES
4158OP_CallPtr,
4159#endif
4160#ifdef GET_INTERP
4161case OP_CallPtr: {
4162 const auto V0 = ReadArg<uint32_t>(S, PC);
4163 const auto V1 = ReadArg<const CallExpr *>(S, PC);
4164 if (!CallPtr(S, OpPC, V0, V1))
4165 return false;
4166 continue;
4167}
4168#endif
4169#ifdef GET_DISASM
4170case OP_CallPtr:
4171 Text.Op = PrintName("CallPtr");
4172 Text.Args.push_back(printArg<uint32_t>(P, PC));
4173 Text.Args.push_back(printArg<const CallExpr *>(P, PC));
4174 break;
4175#endif
4176#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4177bool emitCallPtr( uint32_t , const CallExpr * , SourceInfo);
4178#endif
4179#ifdef GET_LINK_IMPL
4180bool ByteCodeEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
4181 return emitOp<uint32_t, const CallExpr *>(OP_CallPtr, A0, A1, L);
4182}
4183#endif
4184#ifdef GET_EVAL_IMPL
4185bool EvalEmitter::emitCallPtr( uint32_t A0, const CallExpr * A1, SourceInfo L) {
4186 if (!isActive()) return true;
4187 CurrentSource = L;
4188 return CallPtr(S, OpPC, A0, A1);
4189}
4190#endif
4191#ifdef GET_OPCODE_NAMES
4192OP_CallVar,
4193#endif
4194#ifdef GET_INTERP
4195case OP_CallVar: {
4196 const auto V0 = ReadArg<const Function *>(S, PC);
4197 const auto V1 = ReadArg<uint32_t>(S, PC);
4198 if (!CallVar(S, OpPC, V0, V1))
4199 return false;
4200 continue;
4201}
4202#endif
4203#ifdef GET_DISASM
4204case OP_CallVar:
4205 Text.Op = PrintName("CallVar");
4206 Text.Args.push_back(printArg<const Function *>(P, PC));
4207 Text.Args.push_back(printArg<uint32_t>(P, PC));
4208 break;
4209#endif
4210#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4211bool emitCallVar( const Function * , uint32_t , SourceInfo);
4212#endif
4213#ifdef GET_LINK_IMPL
4214bool ByteCodeEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
4215 return emitOp<const Function *, uint32_t>(OP_CallVar, A0, A1, L);
4216}
4217#endif
4218#ifdef GET_EVAL_IMPL
4219bool EvalEmitter::emitCallVar( const Function * A0, uint32_t A1, SourceInfo L) {
4220 if (!isActive()) return true;
4221 CurrentSource = L;
4222 return CallVar(S, OpPC, A0, A1);
4223}
4224#endif
4225#ifdef GET_OPCODE_NAMES
4226OP_CallVirt,
4227#endif
4228#ifdef GET_INTERP
4229case OP_CallVirt: {
4230 const auto V0 = ReadArg<const Function *>(S, PC);
4231 const auto V1 = ReadArg<uint32_t>(S, PC);
4232 if (!CallVirt(S, OpPC, V0, V1))
4233 return false;
4234 continue;
4235}
4236#endif
4237#ifdef GET_DISASM
4238case OP_CallVirt:
4239 Text.Op = PrintName("CallVirt");
4240 Text.Args.push_back(printArg<const Function *>(P, PC));
4241 Text.Args.push_back(printArg<uint32_t>(P, PC));
4242 break;
4243#endif
4244#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
4245bool emitCallVirt( const Function * , uint32_t , SourceInfo);
4246#endif
4247#ifdef GET_LINK_IMPL
4248bool ByteCodeEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
4249 return emitOp<const Function *, uint32_t>(OP_CallVirt, A0, A1, L);
4250}
4251#endif
4252#ifdef GET_EVAL_IMPL
4253bool EvalEmitter::emitCallVirt( const Function * A0, uint32_t A1, SourceInfo L) {
4254 if (!isActive()) return true;
4255 CurrentSource = L;
4256 return CallVirt(S, OpPC, A0, A1);
4257}
4258#endif
4259#ifdef GET_OPCODE_NAMES
4260OP_CastUint8Uint8,
4261OP_CastUint8Sint8,
4262OP_CastUint8Uint16,
4263OP_CastUint8Sint16,
4264OP_CastUint8Uint32,
4265OP_CastUint8Sint32,
4266OP_CastUint8Uint64,
4267OP_CastUint8Sint64,
4268OP_CastUint8Bool,
4269OP_CastSint8Uint8,
4270OP_CastSint8Sint8,
4271OP_CastSint8Uint16,
4272OP_CastSint8Sint16,
4273OP_CastSint8Uint32,
4274OP_CastSint8Sint32,
4275OP_CastSint8Uint64,
4276OP_CastSint8Sint64,
4277OP_CastSint8Bool,
4278OP_CastUint16Uint8,
4279OP_CastUint16Sint8,
4280OP_CastUint16Uint16,
4281OP_CastUint16Sint16,
4282OP_CastUint16Uint32,
4283OP_CastUint16Sint32,
4284OP_CastUint16Uint64,
4285OP_CastUint16Sint64,
4286OP_CastUint16Bool,
4287OP_CastSint16Uint8,
4288OP_CastSint16Sint8,
4289OP_CastSint16Uint16,
4290OP_CastSint16Sint16,
4291OP_CastSint16Uint32,
4292OP_CastSint16Sint32,
4293OP_CastSint16Uint64,
4294OP_CastSint16Sint64,
4295OP_CastSint16Bool,
4296OP_CastUint32Uint8,
4297OP_CastUint32Sint8,
4298OP_CastUint32Uint16,
4299OP_CastUint32Sint16,
4300OP_CastUint32Uint32,
4301OP_CastUint32Sint32,
4302OP_CastUint32Uint64,
4303OP_CastUint32Sint64,
4304OP_CastUint32Bool,
4305OP_CastSint32Uint8,
4306OP_CastSint32Sint8,
4307OP_CastSint32Uint16,
4308OP_CastSint32Sint16,
4309OP_CastSint32Uint32,
4310OP_CastSint32Sint32,
4311OP_CastSint32Uint64,
4312OP_CastSint32Sint64,
4313OP_CastSint32Bool,
4314OP_CastUint64Uint8,
4315OP_CastUint64Sint8,
4316OP_CastUint64Uint16,
4317OP_CastUint64Sint16,
4318OP_CastUint64Uint32,
4319OP_CastUint64Sint32,
4320OP_CastUint64Uint64,
4321OP_CastUint64Sint64,
4322OP_CastUint64Bool,
4323OP_CastSint64Uint8,
4324OP_CastSint64Sint8,
4325OP_CastSint64Uint16,
4326OP_CastSint64Sint16,
4327OP_CastSint64Uint32,
4328OP_CastSint64Sint32,
4329OP_CastSint64Uint64,
4330OP_CastSint64Sint64,
4331OP_CastSint64Bool,
4332OP_CastBoolUint8,
4333OP_CastBoolSint8,
4334OP_CastBoolUint16,
4335OP_CastBoolSint16,
4336OP_CastBoolUint32,
4337OP_CastBoolSint32,
4338OP_CastBoolUint64,
4339OP_CastBoolSint64,
4340OP_CastBoolBool,
4341OP_CastIntAPUint8,
4342OP_CastIntAPSint8,
4343OP_CastIntAPUint16,
4344OP_CastIntAPSint16,
4345OP_CastIntAPUint32,
4346OP_CastIntAPSint32,
4347OP_CastIntAPUint64,
4348OP_CastIntAPSint64,
4349OP_CastIntAPBool,
4350OP_CastIntAPSUint8,
4351OP_CastIntAPSSint8,
4352OP_CastIntAPSUint16,
4353OP_CastIntAPSSint16,
4354OP_CastIntAPSUint32,
4355OP_CastIntAPSSint32,
4356OP_CastIntAPSUint64,
4357OP_CastIntAPSSint64,
4358OP_CastIntAPSBool,
4359OP_CastFixedPointUint8,
4360OP_CastFixedPointSint8,
4361OP_CastFixedPointUint16,
4362OP_CastFixedPointSint16,
4363OP_CastFixedPointUint32,
4364OP_CastFixedPointSint32,
4365OP_CastFixedPointUint64,
4366OP_CastFixedPointSint64,
4367OP_CastFixedPointBool,
4368#endif
4369#ifdef GET_INTERP
4370case OP_CastUint8Uint8: {
4371 if (!Cast<PT_Uint8, PT_Uint8>(S, OpPC))
4372 return false;
4373 continue;
4374}
4375case OP_CastUint8Sint8: {
4376 if (!Cast<PT_Uint8, PT_Sint8>(S, OpPC))
4377 return false;
4378 continue;
4379}
4380case OP_CastUint8Uint16: {
4381 if (!Cast<PT_Uint8, PT_Uint16>(S, OpPC))
4382 return false;
4383 continue;
4384}
4385case OP_CastUint8Sint16: {
4386 if (!Cast<PT_Uint8, PT_Sint16>(S, OpPC))
4387 return false;
4388 continue;
4389}
4390case OP_CastUint8Uint32: {
4391 if (!Cast<PT_Uint8, PT_Uint32>(S, OpPC))
4392 return false;
4393 continue;
4394}
4395case OP_CastUint8Sint32: {
4396 if (!Cast<PT_Uint8, PT_Sint32>(S, OpPC))
4397 return false;
4398 continue;
4399}
4400case OP_CastUint8Uint64: {
4401 if (!Cast<PT_Uint8, PT_Uint64>(S, OpPC))
4402 return false;
4403 continue;
4404}
4405case OP_CastUint8Sint64: {
4406 if (!Cast<PT_Uint8, PT_Sint64>(S, OpPC))
4407 return false;
4408 continue;
4409}
4410case OP_CastUint8Bool: {
4411 if (!Cast<PT_Uint8, PT_Bool>(S, OpPC))
4412 return false;
4413 continue;
4414}
4415case OP_CastSint8Uint8: {
4416 if (!Cast<PT_Sint8, PT_Uint8>(S, OpPC))
4417 return false;
4418 continue;
4419}
4420case OP_CastSint8Sint8: {
4421 if (!Cast<PT_Sint8, PT_Sint8>(S, OpPC))
4422 return false;
4423 continue;
4424}
4425case OP_CastSint8Uint16: {
4426 if (!Cast<PT_Sint8, PT_Uint16>(S, OpPC))
4427 return false;
4428 continue;
4429}
4430case OP_CastSint8Sint16: {
4431 if (!Cast<PT_Sint8, PT_Sint16>(S, OpPC))
4432 return false;
4433 continue;
4434}
4435case OP_CastSint8Uint32: {
4436 if (!Cast<PT_Sint8, PT_Uint32>(S, OpPC))
4437 return false;
4438 continue;
4439}
4440case OP_CastSint8Sint32: {
4441 if (!Cast<PT_Sint8, PT_Sint32>(S, OpPC))
4442 return false;
4443 continue;
4444}
4445case OP_CastSint8Uint64: {
4446 if (!Cast<PT_Sint8, PT_Uint64>(S, OpPC))
4447 return false;
4448 continue;
4449}
4450case OP_CastSint8Sint64: {
4451 if (!Cast<PT_Sint8, PT_Sint64>(S, OpPC))
4452 return false;
4453 continue;
4454}
4455case OP_CastSint8Bool: {
4456 if (!Cast<PT_Sint8, PT_Bool>(S, OpPC))
4457 return false;
4458 continue;
4459}
4460case OP_CastUint16Uint8: {
4461 if (!Cast<PT_Uint16, PT_Uint8>(S, OpPC))
4462 return false;
4463 continue;
4464}
4465case OP_CastUint16Sint8: {
4466 if (!Cast<PT_Uint16, PT_Sint8>(S, OpPC))
4467 return false;
4468 continue;
4469}
4470case OP_CastUint16Uint16: {
4471 if (!Cast<PT_Uint16, PT_Uint16>(S, OpPC))
4472 return false;
4473 continue;
4474}
4475case OP_CastUint16Sint16: {
4476 if (!Cast<PT_Uint16, PT_Sint16>(S, OpPC))
4477 return false;
4478 continue;
4479}
4480case OP_CastUint16Uint32: {
4481 if (!Cast<PT_Uint16, PT_Uint32>(S, OpPC))
4482 return false;
4483 continue;
4484}
4485case OP_CastUint16Sint32: {
4486 if (!Cast<PT_Uint16, PT_Sint32>(S, OpPC))
4487 return false;
4488 continue;
4489}
4490case OP_CastUint16Uint64: {
4491 if (!Cast<PT_Uint16, PT_Uint64>(S, OpPC))
4492 return false;
4493 continue;
4494}
4495case OP_CastUint16Sint64: {
4496 if (!Cast<PT_Uint16, PT_Sint64>(S, OpPC))
4497 return false;
4498 continue;
4499}
4500case OP_CastUint16Bool: {
4501 if (!Cast<PT_Uint16, PT_Bool>(S, OpPC))
4502 return false;
4503 continue;
4504}
4505case OP_CastSint16Uint8: {
4506 if (!Cast<PT_Sint16, PT_Uint8>(S, OpPC))
4507 return false;
4508 continue;
4509}
4510case OP_CastSint16Sint8: {
4511 if (!Cast<PT_Sint16, PT_Sint8>(S, OpPC))
4512 return false;
4513 continue;
4514}
4515case OP_CastSint16Uint16: {
4516 if (!Cast<PT_Sint16, PT_Uint16>(S, OpPC))
4517 return false;
4518 continue;
4519}
4520case OP_CastSint16Sint16: {
4521 if (!Cast<PT_Sint16, PT_Sint16>(S, OpPC))
4522 return false;
4523 continue;
4524}
4525case OP_CastSint16Uint32: {
4526 if (!Cast<PT_Sint16, PT_Uint32>(S, OpPC))
4527 return false;
4528 continue;
4529}
4530case OP_CastSint16Sint32: {
4531 if (!Cast<PT_Sint16, PT_Sint32>(S, OpPC))
4532 return false;
4533 continue;
4534}
4535case OP_CastSint16Uint64: {
4536 if (!Cast<PT_Sint16, PT_Uint64>(S, OpPC))
4537 return false;
4538 continue;
4539}
4540case OP_CastSint16Sint64: {
4541 if (!Cast<PT_Sint16, PT_Sint64>(S, OpPC))
4542 return false;
4543 continue;
4544}
4545case OP_CastSint16Bool: {
4546 if (!Cast<PT_Sint16, PT_Bool>(S, OpPC))
4547 return false;
4548 continue;
4549}
4550case OP_CastUint32Uint8: {
4551 if (!Cast<PT_Uint32, PT_Uint8>(S, OpPC))
4552 return false;
4553 continue;
4554}
4555case OP_CastUint32Sint8: {
4556 if (!Cast<PT_Uint32, PT_Sint8>(S, OpPC))
4557 return false;
4558 continue;
4559}
4560case OP_CastUint32Uint16: {
4561 if (!Cast<PT_Uint32, PT_Uint16>(S, OpPC))
4562 return false;
4563 continue;
4564}
4565case OP_CastUint32Sint16: {
4566 if (!Cast<PT_Uint32, PT_Sint16>(S, OpPC))
4567 return false;
4568 continue;
4569}
4570case OP_CastUint32Uint32: {
4571 if (!Cast<PT_Uint32, PT_Uint32>(S, OpPC))
4572 return false;
4573 continue;
4574}
4575case OP_CastUint32Sint32: {
4576 if (!Cast<PT_Uint32, PT_Sint32>(S, OpPC))
4577 return false;
4578 continue;
4579}
4580case OP_CastUint32Uint64: {
4581 if (!Cast<PT_Uint32, PT_Uint64>(S, OpPC))
4582 return false;
4583 continue;
4584}
4585case OP_CastUint32Sint64: {
4586 if (!Cast<PT_Uint32, PT_Sint64>(S, OpPC))
4587 return false;
4588 continue;
4589}
4590case OP_CastUint32Bool: {
4591 if (!Cast<PT_Uint32, PT_Bool>(S, OpPC))
4592 return false;
4593 continue;
4594}
4595case OP_CastSint32Uint8: {
4596 if (!Cast<PT_Sint32, PT_Uint8>(S, OpPC))
4597 return false;
4598 continue;
4599}
4600case OP_CastSint32Sint8: {
4601 if (!Cast<PT_Sint32, PT_Sint8>(S, OpPC))
4602 return false;
4603 continue;
4604}
4605case OP_CastSint32Uint16: {
4606 if (!Cast<PT_Sint32, PT_Uint16>(S, OpPC))
4607 return false;
4608 continue;
4609}
4610case OP_CastSint32Sint16: {
4611 if (!Cast<PT_Sint32, PT_Sint16>(S, OpPC))
4612 return false;
4613 continue;
4614}
4615case OP_CastSint32Uint32: {
4616 if (!Cast<PT_Sint32, PT_Uint32>(S, OpPC))
4617 return false;
4618 continue;
4619}
4620case OP_CastSint32Sint32: {
4621 if (!Cast<PT_Sint32, PT_Sint32>(S, OpPC))
4622 return false;
4623 continue;
4624}
4625case OP_CastSint32Uint64: {
4626 if (!Cast<PT_Sint32, PT_Uint64>(S, OpPC))
4627 return false;
4628 continue;
4629}
4630case OP_CastSint32Sint64: {
4631 if (!Cast<PT_Sint32, PT_Sint64>(S, OpPC))
4632 return false;
4633 continue;
4634}
4635case OP_CastSint32Bool: {
4636 if (!Cast<PT_Sint32, PT_Bool>(S, OpPC))
4637 return false;
4638 continue;
4639}
4640case OP_CastUint64Uint8: {
4641 if (!Cast<PT_Uint64, PT_Uint8>(S, OpPC))
4642 return false;
4643 continue;
4644}
4645case OP_CastUint64Sint8: {
4646 if (!Cast<PT_Uint64, PT_Sint8>(S, OpPC))
4647 return false;
4648 continue;
4649}
4650case OP_CastUint64Uint16: {
4651 if (!Cast<PT_Uint64, PT_Uint16>(S, OpPC))
4652 return false;
4653 continue;
4654}
4655case OP_CastUint64Sint16: {
4656 if (!Cast<PT_Uint64, PT_Sint16>(S, OpPC))
4657 return false;
4658 continue;
4659}
4660case OP_CastUint64Uint32: {
4661 if (!Cast<PT_Uint64, PT_Uint32>(S, OpPC))
4662 return false;
4663 continue;
4664}
4665case OP_CastUint64Sint32: {
4666 if (!Cast<PT_Uint64, PT_Sint32>(S, OpPC))
4667 return false;
4668 continue;
4669}
4670case OP_CastUint64Uint64: {
4671 if (!Cast<PT_Uint64, PT_Uint64>(S, OpPC))
4672 return false;
4673 continue;
4674}
4675case OP_CastUint64Sint64: {
4676 if (!Cast<PT_Uint64, PT_Sint64>(S, OpPC))
4677 return false;
4678 continue;
4679}
4680case OP_CastUint64Bool: {
4681 if (!Cast<PT_Uint64, PT_Bool>(S, OpPC))
4682 return false;
4683 continue;
4684}
4685case OP_CastSint64Uint8: {
4686 if (!Cast<PT_Sint64, PT_Uint8>(S, OpPC))
4687 return false;
4688 continue;
4689}
4690case OP_CastSint64Sint8: {
4691 if (!Cast<PT_Sint64, PT_Sint8>(S, OpPC))
4692 return false;
4693 continue;
4694}
4695case OP_CastSint64Uint16: {
4696 if (!Cast<PT_Sint64, PT_Uint16>(S, OpPC))
4697 return false;
4698 continue;
4699}
4700case OP_CastSint64Sint16: {
4701 if (!Cast<PT_Sint64, PT_Sint16>(S, OpPC))
4702 return false;
4703 continue;
4704}
4705case OP_CastSint64Uint32: {
4706 if (!Cast<PT_Sint64, PT_Uint32>(S, OpPC))
4707 return false;
4708 continue;
4709}
4710case OP_CastSint64Sint32: {
4711 if (!Cast<PT_Sint64, PT_Sint32>(S, OpPC))
4712 return false;
4713 continue;
4714}
4715case OP_CastSint64Uint64: {
4716 if (!Cast<PT_Sint64, PT_Uint64>(S, OpPC))
4717 return false;
4718 continue;
4719}
4720case OP_CastSint64Sint64: {
4721 if (!Cast<PT_Sint64, PT_Sint64>(S, OpPC))
4722 return false;
4723 continue;
4724}
4725case OP_CastSint64Bool: {
4726 if (!Cast<PT_Sint64, PT_Bool>(S, OpPC))
4727 return false;
4728 continue;
4729}
4730case OP_CastBoolUint8: {
4731 if (!Cast<PT_Bool, PT_Uint8>(S, OpPC))
4732 return false;
4733 continue;
4734}
4735case OP_CastBoolSint8: {
4736 if (!Cast<PT_Bool, PT_Sint8>(S, OpPC))
4737 return false;
4738 continue;
4739}
4740case OP_CastBoolUint16: {
4741 if (!Cast<PT_Bool, PT_Uint16>(S, OpPC))
4742 return false;
4743 continue;
4744}
4745case OP_CastBoolSint16: {
4746 if (!Cast<PT_Bool, PT_Sint16>(S, OpPC))
4747 return false;
4748 continue;
4749}
4750case OP_CastBoolUint32: {
4751 if (!Cast<PT_Bool, PT_Uint32>(S, OpPC))
4752 return false;
4753 continue;
4754}
4755case OP_CastBoolSint32: {
4756 if (!Cast<PT_Bool, PT_Sint32>(S, OpPC))
4757 return false;
4758 continue;
4759}
4760case OP_CastBoolUint64: {
4761 if (!Cast<PT_Bool, PT_Uint64>(S, OpPC))
4762 return false;
4763 continue;
4764}
4765case OP_CastBoolSint64: {
4766 if (!Cast<PT_Bool, PT_Sint64>(S, OpPC))
4767 return false;
4768 continue;
4769}
4770case OP_CastBoolBool: {
4771 if (!Cast<PT_Bool, PT_Bool>(S, OpPC))
4772 return false;
4773 continue;
4774}
4775case OP_CastIntAPUint8: {
4776 if (!Cast<PT_IntAP, PT_Uint8>(S, OpPC))
4777 return false;
4778 continue;
4779}
4780case OP_CastIntAPSint8: {
4781 if (!Cast<PT_IntAP, PT_Sint8>(S, OpPC))
4782 return false;
4783 continue;
4784}
4785case OP_CastIntAPUint16: {
4786 if (!Cast<PT_IntAP, PT_Uint16>(S, OpPC))
4787 return false;
4788 continue;
4789}
4790case OP_CastIntAPSint16: {
4791 if (!Cast<PT_IntAP, PT_Sint16>(S, OpPC))
4792 return false;
4793 continue;
4794}
4795case OP_CastIntAPUint32: {
4796 if (!Cast<PT_IntAP, PT_Uint32>(S, OpPC))
4797 return false;
4798 continue;
4799}
4800case OP_CastIntAPSint32: {
4801 if (!Cast<PT_IntAP, PT_Sint32>(S, OpPC))
4802 return false;
4803 continue;
4804}
4805case OP_CastIntAPUint64: {
4806 if (!Cast<PT_IntAP, PT_Uint64>(S, OpPC))
4807 return false;
4808 continue;
4809}
4810case OP_CastIntAPSint64: {
4811 if (!Cast<PT_IntAP, PT_Sint64>(S, OpPC))
4812 return false;
4813 continue;
4814}
4815case OP_CastIntAPBool: {
4816 if (!Cast<PT_IntAP, PT_Bool>(S, OpPC))
4817 return false;
4818 continue;
4819}
4820case OP_CastIntAPSUint8: {
4821 if (!Cast<PT_IntAPS, PT_Uint8>(S, OpPC))
4822 return false;
4823 continue;
4824}
4825case OP_CastIntAPSSint8: {
4826 if (!Cast<PT_IntAPS, PT_Sint8>(S, OpPC))
4827 return false;
4828 continue;
4829}
4830case OP_CastIntAPSUint16: {
4831 if (!Cast<PT_IntAPS, PT_Uint16>(S, OpPC))
4832 return false;
4833 continue;
4834}
4835case OP_CastIntAPSSint16: {
4836 if (!Cast<PT_IntAPS, PT_Sint16>(S, OpPC))
4837 return false;
4838 continue;
4839}
4840case OP_CastIntAPSUint32: {
4841 if (!Cast<PT_IntAPS, PT_Uint32>(S, OpPC))
4842 return false;
4843 continue;
4844}
4845case OP_CastIntAPSSint32: {
4846 if (!Cast<PT_IntAPS, PT_Sint32>(S, OpPC))
4847 return false;
4848 continue;
4849}
4850case OP_CastIntAPSUint64: {
4851 if (!Cast<PT_IntAPS, PT_Uint64>(S, OpPC))
4852 return false;
4853 continue;
4854}
4855case OP_CastIntAPSSint64: {
4856 if (!Cast<PT_IntAPS, PT_Sint64>(S, OpPC))
4857 return false;
4858 continue;
4859}
4860case OP_CastIntAPSBool: {
4861 if (!Cast<PT_IntAPS, PT_Bool>(S, OpPC))
4862 return false;
4863 continue;
4864}
4865case OP_CastFixedPointUint8: {
4866 if (!Cast<PT_FixedPoint, PT_Uint8>(S, OpPC))
4867 return false;
4868 continue;
4869}
4870case OP_CastFixedPointSint8: {
4871 if (!Cast<PT_FixedPoint, PT_Sint8>(S, OpPC))
4872 return false;
4873 continue;
4874}
4875case OP_CastFixedPointUint16: {
4876 if (!Cast<PT_FixedPoint, PT_Uint16>(S, OpPC))
4877 return false;
4878 continue;
4879}
4880case OP_CastFixedPointSint16: {
4881 if (!Cast<PT_FixedPoint, PT_Sint16>(S, OpPC))
4882 return false;
4883 continue;
4884}
4885case OP_CastFixedPointUint32: {
4886 if (!Cast<PT_FixedPoint, PT_Uint32>(S, OpPC))
4887 return false;
4888 continue;
4889}
4890case OP_CastFixedPointSint32: {
4891 if (!Cast<PT_FixedPoint, PT_Sint32>(S, OpPC))
4892 return false;
4893 continue;
4894}
4895case OP_CastFixedPointUint64: {
4896 if (!Cast<PT_FixedPoint, PT_Uint64>(S, OpPC))
4897 return false;
4898 continue;
4899}
4900case OP_CastFixedPointSint64: {
4901 if (!Cast<PT_FixedPoint, PT_Sint64>(S, OpPC))
4902 return false;
4903 continue;
4904}
4905case OP_CastFixedPointBool: {
4906 if (!Cast<PT_FixedPoint, PT_Bool>(S, OpPC))
4907 return false;
4908 continue;
4909}
4910#endif
4911#ifdef GET_DISASM
4912case OP_CastUint8Uint8:
4913 Text.Op = PrintName("CastUint8Uint8");
4914 break;
4915case OP_CastUint8Sint8:
4916 Text.Op = PrintName("CastUint8Sint8");
4917 break;
4918case OP_CastUint8Uint16:
4919 Text.Op = PrintName("CastUint8Uint16");
4920 break;
4921case OP_CastUint8Sint16:
4922 Text.Op = PrintName("CastUint8Sint16");
4923 break;
4924case OP_CastUint8Uint32:
4925 Text.Op = PrintName("CastUint8Uint32");
4926 break;
4927case OP_CastUint8Sint32:
4928 Text.Op = PrintName("CastUint8Sint32");
4929 break;
4930case OP_CastUint8Uint64:
4931 Text.Op = PrintName("CastUint8Uint64");
4932 break;
4933case OP_CastUint8Sint64:
4934 Text.Op = PrintName("CastUint8Sint64");
4935 break;
4936case OP_CastUint8Bool:
4937 Text.Op = PrintName("CastUint8Bool");
4938 break;
4939case OP_CastSint8Uint8:
4940 Text.Op = PrintName("CastSint8Uint8");
4941 break;
4942case OP_CastSint8Sint8:
4943 Text.Op = PrintName("CastSint8Sint8");
4944 break;
4945case OP_CastSint8Uint16:
4946 Text.Op = PrintName("CastSint8Uint16");
4947 break;
4948case OP_CastSint8Sint16:
4949 Text.Op = PrintName("CastSint8Sint16");
4950 break;
4951case OP_CastSint8Uint32:
4952 Text.Op = PrintName("CastSint8Uint32");
4953 break;
4954case OP_CastSint8Sint32:
4955 Text.Op = PrintName("CastSint8Sint32");
4956 break;
4957case OP_CastSint8Uint64:
4958 Text.Op = PrintName("CastSint8Uint64");
4959 break;
4960case OP_CastSint8Sint64:
4961 Text.Op = PrintName("CastSint8Sint64");
4962 break;
4963case OP_CastSint8Bool:
4964 Text.Op = PrintName("CastSint8Bool");
4965 break;
4966case OP_CastUint16Uint8:
4967 Text.Op = PrintName("CastUint16Uint8");
4968 break;
4969case OP_CastUint16Sint8:
4970 Text.Op = PrintName("CastUint16Sint8");
4971 break;
4972case OP_CastUint16Uint16:
4973 Text.Op = PrintName("CastUint16Uint16");
4974 break;
4975case OP_CastUint16Sint16:
4976 Text.Op = PrintName("CastUint16Sint16");
4977 break;
4978case OP_CastUint16Uint32:
4979 Text.Op = PrintName("CastUint16Uint32");
4980 break;
4981case OP_CastUint16Sint32:
4982 Text.Op = PrintName("CastUint16Sint32");
4983 break;
4984case OP_CastUint16Uint64:
4985 Text.Op = PrintName("CastUint16Uint64");
4986 break;
4987case OP_CastUint16Sint64:
4988 Text.Op = PrintName("CastUint16Sint64");
4989 break;
4990case OP_CastUint16Bool:
4991 Text.Op = PrintName("CastUint16Bool");
4992 break;
4993case OP_CastSint16Uint8:
4994 Text.Op = PrintName("CastSint16Uint8");
4995 break;
4996case OP_CastSint16Sint8:
4997 Text.Op = PrintName("CastSint16Sint8");
4998 break;
4999case OP_CastSint16Uint16:
5000 Text.Op = PrintName("CastSint16Uint16");
5001 break;
5002case OP_CastSint16Sint16:
5003 Text.Op = PrintName("CastSint16Sint16");
5004 break;
5005case OP_CastSint16Uint32:
5006 Text.Op = PrintName("CastSint16Uint32");
5007 break;
5008case OP_CastSint16Sint32:
5009 Text.Op = PrintName("CastSint16Sint32");
5010 break;
5011case OP_CastSint16Uint64:
5012 Text.Op = PrintName("CastSint16Uint64");
5013 break;
5014case OP_CastSint16Sint64:
5015 Text.Op = PrintName("CastSint16Sint64");
5016 break;
5017case OP_CastSint16Bool:
5018 Text.Op = PrintName("CastSint16Bool");
5019 break;
5020case OP_CastUint32Uint8:
5021 Text.Op = PrintName("CastUint32Uint8");
5022 break;
5023case OP_CastUint32Sint8:
5024 Text.Op = PrintName("CastUint32Sint8");
5025 break;
5026case OP_CastUint32Uint16:
5027 Text.Op = PrintName("CastUint32Uint16");
5028 break;
5029case OP_CastUint32Sint16:
5030 Text.Op = PrintName("CastUint32Sint16");
5031 break;
5032case OP_CastUint32Uint32:
5033 Text.Op = PrintName("CastUint32Uint32");
5034 break;
5035case OP_CastUint32Sint32:
5036 Text.Op = PrintName("CastUint32Sint32");
5037 break;
5038case OP_CastUint32Uint64:
5039 Text.Op = PrintName("CastUint32Uint64");
5040 break;
5041case OP_CastUint32Sint64:
5042 Text.Op = PrintName("CastUint32Sint64");
5043 break;
5044case OP_CastUint32Bool:
5045 Text.Op = PrintName("CastUint32Bool");
5046 break;
5047case OP_CastSint32Uint8:
5048 Text.Op = PrintName("CastSint32Uint8");
5049 break;
5050case OP_CastSint32Sint8:
5051 Text.Op = PrintName("CastSint32Sint8");
5052 break;
5053case OP_CastSint32Uint16:
5054 Text.Op = PrintName("CastSint32Uint16");
5055 break;
5056case OP_CastSint32Sint16:
5057 Text.Op = PrintName("CastSint32Sint16");
5058 break;
5059case OP_CastSint32Uint32:
5060 Text.Op = PrintName("CastSint32Uint32");
5061 break;
5062case OP_CastSint32Sint32:
5063 Text.Op = PrintName("CastSint32Sint32");
5064 break;
5065case OP_CastSint32Uint64:
5066 Text.Op = PrintName("CastSint32Uint64");
5067 break;
5068case OP_CastSint32Sint64:
5069 Text.Op = PrintName("CastSint32Sint64");
5070 break;
5071case OP_CastSint32Bool:
5072 Text.Op = PrintName("CastSint32Bool");
5073 break;
5074case OP_CastUint64Uint8:
5075 Text.Op = PrintName("CastUint64Uint8");
5076 break;
5077case OP_CastUint64Sint8:
5078 Text.Op = PrintName("CastUint64Sint8");
5079 break;
5080case OP_CastUint64Uint16:
5081 Text.Op = PrintName("CastUint64Uint16");
5082 break;
5083case OP_CastUint64Sint16:
5084 Text.Op = PrintName("CastUint64Sint16");
5085 break;
5086case OP_CastUint64Uint32:
5087 Text.Op = PrintName("CastUint64Uint32");
5088 break;
5089case OP_CastUint64Sint32:
5090 Text.Op = PrintName("CastUint64Sint32");
5091 break;
5092case OP_CastUint64Uint64:
5093 Text.Op = PrintName("CastUint64Uint64");
5094 break;
5095case OP_CastUint64Sint64:
5096 Text.Op = PrintName("CastUint64Sint64");
5097 break;
5098case OP_CastUint64Bool:
5099 Text.Op = PrintName("CastUint64Bool");
5100 break;
5101case OP_CastSint64Uint8:
5102 Text.Op = PrintName("CastSint64Uint8");
5103 break;
5104case OP_CastSint64Sint8:
5105 Text.Op = PrintName("CastSint64Sint8");
5106 break;
5107case OP_CastSint64Uint16:
5108 Text.Op = PrintName("CastSint64Uint16");
5109 break;
5110case OP_CastSint64Sint16:
5111 Text.Op = PrintName("CastSint64Sint16");
5112 break;
5113case OP_CastSint64Uint32:
5114 Text.Op = PrintName("CastSint64Uint32");
5115 break;
5116case OP_CastSint64Sint32:
5117 Text.Op = PrintName("CastSint64Sint32");
5118 break;
5119case OP_CastSint64Uint64:
5120 Text.Op = PrintName("CastSint64Uint64");
5121 break;
5122case OP_CastSint64Sint64:
5123 Text.Op = PrintName("CastSint64Sint64");
5124 break;
5125case OP_CastSint64Bool:
5126 Text.Op = PrintName("CastSint64Bool");
5127 break;
5128case OP_CastBoolUint8:
5129 Text.Op = PrintName("CastBoolUint8");
5130 break;
5131case OP_CastBoolSint8:
5132 Text.Op = PrintName("CastBoolSint8");
5133 break;
5134case OP_CastBoolUint16:
5135 Text.Op = PrintName("CastBoolUint16");
5136 break;
5137case OP_CastBoolSint16:
5138 Text.Op = PrintName("CastBoolSint16");
5139 break;
5140case OP_CastBoolUint32:
5141 Text.Op = PrintName("CastBoolUint32");
5142 break;
5143case OP_CastBoolSint32:
5144 Text.Op = PrintName("CastBoolSint32");
5145 break;
5146case OP_CastBoolUint64:
5147 Text.Op = PrintName("CastBoolUint64");
5148 break;
5149case OP_CastBoolSint64:
5150 Text.Op = PrintName("CastBoolSint64");
5151 break;
5152case OP_CastBoolBool:
5153 Text.Op = PrintName("CastBoolBool");
5154 break;
5155case OP_CastIntAPUint8:
5156 Text.Op = PrintName("CastIntAPUint8");
5157 break;
5158case OP_CastIntAPSint8:
5159 Text.Op = PrintName("CastIntAPSint8");
5160 break;
5161case OP_CastIntAPUint16:
5162 Text.Op = PrintName("CastIntAPUint16");
5163 break;
5164case OP_CastIntAPSint16:
5165 Text.Op = PrintName("CastIntAPSint16");
5166 break;
5167case OP_CastIntAPUint32:
5168 Text.Op = PrintName("CastIntAPUint32");
5169 break;
5170case OP_CastIntAPSint32:
5171 Text.Op = PrintName("CastIntAPSint32");
5172 break;
5173case OP_CastIntAPUint64:
5174 Text.Op = PrintName("CastIntAPUint64");
5175 break;
5176case OP_CastIntAPSint64:
5177 Text.Op = PrintName("CastIntAPSint64");
5178 break;
5179case OP_CastIntAPBool:
5180 Text.Op = PrintName("CastIntAPBool");
5181 break;
5182case OP_CastIntAPSUint8:
5183 Text.Op = PrintName("CastIntAPSUint8");
5184 break;
5185case OP_CastIntAPSSint8:
5186 Text.Op = PrintName("CastIntAPSSint8");
5187 break;
5188case OP_CastIntAPSUint16:
5189 Text.Op = PrintName("CastIntAPSUint16");
5190 break;
5191case OP_CastIntAPSSint16:
5192 Text.Op = PrintName("CastIntAPSSint16");
5193 break;
5194case OP_CastIntAPSUint32:
5195 Text.Op = PrintName("CastIntAPSUint32");
5196 break;
5197case OP_CastIntAPSSint32:
5198 Text.Op = PrintName("CastIntAPSSint32");
5199 break;
5200case OP_CastIntAPSUint64:
5201 Text.Op = PrintName("CastIntAPSUint64");
5202 break;
5203case OP_CastIntAPSSint64:
5204 Text.Op = PrintName("CastIntAPSSint64");
5205 break;
5206case OP_CastIntAPSBool:
5207 Text.Op = PrintName("CastIntAPSBool");
5208 break;
5209case OP_CastFixedPointUint8:
5210 Text.Op = PrintName("CastFixedPointUint8");
5211 break;
5212case OP_CastFixedPointSint8:
5213 Text.Op = PrintName("CastFixedPointSint8");
5214 break;
5215case OP_CastFixedPointUint16:
5216 Text.Op = PrintName("CastFixedPointUint16");
5217 break;
5218case OP_CastFixedPointSint16:
5219 Text.Op = PrintName("CastFixedPointSint16");
5220 break;
5221case OP_CastFixedPointUint32:
5222 Text.Op = PrintName("CastFixedPointUint32");
5223 break;
5224case OP_CastFixedPointSint32:
5225 Text.Op = PrintName("CastFixedPointSint32");
5226 break;
5227case OP_CastFixedPointUint64:
5228 Text.Op = PrintName("CastFixedPointUint64");
5229 break;
5230case OP_CastFixedPointSint64:
5231 Text.Op = PrintName("CastFixedPointSint64");
5232 break;
5233case OP_CastFixedPointBool:
5234 Text.Op = PrintName("CastFixedPointBool");
5235 break;
5236#endif
5237#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5238bool emitCastUint8Uint8(SourceInfo);
5239bool emitCastUint8Sint8(SourceInfo);
5240bool emitCastUint8Uint16(SourceInfo);
5241bool emitCastUint8Sint16(SourceInfo);
5242bool emitCastUint8Uint32(SourceInfo);
5243bool emitCastUint8Sint32(SourceInfo);
5244bool emitCastUint8Uint64(SourceInfo);
5245bool emitCastUint8Sint64(SourceInfo);
5246bool emitCastUint8Bool(SourceInfo);
5247bool emitCastSint8Uint8(SourceInfo);
5248bool emitCastSint8Sint8(SourceInfo);
5249bool emitCastSint8Uint16(SourceInfo);
5250bool emitCastSint8Sint16(SourceInfo);
5251bool emitCastSint8Uint32(SourceInfo);
5252bool emitCastSint8Sint32(SourceInfo);
5253bool emitCastSint8Uint64(SourceInfo);
5254bool emitCastSint8Sint64(SourceInfo);
5255bool emitCastSint8Bool(SourceInfo);
5256bool emitCastUint16Uint8(SourceInfo);
5257bool emitCastUint16Sint8(SourceInfo);
5258bool emitCastUint16Uint16(SourceInfo);
5259bool emitCastUint16Sint16(SourceInfo);
5260bool emitCastUint16Uint32(SourceInfo);
5261bool emitCastUint16Sint32(SourceInfo);
5262bool emitCastUint16Uint64(SourceInfo);
5263bool emitCastUint16Sint64(SourceInfo);
5264bool emitCastUint16Bool(SourceInfo);
5265bool emitCastSint16Uint8(SourceInfo);
5266bool emitCastSint16Sint8(SourceInfo);
5267bool emitCastSint16Uint16(SourceInfo);
5268bool emitCastSint16Sint16(SourceInfo);
5269bool emitCastSint16Uint32(SourceInfo);
5270bool emitCastSint16Sint32(SourceInfo);
5271bool emitCastSint16Uint64(SourceInfo);
5272bool emitCastSint16Sint64(SourceInfo);
5273bool emitCastSint16Bool(SourceInfo);
5274bool emitCastUint32Uint8(SourceInfo);
5275bool emitCastUint32Sint8(SourceInfo);
5276bool emitCastUint32Uint16(SourceInfo);
5277bool emitCastUint32Sint16(SourceInfo);
5278bool emitCastUint32Uint32(SourceInfo);
5279bool emitCastUint32Sint32(SourceInfo);
5280bool emitCastUint32Uint64(SourceInfo);
5281bool emitCastUint32Sint64(SourceInfo);
5282bool emitCastUint32Bool(SourceInfo);
5283bool emitCastSint32Uint8(SourceInfo);
5284bool emitCastSint32Sint8(SourceInfo);
5285bool emitCastSint32Uint16(SourceInfo);
5286bool emitCastSint32Sint16(SourceInfo);
5287bool emitCastSint32Uint32(SourceInfo);
5288bool emitCastSint32Sint32(SourceInfo);
5289bool emitCastSint32Uint64(SourceInfo);
5290bool emitCastSint32Sint64(SourceInfo);
5291bool emitCastSint32Bool(SourceInfo);
5292bool emitCastUint64Uint8(SourceInfo);
5293bool emitCastUint64Sint8(SourceInfo);
5294bool emitCastUint64Uint16(SourceInfo);
5295bool emitCastUint64Sint16(SourceInfo);
5296bool emitCastUint64Uint32(SourceInfo);
5297bool emitCastUint64Sint32(SourceInfo);
5298bool emitCastUint64Uint64(SourceInfo);
5299bool emitCastUint64Sint64(SourceInfo);
5300bool emitCastUint64Bool(SourceInfo);
5301bool emitCastSint64Uint8(SourceInfo);
5302bool emitCastSint64Sint8(SourceInfo);
5303bool emitCastSint64Uint16(SourceInfo);
5304bool emitCastSint64Sint16(SourceInfo);
5305bool emitCastSint64Uint32(SourceInfo);
5306bool emitCastSint64Sint32(SourceInfo);
5307bool emitCastSint64Uint64(SourceInfo);
5308bool emitCastSint64Sint64(SourceInfo);
5309bool emitCastSint64Bool(SourceInfo);
5310bool emitCastBoolUint8(SourceInfo);
5311bool emitCastBoolSint8(SourceInfo);
5312bool emitCastBoolUint16(SourceInfo);
5313bool emitCastBoolSint16(SourceInfo);
5314bool emitCastBoolUint32(SourceInfo);
5315bool emitCastBoolSint32(SourceInfo);
5316bool emitCastBoolUint64(SourceInfo);
5317bool emitCastBoolSint64(SourceInfo);
5318bool emitCastBoolBool(SourceInfo);
5319bool emitCastIntAPUint8(SourceInfo);
5320bool emitCastIntAPSint8(SourceInfo);
5321bool emitCastIntAPUint16(SourceInfo);
5322bool emitCastIntAPSint16(SourceInfo);
5323bool emitCastIntAPUint32(SourceInfo);
5324bool emitCastIntAPSint32(SourceInfo);
5325bool emitCastIntAPUint64(SourceInfo);
5326bool emitCastIntAPSint64(SourceInfo);
5327bool emitCastIntAPBool(SourceInfo);
5328bool emitCastIntAPSUint8(SourceInfo);
5329bool emitCastIntAPSSint8(SourceInfo);
5330bool emitCastIntAPSUint16(SourceInfo);
5331bool emitCastIntAPSSint16(SourceInfo);
5332bool emitCastIntAPSUint32(SourceInfo);
5333bool emitCastIntAPSSint32(SourceInfo);
5334bool emitCastIntAPSUint64(SourceInfo);
5335bool emitCastIntAPSSint64(SourceInfo);
5336bool emitCastIntAPSBool(SourceInfo);
5337bool emitCastFixedPointUint8(SourceInfo);
5338bool emitCastFixedPointSint8(SourceInfo);
5339bool emitCastFixedPointUint16(SourceInfo);
5340bool emitCastFixedPointSint16(SourceInfo);
5341bool emitCastFixedPointUint32(SourceInfo);
5342bool emitCastFixedPointSint32(SourceInfo);
5343bool emitCastFixedPointUint64(SourceInfo);
5344bool emitCastFixedPointSint64(SourceInfo);
5345bool emitCastFixedPointBool(SourceInfo);
5346#endif
5347#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
5348[[nodiscard]] bool emitCast(PrimType, PrimType, SourceInfo I);
5349#endif
5350#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
5351bool
5352#if defined(GET_EVAL_IMPL)
5353EvalEmitter
5354#else
5355ByteCodeEmitter
5356#endif
5357::emitCast(PrimType T0, PrimType T1, SourceInfo I) {
5358 switch (T0) {
5359 case PT_Uint8:
5360 switch (T1) {
5361 case PT_Uint8:
5362 return emitCastUint8Uint8(I);
5363 case PT_Sint8:
5364 return emitCastUint8Sint8(I);
5365 case PT_Uint16:
5366 return emitCastUint8Uint16(I);
5367 case PT_Sint16:
5368 return emitCastUint8Sint16(I);
5369 case PT_Uint32:
5370 return emitCastUint8Uint32(I);
5371 case PT_Sint32:
5372 return emitCastUint8Sint32(I);
5373 case PT_Uint64:
5374 return emitCastUint8Uint64(I);
5375 case PT_Sint64:
5376 return emitCastUint8Sint64(I);
5377 case PT_Bool:
5378 return emitCastUint8Bool(I);
5379 default: llvm_unreachable("invalid type: emitCast");
5380 }
5381 llvm_unreachable("invalid enum value");
5382 case PT_Sint8:
5383 switch (T1) {
5384 case PT_Uint8:
5385 return emitCastSint8Uint8(I);
5386 case PT_Sint8:
5387 return emitCastSint8Sint8(I);
5388 case PT_Uint16:
5389 return emitCastSint8Uint16(I);
5390 case PT_Sint16:
5391 return emitCastSint8Sint16(I);
5392 case PT_Uint32:
5393 return emitCastSint8Uint32(I);
5394 case PT_Sint32:
5395 return emitCastSint8Sint32(I);
5396 case PT_Uint64:
5397 return emitCastSint8Uint64(I);
5398 case PT_Sint64:
5399 return emitCastSint8Sint64(I);
5400 case PT_Bool:
5401 return emitCastSint8Bool(I);
5402 default: llvm_unreachable("invalid type: emitCast");
5403 }
5404 llvm_unreachable("invalid enum value");
5405 case PT_Uint16:
5406 switch (T1) {
5407 case PT_Uint8:
5408 return emitCastUint16Uint8(I);
5409 case PT_Sint8:
5410 return emitCastUint16Sint8(I);
5411 case PT_Uint16:
5412 return emitCastUint16Uint16(I);
5413 case PT_Sint16:
5414 return emitCastUint16Sint16(I);
5415 case PT_Uint32:
5416 return emitCastUint16Uint32(I);
5417 case PT_Sint32:
5418 return emitCastUint16Sint32(I);
5419 case PT_Uint64:
5420 return emitCastUint16Uint64(I);
5421 case PT_Sint64:
5422 return emitCastUint16Sint64(I);
5423 case PT_Bool:
5424 return emitCastUint16Bool(I);
5425 default: llvm_unreachable("invalid type: emitCast");
5426 }
5427 llvm_unreachable("invalid enum value");
5428 case PT_Sint16:
5429 switch (T1) {
5430 case PT_Uint8:
5431 return emitCastSint16Uint8(I);
5432 case PT_Sint8:
5433 return emitCastSint16Sint8(I);
5434 case PT_Uint16:
5435 return emitCastSint16Uint16(I);
5436 case PT_Sint16:
5437 return emitCastSint16Sint16(I);
5438 case PT_Uint32:
5439 return emitCastSint16Uint32(I);
5440 case PT_Sint32:
5441 return emitCastSint16Sint32(I);
5442 case PT_Uint64:
5443 return emitCastSint16Uint64(I);
5444 case PT_Sint64:
5445 return emitCastSint16Sint64(I);
5446 case PT_Bool:
5447 return emitCastSint16Bool(I);
5448 default: llvm_unreachable("invalid type: emitCast");
5449 }
5450 llvm_unreachable("invalid enum value");
5451 case PT_Uint32:
5452 switch (T1) {
5453 case PT_Uint8:
5454 return emitCastUint32Uint8(I);
5455 case PT_Sint8:
5456 return emitCastUint32Sint8(I);
5457 case PT_Uint16:
5458 return emitCastUint32Uint16(I);
5459 case PT_Sint16:
5460 return emitCastUint32Sint16(I);
5461 case PT_Uint32:
5462 return emitCastUint32Uint32(I);
5463 case PT_Sint32:
5464 return emitCastUint32Sint32(I);
5465 case PT_Uint64:
5466 return emitCastUint32Uint64(I);
5467 case PT_Sint64:
5468 return emitCastUint32Sint64(I);
5469 case PT_Bool:
5470 return emitCastUint32Bool(I);
5471 default: llvm_unreachable("invalid type: emitCast");
5472 }
5473 llvm_unreachable("invalid enum value");
5474 case PT_Sint32:
5475 switch (T1) {
5476 case PT_Uint8:
5477 return emitCastSint32Uint8(I);
5478 case PT_Sint8:
5479 return emitCastSint32Sint8(I);
5480 case PT_Uint16:
5481 return emitCastSint32Uint16(I);
5482 case PT_Sint16:
5483 return emitCastSint32Sint16(I);
5484 case PT_Uint32:
5485 return emitCastSint32Uint32(I);
5486 case PT_Sint32:
5487 return emitCastSint32Sint32(I);
5488 case PT_Uint64:
5489 return emitCastSint32Uint64(I);
5490 case PT_Sint64:
5491 return emitCastSint32Sint64(I);
5492 case PT_Bool:
5493 return emitCastSint32Bool(I);
5494 default: llvm_unreachable("invalid type: emitCast");
5495 }
5496 llvm_unreachable("invalid enum value");
5497 case PT_Uint64:
5498 switch (T1) {
5499 case PT_Uint8:
5500 return emitCastUint64Uint8(I);
5501 case PT_Sint8:
5502 return emitCastUint64Sint8(I);
5503 case PT_Uint16:
5504 return emitCastUint64Uint16(I);
5505 case PT_Sint16:
5506 return emitCastUint64Sint16(I);
5507 case PT_Uint32:
5508 return emitCastUint64Uint32(I);
5509 case PT_Sint32:
5510 return emitCastUint64Sint32(I);
5511 case PT_Uint64:
5512 return emitCastUint64Uint64(I);
5513 case PT_Sint64:
5514 return emitCastUint64Sint64(I);
5515 case PT_Bool:
5516 return emitCastUint64Bool(I);
5517 default: llvm_unreachable("invalid type: emitCast");
5518 }
5519 llvm_unreachable("invalid enum value");
5520 case PT_Sint64:
5521 switch (T1) {
5522 case PT_Uint8:
5523 return emitCastSint64Uint8(I);
5524 case PT_Sint8:
5525 return emitCastSint64Sint8(I);
5526 case PT_Uint16:
5527 return emitCastSint64Uint16(I);
5528 case PT_Sint16:
5529 return emitCastSint64Sint16(I);
5530 case PT_Uint32:
5531 return emitCastSint64Uint32(I);
5532 case PT_Sint32:
5533 return emitCastSint64Sint32(I);
5534 case PT_Uint64:
5535 return emitCastSint64Uint64(I);
5536 case PT_Sint64:
5537 return emitCastSint64Sint64(I);
5538 case PT_Bool:
5539 return emitCastSint64Bool(I);
5540 default: llvm_unreachable("invalid type: emitCast");
5541 }
5542 llvm_unreachable("invalid enum value");
5543 case PT_Bool:
5544 switch (T1) {
5545 case PT_Uint8:
5546 return emitCastBoolUint8(I);
5547 case PT_Sint8:
5548 return emitCastBoolSint8(I);
5549 case PT_Uint16:
5550 return emitCastBoolUint16(I);
5551 case PT_Sint16:
5552 return emitCastBoolSint16(I);
5553 case PT_Uint32:
5554 return emitCastBoolUint32(I);
5555 case PT_Sint32:
5556 return emitCastBoolSint32(I);
5557 case PT_Uint64:
5558 return emitCastBoolUint64(I);
5559 case PT_Sint64:
5560 return emitCastBoolSint64(I);
5561 case PT_Bool:
5562 return emitCastBoolBool(I);
5563 default: llvm_unreachable("invalid type: emitCast");
5564 }
5565 llvm_unreachable("invalid enum value");
5566 case PT_IntAP:
5567 switch (T1) {
5568 case PT_Uint8:
5569 return emitCastIntAPUint8(I);
5570 case PT_Sint8:
5571 return emitCastIntAPSint8(I);
5572 case PT_Uint16:
5573 return emitCastIntAPUint16(I);
5574 case PT_Sint16:
5575 return emitCastIntAPSint16(I);
5576 case PT_Uint32:
5577 return emitCastIntAPUint32(I);
5578 case PT_Sint32:
5579 return emitCastIntAPSint32(I);
5580 case PT_Uint64:
5581 return emitCastIntAPUint64(I);
5582 case PT_Sint64:
5583 return emitCastIntAPSint64(I);
5584 case PT_Bool:
5585 return emitCastIntAPBool(I);
5586 default: llvm_unreachable("invalid type: emitCast");
5587 }
5588 llvm_unreachable("invalid enum value");
5589 case PT_IntAPS:
5590 switch (T1) {
5591 case PT_Uint8:
5592 return emitCastIntAPSUint8(I);
5593 case PT_Sint8:
5594 return emitCastIntAPSSint8(I);
5595 case PT_Uint16:
5596 return emitCastIntAPSUint16(I);
5597 case PT_Sint16:
5598 return emitCastIntAPSSint16(I);
5599 case PT_Uint32:
5600 return emitCastIntAPSUint32(I);
5601 case PT_Sint32:
5602 return emitCastIntAPSSint32(I);
5603 case PT_Uint64:
5604 return emitCastIntAPSUint64(I);
5605 case PT_Sint64:
5606 return emitCastIntAPSSint64(I);
5607 case PT_Bool:
5608 return emitCastIntAPSBool(I);
5609 default: llvm_unreachable("invalid type: emitCast");
5610 }
5611 llvm_unreachable("invalid enum value");
5612 case PT_FixedPoint:
5613 switch (T1) {
5614 case PT_Uint8:
5615 return emitCastFixedPointUint8(I);
5616 case PT_Sint8:
5617 return emitCastFixedPointSint8(I);
5618 case PT_Uint16:
5619 return emitCastFixedPointUint16(I);
5620 case PT_Sint16:
5621 return emitCastFixedPointSint16(I);
5622 case PT_Uint32:
5623 return emitCastFixedPointUint32(I);
5624 case PT_Sint32:
5625 return emitCastFixedPointSint32(I);
5626 case PT_Uint64:
5627 return emitCastFixedPointUint64(I);
5628 case PT_Sint64:
5629 return emitCastFixedPointSint64(I);
5630 case PT_Bool:
5631 return emitCastFixedPointBool(I);
5632 default: llvm_unreachable("invalid type: emitCast");
5633 }
5634 llvm_unreachable("invalid enum value");
5635 default: llvm_unreachable("invalid type: emitCast");
5636 }
5637 llvm_unreachable("invalid enum value");
5638}
5639#endif
5640#ifdef GET_LINK_IMPL
5641bool ByteCodeEmitter::emitCastUint8Uint8(SourceInfo L) {
5642 return emitOp<>(OP_CastUint8Uint8, L);
5643}
5644bool ByteCodeEmitter::emitCastUint8Sint8(SourceInfo L) {
5645 return emitOp<>(OP_CastUint8Sint8, L);
5646}
5647bool ByteCodeEmitter::emitCastUint8Uint16(SourceInfo L) {
5648 return emitOp<>(OP_CastUint8Uint16, L);
5649}
5650bool ByteCodeEmitter::emitCastUint8Sint16(SourceInfo L) {
5651 return emitOp<>(OP_CastUint8Sint16, L);
5652}
5653bool ByteCodeEmitter::emitCastUint8Uint32(SourceInfo L) {
5654 return emitOp<>(OP_CastUint8Uint32, L);
5655}
5656bool ByteCodeEmitter::emitCastUint8Sint32(SourceInfo L) {
5657 return emitOp<>(OP_CastUint8Sint32, L);
5658}
5659bool ByteCodeEmitter::emitCastUint8Uint64(SourceInfo L) {
5660 return emitOp<>(OP_CastUint8Uint64, L);
5661}
5662bool ByteCodeEmitter::emitCastUint8Sint64(SourceInfo L) {
5663 return emitOp<>(OP_CastUint8Sint64, L);
5664}
5665bool ByteCodeEmitter::emitCastUint8Bool(SourceInfo L) {
5666 return emitOp<>(OP_CastUint8Bool, L);
5667}
5668bool ByteCodeEmitter::emitCastSint8Uint8(SourceInfo L) {
5669 return emitOp<>(OP_CastSint8Uint8, L);
5670}
5671bool ByteCodeEmitter::emitCastSint8Sint8(SourceInfo L) {
5672 return emitOp<>(OP_CastSint8Sint8, L);
5673}
5674bool ByteCodeEmitter::emitCastSint8Uint16(SourceInfo L) {
5675 return emitOp<>(OP_CastSint8Uint16, L);
5676}
5677bool ByteCodeEmitter::emitCastSint8Sint16(SourceInfo L) {
5678 return emitOp<>(OP_CastSint8Sint16, L);
5679}
5680bool ByteCodeEmitter::emitCastSint8Uint32(SourceInfo L) {
5681 return emitOp<>(OP_CastSint8Uint32, L);
5682}
5683bool ByteCodeEmitter::emitCastSint8Sint32(SourceInfo L) {
5684 return emitOp<>(OP_CastSint8Sint32, L);
5685}
5686bool ByteCodeEmitter::emitCastSint8Uint64(SourceInfo L) {
5687 return emitOp<>(OP_CastSint8Uint64, L);
5688}
5689bool ByteCodeEmitter::emitCastSint8Sint64(SourceInfo L) {
5690 return emitOp<>(OP_CastSint8Sint64, L);
5691}
5692bool ByteCodeEmitter::emitCastSint8Bool(SourceInfo L) {
5693 return emitOp<>(OP_CastSint8Bool, L);
5694}
5695bool ByteCodeEmitter::emitCastUint16Uint8(SourceInfo L) {
5696 return emitOp<>(OP_CastUint16Uint8, L);
5697}
5698bool ByteCodeEmitter::emitCastUint16Sint8(SourceInfo L) {
5699 return emitOp<>(OP_CastUint16Sint8, L);
5700}
5701bool ByteCodeEmitter::emitCastUint16Uint16(SourceInfo L) {
5702 return emitOp<>(OP_CastUint16Uint16, L);
5703}
5704bool ByteCodeEmitter::emitCastUint16Sint16(SourceInfo L) {
5705 return emitOp<>(OP_CastUint16Sint16, L);
5706}
5707bool ByteCodeEmitter::emitCastUint16Uint32(SourceInfo L) {
5708 return emitOp<>(OP_CastUint16Uint32, L);
5709}
5710bool ByteCodeEmitter::emitCastUint16Sint32(SourceInfo L) {
5711 return emitOp<>(OP_CastUint16Sint32, L);
5712}
5713bool ByteCodeEmitter::emitCastUint16Uint64(SourceInfo L) {
5714 return emitOp<>(OP_CastUint16Uint64, L);
5715}
5716bool ByteCodeEmitter::emitCastUint16Sint64(SourceInfo L) {
5717 return emitOp<>(OP_CastUint16Sint64, L);
5718}
5719bool ByteCodeEmitter::emitCastUint16Bool(SourceInfo L) {
5720 return emitOp<>(OP_CastUint16Bool, L);
5721}
5722bool ByteCodeEmitter::emitCastSint16Uint8(SourceInfo L) {
5723 return emitOp<>(OP_CastSint16Uint8, L);
5724}
5725bool ByteCodeEmitter::emitCastSint16Sint8(SourceInfo L) {
5726 return emitOp<>(OP_CastSint16Sint8, L);
5727}
5728bool ByteCodeEmitter::emitCastSint16Uint16(SourceInfo L) {
5729 return emitOp<>(OP_CastSint16Uint16, L);
5730}
5731bool ByteCodeEmitter::emitCastSint16Sint16(SourceInfo L) {
5732 return emitOp<>(OP_CastSint16Sint16, L);
5733}
5734bool ByteCodeEmitter::emitCastSint16Uint32(SourceInfo L) {
5735 return emitOp<>(OP_CastSint16Uint32, L);
5736}
5737bool ByteCodeEmitter::emitCastSint16Sint32(SourceInfo L) {
5738 return emitOp<>(OP_CastSint16Sint32, L);
5739}
5740bool ByteCodeEmitter::emitCastSint16Uint64(SourceInfo L) {
5741 return emitOp<>(OP_CastSint16Uint64, L);
5742}
5743bool ByteCodeEmitter::emitCastSint16Sint64(SourceInfo L) {
5744 return emitOp<>(OP_CastSint16Sint64, L);
5745}
5746bool ByteCodeEmitter::emitCastSint16Bool(SourceInfo L) {
5747 return emitOp<>(OP_CastSint16Bool, L);
5748}
5749bool ByteCodeEmitter::emitCastUint32Uint8(SourceInfo L) {
5750 return emitOp<>(OP_CastUint32Uint8, L);
5751}
5752bool ByteCodeEmitter::emitCastUint32Sint8(SourceInfo L) {
5753 return emitOp<>(OP_CastUint32Sint8, L);
5754}
5755bool ByteCodeEmitter::emitCastUint32Uint16(SourceInfo L) {
5756 return emitOp<>(OP_CastUint32Uint16, L);
5757}
5758bool ByteCodeEmitter::emitCastUint32Sint16(SourceInfo L) {
5759 return emitOp<>(OP_CastUint32Sint16, L);
5760}
5761bool ByteCodeEmitter::emitCastUint32Uint32(SourceInfo L) {
5762 return emitOp<>(OP_CastUint32Uint32, L);
5763}
5764bool ByteCodeEmitter::emitCastUint32Sint32(SourceInfo L) {
5765 return emitOp<>(OP_CastUint32Sint32, L);
5766}
5767bool ByteCodeEmitter::emitCastUint32Uint64(SourceInfo L) {
5768 return emitOp<>(OP_CastUint32Uint64, L);
5769}
5770bool ByteCodeEmitter::emitCastUint32Sint64(SourceInfo L) {
5771 return emitOp<>(OP_CastUint32Sint64, L);
5772}
5773bool ByteCodeEmitter::emitCastUint32Bool(SourceInfo L) {
5774 return emitOp<>(OP_CastUint32Bool, L);
5775}
5776bool ByteCodeEmitter::emitCastSint32Uint8(SourceInfo L) {
5777 return emitOp<>(OP_CastSint32Uint8, L);
5778}
5779bool ByteCodeEmitter::emitCastSint32Sint8(SourceInfo L) {
5780 return emitOp<>(OP_CastSint32Sint8, L);
5781}
5782bool ByteCodeEmitter::emitCastSint32Uint16(SourceInfo L) {
5783 return emitOp<>(OP_CastSint32Uint16, L);
5784}
5785bool ByteCodeEmitter::emitCastSint32Sint16(SourceInfo L) {
5786 return emitOp<>(OP_CastSint32Sint16, L);
5787}
5788bool ByteCodeEmitter::emitCastSint32Uint32(SourceInfo L) {
5789 return emitOp<>(OP_CastSint32Uint32, L);
5790}
5791bool ByteCodeEmitter::emitCastSint32Sint32(SourceInfo L) {
5792 return emitOp<>(OP_CastSint32Sint32, L);
5793}
5794bool ByteCodeEmitter::emitCastSint32Uint64(SourceInfo L) {
5795 return emitOp<>(OP_CastSint32Uint64, L);
5796}
5797bool ByteCodeEmitter::emitCastSint32Sint64(SourceInfo L) {
5798 return emitOp<>(OP_CastSint32Sint64, L);
5799}
5800bool ByteCodeEmitter::emitCastSint32Bool(SourceInfo L) {
5801 return emitOp<>(OP_CastSint32Bool, L);
5802}
5803bool ByteCodeEmitter::emitCastUint64Uint8(SourceInfo L) {
5804 return emitOp<>(OP_CastUint64Uint8, L);
5805}
5806bool ByteCodeEmitter::emitCastUint64Sint8(SourceInfo L) {
5807 return emitOp<>(OP_CastUint64Sint8, L);
5808}
5809bool ByteCodeEmitter::emitCastUint64Uint16(SourceInfo L) {
5810 return emitOp<>(OP_CastUint64Uint16, L);
5811}
5812bool ByteCodeEmitter::emitCastUint64Sint16(SourceInfo L) {
5813 return emitOp<>(OP_CastUint64Sint16, L);
5814}
5815bool ByteCodeEmitter::emitCastUint64Uint32(SourceInfo L) {
5816 return emitOp<>(OP_CastUint64Uint32, L);
5817}
5818bool ByteCodeEmitter::emitCastUint64Sint32(SourceInfo L) {
5819 return emitOp<>(OP_CastUint64Sint32, L);
5820}
5821bool ByteCodeEmitter::emitCastUint64Uint64(SourceInfo L) {
5822 return emitOp<>(OP_CastUint64Uint64, L);
5823}
5824bool ByteCodeEmitter::emitCastUint64Sint64(SourceInfo L) {
5825 return emitOp<>(OP_CastUint64Sint64, L);
5826}
5827bool ByteCodeEmitter::emitCastUint64Bool(SourceInfo L) {
5828 return emitOp<>(OP_CastUint64Bool, L);
5829}
5830bool ByteCodeEmitter::emitCastSint64Uint8(SourceInfo L) {
5831 return emitOp<>(OP_CastSint64Uint8, L);
5832}
5833bool ByteCodeEmitter::emitCastSint64Sint8(SourceInfo L) {
5834 return emitOp<>(OP_CastSint64Sint8, L);
5835}
5836bool ByteCodeEmitter::emitCastSint64Uint16(SourceInfo L) {
5837 return emitOp<>(OP_CastSint64Uint16, L);
5838}
5839bool ByteCodeEmitter::emitCastSint64Sint16(SourceInfo L) {
5840 return emitOp<>(OP_CastSint64Sint16, L);
5841}
5842bool ByteCodeEmitter::emitCastSint64Uint32(SourceInfo L) {
5843 return emitOp<>(OP_CastSint64Uint32, L);
5844}
5845bool ByteCodeEmitter::emitCastSint64Sint32(SourceInfo L) {
5846 return emitOp<>(OP_CastSint64Sint32, L);
5847}
5848bool ByteCodeEmitter::emitCastSint64Uint64(SourceInfo L) {
5849 return emitOp<>(OP_CastSint64Uint64, L);
5850}
5851bool ByteCodeEmitter::emitCastSint64Sint64(SourceInfo L) {
5852 return emitOp<>(OP_CastSint64Sint64, L);
5853}
5854bool ByteCodeEmitter::emitCastSint64Bool(SourceInfo L) {
5855 return emitOp<>(OP_CastSint64Bool, L);
5856}
5857bool ByteCodeEmitter::emitCastBoolUint8(SourceInfo L) {
5858 return emitOp<>(OP_CastBoolUint8, L);
5859}
5860bool ByteCodeEmitter::emitCastBoolSint8(SourceInfo L) {
5861 return emitOp<>(OP_CastBoolSint8, L);
5862}
5863bool ByteCodeEmitter::emitCastBoolUint16(SourceInfo L) {
5864 return emitOp<>(OP_CastBoolUint16, L);
5865}
5866bool ByteCodeEmitter::emitCastBoolSint16(SourceInfo L) {
5867 return emitOp<>(OP_CastBoolSint16, L);
5868}
5869bool ByteCodeEmitter::emitCastBoolUint32(SourceInfo L) {
5870 return emitOp<>(OP_CastBoolUint32, L);
5871}
5872bool ByteCodeEmitter::emitCastBoolSint32(SourceInfo L) {
5873 return emitOp<>(OP_CastBoolSint32, L);
5874}
5875bool ByteCodeEmitter::emitCastBoolUint64(SourceInfo L) {
5876 return emitOp<>(OP_CastBoolUint64, L);
5877}
5878bool ByteCodeEmitter::emitCastBoolSint64(SourceInfo L) {
5879 return emitOp<>(OP_CastBoolSint64, L);
5880}
5881bool ByteCodeEmitter::emitCastBoolBool(SourceInfo L) {
5882 return emitOp<>(OP_CastBoolBool, L);
5883}
5884bool ByteCodeEmitter::emitCastIntAPUint8(SourceInfo L) {
5885 return emitOp<>(OP_CastIntAPUint8, L);
5886}
5887bool ByteCodeEmitter::emitCastIntAPSint8(SourceInfo L) {
5888 return emitOp<>(OP_CastIntAPSint8, L);
5889}
5890bool ByteCodeEmitter::emitCastIntAPUint16(SourceInfo L) {
5891 return emitOp<>(OP_CastIntAPUint16, L);
5892}
5893bool ByteCodeEmitter::emitCastIntAPSint16(SourceInfo L) {
5894 return emitOp<>(OP_CastIntAPSint16, L);
5895}
5896bool ByteCodeEmitter::emitCastIntAPUint32(SourceInfo L) {
5897 return emitOp<>(OP_CastIntAPUint32, L);
5898}
5899bool ByteCodeEmitter::emitCastIntAPSint32(SourceInfo L) {
5900 return emitOp<>(OP_CastIntAPSint32, L);
5901}
5902bool ByteCodeEmitter::emitCastIntAPUint64(SourceInfo L) {
5903 return emitOp<>(OP_CastIntAPUint64, L);
5904}
5905bool ByteCodeEmitter::emitCastIntAPSint64(SourceInfo L) {
5906 return emitOp<>(OP_CastIntAPSint64, L);
5907}
5908bool ByteCodeEmitter::emitCastIntAPBool(SourceInfo L) {
5909 return emitOp<>(OP_CastIntAPBool, L);
5910}
5911bool ByteCodeEmitter::emitCastIntAPSUint8(SourceInfo L) {
5912 return emitOp<>(OP_CastIntAPSUint8, L);
5913}
5914bool ByteCodeEmitter::emitCastIntAPSSint8(SourceInfo L) {
5915 return emitOp<>(OP_CastIntAPSSint8, L);
5916}
5917bool ByteCodeEmitter::emitCastIntAPSUint16(SourceInfo L) {
5918 return emitOp<>(OP_CastIntAPSUint16, L);
5919}
5920bool ByteCodeEmitter::emitCastIntAPSSint16(SourceInfo L) {
5921 return emitOp<>(OP_CastIntAPSSint16, L);
5922}
5923bool ByteCodeEmitter::emitCastIntAPSUint32(SourceInfo L) {
5924 return emitOp<>(OP_CastIntAPSUint32, L);
5925}
5926bool ByteCodeEmitter::emitCastIntAPSSint32(SourceInfo L) {
5927 return emitOp<>(OP_CastIntAPSSint32, L);
5928}
5929bool ByteCodeEmitter::emitCastIntAPSUint64(SourceInfo L) {
5930 return emitOp<>(OP_CastIntAPSUint64, L);
5931}
5932bool ByteCodeEmitter::emitCastIntAPSSint64(SourceInfo L) {
5933 return emitOp<>(OP_CastIntAPSSint64, L);
5934}
5935bool ByteCodeEmitter::emitCastIntAPSBool(SourceInfo L) {
5936 return emitOp<>(OP_CastIntAPSBool, L);
5937}
5938bool ByteCodeEmitter::emitCastFixedPointUint8(SourceInfo L) {
5939 return emitOp<>(OP_CastFixedPointUint8, L);
5940}
5941bool ByteCodeEmitter::emitCastFixedPointSint8(SourceInfo L) {
5942 return emitOp<>(OP_CastFixedPointSint8, L);
5943}
5944bool ByteCodeEmitter::emitCastFixedPointUint16(SourceInfo L) {
5945 return emitOp<>(OP_CastFixedPointUint16, L);
5946}
5947bool ByteCodeEmitter::emitCastFixedPointSint16(SourceInfo L) {
5948 return emitOp<>(OP_CastFixedPointSint16, L);
5949}
5950bool ByteCodeEmitter::emitCastFixedPointUint32(SourceInfo L) {
5951 return emitOp<>(OP_CastFixedPointUint32, L);
5952}
5953bool ByteCodeEmitter::emitCastFixedPointSint32(SourceInfo L) {
5954 return emitOp<>(OP_CastFixedPointSint32, L);
5955}
5956bool ByteCodeEmitter::emitCastFixedPointUint64(SourceInfo L) {
5957 return emitOp<>(OP_CastFixedPointUint64, L);
5958}
5959bool ByteCodeEmitter::emitCastFixedPointSint64(SourceInfo L) {
5960 return emitOp<>(OP_CastFixedPointSint64, L);
5961}
5962bool ByteCodeEmitter::emitCastFixedPointBool(SourceInfo L) {
5963 return emitOp<>(OP_CastFixedPointBool, L);
5964}
5965#endif
5966#ifdef GET_EVAL_IMPL
5967bool EvalEmitter::emitCastUint8Uint8(SourceInfo L) {
5968 if (!isActive()) return true;
5969 CurrentSource = L;
5970 return Cast<PT_Uint8, PT_Uint8>(S, OpPC);
5971}
5972bool EvalEmitter::emitCastUint8Sint8(SourceInfo L) {
5973 if (!isActive()) return true;
5974 CurrentSource = L;
5975 return Cast<PT_Uint8, PT_Sint8>(S, OpPC);
5976}
5977bool EvalEmitter::emitCastUint8Uint16(SourceInfo L) {
5978 if (!isActive()) return true;
5979 CurrentSource = L;
5980 return Cast<PT_Uint8, PT_Uint16>(S, OpPC);
5981}
5982bool EvalEmitter::emitCastUint8Sint16(SourceInfo L) {
5983 if (!isActive()) return true;
5984 CurrentSource = L;
5985 return Cast<PT_Uint8, PT_Sint16>(S, OpPC);
5986}
5987bool EvalEmitter::emitCastUint8Uint32(SourceInfo L) {
5988 if (!isActive()) return true;
5989 CurrentSource = L;
5990 return Cast<PT_Uint8, PT_Uint32>(S, OpPC);
5991}
5992bool EvalEmitter::emitCastUint8Sint32(SourceInfo L) {
5993 if (!isActive()) return true;
5994 CurrentSource = L;
5995 return Cast<PT_Uint8, PT_Sint32>(S, OpPC);
5996}
5997bool EvalEmitter::emitCastUint8Uint64(SourceInfo L) {
5998 if (!isActive()) return true;
5999 CurrentSource = L;
6000 return Cast<PT_Uint8, PT_Uint64>(S, OpPC);
6001}
6002bool EvalEmitter::emitCastUint8Sint64(SourceInfo L) {
6003 if (!isActive()) return true;
6004 CurrentSource = L;
6005 return Cast<PT_Uint8, PT_Sint64>(S, OpPC);
6006}
6007bool EvalEmitter::emitCastUint8Bool(SourceInfo L) {
6008 if (!isActive()) return true;
6009 CurrentSource = L;
6010 return Cast<PT_Uint8, PT_Bool>(S, OpPC);
6011}
6012bool EvalEmitter::emitCastSint8Uint8(SourceInfo L) {
6013 if (!isActive()) return true;
6014 CurrentSource = L;
6015 return Cast<PT_Sint8, PT_Uint8>(S, OpPC);
6016}
6017bool EvalEmitter::emitCastSint8Sint8(SourceInfo L) {
6018 if (!isActive()) return true;
6019 CurrentSource = L;
6020 return Cast<PT_Sint8, PT_Sint8>(S, OpPC);
6021}
6022bool EvalEmitter::emitCastSint8Uint16(SourceInfo L) {
6023 if (!isActive()) return true;
6024 CurrentSource = L;
6025 return Cast<PT_Sint8, PT_Uint16>(S, OpPC);
6026}
6027bool EvalEmitter::emitCastSint8Sint16(SourceInfo L) {
6028 if (!isActive()) return true;
6029 CurrentSource = L;
6030 return Cast<PT_Sint8, PT_Sint16>(S, OpPC);
6031}
6032bool EvalEmitter::emitCastSint8Uint32(SourceInfo L) {
6033 if (!isActive()) return true;
6034 CurrentSource = L;
6035 return Cast<PT_Sint8, PT_Uint32>(S, OpPC);
6036}
6037bool EvalEmitter::emitCastSint8Sint32(SourceInfo L) {
6038 if (!isActive()) return true;
6039 CurrentSource = L;
6040 return Cast<PT_Sint8, PT_Sint32>(S, OpPC);
6041}
6042bool EvalEmitter::emitCastSint8Uint64(SourceInfo L) {
6043 if (!isActive()) return true;
6044 CurrentSource = L;
6045 return Cast<PT_Sint8, PT_Uint64>(S, OpPC);
6046}
6047bool EvalEmitter::emitCastSint8Sint64(SourceInfo L) {
6048 if (!isActive()) return true;
6049 CurrentSource = L;
6050 return Cast<PT_Sint8, PT_Sint64>(S, OpPC);
6051}
6052bool EvalEmitter::emitCastSint8Bool(SourceInfo L) {
6053 if (!isActive()) return true;
6054 CurrentSource = L;
6055 return Cast<PT_Sint8, PT_Bool>(S, OpPC);
6056}
6057bool EvalEmitter::emitCastUint16Uint8(SourceInfo L) {
6058 if (!isActive()) return true;
6059 CurrentSource = L;
6060 return Cast<PT_Uint16, PT_Uint8>(S, OpPC);
6061}
6062bool EvalEmitter::emitCastUint16Sint8(SourceInfo L) {
6063 if (!isActive()) return true;
6064 CurrentSource = L;
6065 return Cast<PT_Uint16, PT_Sint8>(S, OpPC);
6066}
6067bool EvalEmitter::emitCastUint16Uint16(SourceInfo L) {
6068 if (!isActive()) return true;
6069 CurrentSource = L;
6070 return Cast<PT_Uint16, PT_Uint16>(S, OpPC);
6071}
6072bool EvalEmitter::emitCastUint16Sint16(SourceInfo L) {
6073 if (!isActive()) return true;
6074 CurrentSource = L;
6075 return Cast<PT_Uint16, PT_Sint16>(S, OpPC);
6076}
6077bool EvalEmitter::emitCastUint16Uint32(SourceInfo L) {
6078 if (!isActive()) return true;
6079 CurrentSource = L;
6080 return Cast<PT_Uint16, PT_Uint32>(S, OpPC);
6081}
6082bool EvalEmitter::emitCastUint16Sint32(SourceInfo L) {
6083 if (!isActive()) return true;
6084 CurrentSource = L;
6085 return Cast<PT_Uint16, PT_Sint32>(S, OpPC);
6086}
6087bool EvalEmitter::emitCastUint16Uint64(SourceInfo L) {
6088 if (!isActive()) return true;
6089 CurrentSource = L;
6090 return Cast<PT_Uint16, PT_Uint64>(S, OpPC);
6091}
6092bool EvalEmitter::emitCastUint16Sint64(SourceInfo L) {
6093 if (!isActive()) return true;
6094 CurrentSource = L;
6095 return Cast<PT_Uint16, PT_Sint64>(S, OpPC);
6096}
6097bool EvalEmitter::emitCastUint16Bool(SourceInfo L) {
6098 if (!isActive()) return true;
6099 CurrentSource = L;
6100 return Cast<PT_Uint16, PT_Bool>(S, OpPC);
6101}
6102bool EvalEmitter::emitCastSint16Uint8(SourceInfo L) {
6103 if (!isActive()) return true;
6104 CurrentSource = L;
6105 return Cast<PT_Sint16, PT_Uint8>(S, OpPC);
6106}
6107bool EvalEmitter::emitCastSint16Sint8(SourceInfo L) {
6108 if (!isActive()) return true;
6109 CurrentSource = L;
6110 return Cast<PT_Sint16, PT_Sint8>(S, OpPC);
6111}
6112bool EvalEmitter::emitCastSint16Uint16(SourceInfo L) {
6113 if (!isActive()) return true;
6114 CurrentSource = L;
6115 return Cast<PT_Sint16, PT_Uint16>(S, OpPC);
6116}
6117bool EvalEmitter::emitCastSint16Sint16(SourceInfo L) {
6118 if (!isActive()) return true;
6119 CurrentSource = L;
6120 return Cast<PT_Sint16, PT_Sint16>(S, OpPC);
6121}
6122bool EvalEmitter::emitCastSint16Uint32(SourceInfo L) {
6123 if (!isActive()) return true;
6124 CurrentSource = L;
6125 return Cast<PT_Sint16, PT_Uint32>(S, OpPC);
6126}
6127bool EvalEmitter::emitCastSint16Sint32(SourceInfo L) {
6128 if (!isActive()) return true;
6129 CurrentSource = L;
6130 return Cast<PT_Sint16, PT_Sint32>(S, OpPC);
6131}
6132bool EvalEmitter::emitCastSint16Uint64(SourceInfo L) {
6133 if (!isActive()) return true;
6134 CurrentSource = L;
6135 return Cast<PT_Sint16, PT_Uint64>(S, OpPC);
6136}
6137bool EvalEmitter::emitCastSint16Sint64(SourceInfo L) {
6138 if (!isActive()) return true;
6139 CurrentSource = L;
6140 return Cast<PT_Sint16, PT_Sint64>(S, OpPC);
6141}
6142bool EvalEmitter::emitCastSint16Bool(SourceInfo L) {
6143 if (!isActive()) return true;
6144 CurrentSource = L;
6145 return Cast<PT_Sint16, PT_Bool>(S, OpPC);
6146}
6147bool EvalEmitter::emitCastUint32Uint8(SourceInfo L) {
6148 if (!isActive()) return true;
6149 CurrentSource = L;
6150 return Cast<PT_Uint32, PT_Uint8>(S, OpPC);
6151}
6152bool EvalEmitter::emitCastUint32Sint8(SourceInfo L) {
6153 if (!isActive()) return true;
6154 CurrentSource = L;
6155 return Cast<PT_Uint32, PT_Sint8>(S, OpPC);
6156}
6157bool EvalEmitter::emitCastUint32Uint16(SourceInfo L) {
6158 if (!isActive()) return true;
6159 CurrentSource = L;
6160 return Cast<PT_Uint32, PT_Uint16>(S, OpPC);
6161}
6162bool EvalEmitter::emitCastUint32Sint16(SourceInfo L) {
6163 if (!isActive()) return true;
6164 CurrentSource = L;
6165 return Cast<PT_Uint32, PT_Sint16>(S, OpPC);
6166}
6167bool EvalEmitter::emitCastUint32Uint32(SourceInfo L) {
6168 if (!isActive()) return true;
6169 CurrentSource = L;
6170 return Cast<PT_Uint32, PT_Uint32>(S, OpPC);
6171}
6172bool EvalEmitter::emitCastUint32Sint32(SourceInfo L) {
6173 if (!isActive()) return true;
6174 CurrentSource = L;
6175 return Cast<PT_Uint32, PT_Sint32>(S, OpPC);
6176}
6177bool EvalEmitter::emitCastUint32Uint64(SourceInfo L) {
6178 if (!isActive()) return true;
6179 CurrentSource = L;
6180 return Cast<PT_Uint32, PT_Uint64>(S, OpPC);
6181}
6182bool EvalEmitter::emitCastUint32Sint64(SourceInfo L) {
6183 if (!isActive()) return true;
6184 CurrentSource = L;
6185 return Cast<PT_Uint32, PT_Sint64>(S, OpPC);
6186}
6187bool EvalEmitter::emitCastUint32Bool(SourceInfo L) {
6188 if (!isActive()) return true;
6189 CurrentSource = L;
6190 return Cast<PT_Uint32, PT_Bool>(S, OpPC);
6191}
6192bool EvalEmitter::emitCastSint32Uint8(SourceInfo L) {
6193 if (!isActive()) return true;
6194 CurrentSource = L;
6195 return Cast<PT_Sint32, PT_Uint8>(S, OpPC);
6196}
6197bool EvalEmitter::emitCastSint32Sint8(SourceInfo L) {
6198 if (!isActive()) return true;
6199 CurrentSource = L;
6200 return Cast<PT_Sint32, PT_Sint8>(S, OpPC);
6201}
6202bool EvalEmitter::emitCastSint32Uint16(SourceInfo L) {
6203 if (!isActive()) return true;
6204 CurrentSource = L;
6205 return Cast<PT_Sint32, PT_Uint16>(S, OpPC);
6206}
6207bool EvalEmitter::emitCastSint32Sint16(SourceInfo L) {
6208 if (!isActive()) return true;
6209 CurrentSource = L;
6210 return Cast<PT_Sint32, PT_Sint16>(S, OpPC);
6211}
6212bool EvalEmitter::emitCastSint32Uint32(SourceInfo L) {
6213 if (!isActive()) return true;
6214 CurrentSource = L;
6215 return Cast<PT_Sint32, PT_Uint32>(S, OpPC);
6216}
6217bool EvalEmitter::emitCastSint32Sint32(SourceInfo L) {
6218 if (!isActive()) return true;
6219 CurrentSource = L;
6220 return Cast<PT_Sint32, PT_Sint32>(S, OpPC);
6221}
6222bool EvalEmitter::emitCastSint32Uint64(SourceInfo L) {
6223 if (!isActive()) return true;
6224 CurrentSource = L;
6225 return Cast<PT_Sint32, PT_Uint64>(S, OpPC);
6226}
6227bool EvalEmitter::emitCastSint32Sint64(SourceInfo L) {
6228 if (!isActive()) return true;
6229 CurrentSource = L;
6230 return Cast<PT_Sint32, PT_Sint64>(S, OpPC);
6231}
6232bool EvalEmitter::emitCastSint32Bool(SourceInfo L) {
6233 if (!isActive()) return true;
6234 CurrentSource = L;
6235 return Cast<PT_Sint32, PT_Bool>(S, OpPC);
6236}
6237bool EvalEmitter::emitCastUint64Uint8(SourceInfo L) {
6238 if (!isActive()) return true;
6239 CurrentSource = L;
6240 return Cast<PT_Uint64, PT_Uint8>(S, OpPC);
6241}
6242bool EvalEmitter::emitCastUint64Sint8(SourceInfo L) {
6243 if (!isActive()) return true;
6244 CurrentSource = L;
6245 return Cast<PT_Uint64, PT_Sint8>(S, OpPC);
6246}
6247bool EvalEmitter::emitCastUint64Uint16(SourceInfo L) {
6248 if (!isActive()) return true;
6249 CurrentSource = L;
6250 return Cast<PT_Uint64, PT_Uint16>(S, OpPC);
6251}
6252bool EvalEmitter::emitCastUint64Sint16(SourceInfo L) {
6253 if (!isActive()) return true;
6254 CurrentSource = L;
6255 return Cast<PT_Uint64, PT_Sint16>(S, OpPC);
6256}
6257bool EvalEmitter::emitCastUint64Uint32(SourceInfo L) {
6258 if (!isActive()) return true;
6259 CurrentSource = L;
6260 return Cast<PT_Uint64, PT_Uint32>(S, OpPC);
6261}
6262bool EvalEmitter::emitCastUint64Sint32(SourceInfo L) {
6263 if (!isActive()) return true;
6264 CurrentSource = L;
6265 return Cast<PT_Uint64, PT_Sint32>(S, OpPC);
6266}
6267bool EvalEmitter::emitCastUint64Uint64(SourceInfo L) {
6268 if (!isActive()) return true;
6269 CurrentSource = L;
6270 return Cast<PT_Uint64, PT_Uint64>(S, OpPC);
6271}
6272bool EvalEmitter::emitCastUint64Sint64(SourceInfo L) {
6273 if (!isActive()) return true;
6274 CurrentSource = L;
6275 return Cast<PT_Uint64, PT_Sint64>(S, OpPC);
6276}
6277bool EvalEmitter::emitCastUint64Bool(SourceInfo L) {
6278 if (!isActive()) return true;
6279 CurrentSource = L;
6280 return Cast<PT_Uint64, PT_Bool>(S, OpPC);
6281}
6282bool EvalEmitter::emitCastSint64Uint8(SourceInfo L) {
6283 if (!isActive()) return true;
6284 CurrentSource = L;
6285 return Cast<PT_Sint64, PT_Uint8>(S, OpPC);
6286}
6287bool EvalEmitter::emitCastSint64Sint8(SourceInfo L) {
6288 if (!isActive()) return true;
6289 CurrentSource = L;
6290 return Cast<PT_Sint64, PT_Sint8>(S, OpPC);
6291}
6292bool EvalEmitter::emitCastSint64Uint16(SourceInfo L) {
6293 if (!isActive()) return true;
6294 CurrentSource = L;
6295 return Cast<PT_Sint64, PT_Uint16>(S, OpPC);
6296}
6297bool EvalEmitter::emitCastSint64Sint16(SourceInfo L) {
6298 if (!isActive()) return true;
6299 CurrentSource = L;
6300 return Cast<PT_Sint64, PT_Sint16>(S, OpPC);
6301}
6302bool EvalEmitter::emitCastSint64Uint32(SourceInfo L) {
6303 if (!isActive()) return true;
6304 CurrentSource = L;
6305 return Cast<PT_Sint64, PT_Uint32>(S, OpPC);
6306}
6307bool EvalEmitter::emitCastSint64Sint32(SourceInfo L) {
6308 if (!isActive()) return true;
6309 CurrentSource = L;
6310 return Cast<PT_Sint64, PT_Sint32>(S, OpPC);
6311}
6312bool EvalEmitter::emitCastSint64Uint64(SourceInfo L) {
6313 if (!isActive()) return true;
6314 CurrentSource = L;
6315 return Cast<PT_Sint64, PT_Uint64>(S, OpPC);
6316}
6317bool EvalEmitter::emitCastSint64Sint64(SourceInfo L) {
6318 if (!isActive()) return true;
6319 CurrentSource = L;
6320 return Cast<PT_Sint64, PT_Sint64>(S, OpPC);
6321}
6322bool EvalEmitter::emitCastSint64Bool(SourceInfo L) {
6323 if (!isActive()) return true;
6324 CurrentSource = L;
6325 return Cast<PT_Sint64, PT_Bool>(S, OpPC);
6326}
6327bool EvalEmitter::emitCastBoolUint8(SourceInfo L) {
6328 if (!isActive()) return true;
6329 CurrentSource = L;
6330 return Cast<PT_Bool, PT_Uint8>(S, OpPC);
6331}
6332bool EvalEmitter::emitCastBoolSint8(SourceInfo L) {
6333 if (!isActive()) return true;
6334 CurrentSource = L;
6335 return Cast<PT_Bool, PT_Sint8>(S, OpPC);
6336}
6337bool EvalEmitter::emitCastBoolUint16(SourceInfo L) {
6338 if (!isActive()) return true;
6339 CurrentSource = L;
6340 return Cast<PT_Bool, PT_Uint16>(S, OpPC);
6341}
6342bool EvalEmitter::emitCastBoolSint16(SourceInfo L) {
6343 if (!isActive()) return true;
6344 CurrentSource = L;
6345 return Cast<PT_Bool, PT_Sint16>(S, OpPC);
6346}
6347bool EvalEmitter::emitCastBoolUint32(SourceInfo L) {
6348 if (!isActive()) return true;
6349 CurrentSource = L;
6350 return Cast<PT_Bool, PT_Uint32>(S, OpPC);
6351}
6352bool EvalEmitter::emitCastBoolSint32(SourceInfo L) {
6353 if (!isActive()) return true;
6354 CurrentSource = L;
6355 return Cast<PT_Bool, PT_Sint32>(S, OpPC);
6356}
6357bool EvalEmitter::emitCastBoolUint64(SourceInfo L) {
6358 if (!isActive()) return true;
6359 CurrentSource = L;
6360 return Cast<PT_Bool, PT_Uint64>(S, OpPC);
6361}
6362bool EvalEmitter::emitCastBoolSint64(SourceInfo L) {
6363 if (!isActive()) return true;
6364 CurrentSource = L;
6365 return Cast<PT_Bool, PT_Sint64>(S, OpPC);
6366}
6367bool EvalEmitter::emitCastBoolBool(SourceInfo L) {
6368 if (!isActive()) return true;
6369 CurrentSource = L;
6370 return Cast<PT_Bool, PT_Bool>(S, OpPC);
6371}
6372bool EvalEmitter::emitCastIntAPUint8(SourceInfo L) {
6373 if (!isActive()) return true;
6374 CurrentSource = L;
6375 return Cast<PT_IntAP, PT_Uint8>(S, OpPC);
6376}
6377bool EvalEmitter::emitCastIntAPSint8(SourceInfo L) {
6378 if (!isActive()) return true;
6379 CurrentSource = L;
6380 return Cast<PT_IntAP, PT_Sint8>(S, OpPC);
6381}
6382bool EvalEmitter::emitCastIntAPUint16(SourceInfo L) {
6383 if (!isActive()) return true;
6384 CurrentSource = L;
6385 return Cast<PT_IntAP, PT_Uint16>(S, OpPC);
6386}
6387bool EvalEmitter::emitCastIntAPSint16(SourceInfo L) {
6388 if (!isActive()) return true;
6389 CurrentSource = L;
6390 return Cast<PT_IntAP, PT_Sint16>(S, OpPC);
6391}
6392bool EvalEmitter::emitCastIntAPUint32(SourceInfo L) {
6393 if (!isActive()) return true;
6394 CurrentSource = L;
6395 return Cast<PT_IntAP, PT_Uint32>(S, OpPC);
6396}
6397bool EvalEmitter::emitCastIntAPSint32(SourceInfo L) {
6398 if (!isActive()) return true;
6399 CurrentSource = L;
6400 return Cast<PT_IntAP, PT_Sint32>(S, OpPC);
6401}
6402bool EvalEmitter::emitCastIntAPUint64(SourceInfo L) {
6403 if (!isActive()) return true;
6404 CurrentSource = L;
6405 return Cast<PT_IntAP, PT_Uint64>(S, OpPC);
6406}
6407bool EvalEmitter::emitCastIntAPSint64(SourceInfo L) {
6408 if (!isActive()) return true;
6409 CurrentSource = L;
6410 return Cast<PT_IntAP, PT_Sint64>(S, OpPC);
6411}
6412bool EvalEmitter::emitCastIntAPBool(SourceInfo L) {
6413 if (!isActive()) return true;
6414 CurrentSource = L;
6415 return Cast<PT_IntAP, PT_Bool>(S, OpPC);
6416}
6417bool EvalEmitter::emitCastIntAPSUint8(SourceInfo L) {
6418 if (!isActive()) return true;
6419 CurrentSource = L;
6420 return Cast<PT_IntAPS, PT_Uint8>(S, OpPC);
6421}
6422bool EvalEmitter::emitCastIntAPSSint8(SourceInfo L) {
6423 if (!isActive()) return true;
6424 CurrentSource = L;
6425 return Cast<PT_IntAPS, PT_Sint8>(S, OpPC);
6426}
6427bool EvalEmitter::emitCastIntAPSUint16(SourceInfo L) {
6428 if (!isActive()) return true;
6429 CurrentSource = L;
6430 return Cast<PT_IntAPS, PT_Uint16>(S, OpPC);
6431}
6432bool EvalEmitter::emitCastIntAPSSint16(SourceInfo L) {
6433 if (!isActive()) return true;
6434 CurrentSource = L;
6435 return Cast<PT_IntAPS, PT_Sint16>(S, OpPC);
6436}
6437bool EvalEmitter::emitCastIntAPSUint32(SourceInfo L) {
6438 if (!isActive()) return true;
6439 CurrentSource = L;
6440 return Cast<PT_IntAPS, PT_Uint32>(S, OpPC);
6441}
6442bool EvalEmitter::emitCastIntAPSSint32(SourceInfo L) {
6443 if (!isActive()) return true;
6444 CurrentSource = L;
6445 return Cast<PT_IntAPS, PT_Sint32>(S, OpPC);
6446}
6447bool EvalEmitter::emitCastIntAPSUint64(SourceInfo L) {
6448 if (!isActive()) return true;
6449 CurrentSource = L;
6450 return Cast<PT_IntAPS, PT_Uint64>(S, OpPC);
6451}
6452bool EvalEmitter::emitCastIntAPSSint64(SourceInfo L) {
6453 if (!isActive()) return true;
6454 CurrentSource = L;
6455 return Cast<PT_IntAPS, PT_Sint64>(S, OpPC);
6456}
6457bool EvalEmitter::emitCastIntAPSBool(SourceInfo L) {
6458 if (!isActive()) return true;
6459 CurrentSource = L;
6460 return Cast<PT_IntAPS, PT_Bool>(S, OpPC);
6461}
6462bool EvalEmitter::emitCastFixedPointUint8(SourceInfo L) {
6463 if (!isActive()) return true;
6464 CurrentSource = L;
6465 return Cast<PT_FixedPoint, PT_Uint8>(S, OpPC);
6466}
6467bool EvalEmitter::emitCastFixedPointSint8(SourceInfo L) {
6468 if (!isActive()) return true;
6469 CurrentSource = L;
6470 return Cast<PT_FixedPoint, PT_Sint8>(S, OpPC);
6471}
6472bool EvalEmitter::emitCastFixedPointUint16(SourceInfo L) {
6473 if (!isActive()) return true;
6474 CurrentSource = L;
6475 return Cast<PT_FixedPoint, PT_Uint16>(S, OpPC);
6476}
6477bool EvalEmitter::emitCastFixedPointSint16(SourceInfo L) {
6478 if (!isActive()) return true;
6479 CurrentSource = L;
6480 return Cast<PT_FixedPoint, PT_Sint16>(S, OpPC);
6481}
6482bool EvalEmitter::emitCastFixedPointUint32(SourceInfo L) {
6483 if (!isActive()) return true;
6484 CurrentSource = L;
6485 return Cast<PT_FixedPoint, PT_Uint32>(S, OpPC);
6486}
6487bool EvalEmitter::emitCastFixedPointSint32(SourceInfo L) {
6488 if (!isActive()) return true;
6489 CurrentSource = L;
6490 return Cast<PT_FixedPoint, PT_Sint32>(S, OpPC);
6491}
6492bool EvalEmitter::emitCastFixedPointUint64(SourceInfo L) {
6493 if (!isActive()) return true;
6494 CurrentSource = L;
6495 return Cast<PT_FixedPoint, PT_Uint64>(S, OpPC);
6496}
6497bool EvalEmitter::emitCastFixedPointSint64(SourceInfo L) {
6498 if (!isActive()) return true;
6499 CurrentSource = L;
6500 return Cast<PT_FixedPoint, PT_Sint64>(S, OpPC);
6501}
6502bool EvalEmitter::emitCastFixedPointBool(SourceInfo L) {
6503 if (!isActive()) return true;
6504 CurrentSource = L;
6505 return Cast<PT_FixedPoint, PT_Bool>(S, OpPC);
6506}
6507#endif
6508#ifdef GET_OPCODE_NAMES
6509OP_CastAPSint8,
6510OP_CastAPUint8,
6511OP_CastAPSint16,
6512OP_CastAPUint16,
6513OP_CastAPSint32,
6514OP_CastAPUint32,
6515OP_CastAPSint64,
6516OP_CastAPUint64,
6517OP_CastAPIntAP,
6518OP_CastAPIntAPS,
6519OP_CastAPBool,
6520OP_CastAPFixedPoint,
6521#endif
6522#ifdef GET_INTERP
6523case OP_CastAPSint8: {
6524 const auto V0 = ReadArg<uint32_t>(S, PC);
6525 if (!CastAP<PT_Sint8>(S, OpPC, V0))
6526 return false;
6527 continue;
6528}
6529case OP_CastAPUint8: {
6530 const auto V0 = ReadArg<uint32_t>(S, PC);
6531 if (!CastAP<PT_Uint8>(S, OpPC, V0))
6532 return false;
6533 continue;
6534}
6535case OP_CastAPSint16: {
6536 const auto V0 = ReadArg<uint32_t>(S, PC);
6537 if (!CastAP<PT_Sint16>(S, OpPC, V0))
6538 return false;
6539 continue;
6540}
6541case OP_CastAPUint16: {
6542 const auto V0 = ReadArg<uint32_t>(S, PC);
6543 if (!CastAP<PT_Uint16>(S, OpPC, V0))
6544 return false;
6545 continue;
6546}
6547case OP_CastAPSint32: {
6548 const auto V0 = ReadArg<uint32_t>(S, PC);
6549 if (!CastAP<PT_Sint32>(S, OpPC, V0))
6550 return false;
6551 continue;
6552}
6553case OP_CastAPUint32: {
6554 const auto V0 = ReadArg<uint32_t>(S, PC);
6555 if (!CastAP<PT_Uint32>(S, OpPC, V0))
6556 return false;
6557 continue;
6558}
6559case OP_CastAPSint64: {
6560 const auto V0 = ReadArg<uint32_t>(S, PC);
6561 if (!CastAP<PT_Sint64>(S, OpPC, V0))
6562 return false;
6563 continue;
6564}
6565case OP_CastAPUint64: {
6566 const auto V0 = ReadArg<uint32_t>(S, PC);
6567 if (!CastAP<PT_Uint64>(S, OpPC, V0))
6568 return false;
6569 continue;
6570}
6571case OP_CastAPIntAP: {
6572 const auto V0 = ReadArg<uint32_t>(S, PC);
6573 if (!CastAP<PT_IntAP>(S, OpPC, V0))
6574 return false;
6575 continue;
6576}
6577case OP_CastAPIntAPS: {
6578 const auto V0 = ReadArg<uint32_t>(S, PC);
6579 if (!CastAP<PT_IntAPS>(S, OpPC, V0))
6580 return false;
6581 continue;
6582}
6583case OP_CastAPBool: {
6584 const auto V0 = ReadArg<uint32_t>(S, PC);
6585 if (!CastAP<PT_Bool>(S, OpPC, V0))
6586 return false;
6587 continue;
6588}
6589case OP_CastAPFixedPoint: {
6590 const auto V0 = ReadArg<uint32_t>(S, PC);
6591 if (!CastAP<PT_FixedPoint>(S, OpPC, V0))
6592 return false;
6593 continue;
6594}
6595#endif
6596#ifdef GET_DISASM
6597case OP_CastAPSint8:
6598 Text.Op = PrintName("CastAPSint8");
6599 Text.Args.push_back(printArg<uint32_t>(P, PC));
6600 break;
6601case OP_CastAPUint8:
6602 Text.Op = PrintName("CastAPUint8");
6603 Text.Args.push_back(printArg<uint32_t>(P, PC));
6604 break;
6605case OP_CastAPSint16:
6606 Text.Op = PrintName("CastAPSint16");
6607 Text.Args.push_back(printArg<uint32_t>(P, PC));
6608 break;
6609case OP_CastAPUint16:
6610 Text.Op = PrintName("CastAPUint16");
6611 Text.Args.push_back(printArg<uint32_t>(P, PC));
6612 break;
6613case OP_CastAPSint32:
6614 Text.Op = PrintName("CastAPSint32");
6615 Text.Args.push_back(printArg<uint32_t>(P, PC));
6616 break;
6617case OP_CastAPUint32:
6618 Text.Op = PrintName("CastAPUint32");
6619 Text.Args.push_back(printArg<uint32_t>(P, PC));
6620 break;
6621case OP_CastAPSint64:
6622 Text.Op = PrintName("CastAPSint64");
6623 Text.Args.push_back(printArg<uint32_t>(P, PC));
6624 break;
6625case OP_CastAPUint64:
6626 Text.Op = PrintName("CastAPUint64");
6627 Text.Args.push_back(printArg<uint32_t>(P, PC));
6628 break;
6629case OP_CastAPIntAP:
6630 Text.Op = PrintName("CastAPIntAP");
6631 Text.Args.push_back(printArg<uint32_t>(P, PC));
6632 break;
6633case OP_CastAPIntAPS:
6634 Text.Op = PrintName("CastAPIntAPS");
6635 Text.Args.push_back(printArg<uint32_t>(P, PC));
6636 break;
6637case OP_CastAPBool:
6638 Text.Op = PrintName("CastAPBool");
6639 Text.Args.push_back(printArg<uint32_t>(P, PC));
6640 break;
6641case OP_CastAPFixedPoint:
6642 Text.Op = PrintName("CastAPFixedPoint");
6643 Text.Args.push_back(printArg<uint32_t>(P, PC));
6644 break;
6645#endif
6646#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6647bool emitCastAPSint8( uint32_t , SourceInfo);
6648bool emitCastAPUint8( uint32_t , SourceInfo);
6649bool emitCastAPSint16( uint32_t , SourceInfo);
6650bool emitCastAPUint16( uint32_t , SourceInfo);
6651bool emitCastAPSint32( uint32_t , SourceInfo);
6652bool emitCastAPUint32( uint32_t , SourceInfo);
6653bool emitCastAPSint64( uint32_t , SourceInfo);
6654bool emitCastAPUint64( uint32_t , SourceInfo);
6655bool emitCastAPIntAP( uint32_t , SourceInfo);
6656bool emitCastAPIntAPS( uint32_t , SourceInfo);
6657bool emitCastAPBool( uint32_t , SourceInfo);
6658bool emitCastAPFixedPoint( uint32_t , SourceInfo);
6659#endif
6660#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6661[[nodiscard]] bool emitCastAP(PrimType, uint32_t, SourceInfo I);
6662#endif
6663#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
6664bool
6665#if defined(GET_EVAL_IMPL)
6666EvalEmitter
6667#else
6668ByteCodeEmitter
6669#endif
6670::emitCastAP(PrimType T0, uint32_t A0, SourceInfo I) {
6671 switch (T0) {
6672 case PT_Sint8:
6673 return emitCastAPSint8(A0, I);
6674 case PT_Uint8:
6675 return emitCastAPUint8(A0, I);
6676 case PT_Sint16:
6677 return emitCastAPSint16(A0, I);
6678 case PT_Uint16:
6679 return emitCastAPUint16(A0, I);
6680 case PT_Sint32:
6681 return emitCastAPSint32(A0, I);
6682 case PT_Uint32:
6683 return emitCastAPUint32(A0, I);
6684 case PT_Sint64:
6685 return emitCastAPSint64(A0, I);
6686 case PT_Uint64:
6687 return emitCastAPUint64(A0, I);
6688 case PT_IntAP:
6689 return emitCastAPIntAP(A0, I);
6690 case PT_IntAPS:
6691 return emitCastAPIntAPS(A0, I);
6692 case PT_Bool:
6693 return emitCastAPBool(A0, I);
6694 case PT_FixedPoint:
6695 return emitCastAPFixedPoint(A0, I);
6696 default: llvm_unreachable("invalid type: emitCastAP");
6697 }
6698 llvm_unreachable("invalid enum value");
6699}
6700#endif
6701#ifdef GET_LINK_IMPL
6702bool ByteCodeEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
6703 return emitOp<uint32_t>(OP_CastAPSint8, A0, L);
6704}
6705bool ByteCodeEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
6706 return emitOp<uint32_t>(OP_CastAPUint8, A0, L);
6707}
6708bool ByteCodeEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
6709 return emitOp<uint32_t>(OP_CastAPSint16, A0, L);
6710}
6711bool ByteCodeEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
6712 return emitOp<uint32_t>(OP_CastAPUint16, A0, L);
6713}
6714bool ByteCodeEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
6715 return emitOp<uint32_t>(OP_CastAPSint32, A0, L);
6716}
6717bool ByteCodeEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
6718 return emitOp<uint32_t>(OP_CastAPUint32, A0, L);
6719}
6720bool ByteCodeEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
6721 return emitOp<uint32_t>(OP_CastAPSint64, A0, L);
6722}
6723bool ByteCodeEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
6724 return emitOp<uint32_t>(OP_CastAPUint64, A0, L);
6725}
6726bool ByteCodeEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
6727 return emitOp<uint32_t>(OP_CastAPIntAP, A0, L);
6728}
6729bool ByteCodeEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
6730 return emitOp<uint32_t>(OP_CastAPIntAPS, A0, L);
6731}
6732bool ByteCodeEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
6733 return emitOp<uint32_t>(OP_CastAPBool, A0, L);
6734}
6735bool ByteCodeEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
6736 return emitOp<uint32_t>(OP_CastAPFixedPoint, A0, L);
6737}
6738#endif
6739#ifdef GET_EVAL_IMPL
6740bool EvalEmitter::emitCastAPSint8( uint32_t A0, SourceInfo L) {
6741 if (!isActive()) return true;
6742 CurrentSource = L;
6743 return CastAP<PT_Sint8>(S, OpPC, A0);
6744}
6745bool EvalEmitter::emitCastAPUint8( uint32_t A0, SourceInfo L) {
6746 if (!isActive()) return true;
6747 CurrentSource = L;
6748 return CastAP<PT_Uint8>(S, OpPC, A0);
6749}
6750bool EvalEmitter::emitCastAPSint16( uint32_t A0, SourceInfo L) {
6751 if (!isActive()) return true;
6752 CurrentSource = L;
6753 return CastAP<PT_Sint16>(S, OpPC, A0);
6754}
6755bool EvalEmitter::emitCastAPUint16( uint32_t A0, SourceInfo L) {
6756 if (!isActive()) return true;
6757 CurrentSource = L;
6758 return CastAP<PT_Uint16>(S, OpPC, A0);
6759}
6760bool EvalEmitter::emitCastAPSint32( uint32_t A0, SourceInfo L) {
6761 if (!isActive()) return true;
6762 CurrentSource = L;
6763 return CastAP<PT_Sint32>(S, OpPC, A0);
6764}
6765bool EvalEmitter::emitCastAPUint32( uint32_t A0, SourceInfo L) {
6766 if (!isActive()) return true;
6767 CurrentSource = L;
6768 return CastAP<PT_Uint32>(S, OpPC, A0);
6769}
6770bool EvalEmitter::emitCastAPSint64( uint32_t A0, SourceInfo L) {
6771 if (!isActive()) return true;
6772 CurrentSource = L;
6773 return CastAP<PT_Sint64>(S, OpPC, A0);
6774}
6775bool EvalEmitter::emitCastAPUint64( uint32_t A0, SourceInfo L) {
6776 if (!isActive()) return true;
6777 CurrentSource = L;
6778 return CastAP<PT_Uint64>(S, OpPC, A0);
6779}
6780bool EvalEmitter::emitCastAPIntAP( uint32_t A0, SourceInfo L) {
6781 if (!isActive()) return true;
6782 CurrentSource = L;
6783 return CastAP<PT_IntAP>(S, OpPC, A0);
6784}
6785bool EvalEmitter::emitCastAPIntAPS( uint32_t A0, SourceInfo L) {
6786 if (!isActive()) return true;
6787 CurrentSource = L;
6788 return CastAP<PT_IntAPS>(S, OpPC, A0);
6789}
6790bool EvalEmitter::emitCastAPBool( uint32_t A0, SourceInfo L) {
6791 if (!isActive()) return true;
6792 CurrentSource = L;
6793 return CastAP<PT_Bool>(S, OpPC, A0);
6794}
6795bool EvalEmitter::emitCastAPFixedPoint( uint32_t A0, SourceInfo L) {
6796 if (!isActive()) return true;
6797 CurrentSource = L;
6798 return CastAP<PT_FixedPoint>(S, OpPC, A0);
6799}
6800#endif
6801#ifdef GET_OPCODE_NAMES
6802OP_CastAPSSint8,
6803OP_CastAPSUint8,
6804OP_CastAPSSint16,
6805OP_CastAPSUint16,
6806OP_CastAPSSint32,
6807OP_CastAPSUint32,
6808OP_CastAPSSint64,
6809OP_CastAPSUint64,
6810OP_CastAPSIntAP,
6811OP_CastAPSIntAPS,
6812OP_CastAPSBool,
6813OP_CastAPSFixedPoint,
6814#endif
6815#ifdef GET_INTERP
6816case OP_CastAPSSint8: {
6817 const auto V0 = ReadArg<uint32_t>(S, PC);
6818 if (!CastAPS<PT_Sint8>(S, OpPC, V0))
6819 return false;
6820 continue;
6821}
6822case OP_CastAPSUint8: {
6823 const auto V0 = ReadArg<uint32_t>(S, PC);
6824 if (!CastAPS<PT_Uint8>(S, OpPC, V0))
6825 return false;
6826 continue;
6827}
6828case OP_CastAPSSint16: {
6829 const auto V0 = ReadArg<uint32_t>(S, PC);
6830 if (!CastAPS<PT_Sint16>(S, OpPC, V0))
6831 return false;
6832 continue;
6833}
6834case OP_CastAPSUint16: {
6835 const auto V0 = ReadArg<uint32_t>(S, PC);
6836 if (!CastAPS<PT_Uint16>(S, OpPC, V0))
6837 return false;
6838 continue;
6839}
6840case OP_CastAPSSint32: {
6841 const auto V0 = ReadArg<uint32_t>(S, PC);
6842 if (!CastAPS<PT_Sint32>(S, OpPC, V0))
6843 return false;
6844 continue;
6845}
6846case OP_CastAPSUint32: {
6847 const auto V0 = ReadArg<uint32_t>(S, PC);
6848 if (!CastAPS<PT_Uint32>(S, OpPC, V0))
6849 return false;
6850 continue;
6851}
6852case OP_CastAPSSint64: {
6853 const auto V0 = ReadArg<uint32_t>(S, PC);
6854 if (!CastAPS<PT_Sint64>(S, OpPC, V0))
6855 return false;
6856 continue;
6857}
6858case OP_CastAPSUint64: {
6859 const auto V0 = ReadArg<uint32_t>(S, PC);
6860 if (!CastAPS<PT_Uint64>(S, OpPC, V0))
6861 return false;
6862 continue;
6863}
6864case OP_CastAPSIntAP: {
6865 const auto V0 = ReadArg<uint32_t>(S, PC);
6866 if (!CastAPS<PT_IntAP>(S, OpPC, V0))
6867 return false;
6868 continue;
6869}
6870case OP_CastAPSIntAPS: {
6871 const auto V0 = ReadArg<uint32_t>(S, PC);
6872 if (!CastAPS<PT_IntAPS>(S, OpPC, V0))
6873 return false;
6874 continue;
6875}
6876case OP_CastAPSBool: {
6877 const auto V0 = ReadArg<uint32_t>(S, PC);
6878 if (!CastAPS<PT_Bool>(S, OpPC, V0))
6879 return false;
6880 continue;
6881}
6882case OP_CastAPSFixedPoint: {
6883 const auto V0 = ReadArg<uint32_t>(S, PC);
6884 if (!CastAPS<PT_FixedPoint>(S, OpPC, V0))
6885 return false;
6886 continue;
6887}
6888#endif
6889#ifdef GET_DISASM
6890case OP_CastAPSSint8:
6891 Text.Op = PrintName("CastAPSSint8");
6892 Text.Args.push_back(printArg<uint32_t>(P, PC));
6893 break;
6894case OP_CastAPSUint8:
6895 Text.Op = PrintName("CastAPSUint8");
6896 Text.Args.push_back(printArg<uint32_t>(P, PC));
6897 break;
6898case OP_CastAPSSint16:
6899 Text.Op = PrintName("CastAPSSint16");
6900 Text.Args.push_back(printArg<uint32_t>(P, PC));
6901 break;
6902case OP_CastAPSUint16:
6903 Text.Op = PrintName("CastAPSUint16");
6904 Text.Args.push_back(printArg<uint32_t>(P, PC));
6905 break;
6906case OP_CastAPSSint32:
6907 Text.Op = PrintName("CastAPSSint32");
6908 Text.Args.push_back(printArg<uint32_t>(P, PC));
6909 break;
6910case OP_CastAPSUint32:
6911 Text.Op = PrintName("CastAPSUint32");
6912 Text.Args.push_back(printArg<uint32_t>(P, PC));
6913 break;
6914case OP_CastAPSSint64:
6915 Text.Op = PrintName("CastAPSSint64");
6916 Text.Args.push_back(printArg<uint32_t>(P, PC));
6917 break;
6918case OP_CastAPSUint64:
6919 Text.Op = PrintName("CastAPSUint64");
6920 Text.Args.push_back(printArg<uint32_t>(P, PC));
6921 break;
6922case OP_CastAPSIntAP:
6923 Text.Op = PrintName("CastAPSIntAP");
6924 Text.Args.push_back(printArg<uint32_t>(P, PC));
6925 break;
6926case OP_CastAPSIntAPS:
6927 Text.Op = PrintName("CastAPSIntAPS");
6928 Text.Args.push_back(printArg<uint32_t>(P, PC));
6929 break;
6930case OP_CastAPSBool:
6931 Text.Op = PrintName("CastAPSBool");
6932 Text.Args.push_back(printArg<uint32_t>(P, PC));
6933 break;
6934case OP_CastAPSFixedPoint:
6935 Text.Op = PrintName("CastAPSFixedPoint");
6936 Text.Args.push_back(printArg<uint32_t>(P, PC));
6937 break;
6938#endif
6939#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6940bool emitCastAPSSint8( uint32_t , SourceInfo);
6941bool emitCastAPSUint8( uint32_t , SourceInfo);
6942bool emitCastAPSSint16( uint32_t , SourceInfo);
6943bool emitCastAPSUint16( uint32_t , SourceInfo);
6944bool emitCastAPSSint32( uint32_t , SourceInfo);
6945bool emitCastAPSUint32( uint32_t , SourceInfo);
6946bool emitCastAPSSint64( uint32_t , SourceInfo);
6947bool emitCastAPSUint64( uint32_t , SourceInfo);
6948bool emitCastAPSIntAP( uint32_t , SourceInfo);
6949bool emitCastAPSIntAPS( uint32_t , SourceInfo);
6950bool emitCastAPSBool( uint32_t , SourceInfo);
6951bool emitCastAPSFixedPoint( uint32_t , SourceInfo);
6952#endif
6953#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
6954[[nodiscard]] bool emitCastAPS(PrimType, uint32_t, SourceInfo I);
6955#endif
6956#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
6957bool
6958#if defined(GET_EVAL_IMPL)
6959EvalEmitter
6960#else
6961ByteCodeEmitter
6962#endif
6963::emitCastAPS(PrimType T0, uint32_t A0, SourceInfo I) {
6964 switch (T0) {
6965 case PT_Sint8:
6966 return emitCastAPSSint8(A0, I);
6967 case PT_Uint8:
6968 return emitCastAPSUint8(A0, I);
6969 case PT_Sint16:
6970 return emitCastAPSSint16(A0, I);
6971 case PT_Uint16:
6972 return emitCastAPSUint16(A0, I);
6973 case PT_Sint32:
6974 return emitCastAPSSint32(A0, I);
6975 case PT_Uint32:
6976 return emitCastAPSUint32(A0, I);
6977 case PT_Sint64:
6978 return emitCastAPSSint64(A0, I);
6979 case PT_Uint64:
6980 return emitCastAPSUint64(A0, I);
6981 case PT_IntAP:
6982 return emitCastAPSIntAP(A0, I);
6983 case PT_IntAPS:
6984 return emitCastAPSIntAPS(A0, I);
6985 case PT_Bool:
6986 return emitCastAPSBool(A0, I);
6987 case PT_FixedPoint:
6988 return emitCastAPSFixedPoint(A0, I);
6989 default: llvm_unreachable("invalid type: emitCastAPS");
6990 }
6991 llvm_unreachable("invalid enum value");
6992}
6993#endif
6994#ifdef GET_LINK_IMPL
6995bool ByteCodeEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
6996 return emitOp<uint32_t>(OP_CastAPSSint8, A0, L);
6997}
6998bool ByteCodeEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
6999 return emitOp<uint32_t>(OP_CastAPSUint8, A0, L);
7000}
7001bool ByteCodeEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
7002 return emitOp<uint32_t>(OP_CastAPSSint16, A0, L);
7003}
7004bool ByteCodeEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
7005 return emitOp<uint32_t>(OP_CastAPSUint16, A0, L);
7006}
7007bool ByteCodeEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
7008 return emitOp<uint32_t>(OP_CastAPSSint32, A0, L);
7009}
7010bool ByteCodeEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
7011 return emitOp<uint32_t>(OP_CastAPSUint32, A0, L);
7012}
7013bool ByteCodeEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
7014 return emitOp<uint32_t>(OP_CastAPSSint64, A0, L);
7015}
7016bool ByteCodeEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
7017 return emitOp<uint32_t>(OP_CastAPSUint64, A0, L);
7018}
7019bool ByteCodeEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
7020 return emitOp<uint32_t>(OP_CastAPSIntAP, A0, L);
7021}
7022bool ByteCodeEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
7023 return emitOp<uint32_t>(OP_CastAPSIntAPS, A0, L);
7024}
7025bool ByteCodeEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
7026 return emitOp<uint32_t>(OP_CastAPSBool, A0, L);
7027}
7028bool ByteCodeEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
7029 return emitOp<uint32_t>(OP_CastAPSFixedPoint, A0, L);
7030}
7031#endif
7032#ifdef GET_EVAL_IMPL
7033bool EvalEmitter::emitCastAPSSint8( uint32_t A0, SourceInfo L) {
7034 if (!isActive()) return true;
7035 CurrentSource = L;
7036 return CastAPS<PT_Sint8>(S, OpPC, A0);
7037}
7038bool EvalEmitter::emitCastAPSUint8( uint32_t A0, SourceInfo L) {
7039 if (!isActive()) return true;
7040 CurrentSource = L;
7041 return CastAPS<PT_Uint8>(S, OpPC, A0);
7042}
7043bool EvalEmitter::emitCastAPSSint16( uint32_t A0, SourceInfo L) {
7044 if (!isActive()) return true;
7045 CurrentSource = L;
7046 return CastAPS<PT_Sint16>(S, OpPC, A0);
7047}
7048bool EvalEmitter::emitCastAPSUint16( uint32_t A0, SourceInfo L) {
7049 if (!isActive()) return true;
7050 CurrentSource = L;
7051 return CastAPS<PT_Uint16>(S, OpPC, A0);
7052}
7053bool EvalEmitter::emitCastAPSSint32( uint32_t A0, SourceInfo L) {
7054 if (!isActive()) return true;
7055 CurrentSource = L;
7056 return CastAPS<PT_Sint32>(S, OpPC, A0);
7057}
7058bool EvalEmitter::emitCastAPSUint32( uint32_t A0, SourceInfo L) {
7059 if (!isActive()) return true;
7060 CurrentSource = L;
7061 return CastAPS<PT_Uint32>(S, OpPC, A0);
7062}
7063bool EvalEmitter::emitCastAPSSint64( uint32_t A0, SourceInfo L) {
7064 if (!isActive()) return true;
7065 CurrentSource = L;
7066 return CastAPS<PT_Sint64>(S, OpPC, A0);
7067}
7068bool EvalEmitter::emitCastAPSUint64( uint32_t A0, SourceInfo L) {
7069 if (!isActive()) return true;
7070 CurrentSource = L;
7071 return CastAPS<PT_Uint64>(S, OpPC, A0);
7072}
7073bool EvalEmitter::emitCastAPSIntAP( uint32_t A0, SourceInfo L) {
7074 if (!isActive()) return true;
7075 CurrentSource = L;
7076 return CastAPS<PT_IntAP>(S, OpPC, A0);
7077}
7078bool EvalEmitter::emitCastAPSIntAPS( uint32_t A0, SourceInfo L) {
7079 if (!isActive()) return true;
7080 CurrentSource = L;
7081 return CastAPS<PT_IntAPS>(S, OpPC, A0);
7082}
7083bool EvalEmitter::emitCastAPSBool( uint32_t A0, SourceInfo L) {
7084 if (!isActive()) return true;
7085 CurrentSource = L;
7086 return CastAPS<PT_Bool>(S, OpPC, A0);
7087}
7088bool EvalEmitter::emitCastAPSFixedPoint( uint32_t A0, SourceInfo L) {
7089 if (!isActive()) return true;
7090 CurrentSource = L;
7091 return CastAPS<PT_FixedPoint>(S, OpPC, A0);
7092}
7093#endif
7094#ifdef GET_OPCODE_NAMES
7095OP_CastFP,
7096#endif
7097#ifdef GET_INTERP
7098case OP_CastFP: {
7099 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7100 const auto V1 = ReadArg<llvm::RoundingMode>(S, PC);
7101 if (!CastFP(S, OpPC, V0, V1))
7102 return false;
7103 continue;
7104}
7105#endif
7106#ifdef GET_DISASM
7107case OP_CastFP:
7108 Text.Op = PrintName("CastFP");
7109 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7110 Text.Args.push_back(printArg<llvm::RoundingMode>(P, PC));
7111 break;
7112#endif
7113#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7114bool emitCastFP( const llvm::fltSemantics * , llvm::RoundingMode , SourceInfo);
7115#endif
7116#ifdef GET_LINK_IMPL
7117bool ByteCodeEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
7118 return emitOp<const llvm::fltSemantics *, llvm::RoundingMode>(OP_CastFP, A0, A1, L);
7119}
7120#endif
7121#ifdef GET_EVAL_IMPL
7122bool EvalEmitter::emitCastFP( const llvm::fltSemantics * A0, llvm::RoundingMode A1, SourceInfo L) {
7123 if (!isActive()) return true;
7124 CurrentSource = L;
7125 return CastFP(S, OpPC, A0, A1);
7126}
7127#endif
7128#ifdef GET_OPCODE_NAMES
7129OP_CastFixedPoint,
7130#endif
7131#ifdef GET_INTERP
7132case OP_CastFixedPoint: {
7133 const auto V0 = ReadArg<uint32_t>(S, PC);
7134 if (!CastFixedPoint(S, OpPC, V0))
7135 return false;
7136 continue;
7137}
7138#endif
7139#ifdef GET_DISASM
7140case OP_CastFixedPoint:
7141 Text.Op = PrintName("CastFixedPoint");
7142 Text.Args.push_back(printArg<uint32_t>(P, PC));
7143 break;
7144#endif
7145#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7146bool emitCastFixedPoint( uint32_t , SourceInfo);
7147#endif
7148#ifdef GET_LINK_IMPL
7149bool ByteCodeEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
7150 return emitOp<uint32_t>(OP_CastFixedPoint, A0, L);
7151}
7152#endif
7153#ifdef GET_EVAL_IMPL
7154bool EvalEmitter::emitCastFixedPoint( uint32_t A0, SourceInfo L) {
7155 if (!isActive()) return true;
7156 CurrentSource = L;
7157 return CastFixedPoint(S, OpPC, A0);
7158}
7159#endif
7160#ifdef GET_OPCODE_NAMES
7161OP_CastFixedPointFloating,
7162#endif
7163#ifdef GET_INTERP
7164case OP_CastFixedPointFloating: {
7165 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7166 if (!CastFixedPointFloating(S, OpPC, V0))
7167 return false;
7168 continue;
7169}
7170#endif
7171#ifdef GET_DISASM
7172case OP_CastFixedPointFloating:
7173 Text.Op = PrintName("CastFixedPointFloating");
7174 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
7175 break;
7176#endif
7177#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7178bool emitCastFixedPointFloating( const llvm::fltSemantics * , SourceInfo);
7179#endif
7180#ifdef GET_LINK_IMPL
7181bool ByteCodeEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
7182 return emitOp<const llvm::fltSemantics *>(OP_CastFixedPointFloating, A0, L);
7183}
7184#endif
7185#ifdef GET_EVAL_IMPL
7186bool EvalEmitter::emitCastFixedPointFloating( const llvm::fltSemantics * A0, SourceInfo L) {
7187 if (!isActive()) return true;
7188 CurrentSource = L;
7189 return CastFixedPointFloating(S, OpPC, A0);
7190}
7191#endif
7192#ifdef GET_OPCODE_NAMES
7193OP_CastFixedPointIntegralSint8,
7194OP_CastFixedPointIntegralUint8,
7195OP_CastFixedPointIntegralSint16,
7196OP_CastFixedPointIntegralUint16,
7197OP_CastFixedPointIntegralSint32,
7198OP_CastFixedPointIntegralUint32,
7199OP_CastFixedPointIntegralSint64,
7200OP_CastFixedPointIntegralUint64,
7201#endif
7202#ifdef GET_INTERP
7203case OP_CastFixedPointIntegralSint8: {
7204 if (!CastFixedPointIntegral<PT_Sint8>(S, OpPC))
7205 return false;
7206 continue;
7207}
7208case OP_CastFixedPointIntegralUint8: {
7209 if (!CastFixedPointIntegral<PT_Uint8>(S, OpPC))
7210 return false;
7211 continue;
7212}
7213case OP_CastFixedPointIntegralSint16: {
7214 if (!CastFixedPointIntegral<PT_Sint16>(S, OpPC))
7215 return false;
7216 continue;
7217}
7218case OP_CastFixedPointIntegralUint16: {
7219 if (!CastFixedPointIntegral<PT_Uint16>(S, OpPC))
7220 return false;
7221 continue;
7222}
7223case OP_CastFixedPointIntegralSint32: {
7224 if (!CastFixedPointIntegral<PT_Sint32>(S, OpPC))
7225 return false;
7226 continue;
7227}
7228case OP_CastFixedPointIntegralUint32: {
7229 if (!CastFixedPointIntegral<PT_Uint32>(S, OpPC))
7230 return false;
7231 continue;
7232}
7233case OP_CastFixedPointIntegralSint64: {
7234 if (!CastFixedPointIntegral<PT_Sint64>(S, OpPC))
7235 return false;
7236 continue;
7237}
7238case OP_CastFixedPointIntegralUint64: {
7239 if (!CastFixedPointIntegral<PT_Uint64>(S, OpPC))
7240 return false;
7241 continue;
7242}
7243#endif
7244#ifdef GET_DISASM
7245case OP_CastFixedPointIntegralSint8:
7246 Text.Op = PrintName("CastFixedPointIntegralSint8");
7247 break;
7248case OP_CastFixedPointIntegralUint8:
7249 Text.Op = PrintName("CastFixedPointIntegralUint8");
7250 break;
7251case OP_CastFixedPointIntegralSint16:
7252 Text.Op = PrintName("CastFixedPointIntegralSint16");
7253 break;
7254case OP_CastFixedPointIntegralUint16:
7255 Text.Op = PrintName("CastFixedPointIntegralUint16");
7256 break;
7257case OP_CastFixedPointIntegralSint32:
7258 Text.Op = PrintName("CastFixedPointIntegralSint32");
7259 break;
7260case OP_CastFixedPointIntegralUint32:
7261 Text.Op = PrintName("CastFixedPointIntegralUint32");
7262 break;
7263case OP_CastFixedPointIntegralSint64:
7264 Text.Op = PrintName("CastFixedPointIntegralSint64");
7265 break;
7266case OP_CastFixedPointIntegralUint64:
7267 Text.Op = PrintName("CastFixedPointIntegralUint64");
7268 break;
7269#endif
7270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7271bool emitCastFixedPointIntegralSint8(SourceInfo);
7272bool emitCastFixedPointIntegralUint8(SourceInfo);
7273bool emitCastFixedPointIntegralSint16(SourceInfo);
7274bool emitCastFixedPointIntegralUint16(SourceInfo);
7275bool emitCastFixedPointIntegralSint32(SourceInfo);
7276bool emitCastFixedPointIntegralUint32(SourceInfo);
7277bool emitCastFixedPointIntegralSint64(SourceInfo);
7278bool emitCastFixedPointIntegralUint64(SourceInfo);
7279#endif
7280#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7281[[nodiscard]] bool emitCastFixedPointIntegral(PrimType, SourceInfo I);
7282#endif
7283#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7284bool
7285#if defined(GET_EVAL_IMPL)
7286EvalEmitter
7287#else
7288ByteCodeEmitter
7289#endif
7290::emitCastFixedPointIntegral(PrimType T0, SourceInfo I) {
7291 switch (T0) {
7292 case PT_Sint8:
7293 return emitCastFixedPointIntegralSint8(I);
7294 case PT_Uint8:
7295 return emitCastFixedPointIntegralUint8(I);
7296 case PT_Sint16:
7297 return emitCastFixedPointIntegralSint16(I);
7298 case PT_Uint16:
7299 return emitCastFixedPointIntegralUint16(I);
7300 case PT_Sint32:
7301 return emitCastFixedPointIntegralSint32(I);
7302 case PT_Uint32:
7303 return emitCastFixedPointIntegralUint32(I);
7304 case PT_Sint64:
7305 return emitCastFixedPointIntegralSint64(I);
7306 case PT_Uint64:
7307 return emitCastFixedPointIntegralUint64(I);
7308 default: llvm_unreachable("invalid type: emitCastFixedPointIntegral");
7309 }
7310 llvm_unreachable("invalid enum value");
7311}
7312#endif
7313#ifdef GET_LINK_IMPL
7314bool ByteCodeEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
7315 return emitOp<>(OP_CastFixedPointIntegralSint8, L);
7316}
7317bool ByteCodeEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
7318 return emitOp<>(OP_CastFixedPointIntegralUint8, L);
7319}
7320bool ByteCodeEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
7321 return emitOp<>(OP_CastFixedPointIntegralSint16, L);
7322}
7323bool ByteCodeEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
7324 return emitOp<>(OP_CastFixedPointIntegralUint16, L);
7325}
7326bool ByteCodeEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
7327 return emitOp<>(OP_CastFixedPointIntegralSint32, L);
7328}
7329bool ByteCodeEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
7330 return emitOp<>(OP_CastFixedPointIntegralUint32, L);
7331}
7332bool ByteCodeEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
7333 return emitOp<>(OP_CastFixedPointIntegralSint64, L);
7334}
7335bool ByteCodeEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
7336 return emitOp<>(OP_CastFixedPointIntegralUint64, L);
7337}
7338#endif
7339#ifdef GET_EVAL_IMPL
7340bool EvalEmitter::emitCastFixedPointIntegralSint8(SourceInfo L) {
7341 if (!isActive()) return true;
7342 CurrentSource = L;
7343 return CastFixedPointIntegral<PT_Sint8>(S, OpPC);
7344}
7345bool EvalEmitter::emitCastFixedPointIntegralUint8(SourceInfo L) {
7346 if (!isActive()) return true;
7347 CurrentSource = L;
7348 return CastFixedPointIntegral<PT_Uint8>(S, OpPC);
7349}
7350bool EvalEmitter::emitCastFixedPointIntegralSint16(SourceInfo L) {
7351 if (!isActive()) return true;
7352 CurrentSource = L;
7353 return CastFixedPointIntegral<PT_Sint16>(S, OpPC);
7354}
7355bool EvalEmitter::emitCastFixedPointIntegralUint16(SourceInfo L) {
7356 if (!isActive()) return true;
7357 CurrentSource = L;
7358 return CastFixedPointIntegral<PT_Uint16>(S, OpPC);
7359}
7360bool EvalEmitter::emitCastFixedPointIntegralSint32(SourceInfo L) {
7361 if (!isActive()) return true;
7362 CurrentSource = L;
7363 return CastFixedPointIntegral<PT_Sint32>(S, OpPC);
7364}
7365bool EvalEmitter::emitCastFixedPointIntegralUint32(SourceInfo L) {
7366 if (!isActive()) return true;
7367 CurrentSource = L;
7368 return CastFixedPointIntegral<PT_Uint32>(S, OpPC);
7369}
7370bool EvalEmitter::emitCastFixedPointIntegralSint64(SourceInfo L) {
7371 if (!isActive()) return true;
7372 CurrentSource = L;
7373 return CastFixedPointIntegral<PT_Sint64>(S, OpPC);
7374}
7375bool EvalEmitter::emitCastFixedPointIntegralUint64(SourceInfo L) {
7376 if (!isActive()) return true;
7377 CurrentSource = L;
7378 return CastFixedPointIntegral<PT_Uint64>(S, OpPC);
7379}
7380#endif
7381#ifdef GET_OPCODE_NAMES
7382OP_CastFloatingFixedPoint,
7383#endif
7384#ifdef GET_INTERP
7385case OP_CastFloatingFixedPoint: {
7386 const auto V0 = ReadArg<uint32_t>(S, PC);
7387 if (!CastFloatingFixedPoint(S, OpPC, V0))
7388 return false;
7389 continue;
7390}
7391#endif
7392#ifdef GET_DISASM
7393case OP_CastFloatingFixedPoint:
7394 Text.Op = PrintName("CastFloatingFixedPoint");
7395 Text.Args.push_back(printArg<uint32_t>(P, PC));
7396 break;
7397#endif
7398#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7399bool emitCastFloatingFixedPoint( uint32_t , SourceInfo);
7400#endif
7401#ifdef GET_LINK_IMPL
7402bool ByteCodeEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
7403 return emitOp<uint32_t>(OP_CastFloatingFixedPoint, A0, L);
7404}
7405#endif
7406#ifdef GET_EVAL_IMPL
7407bool EvalEmitter::emitCastFloatingFixedPoint( uint32_t A0, SourceInfo L) {
7408 if (!isActive()) return true;
7409 CurrentSource = L;
7410 return CastFloatingFixedPoint(S, OpPC, A0);
7411}
7412#endif
7413#ifdef GET_OPCODE_NAMES
7414OP_CastFloatingIntegralSint8,
7415OP_CastFloatingIntegralUint8,
7416OP_CastFloatingIntegralSint16,
7417OP_CastFloatingIntegralUint16,
7418OP_CastFloatingIntegralSint32,
7419OP_CastFloatingIntegralUint32,
7420OP_CastFloatingIntegralSint64,
7421OP_CastFloatingIntegralUint64,
7422OP_CastFloatingIntegralBool,
7423#endif
7424#ifdef GET_INTERP
7425case OP_CastFloatingIntegralSint8: {
7426 const auto V0 = ReadArg<uint32_t>(S, PC);
7427 if (!CastFloatingIntegral<PT_Sint8>(S, OpPC, V0))
7428 return false;
7429 continue;
7430}
7431case OP_CastFloatingIntegralUint8: {
7432 const auto V0 = ReadArg<uint32_t>(S, PC);
7433 if (!CastFloatingIntegral<PT_Uint8>(S, OpPC, V0))
7434 return false;
7435 continue;
7436}
7437case OP_CastFloatingIntegralSint16: {
7438 const auto V0 = ReadArg<uint32_t>(S, PC);
7439 if (!CastFloatingIntegral<PT_Sint16>(S, OpPC, V0))
7440 return false;
7441 continue;
7442}
7443case OP_CastFloatingIntegralUint16: {
7444 const auto V0 = ReadArg<uint32_t>(S, PC);
7445 if (!CastFloatingIntegral<PT_Uint16>(S, OpPC, V0))
7446 return false;
7447 continue;
7448}
7449case OP_CastFloatingIntegralSint32: {
7450 const auto V0 = ReadArg<uint32_t>(S, PC);
7451 if (!CastFloatingIntegral<PT_Sint32>(S, OpPC, V0))
7452 return false;
7453 continue;
7454}
7455case OP_CastFloatingIntegralUint32: {
7456 const auto V0 = ReadArg<uint32_t>(S, PC);
7457 if (!CastFloatingIntegral<PT_Uint32>(S, OpPC, V0))
7458 return false;
7459 continue;
7460}
7461case OP_CastFloatingIntegralSint64: {
7462 const auto V0 = ReadArg<uint32_t>(S, PC);
7463 if (!CastFloatingIntegral<PT_Sint64>(S, OpPC, V0))
7464 return false;
7465 continue;
7466}
7467case OP_CastFloatingIntegralUint64: {
7468 const auto V0 = ReadArg<uint32_t>(S, PC);
7469 if (!CastFloatingIntegral<PT_Uint64>(S, OpPC, V0))
7470 return false;
7471 continue;
7472}
7473case OP_CastFloatingIntegralBool: {
7474 const auto V0 = ReadArg<uint32_t>(S, PC);
7475 if (!CastFloatingIntegral<PT_Bool>(S, OpPC, V0))
7476 return false;
7477 continue;
7478}
7479#endif
7480#ifdef GET_DISASM
7481case OP_CastFloatingIntegralSint8:
7482 Text.Op = PrintName("CastFloatingIntegralSint8");
7483 Text.Args.push_back(printArg<uint32_t>(P, PC));
7484 break;
7485case OP_CastFloatingIntegralUint8:
7486 Text.Op = PrintName("CastFloatingIntegralUint8");
7487 Text.Args.push_back(printArg<uint32_t>(P, PC));
7488 break;
7489case OP_CastFloatingIntegralSint16:
7490 Text.Op = PrintName("CastFloatingIntegralSint16");
7491 Text.Args.push_back(printArg<uint32_t>(P, PC));
7492 break;
7493case OP_CastFloatingIntegralUint16:
7494 Text.Op = PrintName("CastFloatingIntegralUint16");
7495 Text.Args.push_back(printArg<uint32_t>(P, PC));
7496 break;
7497case OP_CastFloatingIntegralSint32:
7498 Text.Op = PrintName("CastFloatingIntegralSint32");
7499 Text.Args.push_back(printArg<uint32_t>(P, PC));
7500 break;
7501case OP_CastFloatingIntegralUint32:
7502 Text.Op = PrintName("CastFloatingIntegralUint32");
7503 Text.Args.push_back(printArg<uint32_t>(P, PC));
7504 break;
7505case OP_CastFloatingIntegralSint64:
7506 Text.Op = PrintName("CastFloatingIntegralSint64");
7507 Text.Args.push_back(printArg<uint32_t>(P, PC));
7508 break;
7509case OP_CastFloatingIntegralUint64:
7510 Text.Op = PrintName("CastFloatingIntegralUint64");
7511 Text.Args.push_back(printArg<uint32_t>(P, PC));
7512 break;
7513case OP_CastFloatingIntegralBool:
7514 Text.Op = PrintName("CastFloatingIntegralBool");
7515 Text.Args.push_back(printArg<uint32_t>(P, PC));
7516 break;
7517#endif
7518#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7519bool emitCastFloatingIntegralSint8( uint32_t , SourceInfo);
7520bool emitCastFloatingIntegralUint8( uint32_t , SourceInfo);
7521bool emitCastFloatingIntegralSint16( uint32_t , SourceInfo);
7522bool emitCastFloatingIntegralUint16( uint32_t , SourceInfo);
7523bool emitCastFloatingIntegralSint32( uint32_t , SourceInfo);
7524bool emitCastFloatingIntegralUint32( uint32_t , SourceInfo);
7525bool emitCastFloatingIntegralSint64( uint32_t , SourceInfo);
7526bool emitCastFloatingIntegralUint64( uint32_t , SourceInfo);
7527bool emitCastFloatingIntegralBool( uint32_t , SourceInfo);
7528#endif
7529#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7530[[nodiscard]] bool emitCastFloatingIntegral(PrimType, uint32_t, SourceInfo I);
7531#endif
7532#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7533bool
7534#if defined(GET_EVAL_IMPL)
7535EvalEmitter
7536#else
7537ByteCodeEmitter
7538#endif
7539::emitCastFloatingIntegral(PrimType T0, uint32_t A0, SourceInfo I) {
7540 switch (T0) {
7541 case PT_Sint8:
7542 return emitCastFloatingIntegralSint8(A0, I);
7543 case PT_Uint8:
7544 return emitCastFloatingIntegralUint8(A0, I);
7545 case PT_Sint16:
7546 return emitCastFloatingIntegralSint16(A0, I);
7547 case PT_Uint16:
7548 return emitCastFloatingIntegralUint16(A0, I);
7549 case PT_Sint32:
7550 return emitCastFloatingIntegralSint32(A0, I);
7551 case PT_Uint32:
7552 return emitCastFloatingIntegralUint32(A0, I);
7553 case PT_Sint64:
7554 return emitCastFloatingIntegralSint64(A0, I);
7555 case PT_Uint64:
7556 return emitCastFloatingIntegralUint64(A0, I);
7557 case PT_Bool:
7558 return emitCastFloatingIntegralBool(A0, I);
7559 default: llvm_unreachable("invalid type: emitCastFloatingIntegral");
7560 }
7561 llvm_unreachable("invalid enum value");
7562}
7563#endif
7564#ifdef GET_LINK_IMPL
7565bool ByteCodeEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
7566 return emitOp<uint32_t>(OP_CastFloatingIntegralSint8, A0, L);
7567}
7568bool ByteCodeEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
7569 return emitOp<uint32_t>(OP_CastFloatingIntegralUint8, A0, L);
7570}
7571bool ByteCodeEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
7572 return emitOp<uint32_t>(OP_CastFloatingIntegralSint16, A0, L);
7573}
7574bool ByteCodeEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
7575 return emitOp<uint32_t>(OP_CastFloatingIntegralUint16, A0, L);
7576}
7577bool ByteCodeEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
7578 return emitOp<uint32_t>(OP_CastFloatingIntegralSint32, A0, L);
7579}
7580bool ByteCodeEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
7581 return emitOp<uint32_t>(OP_CastFloatingIntegralUint32, A0, L);
7582}
7583bool ByteCodeEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
7584 return emitOp<uint32_t>(OP_CastFloatingIntegralSint64, A0, L);
7585}
7586bool ByteCodeEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
7587 return emitOp<uint32_t>(OP_CastFloatingIntegralUint64, A0, L);
7588}
7589bool ByteCodeEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
7590 return emitOp<uint32_t>(OP_CastFloatingIntegralBool, A0, L);
7591}
7592#endif
7593#ifdef GET_EVAL_IMPL
7594bool EvalEmitter::emitCastFloatingIntegralSint8( uint32_t A0, SourceInfo L) {
7595 if (!isActive()) return true;
7596 CurrentSource = L;
7597 return CastFloatingIntegral<PT_Sint8>(S, OpPC, A0);
7598}
7599bool EvalEmitter::emitCastFloatingIntegralUint8( uint32_t A0, SourceInfo L) {
7600 if (!isActive()) return true;
7601 CurrentSource = L;
7602 return CastFloatingIntegral<PT_Uint8>(S, OpPC, A0);
7603}
7604bool EvalEmitter::emitCastFloatingIntegralSint16( uint32_t A0, SourceInfo L) {
7605 if (!isActive()) return true;
7606 CurrentSource = L;
7607 return CastFloatingIntegral<PT_Sint16>(S, OpPC, A0);
7608}
7609bool EvalEmitter::emitCastFloatingIntegralUint16( uint32_t A0, SourceInfo L) {
7610 if (!isActive()) return true;
7611 CurrentSource = L;
7612 return CastFloatingIntegral<PT_Uint16>(S, OpPC, A0);
7613}
7614bool EvalEmitter::emitCastFloatingIntegralSint32( uint32_t A0, SourceInfo L) {
7615 if (!isActive()) return true;
7616 CurrentSource = L;
7617 return CastFloatingIntegral<PT_Sint32>(S, OpPC, A0);
7618}
7619bool EvalEmitter::emitCastFloatingIntegralUint32( uint32_t A0, SourceInfo L) {
7620 if (!isActive()) return true;
7621 CurrentSource = L;
7622 return CastFloatingIntegral<PT_Uint32>(S, OpPC, A0);
7623}
7624bool EvalEmitter::emitCastFloatingIntegralSint64( uint32_t A0, SourceInfo L) {
7625 if (!isActive()) return true;
7626 CurrentSource = L;
7627 return CastFloatingIntegral<PT_Sint64>(S, OpPC, A0);
7628}
7629bool EvalEmitter::emitCastFloatingIntegralUint64( uint32_t A0, SourceInfo L) {
7630 if (!isActive()) return true;
7631 CurrentSource = L;
7632 return CastFloatingIntegral<PT_Uint64>(S, OpPC, A0);
7633}
7634bool EvalEmitter::emitCastFloatingIntegralBool( uint32_t A0, SourceInfo L) {
7635 if (!isActive()) return true;
7636 CurrentSource = L;
7637 return CastFloatingIntegral<PT_Bool>(S, OpPC, A0);
7638}
7639#endif
7640#ifdef GET_OPCODE_NAMES
7641OP_CastFloatingIntegralAP,
7642#endif
7643#ifdef GET_INTERP
7644case OP_CastFloatingIntegralAP: {
7645 const auto V0 = ReadArg<uint32_t>(S, PC);
7646 const auto V1 = ReadArg<uint32_t>(S, PC);
7647 if (!CastFloatingIntegralAP(S, OpPC, V0, V1))
7648 return false;
7649 continue;
7650}
7651#endif
7652#ifdef GET_DISASM
7653case OP_CastFloatingIntegralAP:
7654 Text.Op = PrintName("CastFloatingIntegralAP");
7655 Text.Args.push_back(printArg<uint32_t>(P, PC));
7656 Text.Args.push_back(printArg<uint32_t>(P, PC));
7657 break;
7658#endif
7659#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7660bool emitCastFloatingIntegralAP( uint32_t , uint32_t , SourceInfo);
7661#endif
7662#ifdef GET_LINK_IMPL
7663bool ByteCodeEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
7664 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAP, A0, A1, L);
7665}
7666#endif
7667#ifdef GET_EVAL_IMPL
7668bool EvalEmitter::emitCastFloatingIntegralAP( uint32_t A0, uint32_t A1, SourceInfo L) {
7669 if (!isActive()) return true;
7670 CurrentSource = L;
7671 return CastFloatingIntegralAP(S, OpPC, A0, A1);
7672}
7673#endif
7674#ifdef GET_OPCODE_NAMES
7675OP_CastFloatingIntegralAPS,
7676#endif
7677#ifdef GET_INTERP
7678case OP_CastFloatingIntegralAPS: {
7679 const auto V0 = ReadArg<uint32_t>(S, PC);
7680 const auto V1 = ReadArg<uint32_t>(S, PC);
7681 if (!CastFloatingIntegralAPS(S, OpPC, V0, V1))
7682 return false;
7683 continue;
7684}
7685#endif
7686#ifdef GET_DISASM
7687case OP_CastFloatingIntegralAPS:
7688 Text.Op = PrintName("CastFloatingIntegralAPS");
7689 Text.Args.push_back(printArg<uint32_t>(P, PC));
7690 Text.Args.push_back(printArg<uint32_t>(P, PC));
7691 break;
7692#endif
7693#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7694bool emitCastFloatingIntegralAPS( uint32_t , uint32_t , SourceInfo);
7695#endif
7696#ifdef GET_LINK_IMPL
7697bool ByteCodeEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
7698 return emitOp<uint32_t, uint32_t>(OP_CastFloatingIntegralAPS, A0, A1, L);
7699}
7700#endif
7701#ifdef GET_EVAL_IMPL
7702bool EvalEmitter::emitCastFloatingIntegralAPS( uint32_t A0, uint32_t A1, SourceInfo L) {
7703 if (!isActive()) return true;
7704 CurrentSource = L;
7705 return CastFloatingIntegralAPS(S, OpPC, A0, A1);
7706}
7707#endif
7708#ifdef GET_OPCODE_NAMES
7709OP_CastIntegralFixedPointSint8,
7710OP_CastIntegralFixedPointUint8,
7711OP_CastIntegralFixedPointSint16,
7712OP_CastIntegralFixedPointUint16,
7713OP_CastIntegralFixedPointSint32,
7714OP_CastIntegralFixedPointUint32,
7715OP_CastIntegralFixedPointSint64,
7716OP_CastIntegralFixedPointUint64,
7717OP_CastIntegralFixedPointBool,
7718#endif
7719#ifdef GET_INTERP
7720case OP_CastIntegralFixedPointSint8: {
7721 const auto V0 = ReadArg<uint32_t>(S, PC);
7722 if (!CastIntegralFixedPoint<PT_Sint8>(S, OpPC, V0))
7723 return false;
7724 continue;
7725}
7726case OP_CastIntegralFixedPointUint8: {
7727 const auto V0 = ReadArg<uint32_t>(S, PC);
7728 if (!CastIntegralFixedPoint<PT_Uint8>(S, OpPC, V0))
7729 return false;
7730 continue;
7731}
7732case OP_CastIntegralFixedPointSint16: {
7733 const auto V0 = ReadArg<uint32_t>(S, PC);
7734 if (!CastIntegralFixedPoint<PT_Sint16>(S, OpPC, V0))
7735 return false;
7736 continue;
7737}
7738case OP_CastIntegralFixedPointUint16: {
7739 const auto V0 = ReadArg<uint32_t>(S, PC);
7740 if (!CastIntegralFixedPoint<PT_Uint16>(S, OpPC, V0))
7741 return false;
7742 continue;
7743}
7744case OP_CastIntegralFixedPointSint32: {
7745 const auto V0 = ReadArg<uint32_t>(S, PC);
7746 if (!CastIntegralFixedPoint<PT_Sint32>(S, OpPC, V0))
7747 return false;
7748 continue;
7749}
7750case OP_CastIntegralFixedPointUint32: {
7751 const auto V0 = ReadArg<uint32_t>(S, PC);
7752 if (!CastIntegralFixedPoint<PT_Uint32>(S, OpPC, V0))
7753 return false;
7754 continue;
7755}
7756case OP_CastIntegralFixedPointSint64: {
7757 const auto V0 = ReadArg<uint32_t>(S, PC);
7758 if (!CastIntegralFixedPoint<PT_Sint64>(S, OpPC, V0))
7759 return false;
7760 continue;
7761}
7762case OP_CastIntegralFixedPointUint64: {
7763 const auto V0 = ReadArg<uint32_t>(S, PC);
7764 if (!CastIntegralFixedPoint<PT_Uint64>(S, OpPC, V0))
7765 return false;
7766 continue;
7767}
7768case OP_CastIntegralFixedPointBool: {
7769 const auto V0 = ReadArg<uint32_t>(S, PC);
7770 if (!CastIntegralFixedPoint<PT_Bool>(S, OpPC, V0))
7771 return false;
7772 continue;
7773}
7774#endif
7775#ifdef GET_DISASM
7776case OP_CastIntegralFixedPointSint8:
7777 Text.Op = PrintName("CastIntegralFixedPointSint8");
7778 Text.Args.push_back(printArg<uint32_t>(P, PC));
7779 break;
7780case OP_CastIntegralFixedPointUint8:
7781 Text.Op = PrintName("CastIntegralFixedPointUint8");
7782 Text.Args.push_back(printArg<uint32_t>(P, PC));
7783 break;
7784case OP_CastIntegralFixedPointSint16:
7785 Text.Op = PrintName("CastIntegralFixedPointSint16");
7786 Text.Args.push_back(printArg<uint32_t>(P, PC));
7787 break;
7788case OP_CastIntegralFixedPointUint16:
7789 Text.Op = PrintName("CastIntegralFixedPointUint16");
7790 Text.Args.push_back(printArg<uint32_t>(P, PC));
7791 break;
7792case OP_CastIntegralFixedPointSint32:
7793 Text.Op = PrintName("CastIntegralFixedPointSint32");
7794 Text.Args.push_back(printArg<uint32_t>(P, PC));
7795 break;
7796case OP_CastIntegralFixedPointUint32:
7797 Text.Op = PrintName("CastIntegralFixedPointUint32");
7798 Text.Args.push_back(printArg<uint32_t>(P, PC));
7799 break;
7800case OP_CastIntegralFixedPointSint64:
7801 Text.Op = PrintName("CastIntegralFixedPointSint64");
7802 Text.Args.push_back(printArg<uint32_t>(P, PC));
7803 break;
7804case OP_CastIntegralFixedPointUint64:
7805 Text.Op = PrintName("CastIntegralFixedPointUint64");
7806 Text.Args.push_back(printArg<uint32_t>(P, PC));
7807 break;
7808case OP_CastIntegralFixedPointBool:
7809 Text.Op = PrintName("CastIntegralFixedPointBool");
7810 Text.Args.push_back(printArg<uint32_t>(P, PC));
7811 break;
7812#endif
7813#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7814bool emitCastIntegralFixedPointSint8( uint32_t , SourceInfo);
7815bool emitCastIntegralFixedPointUint8( uint32_t , SourceInfo);
7816bool emitCastIntegralFixedPointSint16( uint32_t , SourceInfo);
7817bool emitCastIntegralFixedPointUint16( uint32_t , SourceInfo);
7818bool emitCastIntegralFixedPointSint32( uint32_t , SourceInfo);
7819bool emitCastIntegralFixedPointUint32( uint32_t , SourceInfo);
7820bool emitCastIntegralFixedPointSint64( uint32_t , SourceInfo);
7821bool emitCastIntegralFixedPointUint64( uint32_t , SourceInfo);
7822bool emitCastIntegralFixedPointBool( uint32_t , SourceInfo);
7823#endif
7824#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
7825[[nodiscard]] bool emitCastIntegralFixedPoint(PrimType, uint32_t, SourceInfo I);
7826#endif
7827#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
7828bool
7829#if defined(GET_EVAL_IMPL)
7830EvalEmitter
7831#else
7832ByteCodeEmitter
7833#endif
7834::emitCastIntegralFixedPoint(PrimType T0, uint32_t A0, SourceInfo I) {
7835 switch (T0) {
7836 case PT_Sint8:
7837 return emitCastIntegralFixedPointSint8(A0, I);
7838 case PT_Uint8:
7839 return emitCastIntegralFixedPointUint8(A0, I);
7840 case PT_Sint16:
7841 return emitCastIntegralFixedPointSint16(A0, I);
7842 case PT_Uint16:
7843 return emitCastIntegralFixedPointUint16(A0, I);
7844 case PT_Sint32:
7845 return emitCastIntegralFixedPointSint32(A0, I);
7846 case PT_Uint32:
7847 return emitCastIntegralFixedPointUint32(A0, I);
7848 case PT_Sint64:
7849 return emitCastIntegralFixedPointSint64(A0, I);
7850 case PT_Uint64:
7851 return emitCastIntegralFixedPointUint64(A0, I);
7852 case PT_Bool:
7853 return emitCastIntegralFixedPointBool(A0, I);
7854 default: llvm_unreachable("invalid type: emitCastIntegralFixedPoint");
7855 }
7856 llvm_unreachable("invalid enum value");
7857}
7858#endif
7859#ifdef GET_LINK_IMPL
7860bool ByteCodeEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
7861 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint8, A0, L);
7862}
7863bool ByteCodeEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
7864 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint8, A0, L);
7865}
7866bool ByteCodeEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
7867 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint16, A0, L);
7868}
7869bool ByteCodeEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
7870 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint16, A0, L);
7871}
7872bool ByteCodeEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
7873 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint32, A0, L);
7874}
7875bool ByteCodeEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
7876 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint32, A0, L);
7877}
7878bool ByteCodeEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
7879 return emitOp<uint32_t>(OP_CastIntegralFixedPointSint64, A0, L);
7880}
7881bool ByteCodeEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
7882 return emitOp<uint32_t>(OP_CastIntegralFixedPointUint64, A0, L);
7883}
7884bool ByteCodeEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
7885 return emitOp<uint32_t>(OP_CastIntegralFixedPointBool, A0, L);
7886}
7887#endif
7888#ifdef GET_EVAL_IMPL
7889bool EvalEmitter::emitCastIntegralFixedPointSint8( uint32_t A0, SourceInfo L) {
7890 if (!isActive()) return true;
7891 CurrentSource = L;
7892 return CastIntegralFixedPoint<PT_Sint8>(S, OpPC, A0);
7893}
7894bool EvalEmitter::emitCastIntegralFixedPointUint8( uint32_t A0, SourceInfo L) {
7895 if (!isActive()) return true;
7896 CurrentSource = L;
7897 return CastIntegralFixedPoint<PT_Uint8>(S, OpPC, A0);
7898}
7899bool EvalEmitter::emitCastIntegralFixedPointSint16( uint32_t A0, SourceInfo L) {
7900 if (!isActive()) return true;
7901 CurrentSource = L;
7902 return CastIntegralFixedPoint<PT_Sint16>(S, OpPC, A0);
7903}
7904bool EvalEmitter::emitCastIntegralFixedPointUint16( uint32_t A0, SourceInfo L) {
7905 if (!isActive()) return true;
7906 CurrentSource = L;
7907 return CastIntegralFixedPoint<PT_Uint16>(S, OpPC, A0);
7908}
7909bool EvalEmitter::emitCastIntegralFixedPointSint32( uint32_t A0, SourceInfo L) {
7910 if (!isActive()) return true;
7911 CurrentSource = L;
7912 return CastIntegralFixedPoint<PT_Sint32>(S, OpPC, A0);
7913}
7914bool EvalEmitter::emitCastIntegralFixedPointUint32( uint32_t A0, SourceInfo L) {
7915 if (!isActive()) return true;
7916 CurrentSource = L;
7917 return CastIntegralFixedPoint<PT_Uint32>(S, OpPC, A0);
7918}
7919bool EvalEmitter::emitCastIntegralFixedPointSint64( uint32_t A0, SourceInfo L) {
7920 if (!isActive()) return true;
7921 CurrentSource = L;
7922 return CastIntegralFixedPoint<PT_Sint64>(S, OpPC, A0);
7923}
7924bool EvalEmitter::emitCastIntegralFixedPointUint64( uint32_t A0, SourceInfo L) {
7925 if (!isActive()) return true;
7926 CurrentSource = L;
7927 return CastIntegralFixedPoint<PT_Uint64>(S, OpPC, A0);
7928}
7929bool EvalEmitter::emitCastIntegralFixedPointBool( uint32_t A0, SourceInfo L) {
7930 if (!isActive()) return true;
7931 CurrentSource = L;
7932 return CastIntegralFixedPoint<PT_Bool>(S, OpPC, A0);
7933}
7934#endif
7935#ifdef GET_OPCODE_NAMES
7936OP_CastIntegralFloatingSint8,
7937OP_CastIntegralFloatingUint8,
7938OP_CastIntegralFloatingSint16,
7939OP_CastIntegralFloatingUint16,
7940OP_CastIntegralFloatingSint32,
7941OP_CastIntegralFloatingUint32,
7942OP_CastIntegralFloatingSint64,
7943OP_CastIntegralFloatingUint64,
7944OP_CastIntegralFloatingIntAP,
7945OP_CastIntegralFloatingIntAPS,
7946OP_CastIntegralFloatingBool,
7947OP_CastIntegralFloatingFixedPoint,
7948#endif
7949#ifdef GET_INTERP
7950case OP_CastIntegralFloatingSint8: {
7951 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7952 const auto V1 = ReadArg<uint32_t>(S, PC);
7953 if (!CastIntegralFloating<PT_Sint8>(S, OpPC, V0, V1))
7954 return false;
7955 continue;
7956}
7957case OP_CastIntegralFloatingUint8: {
7958 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7959 const auto V1 = ReadArg<uint32_t>(S, PC);
7960 if (!CastIntegralFloating<PT_Uint8>(S, OpPC, V0, V1))
7961 return false;
7962 continue;
7963}
7964case OP_CastIntegralFloatingSint16: {
7965 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7966 const auto V1 = ReadArg<uint32_t>(S, PC);
7967 if (!CastIntegralFloating<PT_Sint16>(S, OpPC, V0, V1))
7968 return false;
7969 continue;
7970}
7971case OP_CastIntegralFloatingUint16: {
7972 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7973 const auto V1 = ReadArg<uint32_t>(S, PC);
7974 if (!CastIntegralFloating<PT_Uint16>(S, OpPC, V0, V1))
7975 return false;
7976 continue;
7977}
7978case OP_CastIntegralFloatingSint32: {
7979 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7980 const auto V1 = ReadArg<uint32_t>(S, PC);
7981 if (!CastIntegralFloating<PT_Sint32>(S, OpPC, V0, V1))
7982 return false;
7983 continue;
7984}
7985case OP_CastIntegralFloatingUint32: {
7986 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7987 const auto V1 = ReadArg<uint32_t>(S, PC);
7988 if (!CastIntegralFloating<PT_Uint32>(S, OpPC, V0, V1))
7989 return false;
7990 continue;
7991}
7992case OP_CastIntegralFloatingSint64: {
7993 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
7994 const auto V1 = ReadArg<uint32_t>(S, PC);
7995 if (!CastIntegralFloating<PT_Sint64>(S, OpPC, V0, V1))
7996 return false;
7997 continue;
7998}
7999case OP_CastIntegralFloatingUint64: {
8000 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
8001 const auto V1 = ReadArg<uint32_t>(S, PC);
8002 if (!CastIntegralFloating<PT_Uint64>(S, OpPC, V0, V1))
8003 return false;
8004 continue;
8005}
8006case OP_CastIntegralFloatingIntAP: {
8007 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
8008 const auto V1 = ReadArg<uint32_t>(S, PC);
8009 if (!CastIntegralFloating<PT_IntAP>(S, OpPC, V0, V1))
8010 return false;
8011 continue;
8012}
8013case OP_CastIntegralFloatingIntAPS: {
8014 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
8015 const auto V1 = ReadArg<uint32_t>(S, PC);
8016 if (!CastIntegralFloating<PT_IntAPS>(S, OpPC, V0, V1))
8017 return false;
8018 continue;
8019}
8020case OP_CastIntegralFloatingBool: {
8021 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
8022 const auto V1 = ReadArg<uint32_t>(S, PC);
8023 if (!CastIntegralFloating<PT_Bool>(S, OpPC, V0, V1))
8024 return false;
8025 continue;
8026}
8027case OP_CastIntegralFloatingFixedPoint: {
8028 const auto V0 = ReadArg<const llvm::fltSemantics *>(S, PC);
8029 const auto V1 = ReadArg<uint32_t>(S, PC);
8030 if (!CastIntegralFloating<PT_FixedPoint>(S, OpPC, V0, V1))
8031 return false;
8032 continue;
8033}
8034#endif
8035#ifdef GET_DISASM
8036case OP_CastIntegralFloatingSint8:
8037 Text.Op = PrintName("CastIntegralFloatingSint8");
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_CastIntegralFloatingUint8:
8042 Text.Op = PrintName("CastIntegralFloatingUint8");
8043 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8044 Text.Args.push_back(printArg<uint32_t>(P, PC));
8045 break;
8046case OP_CastIntegralFloatingSint16:
8047 Text.Op = PrintName("CastIntegralFloatingSint16");
8048 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8049 Text.Args.push_back(printArg<uint32_t>(P, PC));
8050 break;
8051case OP_CastIntegralFloatingUint16:
8052 Text.Op = PrintName("CastIntegralFloatingUint16");
8053 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8054 Text.Args.push_back(printArg<uint32_t>(P, PC));
8055 break;
8056case OP_CastIntegralFloatingSint32:
8057 Text.Op = PrintName("CastIntegralFloatingSint32");
8058 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8059 Text.Args.push_back(printArg<uint32_t>(P, PC));
8060 break;
8061case OP_CastIntegralFloatingUint32:
8062 Text.Op = PrintName("CastIntegralFloatingUint32");
8063 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8064 Text.Args.push_back(printArg<uint32_t>(P, PC));
8065 break;
8066case OP_CastIntegralFloatingSint64:
8067 Text.Op = PrintName("CastIntegralFloatingSint64");
8068 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8069 Text.Args.push_back(printArg<uint32_t>(P, PC));
8070 break;
8071case OP_CastIntegralFloatingUint64:
8072 Text.Op = PrintName("CastIntegralFloatingUint64");
8073 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8074 Text.Args.push_back(printArg<uint32_t>(P, PC));
8075 break;
8076case OP_CastIntegralFloatingIntAP:
8077 Text.Op = PrintName("CastIntegralFloatingIntAP");
8078 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8079 Text.Args.push_back(printArg<uint32_t>(P, PC));
8080 break;
8081case OP_CastIntegralFloatingIntAPS:
8082 Text.Op = PrintName("CastIntegralFloatingIntAPS");
8083 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8084 Text.Args.push_back(printArg<uint32_t>(P, PC));
8085 break;
8086case OP_CastIntegralFloatingBool:
8087 Text.Op = PrintName("CastIntegralFloatingBool");
8088 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8089 Text.Args.push_back(printArg<uint32_t>(P, PC));
8090 break;
8091case OP_CastIntegralFloatingFixedPoint:
8092 Text.Op = PrintName("CastIntegralFloatingFixedPoint");
8093 Text.Args.push_back(printArg<const llvm::fltSemantics *>(P, PC));
8094 Text.Args.push_back(printArg<uint32_t>(P, PC));
8095 break;
8096#endif
8097#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8098bool emitCastIntegralFloatingSint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
8099bool emitCastIntegralFloatingUint8( const llvm::fltSemantics * , uint32_t , SourceInfo);
8100bool emitCastIntegralFloatingSint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
8101bool emitCastIntegralFloatingUint16( const llvm::fltSemantics * , uint32_t , SourceInfo);
8102bool emitCastIntegralFloatingSint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
8103bool emitCastIntegralFloatingUint32( const llvm::fltSemantics * , uint32_t , SourceInfo);
8104bool emitCastIntegralFloatingSint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
8105bool emitCastIntegralFloatingUint64( const llvm::fltSemantics * , uint32_t , SourceInfo);
8106bool emitCastIntegralFloatingIntAP( const llvm::fltSemantics * , uint32_t , SourceInfo);
8107bool emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * , uint32_t , SourceInfo);
8108bool emitCastIntegralFloatingBool( const llvm::fltSemantics * , uint32_t , SourceInfo);
8109bool emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * , uint32_t , SourceInfo);
8110#endif
8111#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8112[[nodiscard]] bool emitCastIntegralFloating(PrimType, const llvm::fltSemantics *, uint32_t, SourceInfo I);
8113#endif
8114#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8115bool
8116#if defined(GET_EVAL_IMPL)
8117EvalEmitter
8118#else
8119ByteCodeEmitter
8120#endif
8121::emitCastIntegralFloating(PrimType T0, const llvm::fltSemantics * A0, uint32_t A1, SourceInfo I) {
8122 switch (T0) {
8123 case PT_Sint8:
8124 return emitCastIntegralFloatingSint8(A0, A1, I);
8125 case PT_Uint8:
8126 return emitCastIntegralFloatingUint8(A0, A1, I);
8127 case PT_Sint16:
8128 return emitCastIntegralFloatingSint16(A0, A1, I);
8129 case PT_Uint16:
8130 return emitCastIntegralFloatingUint16(A0, A1, I);
8131 case PT_Sint32:
8132 return emitCastIntegralFloatingSint32(A0, A1, I);
8133 case PT_Uint32:
8134 return emitCastIntegralFloatingUint32(A0, A1, I);
8135 case PT_Sint64:
8136 return emitCastIntegralFloatingSint64(A0, A1, I);
8137 case PT_Uint64:
8138 return emitCastIntegralFloatingUint64(A0, A1, I);
8139 case PT_IntAP:
8140 return emitCastIntegralFloatingIntAP(A0, A1, I);
8141 case PT_IntAPS:
8142 return emitCastIntegralFloatingIntAPS(A0, A1, I);
8143 case PT_Bool:
8144 return emitCastIntegralFloatingBool(A0, A1, I);
8145 case PT_FixedPoint:
8146 return emitCastIntegralFloatingFixedPoint(A0, A1, I);
8147 default: llvm_unreachable("invalid type: emitCastIntegralFloating");
8148 }
8149 llvm_unreachable("invalid enum value");
8150}
8151#endif
8152#ifdef GET_LINK_IMPL
8153bool ByteCodeEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8154 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint8, A0, A1, L);
8155}
8156bool ByteCodeEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8157 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint8, A0, A1, L);
8158}
8159bool ByteCodeEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8160 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint16, A0, A1, L);
8161}
8162bool ByteCodeEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8163 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint16, A0, A1, L);
8164}
8165bool ByteCodeEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8166 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint32, A0, A1, L);
8167}
8168bool ByteCodeEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8169 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint32, A0, A1, L);
8170}
8171bool ByteCodeEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8172 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingSint64, A0, A1, L);
8173}
8174bool ByteCodeEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8175 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingUint64, A0, A1, L);
8176}
8177bool ByteCodeEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8178 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAP, A0, A1, L);
8179}
8180bool ByteCodeEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8181 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingIntAPS, A0, A1, L);
8182}
8183bool ByteCodeEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8184 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingBool, A0, A1, L);
8185}
8186bool ByteCodeEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8187 return emitOp<const llvm::fltSemantics *, uint32_t>(OP_CastIntegralFloatingFixedPoint, A0, A1, L);
8188}
8189#endif
8190#ifdef GET_EVAL_IMPL
8191bool EvalEmitter::emitCastIntegralFloatingSint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8192 if (!isActive()) return true;
8193 CurrentSource = L;
8194 return CastIntegralFloating<PT_Sint8>(S, OpPC, A0, A1);
8195}
8196bool EvalEmitter::emitCastIntegralFloatingUint8( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8197 if (!isActive()) return true;
8198 CurrentSource = L;
8199 return CastIntegralFloating<PT_Uint8>(S, OpPC, A0, A1);
8200}
8201bool EvalEmitter::emitCastIntegralFloatingSint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8202 if (!isActive()) return true;
8203 CurrentSource = L;
8204 return CastIntegralFloating<PT_Sint16>(S, OpPC, A0, A1);
8205}
8206bool EvalEmitter::emitCastIntegralFloatingUint16( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8207 if (!isActive()) return true;
8208 CurrentSource = L;
8209 return CastIntegralFloating<PT_Uint16>(S, OpPC, A0, A1);
8210}
8211bool EvalEmitter::emitCastIntegralFloatingSint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8212 if (!isActive()) return true;
8213 CurrentSource = L;
8214 return CastIntegralFloating<PT_Sint32>(S, OpPC, A0, A1);
8215}
8216bool EvalEmitter::emitCastIntegralFloatingUint32( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8217 if (!isActive()) return true;
8218 CurrentSource = L;
8219 return CastIntegralFloating<PT_Uint32>(S, OpPC, A0, A1);
8220}
8221bool EvalEmitter::emitCastIntegralFloatingSint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8222 if (!isActive()) return true;
8223 CurrentSource = L;
8224 return CastIntegralFloating<PT_Sint64>(S, OpPC, A0, A1);
8225}
8226bool EvalEmitter::emitCastIntegralFloatingUint64( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8227 if (!isActive()) return true;
8228 CurrentSource = L;
8229 return CastIntegralFloating<PT_Uint64>(S, OpPC, A0, A1);
8230}
8231bool EvalEmitter::emitCastIntegralFloatingIntAP( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8232 if (!isActive()) return true;
8233 CurrentSource = L;
8234 return CastIntegralFloating<PT_IntAP>(S, OpPC, A0, A1);
8235}
8236bool EvalEmitter::emitCastIntegralFloatingIntAPS( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8237 if (!isActive()) return true;
8238 CurrentSource = L;
8239 return CastIntegralFloating<PT_IntAPS>(S, OpPC, A0, A1);
8240}
8241bool EvalEmitter::emitCastIntegralFloatingBool( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8242 if (!isActive()) return true;
8243 CurrentSource = L;
8244 return CastIntegralFloating<PT_Bool>(S, OpPC, A0, A1);
8245}
8246bool EvalEmitter::emitCastIntegralFloatingFixedPoint( const llvm::fltSemantics * A0, uint32_t A1, SourceInfo L) {
8247 if (!isActive()) return true;
8248 CurrentSource = L;
8249 return CastIntegralFloating<PT_FixedPoint>(S, OpPC, A0, A1);
8250}
8251#endif
8252#ifdef GET_OPCODE_NAMES
8253OP_CastMemberPtrBasePop,
8254#endif
8255#ifdef GET_INTERP
8256case OP_CastMemberPtrBasePop: {
8257 const auto V0 = ReadArg<int32_t>(S, PC);
8258 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
8259 if (!CastMemberPtrBasePop(S, OpPC, V0, V1))
8260 return false;
8261 continue;
8262}
8263#endif
8264#ifdef GET_DISASM
8265case OP_CastMemberPtrBasePop:
8266 Text.Op = PrintName("CastMemberPtrBasePop");
8267 Text.Args.push_back(printArg<int32_t>(P, PC));
8268 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
8269 break;
8270#endif
8271#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8272bool emitCastMemberPtrBasePop( int32_t , const RecordDecl * , SourceInfo);
8273#endif
8274#ifdef GET_LINK_IMPL
8275bool ByteCodeEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
8276 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrBasePop, A0, A1, L);
8277}
8278#endif
8279#ifdef GET_EVAL_IMPL
8280bool EvalEmitter::emitCastMemberPtrBasePop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
8281 if (!isActive()) return true;
8282 CurrentSource = L;
8283 return CastMemberPtrBasePop(S, OpPC, A0, A1);
8284}
8285#endif
8286#ifdef GET_OPCODE_NAMES
8287OP_CastMemberPtrDerivedPop,
8288#endif
8289#ifdef GET_INTERP
8290case OP_CastMemberPtrDerivedPop: {
8291 const auto V0 = ReadArg<int32_t>(S, PC);
8292 const auto V1 = ReadArg<const RecordDecl *>(S, PC);
8293 if (!CastMemberPtrDerivedPop(S, OpPC, V0, V1))
8294 return false;
8295 continue;
8296}
8297#endif
8298#ifdef GET_DISASM
8299case OP_CastMemberPtrDerivedPop:
8300 Text.Op = PrintName("CastMemberPtrDerivedPop");
8301 Text.Args.push_back(printArg<int32_t>(P, PC));
8302 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
8303 break;
8304#endif
8305#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8306bool emitCastMemberPtrDerivedPop( int32_t , const RecordDecl * , SourceInfo);
8307#endif
8308#ifdef GET_LINK_IMPL
8309bool ByteCodeEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
8310 return emitOp<int32_t, const RecordDecl *>(OP_CastMemberPtrDerivedPop, A0, A1, L);
8311}
8312#endif
8313#ifdef GET_EVAL_IMPL
8314bool EvalEmitter::emitCastMemberPtrDerivedPop( int32_t A0, const RecordDecl * A1, SourceInfo L) {
8315 if (!isActive()) return true;
8316 CurrentSource = L;
8317 return CastMemberPtrDerivedPop(S, OpPC, A0, A1);
8318}
8319#endif
8320#ifdef GET_OPCODE_NAMES
8321OP_CastMemberPtrPtr,
8322#endif
8323#ifdef GET_INTERP
8324case OP_CastMemberPtrPtr: {
8325 if (!CastMemberPtrPtr(S, OpPC))
8326 return false;
8327 continue;
8328}
8329#endif
8330#ifdef GET_DISASM
8331case OP_CastMemberPtrPtr:
8332 Text.Op = PrintName("CastMemberPtrPtr");
8333 break;
8334#endif
8335#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8336bool emitCastMemberPtrPtr(SourceInfo);
8337#endif
8338#ifdef GET_LINK_IMPL
8339bool ByteCodeEmitter::emitCastMemberPtrPtr(SourceInfo L) {
8340 return emitOp<>(OP_CastMemberPtrPtr, L);
8341}
8342#endif
8343#ifdef GET_EVAL_IMPL
8344bool EvalEmitter::emitCastMemberPtrPtr(SourceInfo L) {
8345 if (!isActive()) return true;
8346 CurrentSource = L;
8347 return CastMemberPtrPtr(S, OpPC);
8348}
8349#endif
8350#ifdef GET_OPCODE_NAMES
8351OP_CastPointerIntegralSint8,
8352OP_CastPointerIntegralUint8,
8353OP_CastPointerIntegralSint16,
8354OP_CastPointerIntegralUint16,
8355OP_CastPointerIntegralSint32,
8356OP_CastPointerIntegralUint32,
8357OP_CastPointerIntegralSint64,
8358OP_CastPointerIntegralUint64,
8359OP_CastPointerIntegralBool,
8360#endif
8361#ifdef GET_INTERP
8362case OP_CastPointerIntegralSint8: {
8363 if (!CastPointerIntegral<PT_Sint8>(S, OpPC))
8364 return false;
8365 continue;
8366}
8367case OP_CastPointerIntegralUint8: {
8368 if (!CastPointerIntegral<PT_Uint8>(S, OpPC))
8369 return false;
8370 continue;
8371}
8372case OP_CastPointerIntegralSint16: {
8373 if (!CastPointerIntegral<PT_Sint16>(S, OpPC))
8374 return false;
8375 continue;
8376}
8377case OP_CastPointerIntegralUint16: {
8378 if (!CastPointerIntegral<PT_Uint16>(S, OpPC))
8379 return false;
8380 continue;
8381}
8382case OP_CastPointerIntegralSint32: {
8383 if (!CastPointerIntegral<PT_Sint32>(S, OpPC))
8384 return false;
8385 continue;
8386}
8387case OP_CastPointerIntegralUint32: {
8388 if (!CastPointerIntegral<PT_Uint32>(S, OpPC))
8389 return false;
8390 continue;
8391}
8392case OP_CastPointerIntegralSint64: {
8393 if (!CastPointerIntegral<PT_Sint64>(S, OpPC))
8394 return false;
8395 continue;
8396}
8397case OP_CastPointerIntegralUint64: {
8398 if (!CastPointerIntegral<PT_Uint64>(S, OpPC))
8399 return false;
8400 continue;
8401}
8402case OP_CastPointerIntegralBool: {
8403 if (!CastPointerIntegral<PT_Bool>(S, OpPC))
8404 return false;
8405 continue;
8406}
8407#endif
8408#ifdef GET_DISASM
8409case OP_CastPointerIntegralSint8:
8410 Text.Op = PrintName("CastPointerIntegralSint8");
8411 break;
8412case OP_CastPointerIntegralUint8:
8413 Text.Op = PrintName("CastPointerIntegralUint8");
8414 break;
8415case OP_CastPointerIntegralSint16:
8416 Text.Op = PrintName("CastPointerIntegralSint16");
8417 break;
8418case OP_CastPointerIntegralUint16:
8419 Text.Op = PrintName("CastPointerIntegralUint16");
8420 break;
8421case OP_CastPointerIntegralSint32:
8422 Text.Op = PrintName("CastPointerIntegralSint32");
8423 break;
8424case OP_CastPointerIntegralUint32:
8425 Text.Op = PrintName("CastPointerIntegralUint32");
8426 break;
8427case OP_CastPointerIntegralSint64:
8428 Text.Op = PrintName("CastPointerIntegralSint64");
8429 break;
8430case OP_CastPointerIntegralUint64:
8431 Text.Op = PrintName("CastPointerIntegralUint64");
8432 break;
8433case OP_CastPointerIntegralBool:
8434 Text.Op = PrintName("CastPointerIntegralBool");
8435 break;
8436#endif
8437#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8438bool emitCastPointerIntegralSint8(SourceInfo);
8439bool emitCastPointerIntegralUint8(SourceInfo);
8440bool emitCastPointerIntegralSint16(SourceInfo);
8441bool emitCastPointerIntegralUint16(SourceInfo);
8442bool emitCastPointerIntegralSint32(SourceInfo);
8443bool emitCastPointerIntegralUint32(SourceInfo);
8444bool emitCastPointerIntegralSint64(SourceInfo);
8445bool emitCastPointerIntegralUint64(SourceInfo);
8446bool emitCastPointerIntegralBool(SourceInfo);
8447#endif
8448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8449[[nodiscard]] bool emitCastPointerIntegral(PrimType, SourceInfo I);
8450#endif
8451#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8452bool
8453#if defined(GET_EVAL_IMPL)
8454EvalEmitter
8455#else
8456ByteCodeEmitter
8457#endif
8458::emitCastPointerIntegral(PrimType T0, SourceInfo I) {
8459 switch (T0) {
8460 case PT_Sint8:
8461 return emitCastPointerIntegralSint8(I);
8462 case PT_Uint8:
8463 return emitCastPointerIntegralUint8(I);
8464 case PT_Sint16:
8465 return emitCastPointerIntegralSint16(I);
8466 case PT_Uint16:
8467 return emitCastPointerIntegralUint16(I);
8468 case PT_Sint32:
8469 return emitCastPointerIntegralSint32(I);
8470 case PT_Uint32:
8471 return emitCastPointerIntegralUint32(I);
8472 case PT_Sint64:
8473 return emitCastPointerIntegralSint64(I);
8474 case PT_Uint64:
8475 return emitCastPointerIntegralUint64(I);
8476 case PT_Bool:
8477 return emitCastPointerIntegralBool(I);
8478 default: llvm_unreachable("invalid type: emitCastPointerIntegral");
8479 }
8480 llvm_unreachable("invalid enum value");
8481}
8482#endif
8483#ifdef GET_LINK_IMPL
8484bool ByteCodeEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
8485 return emitOp<>(OP_CastPointerIntegralSint8, L);
8486}
8487bool ByteCodeEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
8488 return emitOp<>(OP_CastPointerIntegralUint8, L);
8489}
8490bool ByteCodeEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
8491 return emitOp<>(OP_CastPointerIntegralSint16, L);
8492}
8493bool ByteCodeEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
8494 return emitOp<>(OP_CastPointerIntegralUint16, L);
8495}
8496bool ByteCodeEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
8497 return emitOp<>(OP_CastPointerIntegralSint32, L);
8498}
8499bool ByteCodeEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
8500 return emitOp<>(OP_CastPointerIntegralUint32, L);
8501}
8502bool ByteCodeEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
8503 return emitOp<>(OP_CastPointerIntegralSint64, L);
8504}
8505bool ByteCodeEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
8506 return emitOp<>(OP_CastPointerIntegralUint64, L);
8507}
8508bool ByteCodeEmitter::emitCastPointerIntegralBool(SourceInfo L) {
8509 return emitOp<>(OP_CastPointerIntegralBool, L);
8510}
8511#endif
8512#ifdef GET_EVAL_IMPL
8513bool EvalEmitter::emitCastPointerIntegralSint8(SourceInfo L) {
8514 if (!isActive()) return true;
8515 CurrentSource = L;
8516 return CastPointerIntegral<PT_Sint8>(S, OpPC);
8517}
8518bool EvalEmitter::emitCastPointerIntegralUint8(SourceInfo L) {
8519 if (!isActive()) return true;
8520 CurrentSource = L;
8521 return CastPointerIntegral<PT_Uint8>(S, OpPC);
8522}
8523bool EvalEmitter::emitCastPointerIntegralSint16(SourceInfo L) {
8524 if (!isActive()) return true;
8525 CurrentSource = L;
8526 return CastPointerIntegral<PT_Sint16>(S, OpPC);
8527}
8528bool EvalEmitter::emitCastPointerIntegralUint16(SourceInfo L) {
8529 if (!isActive()) return true;
8530 CurrentSource = L;
8531 return CastPointerIntegral<PT_Uint16>(S, OpPC);
8532}
8533bool EvalEmitter::emitCastPointerIntegralSint32(SourceInfo L) {
8534 if (!isActive()) return true;
8535 CurrentSource = L;
8536 return CastPointerIntegral<PT_Sint32>(S, OpPC);
8537}
8538bool EvalEmitter::emitCastPointerIntegralUint32(SourceInfo L) {
8539 if (!isActive()) return true;
8540 CurrentSource = L;
8541 return CastPointerIntegral<PT_Uint32>(S, OpPC);
8542}
8543bool EvalEmitter::emitCastPointerIntegralSint64(SourceInfo L) {
8544 if (!isActive()) return true;
8545 CurrentSource = L;
8546 return CastPointerIntegral<PT_Sint64>(S, OpPC);
8547}
8548bool EvalEmitter::emitCastPointerIntegralUint64(SourceInfo L) {
8549 if (!isActive()) return true;
8550 CurrentSource = L;
8551 return CastPointerIntegral<PT_Uint64>(S, OpPC);
8552}
8553bool EvalEmitter::emitCastPointerIntegralBool(SourceInfo L) {
8554 if (!isActive()) return true;
8555 CurrentSource = L;
8556 return CastPointerIntegral<PT_Bool>(S, OpPC);
8557}
8558#endif
8559#ifdef GET_OPCODE_NAMES
8560OP_CastPointerIntegralAP,
8561#endif
8562#ifdef GET_INTERP
8563case OP_CastPointerIntegralAP: {
8564 const auto V0 = ReadArg<uint32_t>(S, PC);
8565 if (!CastPointerIntegralAP(S, OpPC, V0))
8566 return false;
8567 continue;
8568}
8569#endif
8570#ifdef GET_DISASM
8571case OP_CastPointerIntegralAP:
8572 Text.Op = PrintName("CastPointerIntegralAP");
8573 Text.Args.push_back(printArg<uint32_t>(P, PC));
8574 break;
8575#endif
8576#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8577bool emitCastPointerIntegralAP( uint32_t , SourceInfo);
8578#endif
8579#ifdef GET_LINK_IMPL
8580bool ByteCodeEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
8581 return emitOp<uint32_t>(OP_CastPointerIntegralAP, A0, L);
8582}
8583#endif
8584#ifdef GET_EVAL_IMPL
8585bool EvalEmitter::emitCastPointerIntegralAP( uint32_t A0, SourceInfo L) {
8586 if (!isActive()) return true;
8587 CurrentSource = L;
8588 return CastPointerIntegralAP(S, OpPC, A0);
8589}
8590#endif
8591#ifdef GET_OPCODE_NAMES
8592OP_CastPointerIntegralAPS,
8593#endif
8594#ifdef GET_INTERP
8595case OP_CastPointerIntegralAPS: {
8596 const auto V0 = ReadArg<uint32_t>(S, PC);
8597 if (!CastPointerIntegralAPS(S, OpPC, V0))
8598 return false;
8599 continue;
8600}
8601#endif
8602#ifdef GET_DISASM
8603case OP_CastPointerIntegralAPS:
8604 Text.Op = PrintName("CastPointerIntegralAPS");
8605 Text.Args.push_back(printArg<uint32_t>(P, PC));
8606 break;
8607#endif
8608#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8609bool emitCastPointerIntegralAPS( uint32_t , SourceInfo);
8610#endif
8611#ifdef GET_LINK_IMPL
8612bool ByteCodeEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
8613 return emitOp<uint32_t>(OP_CastPointerIntegralAPS, A0, L);
8614}
8615#endif
8616#ifdef GET_EVAL_IMPL
8617bool EvalEmitter::emitCastPointerIntegralAPS( uint32_t A0, SourceInfo L) {
8618 if (!isActive()) return true;
8619 CurrentSource = L;
8620 return CastPointerIntegralAPS(S, OpPC, A0);
8621}
8622#endif
8623#ifdef GET_OPCODE_NAMES
8624OP_CheckAllocations,
8625#endif
8626#ifdef GET_INTERP
8627case OP_CheckAllocations: {
8628 if (!CheckAllocations(S, OpPC))
8629 return false;
8630 continue;
8631}
8632#endif
8633#ifdef GET_DISASM
8634case OP_CheckAllocations:
8635 Text.Op = PrintName("CheckAllocations");
8636 break;
8637#endif
8638#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8639bool emitCheckAllocations(SourceInfo);
8640#endif
8641#ifdef GET_LINK_IMPL
8642bool ByteCodeEmitter::emitCheckAllocations(SourceInfo L) {
8643 return emitOp<>(OP_CheckAllocations, L);
8644}
8645#endif
8646#ifdef GET_EVAL_IMPL
8647bool EvalEmitter::emitCheckAllocations(SourceInfo L) {
8648 if (!isActive()) return true;
8649 CurrentSource = L;
8650 return CheckAllocations(S, OpPC);
8651}
8652#endif
8653#ifdef GET_OPCODE_NAMES
8654OP_CheckArraySize,
8655#endif
8656#ifdef GET_INTERP
8657case OP_CheckArraySize: {
8658 const auto V0 = ReadArg<uint64_t>(S, PC);
8659 if (!CheckArraySize(S, OpPC, V0))
8660 return false;
8661 continue;
8662}
8663#endif
8664#ifdef GET_DISASM
8665case OP_CheckArraySize:
8666 Text.Op = PrintName("CheckArraySize");
8667 Text.Args.push_back(printArg<uint64_t>(P, PC));
8668 break;
8669#endif
8670#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8671bool emitCheckArraySize( uint64_t , SourceInfo);
8672#endif
8673#ifdef GET_LINK_IMPL
8674bool ByteCodeEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
8675 return emitOp<uint64_t>(OP_CheckArraySize, A0, L);
8676}
8677#endif
8678#ifdef GET_EVAL_IMPL
8679bool EvalEmitter::emitCheckArraySize( uint64_t A0, SourceInfo L) {
8680 if (!isActive()) return true;
8681 CurrentSource = L;
8682 return CheckArraySize(S, OpPC, A0);
8683}
8684#endif
8685#ifdef GET_OPCODE_NAMES
8686OP_CheckBitCast,
8687#endif
8688#ifdef GET_INTERP
8689case OP_CheckBitCast: {
8690 const auto V0 = ReadArg<const Type *>(S, PC);
8691 const auto V1 = ReadArg<bool>(S, PC);
8692 if (!CheckBitCast(S, OpPC, V0, V1))
8693 return false;
8694 continue;
8695}
8696#endif
8697#ifdef GET_DISASM
8698case OP_CheckBitCast:
8699 Text.Op = PrintName("CheckBitCast");
8700 Text.Args.push_back(printArg<const Type *>(P, PC));
8701 Text.Args.push_back(printArg<bool>(P, PC));
8702 break;
8703#endif
8704#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8705bool emitCheckBitCast( const Type * , bool , SourceInfo);
8706#endif
8707#ifdef GET_LINK_IMPL
8708bool ByteCodeEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
8709 return emitOp<const Type *, bool>(OP_CheckBitCast, A0, A1, L);
8710}
8711#endif
8712#ifdef GET_EVAL_IMPL
8713bool EvalEmitter::emitCheckBitCast( const Type * A0, bool A1, SourceInfo L) {
8714 if (!isActive()) return true;
8715 CurrentSource = L;
8716 return CheckBitCast(S, OpPC, A0, A1);
8717}
8718#endif
8719#ifdef GET_OPCODE_NAMES
8720OP_CheckDecl,
8721#endif
8722#ifdef GET_INTERP
8723case OP_CheckDecl: {
8724 const auto V0 = ReadArg<const VarDecl*>(S, PC);
8725 if (!CheckDecl(S, OpPC, V0))
8726 return false;
8727 continue;
8728}
8729#endif
8730#ifdef GET_DISASM
8731case OP_CheckDecl:
8732 Text.Op = PrintName("CheckDecl");
8733 Text.Args.push_back(printArg<const VarDecl*>(P, PC));
8734 break;
8735#endif
8736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8737bool emitCheckDecl( const VarDecl* , SourceInfo);
8738#endif
8739#ifdef GET_LINK_IMPL
8740bool ByteCodeEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
8741 return emitOp<const VarDecl*>(OP_CheckDecl, A0, L);
8742}
8743#endif
8744#ifdef GET_EVAL_IMPL
8745bool EvalEmitter::emitCheckDecl( const VarDecl* A0, SourceInfo L) {
8746 if (!isActive()) return true;
8747 CurrentSource = L;
8748 return CheckDecl(S, OpPC, A0);
8749}
8750#endif
8751#ifdef GET_OPCODE_NAMES
8752OP_CheckDestruction,
8753#endif
8754#ifdef GET_INTERP
8755case OP_CheckDestruction: {
8756 if (!CheckDestruction(S, OpPC))
8757 return false;
8758 continue;
8759}
8760#endif
8761#ifdef GET_DISASM
8762case OP_CheckDestruction:
8763 Text.Op = PrintName("CheckDestruction");
8764 break;
8765#endif
8766#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8767bool emitCheckDestruction(SourceInfo);
8768#endif
8769#ifdef GET_LINK_IMPL
8770bool ByteCodeEmitter::emitCheckDestruction(SourceInfo L) {
8771 return emitOp<>(OP_CheckDestruction, L);
8772}
8773#endif
8774#ifdef GET_EVAL_IMPL
8775bool EvalEmitter::emitCheckDestruction(SourceInfo L) {
8776 if (!isActive()) return true;
8777 CurrentSource = L;
8778 return CheckDestruction(S, OpPC);
8779}
8780#endif
8781#ifdef GET_OPCODE_NAMES
8782OP_CheckEnumValueSint8,
8783OP_CheckEnumValueUint8,
8784OP_CheckEnumValueSint16,
8785OP_CheckEnumValueUint16,
8786OP_CheckEnumValueSint32,
8787OP_CheckEnumValueUint32,
8788OP_CheckEnumValueSint64,
8789OP_CheckEnumValueUint64,
8790OP_CheckEnumValueIntAP,
8791OP_CheckEnumValueIntAPS,
8792OP_CheckEnumValueBool,
8793#endif
8794#ifdef GET_INTERP
8795case OP_CheckEnumValueSint8: {
8796 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8797 if (!CheckEnumValue<PT_Sint8>(S, OpPC, V0))
8798 return false;
8799 continue;
8800}
8801case OP_CheckEnumValueUint8: {
8802 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8803 if (!CheckEnumValue<PT_Uint8>(S, OpPC, V0))
8804 return false;
8805 continue;
8806}
8807case OP_CheckEnumValueSint16: {
8808 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8809 if (!CheckEnumValue<PT_Sint16>(S, OpPC, V0))
8810 return false;
8811 continue;
8812}
8813case OP_CheckEnumValueUint16: {
8814 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8815 if (!CheckEnumValue<PT_Uint16>(S, OpPC, V0))
8816 return false;
8817 continue;
8818}
8819case OP_CheckEnumValueSint32: {
8820 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8821 if (!CheckEnumValue<PT_Sint32>(S, OpPC, V0))
8822 return false;
8823 continue;
8824}
8825case OP_CheckEnumValueUint32: {
8826 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8827 if (!CheckEnumValue<PT_Uint32>(S, OpPC, V0))
8828 return false;
8829 continue;
8830}
8831case OP_CheckEnumValueSint64: {
8832 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8833 if (!CheckEnumValue<PT_Sint64>(S, OpPC, V0))
8834 return false;
8835 continue;
8836}
8837case OP_CheckEnumValueUint64: {
8838 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8839 if (!CheckEnumValue<PT_Uint64>(S, OpPC, V0))
8840 return false;
8841 continue;
8842}
8843case OP_CheckEnumValueIntAP: {
8844 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8845 if (!CheckEnumValue<PT_IntAP>(S, OpPC, V0))
8846 return false;
8847 continue;
8848}
8849case OP_CheckEnumValueIntAPS: {
8850 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8851 if (!CheckEnumValue<PT_IntAPS>(S, OpPC, V0))
8852 return false;
8853 continue;
8854}
8855case OP_CheckEnumValueBool: {
8856 const auto V0 = ReadArg<const EnumDecl *>(S, PC);
8857 if (!CheckEnumValue<PT_Bool>(S, OpPC, V0))
8858 return false;
8859 continue;
8860}
8861#endif
8862#ifdef GET_DISASM
8863case OP_CheckEnumValueSint8:
8864 Text.Op = PrintName("CheckEnumValueSint8");
8865 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8866 break;
8867case OP_CheckEnumValueUint8:
8868 Text.Op = PrintName("CheckEnumValueUint8");
8869 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8870 break;
8871case OP_CheckEnumValueSint16:
8872 Text.Op = PrintName("CheckEnumValueSint16");
8873 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8874 break;
8875case OP_CheckEnumValueUint16:
8876 Text.Op = PrintName("CheckEnumValueUint16");
8877 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8878 break;
8879case OP_CheckEnumValueSint32:
8880 Text.Op = PrintName("CheckEnumValueSint32");
8881 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8882 break;
8883case OP_CheckEnumValueUint32:
8884 Text.Op = PrintName("CheckEnumValueUint32");
8885 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8886 break;
8887case OP_CheckEnumValueSint64:
8888 Text.Op = PrintName("CheckEnumValueSint64");
8889 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8890 break;
8891case OP_CheckEnumValueUint64:
8892 Text.Op = PrintName("CheckEnumValueUint64");
8893 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8894 break;
8895case OP_CheckEnumValueIntAP:
8896 Text.Op = PrintName("CheckEnumValueIntAP");
8897 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8898 break;
8899case OP_CheckEnumValueIntAPS:
8900 Text.Op = PrintName("CheckEnumValueIntAPS");
8901 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8902 break;
8903case OP_CheckEnumValueBool:
8904 Text.Op = PrintName("CheckEnumValueBool");
8905 Text.Args.push_back(printArg<const EnumDecl *>(P, PC));
8906 break;
8907#endif
8908#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8909bool emitCheckEnumValueSint8( const EnumDecl * , SourceInfo);
8910bool emitCheckEnumValueUint8( const EnumDecl * , SourceInfo);
8911bool emitCheckEnumValueSint16( const EnumDecl * , SourceInfo);
8912bool emitCheckEnumValueUint16( const EnumDecl * , SourceInfo);
8913bool emitCheckEnumValueSint32( const EnumDecl * , SourceInfo);
8914bool emitCheckEnumValueUint32( const EnumDecl * , SourceInfo);
8915bool emitCheckEnumValueSint64( const EnumDecl * , SourceInfo);
8916bool emitCheckEnumValueUint64( const EnumDecl * , SourceInfo);
8917bool emitCheckEnumValueIntAP( const EnumDecl * , SourceInfo);
8918bool emitCheckEnumValueIntAPS( const EnumDecl * , SourceInfo);
8919bool emitCheckEnumValueBool( const EnumDecl * , SourceInfo);
8920#endif
8921#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
8922[[nodiscard]] bool emitCheckEnumValue(PrimType, const EnumDecl *, SourceInfo I);
8923#endif
8924#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
8925bool
8926#if defined(GET_EVAL_IMPL)
8927EvalEmitter
8928#else
8929ByteCodeEmitter
8930#endif
8931::emitCheckEnumValue(PrimType T0, const EnumDecl * A0, SourceInfo I) {
8932 switch (T0) {
8933 case PT_Sint8:
8934 return emitCheckEnumValueSint8(A0, I);
8935 case PT_Uint8:
8936 return emitCheckEnumValueUint8(A0, I);
8937 case PT_Sint16:
8938 return emitCheckEnumValueSint16(A0, I);
8939 case PT_Uint16:
8940 return emitCheckEnumValueUint16(A0, I);
8941 case PT_Sint32:
8942 return emitCheckEnumValueSint32(A0, I);
8943 case PT_Uint32:
8944 return emitCheckEnumValueUint32(A0, I);
8945 case PT_Sint64:
8946 return emitCheckEnumValueSint64(A0, I);
8947 case PT_Uint64:
8948 return emitCheckEnumValueUint64(A0, I);
8949 case PT_IntAP:
8950 return emitCheckEnumValueIntAP(A0, I);
8951 case PT_IntAPS:
8952 return emitCheckEnumValueIntAPS(A0, I);
8953 case PT_Bool:
8954 return emitCheckEnumValueBool(A0, I);
8955 default: llvm_unreachable("invalid type: emitCheckEnumValue");
8956 }
8957 llvm_unreachable("invalid enum value");
8958}
8959#endif
8960#ifdef GET_LINK_IMPL
8961bool ByteCodeEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
8962 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint8, A0, L);
8963}
8964bool ByteCodeEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
8965 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint8, A0, L);
8966}
8967bool ByteCodeEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
8968 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint16, A0, L);
8969}
8970bool ByteCodeEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
8971 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint16, A0, L);
8972}
8973bool ByteCodeEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
8974 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint32, A0, L);
8975}
8976bool ByteCodeEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
8977 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint32, A0, L);
8978}
8979bool ByteCodeEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
8980 return emitOp<const EnumDecl *>(OP_CheckEnumValueSint64, A0, L);
8981}
8982bool ByteCodeEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
8983 return emitOp<const EnumDecl *>(OP_CheckEnumValueUint64, A0, L);
8984}
8985bool ByteCodeEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
8986 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAP, A0, L);
8987}
8988bool ByteCodeEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
8989 return emitOp<const EnumDecl *>(OP_CheckEnumValueIntAPS, A0, L);
8990}
8991bool ByteCodeEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
8992 return emitOp<const EnumDecl *>(OP_CheckEnumValueBool, A0, L);
8993}
8994#endif
8995#ifdef GET_EVAL_IMPL
8996bool EvalEmitter::emitCheckEnumValueSint8( const EnumDecl * A0, SourceInfo L) {
8997 if (!isActive()) return true;
8998 CurrentSource = L;
8999 return CheckEnumValue<PT_Sint8>(S, OpPC, A0);
9000}
9001bool EvalEmitter::emitCheckEnumValueUint8( const EnumDecl * A0, SourceInfo L) {
9002 if (!isActive()) return true;
9003 CurrentSource = L;
9004 return CheckEnumValue<PT_Uint8>(S, OpPC, A0);
9005}
9006bool EvalEmitter::emitCheckEnumValueSint16( const EnumDecl * A0, SourceInfo L) {
9007 if (!isActive()) return true;
9008 CurrentSource = L;
9009 return CheckEnumValue<PT_Sint16>(S, OpPC, A0);
9010}
9011bool EvalEmitter::emitCheckEnumValueUint16( const EnumDecl * A0, SourceInfo L) {
9012 if (!isActive()) return true;
9013 CurrentSource = L;
9014 return CheckEnumValue<PT_Uint16>(S, OpPC, A0);
9015}
9016bool EvalEmitter::emitCheckEnumValueSint32( const EnumDecl * A0, SourceInfo L) {
9017 if (!isActive()) return true;
9018 CurrentSource = L;
9019 return CheckEnumValue<PT_Sint32>(S, OpPC, A0);
9020}
9021bool EvalEmitter::emitCheckEnumValueUint32( const EnumDecl * A0, SourceInfo L) {
9022 if (!isActive()) return true;
9023 CurrentSource = L;
9024 return CheckEnumValue<PT_Uint32>(S, OpPC, A0);
9025}
9026bool EvalEmitter::emitCheckEnumValueSint64( const EnumDecl * A0, SourceInfo L) {
9027 if (!isActive()) return true;
9028 CurrentSource = L;
9029 return CheckEnumValue<PT_Sint64>(S, OpPC, A0);
9030}
9031bool EvalEmitter::emitCheckEnumValueUint64( const EnumDecl * A0, SourceInfo L) {
9032 if (!isActive()) return true;
9033 CurrentSource = L;
9034 return CheckEnumValue<PT_Uint64>(S, OpPC, A0);
9035}
9036bool EvalEmitter::emitCheckEnumValueIntAP( const EnumDecl * A0, SourceInfo L) {
9037 if (!isActive()) return true;
9038 CurrentSource = L;
9039 return CheckEnumValue<PT_IntAP>(S, OpPC, A0);
9040}
9041bool EvalEmitter::emitCheckEnumValueIntAPS( const EnumDecl * A0, SourceInfo L) {
9042 if (!isActive()) return true;
9043 CurrentSource = L;
9044 return CheckEnumValue<PT_IntAPS>(S, OpPC, A0);
9045}
9046bool EvalEmitter::emitCheckEnumValueBool( const EnumDecl * A0, SourceInfo L) {
9047 if (!isActive()) return true;
9048 CurrentSource = L;
9049 return CheckEnumValue<PT_Bool>(S, OpPC, A0);
9050}
9051#endif
9052#ifdef GET_OPCODE_NAMES
9053OP_CheckFunctionDecl,
9054#endif
9055#ifdef GET_INTERP
9056case OP_CheckFunctionDecl: {
9057 const auto V0 = ReadArg<const FunctionDecl *>(S, PC);
9058 if (!CheckFunctionDecl(S, OpPC, V0))
9059 return false;
9060 continue;
9061}
9062#endif
9063#ifdef GET_DISASM
9064case OP_CheckFunctionDecl:
9065 Text.Op = PrintName("CheckFunctionDecl");
9066 Text.Args.push_back(printArg<const FunctionDecl *>(P, PC));
9067 break;
9068#endif
9069#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9070bool emitCheckFunctionDecl( const FunctionDecl * , SourceInfo);
9071#endif
9072#ifdef GET_LINK_IMPL
9073bool ByteCodeEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
9074 return emitOp<const FunctionDecl *>(OP_CheckFunctionDecl, A0, L);
9075}
9076#endif
9077#ifdef GET_EVAL_IMPL
9078bool EvalEmitter::emitCheckFunctionDecl( const FunctionDecl * A0, SourceInfo L) {
9079 if (!isActive()) return true;
9080 CurrentSource = L;
9081 return CheckFunctionDecl(S, OpPC, A0);
9082}
9083#endif
9084#ifdef GET_OPCODE_NAMES
9085OP_CheckLiteralType,
9086#endif
9087#ifdef GET_INTERP
9088case OP_CheckLiteralType: {
9089 const auto V0 = ReadArg<const Type *>(S, PC);
9090 if (!CheckLiteralType(S, OpPC, V0))
9091 return false;
9092 continue;
9093}
9094#endif
9095#ifdef GET_DISASM
9096case OP_CheckLiteralType:
9097 Text.Op = PrintName("CheckLiteralType");
9098 Text.Args.push_back(printArg<const Type *>(P, PC));
9099 break;
9100#endif
9101#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9102bool emitCheckLiteralType( const Type * , SourceInfo);
9103#endif
9104#ifdef GET_LINK_IMPL
9105bool ByteCodeEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
9106 return emitOp<const Type *>(OP_CheckLiteralType, A0, L);
9107}
9108#endif
9109#ifdef GET_EVAL_IMPL
9110bool EvalEmitter::emitCheckLiteralType( const Type * A0, SourceInfo L) {
9111 if (!isActive()) return true;
9112 CurrentSource = L;
9113 return CheckLiteralType(S, OpPC, A0);
9114}
9115#endif
9116#ifdef GET_OPCODE_NAMES
9117OP_CheckNewTypeMismatch,
9118#endif
9119#ifdef GET_INTERP
9120case OP_CheckNewTypeMismatch: {
9121 const auto V0 = ReadArg<const Expr *>(S, PC);
9122 if (!CheckNewTypeMismatch(S, OpPC, V0))
9123 return false;
9124 continue;
9125}
9126#endif
9127#ifdef GET_DISASM
9128case OP_CheckNewTypeMismatch:
9129 Text.Op = PrintName("CheckNewTypeMismatch");
9130 Text.Args.push_back(printArg<const Expr *>(P, PC));
9131 break;
9132#endif
9133#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9134bool emitCheckNewTypeMismatch( const Expr * , SourceInfo);
9135#endif
9136#ifdef GET_LINK_IMPL
9137bool ByteCodeEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
9138 return emitOp<const Expr *>(OP_CheckNewTypeMismatch, A0, L);
9139}
9140#endif
9141#ifdef GET_EVAL_IMPL
9142bool EvalEmitter::emitCheckNewTypeMismatch( const Expr * A0, SourceInfo L) {
9143 if (!isActive()) return true;
9144 CurrentSource = L;
9145 return CheckNewTypeMismatch(S, OpPC, A0);
9146}
9147#endif
9148#ifdef GET_OPCODE_NAMES
9149OP_CheckNewTypeMismatchArraySint8,
9150OP_CheckNewTypeMismatchArrayUint8,
9151OP_CheckNewTypeMismatchArraySint16,
9152OP_CheckNewTypeMismatchArrayUint16,
9153OP_CheckNewTypeMismatchArraySint32,
9154OP_CheckNewTypeMismatchArrayUint32,
9155OP_CheckNewTypeMismatchArraySint64,
9156OP_CheckNewTypeMismatchArrayUint64,
9157OP_CheckNewTypeMismatchArrayIntAP,
9158OP_CheckNewTypeMismatchArrayIntAPS,
9159#endif
9160#ifdef GET_INTERP
9161case OP_CheckNewTypeMismatchArraySint8: {
9162 const auto V0 = ReadArg<const Expr *>(S, PC);
9163 if (!CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, V0))
9164 return false;
9165 continue;
9166}
9167case OP_CheckNewTypeMismatchArrayUint8: {
9168 const auto V0 = ReadArg<const Expr *>(S, PC);
9169 if (!CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, V0))
9170 return false;
9171 continue;
9172}
9173case OP_CheckNewTypeMismatchArraySint16: {
9174 const auto V0 = ReadArg<const Expr *>(S, PC);
9175 if (!CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, V0))
9176 return false;
9177 continue;
9178}
9179case OP_CheckNewTypeMismatchArrayUint16: {
9180 const auto V0 = ReadArg<const Expr *>(S, PC);
9181 if (!CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, V0))
9182 return false;
9183 continue;
9184}
9185case OP_CheckNewTypeMismatchArraySint32: {
9186 const auto V0 = ReadArg<const Expr *>(S, PC);
9187 if (!CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, V0))
9188 return false;
9189 continue;
9190}
9191case OP_CheckNewTypeMismatchArrayUint32: {
9192 const auto V0 = ReadArg<const Expr *>(S, PC);
9193 if (!CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, V0))
9194 return false;
9195 continue;
9196}
9197case OP_CheckNewTypeMismatchArraySint64: {
9198 const auto V0 = ReadArg<const Expr *>(S, PC);
9199 if (!CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, V0))
9200 return false;
9201 continue;
9202}
9203case OP_CheckNewTypeMismatchArrayUint64: {
9204 const auto V0 = ReadArg<const Expr *>(S, PC);
9205 if (!CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, V0))
9206 return false;
9207 continue;
9208}
9209case OP_CheckNewTypeMismatchArrayIntAP: {
9210 const auto V0 = ReadArg<const Expr *>(S, PC);
9211 if (!CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, V0))
9212 return false;
9213 continue;
9214}
9215case OP_CheckNewTypeMismatchArrayIntAPS: {
9216 const auto V0 = ReadArg<const Expr *>(S, PC);
9217 if (!CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, V0))
9218 return false;
9219 continue;
9220}
9221#endif
9222#ifdef GET_DISASM
9223case OP_CheckNewTypeMismatchArraySint8:
9224 Text.Op = PrintName("CheckNewTypeMismatchArraySint8");
9225 Text.Args.push_back(printArg<const Expr *>(P, PC));
9226 break;
9227case OP_CheckNewTypeMismatchArrayUint8:
9228 Text.Op = PrintName("CheckNewTypeMismatchArrayUint8");
9229 Text.Args.push_back(printArg<const Expr *>(P, PC));
9230 break;
9231case OP_CheckNewTypeMismatchArraySint16:
9232 Text.Op = PrintName("CheckNewTypeMismatchArraySint16");
9233 Text.Args.push_back(printArg<const Expr *>(P, PC));
9234 break;
9235case OP_CheckNewTypeMismatchArrayUint16:
9236 Text.Op = PrintName("CheckNewTypeMismatchArrayUint16");
9237 Text.Args.push_back(printArg<const Expr *>(P, PC));
9238 break;
9239case OP_CheckNewTypeMismatchArraySint32:
9240 Text.Op = PrintName("CheckNewTypeMismatchArraySint32");
9241 Text.Args.push_back(printArg<const Expr *>(P, PC));
9242 break;
9243case OP_CheckNewTypeMismatchArrayUint32:
9244 Text.Op = PrintName("CheckNewTypeMismatchArrayUint32");
9245 Text.Args.push_back(printArg<const Expr *>(P, PC));
9246 break;
9247case OP_CheckNewTypeMismatchArraySint64:
9248 Text.Op = PrintName("CheckNewTypeMismatchArraySint64");
9249 Text.Args.push_back(printArg<const Expr *>(P, PC));
9250 break;
9251case OP_CheckNewTypeMismatchArrayUint64:
9252 Text.Op = PrintName("CheckNewTypeMismatchArrayUint64");
9253 Text.Args.push_back(printArg<const Expr *>(P, PC));
9254 break;
9255case OP_CheckNewTypeMismatchArrayIntAP:
9256 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAP");
9257 Text.Args.push_back(printArg<const Expr *>(P, PC));
9258 break;
9259case OP_CheckNewTypeMismatchArrayIntAPS:
9260 Text.Op = PrintName("CheckNewTypeMismatchArrayIntAPS");
9261 Text.Args.push_back(printArg<const Expr *>(P, PC));
9262 break;
9263#endif
9264#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9265bool emitCheckNewTypeMismatchArraySint8( const Expr * , SourceInfo);
9266bool emitCheckNewTypeMismatchArrayUint8( const Expr * , SourceInfo);
9267bool emitCheckNewTypeMismatchArraySint16( const Expr * , SourceInfo);
9268bool emitCheckNewTypeMismatchArrayUint16( const Expr * , SourceInfo);
9269bool emitCheckNewTypeMismatchArraySint32( const Expr * , SourceInfo);
9270bool emitCheckNewTypeMismatchArrayUint32( const Expr * , SourceInfo);
9271bool emitCheckNewTypeMismatchArraySint64( const Expr * , SourceInfo);
9272bool emitCheckNewTypeMismatchArrayUint64( const Expr * , SourceInfo);
9273bool emitCheckNewTypeMismatchArrayIntAP( const Expr * , SourceInfo);
9274bool emitCheckNewTypeMismatchArrayIntAPS( const Expr * , SourceInfo);
9275#endif
9276#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9277[[nodiscard]] bool emitCheckNewTypeMismatchArray(PrimType, const Expr *, SourceInfo I);
9278#endif
9279#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9280bool
9281#if defined(GET_EVAL_IMPL)
9282EvalEmitter
9283#else
9284ByteCodeEmitter
9285#endif
9286::emitCheckNewTypeMismatchArray(PrimType T0, const Expr * A0, SourceInfo I) {
9287 switch (T0) {
9288 case PT_Sint8:
9289 return emitCheckNewTypeMismatchArraySint8(A0, I);
9290 case PT_Uint8:
9291 return emitCheckNewTypeMismatchArrayUint8(A0, I);
9292 case PT_Sint16:
9293 return emitCheckNewTypeMismatchArraySint16(A0, I);
9294 case PT_Uint16:
9295 return emitCheckNewTypeMismatchArrayUint16(A0, I);
9296 case PT_Sint32:
9297 return emitCheckNewTypeMismatchArraySint32(A0, I);
9298 case PT_Uint32:
9299 return emitCheckNewTypeMismatchArrayUint32(A0, I);
9300 case PT_Sint64:
9301 return emitCheckNewTypeMismatchArraySint64(A0, I);
9302 case PT_Uint64:
9303 return emitCheckNewTypeMismatchArrayUint64(A0, I);
9304 case PT_IntAP:
9305 return emitCheckNewTypeMismatchArrayIntAP(A0, I);
9306 case PT_IntAPS:
9307 return emitCheckNewTypeMismatchArrayIntAPS(A0, I);
9308 default: llvm_unreachable("invalid type: emitCheckNewTypeMismatchArray");
9309 }
9310 llvm_unreachable("invalid enum value");
9311}
9312#endif
9313#ifdef GET_LINK_IMPL
9314bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
9315 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint8, A0, L);
9316}
9317bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
9318 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint8, A0, L);
9319}
9320bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
9321 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint16, A0, L);
9322}
9323bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
9324 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint16, A0, L);
9325}
9326bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
9327 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint32, A0, L);
9328}
9329bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
9330 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint32, A0, L);
9331}
9332bool ByteCodeEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
9333 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArraySint64, A0, L);
9334}
9335bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
9336 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayUint64, A0, L);
9337}
9338bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
9339 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAP, A0, L);
9340}
9341bool ByteCodeEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
9342 return emitOp<const Expr *>(OP_CheckNewTypeMismatchArrayIntAPS, A0, L);
9343}
9344#endif
9345#ifdef GET_EVAL_IMPL
9346bool EvalEmitter::emitCheckNewTypeMismatchArraySint8( const Expr * A0, SourceInfo L) {
9347 if (!isActive()) return true;
9348 CurrentSource = L;
9349 return CheckNewTypeMismatchArray<PT_Sint8>(S, OpPC, A0);
9350}
9351bool EvalEmitter::emitCheckNewTypeMismatchArrayUint8( const Expr * A0, SourceInfo L) {
9352 if (!isActive()) return true;
9353 CurrentSource = L;
9354 return CheckNewTypeMismatchArray<PT_Uint8>(S, OpPC, A0);
9355}
9356bool EvalEmitter::emitCheckNewTypeMismatchArraySint16( const Expr * A0, SourceInfo L) {
9357 if (!isActive()) return true;
9358 CurrentSource = L;
9359 return CheckNewTypeMismatchArray<PT_Sint16>(S, OpPC, A0);
9360}
9361bool EvalEmitter::emitCheckNewTypeMismatchArrayUint16( const Expr * A0, SourceInfo L) {
9362 if (!isActive()) return true;
9363 CurrentSource = L;
9364 return CheckNewTypeMismatchArray<PT_Uint16>(S, OpPC, A0);
9365}
9366bool EvalEmitter::emitCheckNewTypeMismatchArraySint32( const Expr * A0, SourceInfo L) {
9367 if (!isActive()) return true;
9368 CurrentSource = L;
9369 return CheckNewTypeMismatchArray<PT_Sint32>(S, OpPC, A0);
9370}
9371bool EvalEmitter::emitCheckNewTypeMismatchArrayUint32( const Expr * A0, SourceInfo L) {
9372 if (!isActive()) return true;
9373 CurrentSource = L;
9374 return CheckNewTypeMismatchArray<PT_Uint32>(S, OpPC, A0);
9375}
9376bool EvalEmitter::emitCheckNewTypeMismatchArraySint64( const Expr * A0, SourceInfo L) {
9377 if (!isActive()) return true;
9378 CurrentSource = L;
9379 return CheckNewTypeMismatchArray<PT_Sint64>(S, OpPC, A0);
9380}
9381bool EvalEmitter::emitCheckNewTypeMismatchArrayUint64( const Expr * A0, SourceInfo L) {
9382 if (!isActive()) return true;
9383 CurrentSource = L;
9384 return CheckNewTypeMismatchArray<PT_Uint64>(S, OpPC, A0);
9385}
9386bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAP( const Expr * A0, SourceInfo L) {
9387 if (!isActive()) return true;
9388 CurrentSource = L;
9389 return CheckNewTypeMismatchArray<PT_IntAP>(S, OpPC, A0);
9390}
9391bool EvalEmitter::emitCheckNewTypeMismatchArrayIntAPS( const Expr * A0, SourceInfo L) {
9392 if (!isActive()) return true;
9393 CurrentSource = L;
9394 return CheckNewTypeMismatchArray<PT_IntAPS>(S, OpPC, A0);
9395}
9396#endif
9397#ifdef GET_OPCODE_NAMES
9398OP_CheckNonNullArgPtr,
9399OP_CheckNonNullArgMemberPtr,
9400#endif
9401#ifdef GET_INTERP
9402case OP_CheckNonNullArgPtr: {
9403 if (!CheckNonNullArg<PT_Ptr>(S, OpPC))
9404 return false;
9405 continue;
9406}
9407case OP_CheckNonNullArgMemberPtr: {
9408 if (!CheckNonNullArg<PT_MemberPtr>(S, OpPC))
9409 return false;
9410 continue;
9411}
9412#endif
9413#ifdef GET_DISASM
9414case OP_CheckNonNullArgPtr:
9415 Text.Op = PrintName("CheckNonNullArgPtr");
9416 break;
9417case OP_CheckNonNullArgMemberPtr:
9418 Text.Op = PrintName("CheckNonNullArgMemberPtr");
9419 break;
9420#endif
9421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9422bool emitCheckNonNullArgPtr(SourceInfo);
9423bool emitCheckNonNullArgMemberPtr(SourceInfo);
9424#endif
9425#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9426[[nodiscard]] bool emitCheckNonNullArg(PrimType, SourceInfo I);
9427#endif
9428#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9429bool
9430#if defined(GET_EVAL_IMPL)
9431EvalEmitter
9432#else
9433ByteCodeEmitter
9434#endif
9435::emitCheckNonNullArg(PrimType T0, SourceInfo I) {
9436 switch (T0) {
9437 case PT_Ptr:
9438 return emitCheckNonNullArgPtr(I);
9439 case PT_MemberPtr:
9440 return emitCheckNonNullArgMemberPtr(I);
9441 default: llvm_unreachable("invalid type: emitCheckNonNullArg");
9442 }
9443 llvm_unreachable("invalid enum value");
9444}
9445#endif
9446#ifdef GET_LINK_IMPL
9447bool ByteCodeEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
9448 return emitOp<>(OP_CheckNonNullArgPtr, L);
9449}
9450bool ByteCodeEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
9451 return emitOp<>(OP_CheckNonNullArgMemberPtr, L);
9452}
9453#endif
9454#ifdef GET_EVAL_IMPL
9455bool EvalEmitter::emitCheckNonNullArgPtr(SourceInfo L) {
9456 if (!isActive()) return true;
9457 CurrentSource = L;
9458 return CheckNonNullArg<PT_Ptr>(S, OpPC);
9459}
9460bool EvalEmitter::emitCheckNonNullArgMemberPtr(SourceInfo L) {
9461 if (!isActive()) return true;
9462 CurrentSource = L;
9463 return CheckNonNullArg<PT_MemberPtr>(S, OpPC);
9464}
9465#endif
9466#ifdef GET_OPCODE_NAMES
9467OP_CheckNull,
9468#endif
9469#ifdef GET_INTERP
9470case OP_CheckNull: {
9471 if (!CheckNull(S, OpPC))
9472 return false;
9473 continue;
9474}
9475#endif
9476#ifdef GET_DISASM
9477case OP_CheckNull:
9478 Text.Op = PrintName("CheckNull");
9479 break;
9480#endif
9481#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9482bool emitCheckNull(SourceInfo);
9483#endif
9484#ifdef GET_LINK_IMPL
9485bool ByteCodeEmitter::emitCheckNull(SourceInfo L) {
9486 return emitOp<>(OP_CheckNull, L);
9487}
9488#endif
9489#ifdef GET_EVAL_IMPL
9490bool EvalEmitter::emitCheckNull(SourceInfo L) {
9491 if (!isActive()) return true;
9492 CurrentSource = L;
9493 return CheckNull(S, OpPC);
9494}
9495#endif
9496#ifdef GET_OPCODE_NAMES
9497OP_CheckPseudoDtor,
9498#endif
9499#ifdef GET_INTERP
9500case OP_CheckPseudoDtor: {
9501 if (!CheckPseudoDtor(S, OpPC))
9502 return false;
9503 continue;
9504}
9505#endif
9506#ifdef GET_DISASM
9507case OP_CheckPseudoDtor:
9508 Text.Op = PrintName("CheckPseudoDtor");
9509 break;
9510#endif
9511#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9512bool emitCheckPseudoDtor(SourceInfo);
9513#endif
9514#ifdef GET_LINK_IMPL
9515bool ByteCodeEmitter::emitCheckPseudoDtor(SourceInfo L) {
9516 return emitOp<>(OP_CheckPseudoDtor, L);
9517}
9518#endif
9519#ifdef GET_EVAL_IMPL
9520bool EvalEmitter::emitCheckPseudoDtor(SourceInfo L) {
9521 if (!isActive()) return true;
9522 CurrentSource = L;
9523 return CheckPseudoDtor(S, OpPC);
9524}
9525#endif
9526#ifdef GET_OPCODE_NAMES
9527OP_CompSint8,
9528OP_CompUint8,
9529OP_CompSint16,
9530OP_CompUint16,
9531OP_CompSint32,
9532OP_CompUint32,
9533OP_CompSint64,
9534OP_CompUint64,
9535OP_CompIntAP,
9536OP_CompIntAPS,
9537#endif
9538#ifdef GET_INTERP
9539case OP_CompSint8: {
9540 if (!Comp<PT_Sint8>(S, OpPC))
9541 return false;
9542 continue;
9543}
9544case OP_CompUint8: {
9545 if (!Comp<PT_Uint8>(S, OpPC))
9546 return false;
9547 continue;
9548}
9549case OP_CompSint16: {
9550 if (!Comp<PT_Sint16>(S, OpPC))
9551 return false;
9552 continue;
9553}
9554case OP_CompUint16: {
9555 if (!Comp<PT_Uint16>(S, OpPC))
9556 return false;
9557 continue;
9558}
9559case OP_CompSint32: {
9560 if (!Comp<PT_Sint32>(S, OpPC))
9561 return false;
9562 continue;
9563}
9564case OP_CompUint32: {
9565 if (!Comp<PT_Uint32>(S, OpPC))
9566 return false;
9567 continue;
9568}
9569case OP_CompSint64: {
9570 if (!Comp<PT_Sint64>(S, OpPC))
9571 return false;
9572 continue;
9573}
9574case OP_CompUint64: {
9575 if (!Comp<PT_Uint64>(S, OpPC))
9576 return false;
9577 continue;
9578}
9579case OP_CompIntAP: {
9580 if (!Comp<PT_IntAP>(S, OpPC))
9581 return false;
9582 continue;
9583}
9584case OP_CompIntAPS: {
9585 if (!Comp<PT_IntAPS>(S, OpPC))
9586 return false;
9587 continue;
9588}
9589#endif
9590#ifdef GET_DISASM
9591case OP_CompSint8:
9592 Text.Op = PrintName("CompSint8");
9593 break;
9594case OP_CompUint8:
9595 Text.Op = PrintName("CompUint8");
9596 break;
9597case OP_CompSint16:
9598 Text.Op = PrintName("CompSint16");
9599 break;
9600case OP_CompUint16:
9601 Text.Op = PrintName("CompUint16");
9602 break;
9603case OP_CompSint32:
9604 Text.Op = PrintName("CompSint32");
9605 break;
9606case OP_CompUint32:
9607 Text.Op = PrintName("CompUint32");
9608 break;
9609case OP_CompSint64:
9610 Text.Op = PrintName("CompSint64");
9611 break;
9612case OP_CompUint64:
9613 Text.Op = PrintName("CompUint64");
9614 break;
9615case OP_CompIntAP:
9616 Text.Op = PrintName("CompIntAP");
9617 break;
9618case OP_CompIntAPS:
9619 Text.Op = PrintName("CompIntAPS");
9620 break;
9621#endif
9622#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9623bool emitCompSint8(SourceInfo);
9624bool emitCompUint8(SourceInfo);
9625bool emitCompSint16(SourceInfo);
9626bool emitCompUint16(SourceInfo);
9627bool emitCompSint32(SourceInfo);
9628bool emitCompUint32(SourceInfo);
9629bool emitCompSint64(SourceInfo);
9630bool emitCompUint64(SourceInfo);
9631bool emitCompIntAP(SourceInfo);
9632bool emitCompIntAPS(SourceInfo);
9633#endif
9634#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9635[[nodiscard]] bool emitComp(PrimType, SourceInfo I);
9636#endif
9637#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
9638bool
9639#if defined(GET_EVAL_IMPL)
9640EvalEmitter
9641#else
9642ByteCodeEmitter
9643#endif
9644::emitComp(PrimType T0, SourceInfo I) {
9645 switch (T0) {
9646 case PT_Sint8:
9647 return emitCompSint8(I);
9648 case PT_Uint8:
9649 return emitCompUint8(I);
9650 case PT_Sint16:
9651 return emitCompSint16(I);
9652 case PT_Uint16:
9653 return emitCompUint16(I);
9654 case PT_Sint32:
9655 return emitCompSint32(I);
9656 case PT_Uint32:
9657 return emitCompUint32(I);
9658 case PT_Sint64:
9659 return emitCompSint64(I);
9660 case PT_Uint64:
9661 return emitCompUint64(I);
9662 case PT_IntAP:
9663 return emitCompIntAP(I);
9664 case PT_IntAPS:
9665 return emitCompIntAPS(I);
9666 default: llvm_unreachable("invalid type: emitComp");
9667 }
9668 llvm_unreachable("invalid enum value");
9669}
9670#endif
9671#ifdef GET_LINK_IMPL
9672bool ByteCodeEmitter::emitCompSint8(SourceInfo L) {
9673 return emitOp<>(OP_CompSint8, L);
9674}
9675bool ByteCodeEmitter::emitCompUint8(SourceInfo L) {
9676 return emitOp<>(OP_CompUint8, L);
9677}
9678bool ByteCodeEmitter::emitCompSint16(SourceInfo L) {
9679 return emitOp<>(OP_CompSint16, L);
9680}
9681bool ByteCodeEmitter::emitCompUint16(SourceInfo L) {
9682 return emitOp<>(OP_CompUint16, L);
9683}
9684bool ByteCodeEmitter::emitCompSint32(SourceInfo L) {
9685 return emitOp<>(OP_CompSint32, L);
9686}
9687bool ByteCodeEmitter::emitCompUint32(SourceInfo L) {
9688 return emitOp<>(OP_CompUint32, L);
9689}
9690bool ByteCodeEmitter::emitCompSint64(SourceInfo L) {
9691 return emitOp<>(OP_CompSint64, L);
9692}
9693bool ByteCodeEmitter::emitCompUint64(SourceInfo L) {
9694 return emitOp<>(OP_CompUint64, L);
9695}
9696bool ByteCodeEmitter::emitCompIntAP(SourceInfo L) {
9697 return emitOp<>(OP_CompIntAP, L);
9698}
9699bool ByteCodeEmitter::emitCompIntAPS(SourceInfo L) {
9700 return emitOp<>(OP_CompIntAPS, L);
9701}
9702#endif
9703#ifdef GET_EVAL_IMPL
9704bool EvalEmitter::emitCompSint8(SourceInfo L) {
9705 if (!isActive()) return true;
9706 CurrentSource = L;
9707 return Comp<PT_Sint8>(S, OpPC);
9708}
9709bool EvalEmitter::emitCompUint8(SourceInfo L) {
9710 if (!isActive()) return true;
9711 CurrentSource = L;
9712 return Comp<PT_Uint8>(S, OpPC);
9713}
9714bool EvalEmitter::emitCompSint16(SourceInfo L) {
9715 if (!isActive()) return true;
9716 CurrentSource = L;
9717 return Comp<PT_Sint16>(S, OpPC);
9718}
9719bool EvalEmitter::emitCompUint16(SourceInfo L) {
9720 if (!isActive()) return true;
9721 CurrentSource = L;
9722 return Comp<PT_Uint16>(S, OpPC);
9723}
9724bool EvalEmitter::emitCompSint32(SourceInfo L) {
9725 if (!isActive()) return true;
9726 CurrentSource = L;
9727 return Comp<PT_Sint32>(S, OpPC);
9728}
9729bool EvalEmitter::emitCompUint32(SourceInfo L) {
9730 if (!isActive()) return true;
9731 CurrentSource = L;
9732 return Comp<PT_Uint32>(S, OpPC);
9733}
9734bool EvalEmitter::emitCompSint64(SourceInfo L) {
9735 if (!isActive()) return true;
9736 CurrentSource = L;
9737 return Comp<PT_Sint64>(S, OpPC);
9738}
9739bool EvalEmitter::emitCompUint64(SourceInfo L) {
9740 if (!isActive()) return true;
9741 CurrentSource = L;
9742 return Comp<PT_Uint64>(S, OpPC);
9743}
9744bool EvalEmitter::emitCompIntAP(SourceInfo L) {
9745 if (!isActive()) return true;
9746 CurrentSource = L;
9747 return Comp<PT_IntAP>(S, OpPC);
9748}
9749bool EvalEmitter::emitCompIntAPS(SourceInfo L) {
9750 if (!isActive()) return true;
9751 CurrentSource = L;
9752 return Comp<PT_IntAPS>(S, OpPC);
9753}
9754#endif
9755#ifdef GET_OPCODE_NAMES
9756OP_ConstBool,
9757#endif
9758#ifdef GET_INTERP
9759case OP_ConstBool: {
9760 const auto V0 = ReadArg<bool>(S, PC);
9761 if (!Const<PT_Bool>(S, OpPC, V0))
9762 return false;
9763 continue;
9764}
9765#endif
9766#ifdef GET_DISASM
9767case OP_ConstBool:
9768 Text.Op = PrintName("ConstBool");
9769 Text.Args.push_back(printArg<bool>(P, PC));
9770 break;
9771#endif
9772#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9773bool emitConstBool( bool , SourceInfo);
9774#endif
9775#ifdef GET_LINK_IMPL
9776bool ByteCodeEmitter::emitConstBool( bool A0, SourceInfo L) {
9777 return emitOp<bool>(OP_ConstBool, A0, L);
9778}
9779#endif
9780#ifdef GET_EVAL_IMPL
9781bool EvalEmitter::emitConstBool( bool A0, SourceInfo L) {
9782 if (!isActive()) return true;
9783 CurrentSource = L;
9784 return Const<PT_Bool>(S, OpPC, A0);
9785}
9786#endif
9787#ifdef GET_OPCODE_NAMES
9788OP_ConstFixedPoint,
9789#endif
9790#ifdef GET_INTERP
9791case OP_ConstFixedPoint: {
9792 const auto &V0 = ReadArg<FixedPoint>(S, PC);
9793 if (!Const<PT_FixedPoint>(S, OpPC, V0))
9794 return false;
9795 continue;
9796}
9797#endif
9798#ifdef GET_DISASM
9799case OP_ConstFixedPoint:
9800 Text.Op = PrintName("ConstFixedPoint");
9801 Text.Args.push_back(printArg<FixedPoint>(P, PC));
9802 break;
9803#endif
9804#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9805bool emitConstFixedPoint(const FixedPoint &, SourceInfo);
9806#endif
9807#ifdef GET_LINK_IMPL
9808bool ByteCodeEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
9809 return emitOp<FixedPoint>(OP_ConstFixedPoint, A0, L);
9810}
9811#endif
9812#ifdef GET_EVAL_IMPL
9813bool EvalEmitter::emitConstFixedPoint(const FixedPoint &A0, SourceInfo L) {
9814 if (!isActive()) return true;
9815 CurrentSource = L;
9816 return Const<PT_FixedPoint>(S, OpPC, A0);
9817}
9818#endif
9819#ifdef GET_OPCODE_NAMES
9820OP_ConstFloat,
9821#endif
9822#ifdef GET_INTERP
9823case OP_ConstFloat: {
9824 const auto &V0 = ReadArg<Floating>(S, PC);
9825 if (!ConstFloat(S, OpPC, V0))
9826 return false;
9827 continue;
9828}
9829#endif
9830#ifdef GET_DISASM
9831case OP_ConstFloat:
9832 Text.Op = PrintName("ConstFloat");
9833 Text.Args.push_back(printArg<Floating>(P, PC));
9834 break;
9835#endif
9836#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9837bool emitConstFloat(const Floating &, SourceInfo);
9838#endif
9839#ifdef GET_LINK_IMPL
9840bool ByteCodeEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
9841 return emitOp<Floating>(OP_ConstFloat, A0, L);
9842}
9843#endif
9844#ifdef GET_EVAL_IMPL
9845bool EvalEmitter::emitConstFloat(const Floating &A0, SourceInfo L) {
9846 if (!isActive()) return true;
9847 CurrentSource = L;
9848 return ConstFloat(S, OpPC, A0);
9849}
9850#endif
9851#ifdef GET_OPCODE_NAMES
9852OP_ConstIntAP,
9853#endif
9854#ifdef GET_INTERP
9855case OP_ConstIntAP: {
9856 const auto &V0 = ReadArg<IntegralAP<false>>(S, PC);
9857 if (!Const<PT_IntAP>(S, OpPC, V0))
9858 return false;
9859 continue;
9860}
9861#endif
9862#ifdef GET_DISASM
9863case OP_ConstIntAP:
9864 Text.Op = PrintName("ConstIntAP");
9865 Text.Args.push_back(printArg<IntegralAP<false>>(P, PC));
9866 break;
9867#endif
9868#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9869bool emitConstIntAP(const IntegralAP<false> &, SourceInfo);
9870#endif
9871#ifdef GET_LINK_IMPL
9872bool ByteCodeEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
9873 return emitOp<IntegralAP<false>>(OP_ConstIntAP, A0, L);
9874}
9875#endif
9876#ifdef GET_EVAL_IMPL
9877bool EvalEmitter::emitConstIntAP(const IntegralAP<false> &A0, SourceInfo L) {
9878 if (!isActive()) return true;
9879 CurrentSource = L;
9880 return Const<PT_IntAP>(S, OpPC, A0);
9881}
9882#endif
9883#ifdef GET_OPCODE_NAMES
9884OP_ConstIntAPS,
9885#endif
9886#ifdef GET_INTERP
9887case OP_ConstIntAPS: {
9888 const auto &V0 = ReadArg<IntegralAP<true>>(S, PC);
9889 if (!Const<PT_IntAPS>(S, OpPC, V0))
9890 return false;
9891 continue;
9892}
9893#endif
9894#ifdef GET_DISASM
9895case OP_ConstIntAPS:
9896 Text.Op = PrintName("ConstIntAPS");
9897 Text.Args.push_back(printArg<IntegralAP<true>>(P, PC));
9898 break;
9899#endif
9900#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9901bool emitConstIntAPS(const IntegralAP<true> &, SourceInfo);
9902#endif
9903#ifdef GET_LINK_IMPL
9904bool ByteCodeEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
9905 return emitOp<IntegralAP<true>>(OP_ConstIntAPS, A0, L);
9906}
9907#endif
9908#ifdef GET_EVAL_IMPL
9909bool EvalEmitter::emitConstIntAPS(const IntegralAP<true> &A0, SourceInfo L) {
9910 if (!isActive()) return true;
9911 CurrentSource = L;
9912 return Const<PT_IntAPS>(S, OpPC, A0);
9913}
9914#endif
9915#ifdef GET_OPCODE_NAMES
9916OP_ConstSint8,
9917#endif
9918#ifdef GET_INTERP
9919case OP_ConstSint8: {
9920 const auto V0 = ReadArg<int8_t>(S, PC);
9921 if (!Const<PT_Sint8>(S, OpPC, V0))
9922 return false;
9923 continue;
9924}
9925#endif
9926#ifdef GET_DISASM
9927case OP_ConstSint8:
9928 Text.Op = PrintName("ConstSint8");
9929 Text.Args.push_back(printArg<int8_t>(P, PC));
9930 break;
9931#endif
9932#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9933bool emitConstSint8( int8_t , SourceInfo);
9934#endif
9935#ifdef GET_LINK_IMPL
9936bool ByteCodeEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
9937 return emitOp<int8_t>(OP_ConstSint8, A0, L);
9938}
9939#endif
9940#ifdef GET_EVAL_IMPL
9941bool EvalEmitter::emitConstSint8( int8_t A0, SourceInfo L) {
9942 if (!isActive()) return true;
9943 CurrentSource = L;
9944 return Const<PT_Sint8>(S, OpPC, A0);
9945}
9946#endif
9947#ifdef GET_OPCODE_NAMES
9948OP_ConstSint16,
9949#endif
9950#ifdef GET_INTERP
9951case OP_ConstSint16: {
9952 const auto V0 = ReadArg<int16_t>(S, PC);
9953 if (!Const<PT_Sint16>(S, OpPC, V0))
9954 return false;
9955 continue;
9956}
9957#endif
9958#ifdef GET_DISASM
9959case OP_ConstSint16:
9960 Text.Op = PrintName("ConstSint16");
9961 Text.Args.push_back(printArg<int16_t>(P, PC));
9962 break;
9963#endif
9964#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9965bool emitConstSint16( int16_t , SourceInfo);
9966#endif
9967#ifdef GET_LINK_IMPL
9968bool ByteCodeEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
9969 return emitOp<int16_t>(OP_ConstSint16, A0, L);
9970}
9971#endif
9972#ifdef GET_EVAL_IMPL
9973bool EvalEmitter::emitConstSint16( int16_t A0, SourceInfo L) {
9974 if (!isActive()) return true;
9975 CurrentSource = L;
9976 return Const<PT_Sint16>(S, OpPC, A0);
9977}
9978#endif
9979#ifdef GET_OPCODE_NAMES
9980OP_ConstSint32,
9981#endif
9982#ifdef GET_INTERP
9983case OP_ConstSint32: {
9984 const auto V0 = ReadArg<int32_t>(S, PC);
9985 if (!Const<PT_Sint32>(S, OpPC, V0))
9986 return false;
9987 continue;
9988}
9989#endif
9990#ifdef GET_DISASM
9991case OP_ConstSint32:
9992 Text.Op = PrintName("ConstSint32");
9993 Text.Args.push_back(printArg<int32_t>(P, PC));
9994 break;
9995#endif
9996#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
9997bool emitConstSint32( int32_t , SourceInfo);
9998#endif
9999#ifdef GET_LINK_IMPL
10000bool ByteCodeEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
10001 return emitOp<int32_t>(OP_ConstSint32, A0, L);
10002}
10003#endif
10004#ifdef GET_EVAL_IMPL
10005bool EvalEmitter::emitConstSint32( int32_t A0, SourceInfo L) {
10006 if (!isActive()) return true;
10007 CurrentSource = L;
10008 return Const<PT_Sint32>(S, OpPC, A0);
10009}
10010#endif
10011#ifdef GET_OPCODE_NAMES
10012OP_ConstSint64,
10013#endif
10014#ifdef GET_INTERP
10015case OP_ConstSint64: {
10016 const auto V0 = ReadArg<int64_t>(S, PC);
10017 if (!Const<PT_Sint64>(S, OpPC, V0))
10018 return false;
10019 continue;
10020}
10021#endif
10022#ifdef GET_DISASM
10023case OP_ConstSint64:
10024 Text.Op = PrintName("ConstSint64");
10025 Text.Args.push_back(printArg<int64_t>(P, PC));
10026 break;
10027#endif
10028#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10029bool emitConstSint64( int64_t , SourceInfo);
10030#endif
10031#ifdef GET_LINK_IMPL
10032bool ByteCodeEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
10033 return emitOp<int64_t>(OP_ConstSint64, A0, L);
10034}
10035#endif
10036#ifdef GET_EVAL_IMPL
10037bool EvalEmitter::emitConstSint64( int64_t A0, SourceInfo L) {
10038 if (!isActive()) return true;
10039 CurrentSource = L;
10040 return Const<PT_Sint64>(S, OpPC, A0);
10041}
10042#endif
10043#ifdef GET_OPCODE_NAMES
10044OP_ConstUint8,
10045#endif
10046#ifdef GET_INTERP
10047case OP_ConstUint8: {
10048 const auto V0 = ReadArg<uint8_t>(S, PC);
10049 if (!Const<PT_Uint8>(S, OpPC, V0))
10050 return false;
10051 continue;
10052}
10053#endif
10054#ifdef GET_DISASM
10055case OP_ConstUint8:
10056 Text.Op = PrintName("ConstUint8");
10057 Text.Args.push_back(printArg<uint8_t>(P, PC));
10058 break;
10059#endif
10060#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10061bool emitConstUint8( uint8_t , SourceInfo);
10062#endif
10063#ifdef GET_LINK_IMPL
10064bool ByteCodeEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
10065 return emitOp<uint8_t>(OP_ConstUint8, A0, L);
10066}
10067#endif
10068#ifdef GET_EVAL_IMPL
10069bool EvalEmitter::emitConstUint8( uint8_t A0, SourceInfo L) {
10070 if (!isActive()) return true;
10071 CurrentSource = L;
10072 return Const<PT_Uint8>(S, OpPC, A0);
10073}
10074#endif
10075#ifdef GET_OPCODE_NAMES
10076OP_ConstUint16,
10077#endif
10078#ifdef GET_INTERP
10079case OP_ConstUint16: {
10080 const auto V0 = ReadArg<uint16_t>(S, PC);
10081 if (!Const<PT_Uint16>(S, OpPC, V0))
10082 return false;
10083 continue;
10084}
10085#endif
10086#ifdef GET_DISASM
10087case OP_ConstUint16:
10088 Text.Op = PrintName("ConstUint16");
10089 Text.Args.push_back(printArg<uint16_t>(P, PC));
10090 break;
10091#endif
10092#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10093bool emitConstUint16( uint16_t , SourceInfo);
10094#endif
10095#ifdef GET_LINK_IMPL
10096bool ByteCodeEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
10097 return emitOp<uint16_t>(OP_ConstUint16, A0, L);
10098}
10099#endif
10100#ifdef GET_EVAL_IMPL
10101bool EvalEmitter::emitConstUint16( uint16_t A0, SourceInfo L) {
10102 if (!isActive()) return true;
10103 CurrentSource = L;
10104 return Const<PT_Uint16>(S, OpPC, A0);
10105}
10106#endif
10107#ifdef GET_OPCODE_NAMES
10108OP_ConstUint32,
10109#endif
10110#ifdef GET_INTERP
10111case OP_ConstUint32: {
10112 const auto V0 = ReadArg<uint32_t>(S, PC);
10113 if (!Const<PT_Uint32>(S, OpPC, V0))
10114 return false;
10115 continue;
10116}
10117#endif
10118#ifdef GET_DISASM
10119case OP_ConstUint32:
10120 Text.Op = PrintName("ConstUint32");
10121 Text.Args.push_back(printArg<uint32_t>(P, PC));
10122 break;
10123#endif
10124#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10125bool emitConstUint32( uint32_t , SourceInfo);
10126#endif
10127#ifdef GET_LINK_IMPL
10128bool ByteCodeEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
10129 return emitOp<uint32_t>(OP_ConstUint32, A0, L);
10130}
10131#endif
10132#ifdef GET_EVAL_IMPL
10133bool EvalEmitter::emitConstUint32( uint32_t A0, SourceInfo L) {
10134 if (!isActive()) return true;
10135 CurrentSource = L;
10136 return Const<PT_Uint32>(S, OpPC, A0);
10137}
10138#endif
10139#ifdef GET_OPCODE_NAMES
10140OP_ConstUint64,
10141#endif
10142#ifdef GET_INTERP
10143case OP_ConstUint64: {
10144 const auto V0 = ReadArg<uint64_t>(S, PC);
10145 if (!Const<PT_Uint64>(S, OpPC, V0))
10146 return false;
10147 continue;
10148}
10149#endif
10150#ifdef GET_DISASM
10151case OP_ConstUint64:
10152 Text.Op = PrintName("ConstUint64");
10153 Text.Args.push_back(printArg<uint64_t>(P, PC));
10154 break;
10155#endif
10156#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10157bool emitConstUint64( uint64_t , SourceInfo);
10158#endif
10159#ifdef GET_LINK_IMPL
10160bool ByteCodeEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
10161 return emitOp<uint64_t>(OP_ConstUint64, A0, L);
10162}
10163#endif
10164#ifdef GET_EVAL_IMPL
10165bool EvalEmitter::emitConstUint64( uint64_t A0, SourceInfo L) {
10166 if (!isActive()) return true;
10167 CurrentSource = L;
10168 return Const<PT_Uint64>(S, OpPC, A0);
10169}
10170#endif
10171#ifdef GET_OPCODE_NAMES
10172OP_CopyArraySint8,
10173OP_CopyArrayUint8,
10174OP_CopyArraySint16,
10175OP_CopyArrayUint16,
10176OP_CopyArraySint32,
10177OP_CopyArrayUint32,
10178OP_CopyArraySint64,
10179OP_CopyArrayUint64,
10180OP_CopyArrayIntAP,
10181OP_CopyArrayIntAPS,
10182OP_CopyArrayBool,
10183OP_CopyArrayFixedPoint,
10184OP_CopyArrayPtr,
10185OP_CopyArrayMemberPtr,
10186OP_CopyArrayFloat,
10187#endif
10188#ifdef GET_INTERP
10189case OP_CopyArraySint8: {
10190 const auto V0 = ReadArg<uint32_t>(S, PC);
10191 const auto V1 = ReadArg<uint32_t>(S, PC);
10192 const auto V2 = ReadArg<uint32_t>(S, PC);
10193 if (!CopyArray<PT_Sint8>(S, OpPC, V0, V1, V2))
10194 return false;
10195 continue;
10196}
10197case OP_CopyArrayUint8: {
10198 const auto V0 = ReadArg<uint32_t>(S, PC);
10199 const auto V1 = ReadArg<uint32_t>(S, PC);
10200 const auto V2 = ReadArg<uint32_t>(S, PC);
10201 if (!CopyArray<PT_Uint8>(S, OpPC, V0, V1, V2))
10202 return false;
10203 continue;
10204}
10205case OP_CopyArraySint16: {
10206 const auto V0 = ReadArg<uint32_t>(S, PC);
10207 const auto V1 = ReadArg<uint32_t>(S, PC);
10208 const auto V2 = ReadArg<uint32_t>(S, PC);
10209 if (!CopyArray<PT_Sint16>(S, OpPC, V0, V1, V2))
10210 return false;
10211 continue;
10212}
10213case OP_CopyArrayUint16: {
10214 const auto V0 = ReadArg<uint32_t>(S, PC);
10215 const auto V1 = ReadArg<uint32_t>(S, PC);
10216 const auto V2 = ReadArg<uint32_t>(S, PC);
10217 if (!CopyArray<PT_Uint16>(S, OpPC, V0, V1, V2))
10218 return false;
10219 continue;
10220}
10221case OP_CopyArraySint32: {
10222 const auto V0 = ReadArg<uint32_t>(S, PC);
10223 const auto V1 = ReadArg<uint32_t>(S, PC);
10224 const auto V2 = ReadArg<uint32_t>(S, PC);
10225 if (!CopyArray<PT_Sint32>(S, OpPC, V0, V1, V2))
10226 return false;
10227 continue;
10228}
10229case OP_CopyArrayUint32: {
10230 const auto V0 = ReadArg<uint32_t>(S, PC);
10231 const auto V1 = ReadArg<uint32_t>(S, PC);
10232 const auto V2 = ReadArg<uint32_t>(S, PC);
10233 if (!CopyArray<PT_Uint32>(S, OpPC, V0, V1, V2))
10234 return false;
10235 continue;
10236}
10237case OP_CopyArraySint64: {
10238 const auto V0 = ReadArg<uint32_t>(S, PC);
10239 const auto V1 = ReadArg<uint32_t>(S, PC);
10240 const auto V2 = ReadArg<uint32_t>(S, PC);
10241 if (!CopyArray<PT_Sint64>(S, OpPC, V0, V1, V2))
10242 return false;
10243 continue;
10244}
10245case OP_CopyArrayUint64: {
10246 const auto V0 = ReadArg<uint32_t>(S, PC);
10247 const auto V1 = ReadArg<uint32_t>(S, PC);
10248 const auto V2 = ReadArg<uint32_t>(S, PC);
10249 if (!CopyArray<PT_Uint64>(S, OpPC, V0, V1, V2))
10250 return false;
10251 continue;
10252}
10253case OP_CopyArrayIntAP: {
10254 const auto V0 = ReadArg<uint32_t>(S, PC);
10255 const auto V1 = ReadArg<uint32_t>(S, PC);
10256 const auto V2 = ReadArg<uint32_t>(S, PC);
10257 if (!CopyArray<PT_IntAP>(S, OpPC, V0, V1, V2))
10258 return false;
10259 continue;
10260}
10261case OP_CopyArrayIntAPS: {
10262 const auto V0 = ReadArg<uint32_t>(S, PC);
10263 const auto V1 = ReadArg<uint32_t>(S, PC);
10264 const auto V2 = ReadArg<uint32_t>(S, PC);
10265 if (!CopyArray<PT_IntAPS>(S, OpPC, V0, V1, V2))
10266 return false;
10267 continue;
10268}
10269case OP_CopyArrayBool: {
10270 const auto V0 = ReadArg<uint32_t>(S, PC);
10271 const auto V1 = ReadArg<uint32_t>(S, PC);
10272 const auto V2 = ReadArg<uint32_t>(S, PC);
10273 if (!CopyArray<PT_Bool>(S, OpPC, V0, V1, V2))
10274 return false;
10275 continue;
10276}
10277case OP_CopyArrayFixedPoint: {
10278 const auto V0 = ReadArg<uint32_t>(S, PC);
10279 const auto V1 = ReadArg<uint32_t>(S, PC);
10280 const auto V2 = ReadArg<uint32_t>(S, PC);
10281 if (!CopyArray<PT_FixedPoint>(S, OpPC, V0, V1, V2))
10282 return false;
10283 continue;
10284}
10285case OP_CopyArrayPtr: {
10286 const auto V0 = ReadArg<uint32_t>(S, PC);
10287 const auto V1 = ReadArg<uint32_t>(S, PC);
10288 const auto V2 = ReadArg<uint32_t>(S, PC);
10289 if (!CopyArray<PT_Ptr>(S, OpPC, V0, V1, V2))
10290 return false;
10291 continue;
10292}
10293case OP_CopyArrayMemberPtr: {
10294 const auto V0 = ReadArg<uint32_t>(S, PC);
10295 const auto V1 = ReadArg<uint32_t>(S, PC);
10296 const auto V2 = ReadArg<uint32_t>(S, PC);
10297 if (!CopyArray<PT_MemberPtr>(S, OpPC, V0, V1, V2))
10298 return false;
10299 continue;
10300}
10301case OP_CopyArrayFloat: {
10302 const auto V0 = ReadArg<uint32_t>(S, PC);
10303 const auto V1 = ReadArg<uint32_t>(S, PC);
10304 const auto V2 = ReadArg<uint32_t>(S, PC);
10305 if (!CopyArray<PT_Float>(S, OpPC, V0, V1, V2))
10306 return false;
10307 continue;
10308}
10309#endif
10310#ifdef GET_DISASM
10311case OP_CopyArraySint8:
10312 Text.Op = PrintName("CopyArraySint8");
10313 Text.Args.push_back(printArg<uint32_t>(P, PC));
10314 Text.Args.push_back(printArg<uint32_t>(P, PC));
10315 Text.Args.push_back(printArg<uint32_t>(P, PC));
10316 break;
10317case OP_CopyArrayUint8:
10318 Text.Op = PrintName("CopyArrayUint8");
10319 Text.Args.push_back(printArg<uint32_t>(P, PC));
10320 Text.Args.push_back(printArg<uint32_t>(P, PC));
10321 Text.Args.push_back(printArg<uint32_t>(P, PC));
10322 break;
10323case OP_CopyArraySint16:
10324 Text.Op = PrintName("CopyArraySint16");
10325 Text.Args.push_back(printArg<uint32_t>(P, PC));
10326 Text.Args.push_back(printArg<uint32_t>(P, PC));
10327 Text.Args.push_back(printArg<uint32_t>(P, PC));
10328 break;
10329case OP_CopyArrayUint16:
10330 Text.Op = PrintName("CopyArrayUint16");
10331 Text.Args.push_back(printArg<uint32_t>(P, PC));
10332 Text.Args.push_back(printArg<uint32_t>(P, PC));
10333 Text.Args.push_back(printArg<uint32_t>(P, PC));
10334 break;
10335case OP_CopyArraySint32:
10336 Text.Op = PrintName("CopyArraySint32");
10337 Text.Args.push_back(printArg<uint32_t>(P, PC));
10338 Text.Args.push_back(printArg<uint32_t>(P, PC));
10339 Text.Args.push_back(printArg<uint32_t>(P, PC));
10340 break;
10341case OP_CopyArrayUint32:
10342 Text.Op = PrintName("CopyArrayUint32");
10343 Text.Args.push_back(printArg<uint32_t>(P, PC));
10344 Text.Args.push_back(printArg<uint32_t>(P, PC));
10345 Text.Args.push_back(printArg<uint32_t>(P, PC));
10346 break;
10347case OP_CopyArraySint64:
10348 Text.Op = PrintName("CopyArraySint64");
10349 Text.Args.push_back(printArg<uint32_t>(P, PC));
10350 Text.Args.push_back(printArg<uint32_t>(P, PC));
10351 Text.Args.push_back(printArg<uint32_t>(P, PC));
10352 break;
10353case OP_CopyArrayUint64:
10354 Text.Op = PrintName("CopyArrayUint64");
10355 Text.Args.push_back(printArg<uint32_t>(P, PC));
10356 Text.Args.push_back(printArg<uint32_t>(P, PC));
10357 Text.Args.push_back(printArg<uint32_t>(P, PC));
10358 break;
10359case OP_CopyArrayIntAP:
10360 Text.Op = PrintName("CopyArrayIntAP");
10361 Text.Args.push_back(printArg<uint32_t>(P, PC));
10362 Text.Args.push_back(printArg<uint32_t>(P, PC));
10363 Text.Args.push_back(printArg<uint32_t>(P, PC));
10364 break;
10365case OP_CopyArrayIntAPS:
10366 Text.Op = PrintName("CopyArrayIntAPS");
10367 Text.Args.push_back(printArg<uint32_t>(P, PC));
10368 Text.Args.push_back(printArg<uint32_t>(P, PC));
10369 Text.Args.push_back(printArg<uint32_t>(P, PC));
10370 break;
10371case OP_CopyArrayBool:
10372 Text.Op = PrintName("CopyArrayBool");
10373 Text.Args.push_back(printArg<uint32_t>(P, PC));
10374 Text.Args.push_back(printArg<uint32_t>(P, PC));
10375 Text.Args.push_back(printArg<uint32_t>(P, PC));
10376 break;
10377case OP_CopyArrayFixedPoint:
10378 Text.Op = PrintName("CopyArrayFixedPoint");
10379 Text.Args.push_back(printArg<uint32_t>(P, PC));
10380 Text.Args.push_back(printArg<uint32_t>(P, PC));
10381 Text.Args.push_back(printArg<uint32_t>(P, PC));
10382 break;
10383case OP_CopyArrayPtr:
10384 Text.Op = PrintName("CopyArrayPtr");
10385 Text.Args.push_back(printArg<uint32_t>(P, PC));
10386 Text.Args.push_back(printArg<uint32_t>(P, PC));
10387 Text.Args.push_back(printArg<uint32_t>(P, PC));
10388 break;
10389case OP_CopyArrayMemberPtr:
10390 Text.Op = PrintName("CopyArrayMemberPtr");
10391 Text.Args.push_back(printArg<uint32_t>(P, PC));
10392 Text.Args.push_back(printArg<uint32_t>(P, PC));
10393 Text.Args.push_back(printArg<uint32_t>(P, PC));
10394 break;
10395case OP_CopyArrayFloat:
10396 Text.Op = PrintName("CopyArrayFloat");
10397 Text.Args.push_back(printArg<uint32_t>(P, PC));
10398 Text.Args.push_back(printArg<uint32_t>(P, PC));
10399 Text.Args.push_back(printArg<uint32_t>(P, PC));
10400 break;
10401#endif
10402#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10403bool emitCopyArraySint8( uint32_t , uint32_t , uint32_t , SourceInfo);
10404bool emitCopyArrayUint8( uint32_t , uint32_t , uint32_t , SourceInfo);
10405bool emitCopyArraySint16( uint32_t , uint32_t , uint32_t , SourceInfo);
10406bool emitCopyArrayUint16( uint32_t , uint32_t , uint32_t , SourceInfo);
10407bool emitCopyArraySint32( uint32_t , uint32_t , uint32_t , SourceInfo);
10408bool emitCopyArrayUint32( uint32_t , uint32_t , uint32_t , SourceInfo);
10409bool emitCopyArraySint64( uint32_t , uint32_t , uint32_t , SourceInfo);
10410bool emitCopyArrayUint64( uint32_t , uint32_t , uint32_t , SourceInfo);
10411bool emitCopyArrayIntAP( uint32_t , uint32_t , uint32_t , SourceInfo);
10412bool emitCopyArrayIntAPS( uint32_t , uint32_t , uint32_t , SourceInfo);
10413bool emitCopyArrayBool( uint32_t , uint32_t , uint32_t , SourceInfo);
10414bool emitCopyArrayFixedPoint( uint32_t , uint32_t , uint32_t , SourceInfo);
10415bool emitCopyArrayPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
10416bool emitCopyArrayMemberPtr( uint32_t , uint32_t , uint32_t , SourceInfo);
10417bool emitCopyArrayFloat( uint32_t , uint32_t , uint32_t , SourceInfo);
10418#endif
10419#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10420[[nodiscard]] bool emitCopyArray(PrimType, uint32_t, uint32_t, uint32_t, SourceInfo I);
10421#endif
10422#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10423bool
10424#if defined(GET_EVAL_IMPL)
10425EvalEmitter
10426#else
10427ByteCodeEmitter
10428#endif
10429::emitCopyArray(PrimType T0, uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo I) {
10430 switch (T0) {
10431 case PT_Sint8:
10432 return emitCopyArraySint8(A0, A1, A2, I);
10433 case PT_Uint8:
10434 return emitCopyArrayUint8(A0, A1, A2, I);
10435 case PT_Sint16:
10436 return emitCopyArraySint16(A0, A1, A2, I);
10437 case PT_Uint16:
10438 return emitCopyArrayUint16(A0, A1, A2, I);
10439 case PT_Sint32:
10440 return emitCopyArraySint32(A0, A1, A2, I);
10441 case PT_Uint32:
10442 return emitCopyArrayUint32(A0, A1, A2, I);
10443 case PT_Sint64:
10444 return emitCopyArraySint64(A0, A1, A2, I);
10445 case PT_Uint64:
10446 return emitCopyArrayUint64(A0, A1, A2, I);
10447 case PT_IntAP:
10448 return emitCopyArrayIntAP(A0, A1, A2, I);
10449 case PT_IntAPS:
10450 return emitCopyArrayIntAPS(A0, A1, A2, I);
10451 case PT_Bool:
10452 return emitCopyArrayBool(A0, A1, A2, I);
10453 case PT_FixedPoint:
10454 return emitCopyArrayFixedPoint(A0, A1, A2, I);
10455 case PT_Ptr:
10456 return emitCopyArrayPtr(A0, A1, A2, I);
10457 case PT_MemberPtr:
10458 return emitCopyArrayMemberPtr(A0, A1, A2, I);
10459 case PT_Float:
10460 return emitCopyArrayFloat(A0, A1, A2, I);
10461 }
10462 llvm_unreachable("invalid enum value");
10463}
10464#endif
10465#ifdef GET_LINK_IMPL
10466bool ByteCodeEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10467 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint8, A0, A1, A2, L);
10468}
10469bool ByteCodeEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10470 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint8, A0, A1, A2, L);
10471}
10472bool ByteCodeEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10473 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint16, A0, A1, A2, L);
10474}
10475bool ByteCodeEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10476 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint16, A0, A1, A2, L);
10477}
10478bool ByteCodeEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10479 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint32, A0, A1, A2, L);
10480}
10481bool ByteCodeEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10482 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint32, A0, A1, A2, L);
10483}
10484bool ByteCodeEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10485 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArraySint64, A0, A1, A2, L);
10486}
10487bool ByteCodeEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10488 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayUint64, A0, A1, A2, L);
10489}
10490bool ByteCodeEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10491 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAP, A0, A1, A2, L);
10492}
10493bool ByteCodeEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10494 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayIntAPS, A0, A1, A2, L);
10495}
10496bool ByteCodeEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10497 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayBool, A0, A1, A2, L);
10498}
10499bool ByteCodeEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10500 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFixedPoint, A0, A1, A2, L);
10501}
10502bool ByteCodeEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10503 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayPtr, A0, A1, A2, L);
10504}
10505bool ByteCodeEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10506 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayMemberPtr, A0, A1, A2, L);
10507}
10508bool ByteCodeEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10509 return emitOp<uint32_t, uint32_t, uint32_t>(OP_CopyArrayFloat, A0, A1, A2, L);
10510}
10511#endif
10512#ifdef GET_EVAL_IMPL
10513bool EvalEmitter::emitCopyArraySint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10514 if (!isActive()) return true;
10515 CurrentSource = L;
10516 return CopyArray<PT_Sint8>(S, OpPC, A0, A1, A2);
10517}
10518bool EvalEmitter::emitCopyArrayUint8( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10519 if (!isActive()) return true;
10520 CurrentSource = L;
10521 return CopyArray<PT_Uint8>(S, OpPC, A0, A1, A2);
10522}
10523bool EvalEmitter::emitCopyArraySint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10524 if (!isActive()) return true;
10525 CurrentSource = L;
10526 return CopyArray<PT_Sint16>(S, OpPC, A0, A1, A2);
10527}
10528bool EvalEmitter::emitCopyArrayUint16( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10529 if (!isActive()) return true;
10530 CurrentSource = L;
10531 return CopyArray<PT_Uint16>(S, OpPC, A0, A1, A2);
10532}
10533bool EvalEmitter::emitCopyArraySint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10534 if (!isActive()) return true;
10535 CurrentSource = L;
10536 return CopyArray<PT_Sint32>(S, OpPC, A0, A1, A2);
10537}
10538bool EvalEmitter::emitCopyArrayUint32( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10539 if (!isActive()) return true;
10540 CurrentSource = L;
10541 return CopyArray<PT_Uint32>(S, OpPC, A0, A1, A2);
10542}
10543bool EvalEmitter::emitCopyArraySint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10544 if (!isActive()) return true;
10545 CurrentSource = L;
10546 return CopyArray<PT_Sint64>(S, OpPC, A0, A1, A2);
10547}
10548bool EvalEmitter::emitCopyArrayUint64( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10549 if (!isActive()) return true;
10550 CurrentSource = L;
10551 return CopyArray<PT_Uint64>(S, OpPC, A0, A1, A2);
10552}
10553bool EvalEmitter::emitCopyArrayIntAP( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10554 if (!isActive()) return true;
10555 CurrentSource = L;
10556 return CopyArray<PT_IntAP>(S, OpPC, A0, A1, A2);
10557}
10558bool EvalEmitter::emitCopyArrayIntAPS( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10559 if (!isActive()) return true;
10560 CurrentSource = L;
10561 return CopyArray<PT_IntAPS>(S, OpPC, A0, A1, A2);
10562}
10563bool EvalEmitter::emitCopyArrayBool( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10564 if (!isActive()) return true;
10565 CurrentSource = L;
10566 return CopyArray<PT_Bool>(S, OpPC, A0, A1, A2);
10567}
10568bool EvalEmitter::emitCopyArrayFixedPoint( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10569 if (!isActive()) return true;
10570 CurrentSource = L;
10571 return CopyArray<PT_FixedPoint>(S, OpPC, A0, A1, A2);
10572}
10573bool EvalEmitter::emitCopyArrayPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10574 if (!isActive()) return true;
10575 CurrentSource = L;
10576 return CopyArray<PT_Ptr>(S, OpPC, A0, A1, A2);
10577}
10578bool EvalEmitter::emitCopyArrayMemberPtr( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10579 if (!isActive()) return true;
10580 CurrentSource = L;
10581 return CopyArray<PT_MemberPtr>(S, OpPC, A0, A1, A2);
10582}
10583bool EvalEmitter::emitCopyArrayFloat( uint32_t A0, uint32_t A1, uint32_t A2, SourceInfo L) {
10584 if (!isActive()) return true;
10585 CurrentSource = L;
10586 return CopyArray<PT_Float>(S, OpPC, A0, A1, A2);
10587}
10588#endif
10589#ifdef GET_OPCODE_NAMES
10590OP_CtorCheck,
10591#endif
10592#ifdef GET_INTERP
10593case OP_CtorCheck: {
10594 if (!CtorCheck(S, OpPC))
10595 return false;
10596 continue;
10597}
10598#endif
10599#ifdef GET_DISASM
10600case OP_CtorCheck:
10601 Text.Op = PrintName("CtorCheck");
10602 break;
10603#endif
10604#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10605bool emitCtorCheck(SourceInfo);
10606#endif
10607#ifdef GET_LINK_IMPL
10608bool ByteCodeEmitter::emitCtorCheck(SourceInfo L) {
10609 return emitOp<>(OP_CtorCheck, L);
10610}
10611#endif
10612#ifdef GET_EVAL_IMPL
10613bool EvalEmitter::emitCtorCheck(SourceInfo L) {
10614 if (!isActive()) return true;
10615 CurrentSource = L;
10616 return CtorCheck(S, OpPC);
10617}
10618#endif
10619#ifdef GET_OPCODE_NAMES
10620OP_DecSint8,
10621OP_DecUint8,
10622OP_DecSint16,
10623OP_DecUint16,
10624OP_DecSint32,
10625OP_DecUint32,
10626OP_DecSint64,
10627OP_DecUint64,
10628OP_DecIntAP,
10629OP_DecIntAPS,
10630OP_DecBool,
10631OP_DecFixedPoint,
10632#endif
10633#ifdef GET_INTERP
10634case OP_DecSint8: {
10635 const auto V0 = ReadArg<bool>(S, PC);
10636 if (!Dec<PT_Sint8>(S, OpPC, V0))
10637 return false;
10638 continue;
10639}
10640case OP_DecUint8: {
10641 const auto V0 = ReadArg<bool>(S, PC);
10642 if (!Dec<PT_Uint8>(S, OpPC, V0))
10643 return false;
10644 continue;
10645}
10646case OP_DecSint16: {
10647 const auto V0 = ReadArg<bool>(S, PC);
10648 if (!Dec<PT_Sint16>(S, OpPC, V0))
10649 return false;
10650 continue;
10651}
10652case OP_DecUint16: {
10653 const auto V0 = ReadArg<bool>(S, PC);
10654 if (!Dec<PT_Uint16>(S, OpPC, V0))
10655 return false;
10656 continue;
10657}
10658case OP_DecSint32: {
10659 const auto V0 = ReadArg<bool>(S, PC);
10660 if (!Dec<PT_Sint32>(S, OpPC, V0))
10661 return false;
10662 continue;
10663}
10664case OP_DecUint32: {
10665 const auto V0 = ReadArg<bool>(S, PC);
10666 if (!Dec<PT_Uint32>(S, OpPC, V0))
10667 return false;
10668 continue;
10669}
10670case OP_DecSint64: {
10671 const auto V0 = ReadArg<bool>(S, PC);
10672 if (!Dec<PT_Sint64>(S, OpPC, V0))
10673 return false;
10674 continue;
10675}
10676case OP_DecUint64: {
10677 const auto V0 = ReadArg<bool>(S, PC);
10678 if (!Dec<PT_Uint64>(S, OpPC, V0))
10679 return false;
10680 continue;
10681}
10682case OP_DecIntAP: {
10683 const auto V0 = ReadArg<bool>(S, PC);
10684 if (!Dec<PT_IntAP>(S, OpPC, V0))
10685 return false;
10686 continue;
10687}
10688case OP_DecIntAPS: {
10689 const auto V0 = ReadArg<bool>(S, PC);
10690 if (!Dec<PT_IntAPS>(S, OpPC, V0))
10691 return false;
10692 continue;
10693}
10694case OP_DecBool: {
10695 const auto V0 = ReadArg<bool>(S, PC);
10696 if (!Dec<PT_Bool>(S, OpPC, V0))
10697 return false;
10698 continue;
10699}
10700case OP_DecFixedPoint: {
10701 const auto V0 = ReadArg<bool>(S, PC);
10702 if (!Dec<PT_FixedPoint>(S, OpPC, V0))
10703 return false;
10704 continue;
10705}
10706#endif
10707#ifdef GET_DISASM
10708case OP_DecSint8:
10709 Text.Op = PrintName("DecSint8");
10710 Text.Args.push_back(printArg<bool>(P, PC));
10711 break;
10712case OP_DecUint8:
10713 Text.Op = PrintName("DecUint8");
10714 Text.Args.push_back(printArg<bool>(P, PC));
10715 break;
10716case OP_DecSint16:
10717 Text.Op = PrintName("DecSint16");
10718 Text.Args.push_back(printArg<bool>(P, PC));
10719 break;
10720case OP_DecUint16:
10721 Text.Op = PrintName("DecUint16");
10722 Text.Args.push_back(printArg<bool>(P, PC));
10723 break;
10724case OP_DecSint32:
10725 Text.Op = PrintName("DecSint32");
10726 Text.Args.push_back(printArg<bool>(P, PC));
10727 break;
10728case OP_DecUint32:
10729 Text.Op = PrintName("DecUint32");
10730 Text.Args.push_back(printArg<bool>(P, PC));
10731 break;
10732case OP_DecSint64:
10733 Text.Op = PrintName("DecSint64");
10734 Text.Args.push_back(printArg<bool>(P, PC));
10735 break;
10736case OP_DecUint64:
10737 Text.Op = PrintName("DecUint64");
10738 Text.Args.push_back(printArg<bool>(P, PC));
10739 break;
10740case OP_DecIntAP:
10741 Text.Op = PrintName("DecIntAP");
10742 Text.Args.push_back(printArg<bool>(P, PC));
10743 break;
10744case OP_DecIntAPS:
10745 Text.Op = PrintName("DecIntAPS");
10746 Text.Args.push_back(printArg<bool>(P, PC));
10747 break;
10748case OP_DecBool:
10749 Text.Op = PrintName("DecBool");
10750 Text.Args.push_back(printArg<bool>(P, PC));
10751 break;
10752case OP_DecFixedPoint:
10753 Text.Op = PrintName("DecFixedPoint");
10754 Text.Args.push_back(printArg<bool>(P, PC));
10755 break;
10756#endif
10757#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10758bool emitDecSint8( bool , SourceInfo);
10759bool emitDecUint8( bool , SourceInfo);
10760bool emitDecSint16( bool , SourceInfo);
10761bool emitDecUint16( bool , SourceInfo);
10762bool emitDecSint32( bool , SourceInfo);
10763bool emitDecUint32( bool , SourceInfo);
10764bool emitDecSint64( bool , SourceInfo);
10765bool emitDecUint64( bool , SourceInfo);
10766bool emitDecIntAP( bool , SourceInfo);
10767bool emitDecIntAPS( bool , SourceInfo);
10768bool emitDecBool( bool , SourceInfo);
10769bool emitDecFixedPoint( bool , SourceInfo);
10770#endif
10771#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
10772[[nodiscard]] bool emitDec(PrimType, bool, SourceInfo I);
10773#endif
10774#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
10775bool
10776#if defined(GET_EVAL_IMPL)
10777EvalEmitter
10778#else
10779ByteCodeEmitter
10780#endif
10781::emitDec(PrimType T0, bool A0, SourceInfo I) {
10782 switch (T0) {
10783 case PT_Sint8:
10784 return emitDecSint8(A0, I);
10785 case PT_Uint8:
10786 return emitDecUint8(A0, I);
10787 case PT_Sint16:
10788 return emitDecSint16(A0, I);
10789 case PT_Uint16:
10790 return emitDecUint16(A0, I);
10791 case PT_Sint32:
10792 return emitDecSint32(A0, I);
10793 case PT_Uint32:
10794 return emitDecUint32(A0, I);
10795 case PT_Sint64:
10796 return emitDecSint64(A0, I);
10797 case PT_Uint64:
10798 return emitDecUint64(A0, I);
10799 case PT_IntAP:
10800 return emitDecIntAP(A0, I);
10801 case PT_IntAPS:
10802 return emitDecIntAPS(A0, I);
10803 case PT_Bool:
10804 return emitDecBool(A0, I);
10805 case PT_FixedPoint:
10806 return emitDecFixedPoint(A0, I);
10807 default: llvm_unreachable("invalid type: emitDec");
10808 }
10809 llvm_unreachable("invalid enum value");
10810}
10811#endif
10812#ifdef GET_LINK_IMPL
10813bool ByteCodeEmitter::emitDecSint8( bool A0, SourceInfo L) {
10814 return emitOp<bool>(OP_DecSint8, A0, L);
10815}
10816bool ByteCodeEmitter::emitDecUint8( bool A0, SourceInfo L) {
10817 return emitOp<bool>(OP_DecUint8, A0, L);
10818}
10819bool ByteCodeEmitter::emitDecSint16( bool A0, SourceInfo L) {
10820 return emitOp<bool>(OP_DecSint16, A0, L);
10821}
10822bool ByteCodeEmitter::emitDecUint16( bool A0, SourceInfo L) {
10823 return emitOp<bool>(OP_DecUint16, A0, L);
10824}
10825bool ByteCodeEmitter::emitDecSint32( bool A0, SourceInfo L) {
10826 return emitOp<bool>(OP_DecSint32, A0, L);
10827}
10828bool ByteCodeEmitter::emitDecUint32( bool A0, SourceInfo L) {
10829 return emitOp<bool>(OP_DecUint32, A0, L);
10830}
10831bool ByteCodeEmitter::emitDecSint64( bool A0, SourceInfo L) {
10832 return emitOp<bool>(OP_DecSint64, A0, L);
10833}
10834bool ByteCodeEmitter::emitDecUint64( bool A0, SourceInfo L) {
10835 return emitOp<bool>(OP_DecUint64, A0, L);
10836}
10837bool ByteCodeEmitter::emitDecIntAP( bool A0, SourceInfo L) {
10838 return emitOp<bool>(OP_DecIntAP, A0, L);
10839}
10840bool ByteCodeEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
10841 return emitOp<bool>(OP_DecIntAPS, A0, L);
10842}
10843bool ByteCodeEmitter::emitDecBool( bool A0, SourceInfo L) {
10844 return emitOp<bool>(OP_DecBool, A0, L);
10845}
10846bool ByteCodeEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
10847 return emitOp<bool>(OP_DecFixedPoint, A0, L);
10848}
10849#endif
10850#ifdef GET_EVAL_IMPL
10851bool EvalEmitter::emitDecSint8( bool A0, SourceInfo L) {
10852 if (!isActive()) return true;
10853 CurrentSource = L;
10854 return Dec<PT_Sint8>(S, OpPC, A0);
10855}
10856bool EvalEmitter::emitDecUint8( bool A0, SourceInfo L) {
10857 if (!isActive()) return true;
10858 CurrentSource = L;
10859 return Dec<PT_Uint8>(S, OpPC, A0);
10860}
10861bool EvalEmitter::emitDecSint16( bool A0, SourceInfo L) {
10862 if (!isActive()) return true;
10863 CurrentSource = L;
10864 return Dec<PT_Sint16>(S, OpPC, A0);
10865}
10866bool EvalEmitter::emitDecUint16( bool A0, SourceInfo L) {
10867 if (!isActive()) return true;
10868 CurrentSource = L;
10869 return Dec<PT_Uint16>(S, OpPC, A0);
10870}
10871bool EvalEmitter::emitDecSint32( bool A0, SourceInfo L) {
10872 if (!isActive()) return true;
10873 CurrentSource = L;
10874 return Dec<PT_Sint32>(S, OpPC, A0);
10875}
10876bool EvalEmitter::emitDecUint32( bool A0, SourceInfo L) {
10877 if (!isActive()) return true;
10878 CurrentSource = L;
10879 return Dec<PT_Uint32>(S, OpPC, A0);
10880}
10881bool EvalEmitter::emitDecSint64( bool A0, SourceInfo L) {
10882 if (!isActive()) return true;
10883 CurrentSource = L;
10884 return Dec<PT_Sint64>(S, OpPC, A0);
10885}
10886bool EvalEmitter::emitDecUint64( bool A0, SourceInfo L) {
10887 if (!isActive()) return true;
10888 CurrentSource = L;
10889 return Dec<PT_Uint64>(S, OpPC, A0);
10890}
10891bool EvalEmitter::emitDecIntAP( bool A0, SourceInfo L) {
10892 if (!isActive()) return true;
10893 CurrentSource = L;
10894 return Dec<PT_IntAP>(S, OpPC, A0);
10895}
10896bool EvalEmitter::emitDecIntAPS( bool A0, SourceInfo L) {
10897 if (!isActive()) return true;
10898 CurrentSource = L;
10899 return Dec<PT_IntAPS>(S, OpPC, A0);
10900}
10901bool EvalEmitter::emitDecBool( bool A0, SourceInfo L) {
10902 if (!isActive()) return true;
10903 CurrentSource = L;
10904 return Dec<PT_Bool>(S, OpPC, A0);
10905}
10906bool EvalEmitter::emitDecFixedPoint( bool A0, SourceInfo L) {
10907 if (!isActive()) return true;
10908 CurrentSource = L;
10909 return Dec<PT_FixedPoint>(S, OpPC, A0);
10910}
10911#endif
10912#ifdef GET_OPCODE_NAMES
10913OP_DecBitfieldSint8,
10914OP_DecBitfieldUint8,
10915OP_DecBitfieldSint16,
10916OP_DecBitfieldUint16,
10917OP_DecBitfieldSint32,
10918OP_DecBitfieldUint32,
10919OP_DecBitfieldSint64,
10920OP_DecBitfieldUint64,
10921OP_DecBitfieldIntAP,
10922OP_DecBitfieldIntAPS,
10923OP_DecBitfieldBool,
10924OP_DecBitfieldFixedPoint,
10925#endif
10926#ifdef GET_INTERP
10927case OP_DecBitfieldSint8: {
10928 const auto V0 = ReadArg<bool>(S, PC);
10929 const auto V1 = ReadArg<uint32_t>(S, PC);
10930 if (!DecBitfield<PT_Sint8>(S, OpPC, V0, V1))
10931 return false;
10932 continue;
10933}
10934case OP_DecBitfieldUint8: {
10935 const auto V0 = ReadArg<bool>(S, PC);
10936 const auto V1 = ReadArg<uint32_t>(S, PC);
10937 if (!DecBitfield<PT_Uint8>(S, OpPC, V0, V1))
10938 return false;
10939 continue;
10940}
10941case OP_DecBitfieldSint16: {
10942 const auto V0 = ReadArg<bool>(S, PC);
10943 const auto V1 = ReadArg<uint32_t>(S, PC);
10944 if (!DecBitfield<PT_Sint16>(S, OpPC, V0, V1))
10945 return false;
10946 continue;
10947}
10948case OP_DecBitfieldUint16: {
10949 const auto V0 = ReadArg<bool>(S, PC);
10950 const auto V1 = ReadArg<uint32_t>(S, PC);
10951 if (!DecBitfield<PT_Uint16>(S, OpPC, V0, V1))
10952 return false;
10953 continue;
10954}
10955case OP_DecBitfieldSint32: {
10956 const auto V0 = ReadArg<bool>(S, PC);
10957 const auto V1 = ReadArg<uint32_t>(S, PC);
10958 if (!DecBitfield<PT_Sint32>(S, OpPC, V0, V1))
10959 return false;
10960 continue;
10961}
10962case OP_DecBitfieldUint32: {
10963 const auto V0 = ReadArg<bool>(S, PC);
10964 const auto V1 = ReadArg<uint32_t>(S, PC);
10965 if (!DecBitfield<PT_Uint32>(S, OpPC, V0, V1))
10966 return false;
10967 continue;
10968}
10969case OP_DecBitfieldSint64: {
10970 const auto V0 = ReadArg<bool>(S, PC);
10971 const auto V1 = ReadArg<uint32_t>(S, PC);
10972 if (!DecBitfield<PT_Sint64>(S, OpPC, V0, V1))
10973 return false;
10974 continue;
10975}
10976case OP_DecBitfieldUint64: {
10977 const auto V0 = ReadArg<bool>(S, PC);
10978 const auto V1 = ReadArg<uint32_t>(S, PC);
10979 if (!DecBitfield<PT_Uint64>(S, OpPC, V0, V1))
10980 return false;
10981 continue;
10982}
10983case OP_DecBitfieldIntAP: {
10984 const auto V0 = ReadArg<bool>(S, PC);
10985 const auto V1 = ReadArg<uint32_t>(S, PC);
10986 if (!DecBitfield<PT_IntAP>(S, OpPC, V0, V1))
10987 return false;
10988 continue;
10989}
10990case OP_DecBitfieldIntAPS: {
10991 const auto V0 = ReadArg<bool>(S, PC);
10992 const auto V1 = ReadArg<uint32_t>(S, PC);
10993 if (!DecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
10994 return false;
10995 continue;
10996}
10997case OP_DecBitfieldBool: {
10998 const auto V0 = ReadArg<bool>(S, PC);
10999 const auto V1 = ReadArg<uint32_t>(S, PC);
11000 if (!DecBitfield<PT_Bool>(S, OpPC, V0, V1))
11001 return false;
11002 continue;
11003}
11004case OP_DecBitfieldFixedPoint: {
11005 const auto V0 = ReadArg<bool>(S, PC);
11006 const auto V1 = ReadArg<uint32_t>(S, PC);
11007 if (!DecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
11008 return false;
11009 continue;
11010}
11011#endif
11012#ifdef GET_DISASM
11013case OP_DecBitfieldSint8:
11014 Text.Op = PrintName("DecBitfieldSint8");
11015 Text.Args.push_back(printArg<bool>(P, PC));
11016 Text.Args.push_back(printArg<uint32_t>(P, PC));
11017 break;
11018case OP_DecBitfieldUint8:
11019 Text.Op = PrintName("DecBitfieldUint8");
11020 Text.Args.push_back(printArg<bool>(P, PC));
11021 Text.Args.push_back(printArg<uint32_t>(P, PC));
11022 break;
11023case OP_DecBitfieldSint16:
11024 Text.Op = PrintName("DecBitfieldSint16");
11025 Text.Args.push_back(printArg<bool>(P, PC));
11026 Text.Args.push_back(printArg<uint32_t>(P, PC));
11027 break;
11028case OP_DecBitfieldUint16:
11029 Text.Op = PrintName("DecBitfieldUint16");
11030 Text.Args.push_back(printArg<bool>(P, PC));
11031 Text.Args.push_back(printArg<uint32_t>(P, PC));
11032 break;
11033case OP_DecBitfieldSint32:
11034 Text.Op = PrintName("DecBitfieldSint32");
11035 Text.Args.push_back(printArg<bool>(P, PC));
11036 Text.Args.push_back(printArg<uint32_t>(P, PC));
11037 break;
11038case OP_DecBitfieldUint32:
11039 Text.Op = PrintName("DecBitfieldUint32");
11040 Text.Args.push_back(printArg<bool>(P, PC));
11041 Text.Args.push_back(printArg<uint32_t>(P, PC));
11042 break;
11043case OP_DecBitfieldSint64:
11044 Text.Op = PrintName("DecBitfieldSint64");
11045 Text.Args.push_back(printArg<bool>(P, PC));
11046 Text.Args.push_back(printArg<uint32_t>(P, PC));
11047 break;
11048case OP_DecBitfieldUint64:
11049 Text.Op = PrintName("DecBitfieldUint64");
11050 Text.Args.push_back(printArg<bool>(P, PC));
11051 Text.Args.push_back(printArg<uint32_t>(P, PC));
11052 break;
11053case OP_DecBitfieldIntAP:
11054 Text.Op = PrintName("DecBitfieldIntAP");
11055 Text.Args.push_back(printArg<bool>(P, PC));
11056 Text.Args.push_back(printArg<uint32_t>(P, PC));
11057 break;
11058case OP_DecBitfieldIntAPS:
11059 Text.Op = PrintName("DecBitfieldIntAPS");
11060 Text.Args.push_back(printArg<bool>(P, PC));
11061 Text.Args.push_back(printArg<uint32_t>(P, PC));
11062 break;
11063case OP_DecBitfieldBool:
11064 Text.Op = PrintName("DecBitfieldBool");
11065 Text.Args.push_back(printArg<bool>(P, PC));
11066 Text.Args.push_back(printArg<uint32_t>(P, PC));
11067 break;
11068case OP_DecBitfieldFixedPoint:
11069 Text.Op = PrintName("DecBitfieldFixedPoint");
11070 Text.Args.push_back(printArg<bool>(P, PC));
11071 Text.Args.push_back(printArg<uint32_t>(P, PC));
11072 break;
11073#endif
11074#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11075bool emitDecBitfieldSint8( bool , uint32_t , SourceInfo);
11076bool emitDecBitfieldUint8( bool , uint32_t , SourceInfo);
11077bool emitDecBitfieldSint16( bool , uint32_t , SourceInfo);
11078bool emitDecBitfieldUint16( bool , uint32_t , SourceInfo);
11079bool emitDecBitfieldSint32( bool , uint32_t , SourceInfo);
11080bool emitDecBitfieldUint32( bool , uint32_t , SourceInfo);
11081bool emitDecBitfieldSint64( bool , uint32_t , SourceInfo);
11082bool emitDecBitfieldUint64( bool , uint32_t , SourceInfo);
11083bool emitDecBitfieldIntAP( bool , uint32_t , SourceInfo);
11084bool emitDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
11085bool emitDecBitfieldBool( bool , uint32_t , SourceInfo);
11086bool emitDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
11087#endif
11088#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11089[[nodiscard]] bool emitDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
11090#endif
11091#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11092bool
11093#if defined(GET_EVAL_IMPL)
11094EvalEmitter
11095#else
11096ByteCodeEmitter
11097#endif
11098::emitDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
11099 switch (T0) {
11100 case PT_Sint8:
11101 return emitDecBitfieldSint8(A0, A1, I);
11102 case PT_Uint8:
11103 return emitDecBitfieldUint8(A0, A1, I);
11104 case PT_Sint16:
11105 return emitDecBitfieldSint16(A0, A1, I);
11106 case PT_Uint16:
11107 return emitDecBitfieldUint16(A0, A1, I);
11108 case PT_Sint32:
11109 return emitDecBitfieldSint32(A0, A1, I);
11110 case PT_Uint32:
11111 return emitDecBitfieldUint32(A0, A1, I);
11112 case PT_Sint64:
11113 return emitDecBitfieldSint64(A0, A1, I);
11114 case PT_Uint64:
11115 return emitDecBitfieldUint64(A0, A1, I);
11116 case PT_IntAP:
11117 return emitDecBitfieldIntAP(A0, A1, I);
11118 case PT_IntAPS:
11119 return emitDecBitfieldIntAPS(A0, A1, I);
11120 case PT_Bool:
11121 return emitDecBitfieldBool(A0, A1, I);
11122 case PT_FixedPoint:
11123 return emitDecBitfieldFixedPoint(A0, A1, I);
11124 default: llvm_unreachable("invalid type: emitDecBitfield");
11125 }
11126 llvm_unreachable("invalid enum value");
11127}
11128#endif
11129#ifdef GET_LINK_IMPL
11130bool ByteCodeEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11131 return emitOp<bool, uint32_t>(OP_DecBitfieldSint8, A0, A1, L);
11132}
11133bool ByteCodeEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11134 return emitOp<bool, uint32_t>(OP_DecBitfieldUint8, A0, A1, L);
11135}
11136bool ByteCodeEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11137 return emitOp<bool, uint32_t>(OP_DecBitfieldSint16, A0, A1, L);
11138}
11139bool ByteCodeEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11140 return emitOp<bool, uint32_t>(OP_DecBitfieldUint16, A0, A1, L);
11141}
11142bool ByteCodeEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11143 return emitOp<bool, uint32_t>(OP_DecBitfieldSint32, A0, A1, L);
11144}
11145bool ByteCodeEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11146 return emitOp<bool, uint32_t>(OP_DecBitfieldUint32, A0, A1, L);
11147}
11148bool ByteCodeEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11149 return emitOp<bool, uint32_t>(OP_DecBitfieldSint64, A0, A1, L);
11150}
11151bool ByteCodeEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11152 return emitOp<bool, uint32_t>(OP_DecBitfieldUint64, A0, A1, L);
11153}
11154bool ByteCodeEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11155 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAP, A0, A1, L);
11156}
11157bool ByteCodeEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11158 return emitOp<bool, uint32_t>(OP_DecBitfieldIntAPS, A0, A1, L);
11159}
11160bool ByteCodeEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11161 return emitOp<bool, uint32_t>(OP_DecBitfieldBool, A0, A1, L);
11162}
11163bool ByteCodeEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11164 return emitOp<bool, uint32_t>(OP_DecBitfieldFixedPoint, A0, A1, L);
11165}
11166#endif
11167#ifdef GET_EVAL_IMPL
11168bool EvalEmitter::emitDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11169 if (!isActive()) return true;
11170 CurrentSource = L;
11171 return DecBitfield<PT_Sint8>(S, OpPC, A0, A1);
11172}
11173bool EvalEmitter::emitDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11174 if (!isActive()) return true;
11175 CurrentSource = L;
11176 return DecBitfield<PT_Uint8>(S, OpPC, A0, A1);
11177}
11178bool EvalEmitter::emitDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11179 if (!isActive()) return true;
11180 CurrentSource = L;
11181 return DecBitfield<PT_Sint16>(S, OpPC, A0, A1);
11182}
11183bool EvalEmitter::emitDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11184 if (!isActive()) return true;
11185 CurrentSource = L;
11186 return DecBitfield<PT_Uint16>(S, OpPC, A0, A1);
11187}
11188bool EvalEmitter::emitDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11189 if (!isActive()) return true;
11190 CurrentSource = L;
11191 return DecBitfield<PT_Sint32>(S, OpPC, A0, A1);
11192}
11193bool EvalEmitter::emitDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11194 if (!isActive()) return true;
11195 CurrentSource = L;
11196 return DecBitfield<PT_Uint32>(S, OpPC, A0, A1);
11197}
11198bool EvalEmitter::emitDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11199 if (!isActive()) return true;
11200 CurrentSource = L;
11201 return DecBitfield<PT_Sint64>(S, OpPC, A0, A1);
11202}
11203bool EvalEmitter::emitDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11204 if (!isActive()) return true;
11205 CurrentSource = L;
11206 return DecBitfield<PT_Uint64>(S, OpPC, A0, A1);
11207}
11208bool EvalEmitter::emitDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11209 if (!isActive()) return true;
11210 CurrentSource = L;
11211 return DecBitfield<PT_IntAP>(S, OpPC, A0, A1);
11212}
11213bool EvalEmitter::emitDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11214 if (!isActive()) return true;
11215 CurrentSource = L;
11216 return DecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
11217}
11218bool EvalEmitter::emitDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11219 if (!isActive()) return true;
11220 CurrentSource = L;
11221 return DecBitfield<PT_Bool>(S, OpPC, A0, A1);
11222}
11223bool EvalEmitter::emitDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11224 if (!isActive()) return true;
11225 CurrentSource = L;
11226 return DecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
11227}
11228#endif
11229#ifdef GET_OPCODE_NAMES
11230OP_DecPopSint8,
11231OP_DecPopUint8,
11232OP_DecPopSint16,
11233OP_DecPopUint16,
11234OP_DecPopSint32,
11235OP_DecPopUint32,
11236OP_DecPopSint64,
11237OP_DecPopUint64,
11238OP_DecPopIntAP,
11239OP_DecPopIntAPS,
11240OP_DecPopBool,
11241OP_DecPopFixedPoint,
11242#endif
11243#ifdef GET_INTERP
11244case OP_DecPopSint8: {
11245 const auto V0 = ReadArg<bool>(S, PC);
11246 if (!DecPop<PT_Sint8>(S, OpPC, V0))
11247 return false;
11248 continue;
11249}
11250case OP_DecPopUint8: {
11251 const auto V0 = ReadArg<bool>(S, PC);
11252 if (!DecPop<PT_Uint8>(S, OpPC, V0))
11253 return false;
11254 continue;
11255}
11256case OP_DecPopSint16: {
11257 const auto V0 = ReadArg<bool>(S, PC);
11258 if (!DecPop<PT_Sint16>(S, OpPC, V0))
11259 return false;
11260 continue;
11261}
11262case OP_DecPopUint16: {
11263 const auto V0 = ReadArg<bool>(S, PC);
11264 if (!DecPop<PT_Uint16>(S, OpPC, V0))
11265 return false;
11266 continue;
11267}
11268case OP_DecPopSint32: {
11269 const auto V0 = ReadArg<bool>(S, PC);
11270 if (!DecPop<PT_Sint32>(S, OpPC, V0))
11271 return false;
11272 continue;
11273}
11274case OP_DecPopUint32: {
11275 const auto V0 = ReadArg<bool>(S, PC);
11276 if (!DecPop<PT_Uint32>(S, OpPC, V0))
11277 return false;
11278 continue;
11279}
11280case OP_DecPopSint64: {
11281 const auto V0 = ReadArg<bool>(S, PC);
11282 if (!DecPop<PT_Sint64>(S, OpPC, V0))
11283 return false;
11284 continue;
11285}
11286case OP_DecPopUint64: {
11287 const auto V0 = ReadArg<bool>(S, PC);
11288 if (!DecPop<PT_Uint64>(S, OpPC, V0))
11289 return false;
11290 continue;
11291}
11292case OP_DecPopIntAP: {
11293 const auto V0 = ReadArg<bool>(S, PC);
11294 if (!DecPop<PT_IntAP>(S, OpPC, V0))
11295 return false;
11296 continue;
11297}
11298case OP_DecPopIntAPS: {
11299 const auto V0 = ReadArg<bool>(S, PC);
11300 if (!DecPop<PT_IntAPS>(S, OpPC, V0))
11301 return false;
11302 continue;
11303}
11304case OP_DecPopBool: {
11305 const auto V0 = ReadArg<bool>(S, PC);
11306 if (!DecPop<PT_Bool>(S, OpPC, V0))
11307 return false;
11308 continue;
11309}
11310case OP_DecPopFixedPoint: {
11311 const auto V0 = ReadArg<bool>(S, PC);
11312 if (!DecPop<PT_FixedPoint>(S, OpPC, V0))
11313 return false;
11314 continue;
11315}
11316#endif
11317#ifdef GET_DISASM
11318case OP_DecPopSint8:
11319 Text.Op = PrintName("DecPopSint8");
11320 Text.Args.push_back(printArg<bool>(P, PC));
11321 break;
11322case OP_DecPopUint8:
11323 Text.Op = PrintName("DecPopUint8");
11324 Text.Args.push_back(printArg<bool>(P, PC));
11325 break;
11326case OP_DecPopSint16:
11327 Text.Op = PrintName("DecPopSint16");
11328 Text.Args.push_back(printArg<bool>(P, PC));
11329 break;
11330case OP_DecPopUint16:
11331 Text.Op = PrintName("DecPopUint16");
11332 Text.Args.push_back(printArg<bool>(P, PC));
11333 break;
11334case OP_DecPopSint32:
11335 Text.Op = PrintName("DecPopSint32");
11336 Text.Args.push_back(printArg<bool>(P, PC));
11337 break;
11338case OP_DecPopUint32:
11339 Text.Op = PrintName("DecPopUint32");
11340 Text.Args.push_back(printArg<bool>(P, PC));
11341 break;
11342case OP_DecPopSint64:
11343 Text.Op = PrintName("DecPopSint64");
11344 Text.Args.push_back(printArg<bool>(P, PC));
11345 break;
11346case OP_DecPopUint64:
11347 Text.Op = PrintName("DecPopUint64");
11348 Text.Args.push_back(printArg<bool>(P, PC));
11349 break;
11350case OP_DecPopIntAP:
11351 Text.Op = PrintName("DecPopIntAP");
11352 Text.Args.push_back(printArg<bool>(P, PC));
11353 break;
11354case OP_DecPopIntAPS:
11355 Text.Op = PrintName("DecPopIntAPS");
11356 Text.Args.push_back(printArg<bool>(P, PC));
11357 break;
11358case OP_DecPopBool:
11359 Text.Op = PrintName("DecPopBool");
11360 Text.Args.push_back(printArg<bool>(P, PC));
11361 break;
11362case OP_DecPopFixedPoint:
11363 Text.Op = PrintName("DecPopFixedPoint");
11364 Text.Args.push_back(printArg<bool>(P, PC));
11365 break;
11366#endif
11367#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11368bool emitDecPopSint8( bool , SourceInfo);
11369bool emitDecPopUint8( bool , SourceInfo);
11370bool emitDecPopSint16( bool , SourceInfo);
11371bool emitDecPopUint16( bool , SourceInfo);
11372bool emitDecPopSint32( bool , SourceInfo);
11373bool emitDecPopUint32( bool , SourceInfo);
11374bool emitDecPopSint64( bool , SourceInfo);
11375bool emitDecPopUint64( bool , SourceInfo);
11376bool emitDecPopIntAP( bool , SourceInfo);
11377bool emitDecPopIntAPS( bool , SourceInfo);
11378bool emitDecPopBool( bool , SourceInfo);
11379bool emitDecPopFixedPoint( bool , SourceInfo);
11380#endif
11381#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11382[[nodiscard]] bool emitDecPop(PrimType, bool, SourceInfo I);
11383#endif
11384#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11385bool
11386#if defined(GET_EVAL_IMPL)
11387EvalEmitter
11388#else
11389ByteCodeEmitter
11390#endif
11391::emitDecPop(PrimType T0, bool A0, SourceInfo I) {
11392 switch (T0) {
11393 case PT_Sint8:
11394 return emitDecPopSint8(A0, I);
11395 case PT_Uint8:
11396 return emitDecPopUint8(A0, I);
11397 case PT_Sint16:
11398 return emitDecPopSint16(A0, I);
11399 case PT_Uint16:
11400 return emitDecPopUint16(A0, I);
11401 case PT_Sint32:
11402 return emitDecPopSint32(A0, I);
11403 case PT_Uint32:
11404 return emitDecPopUint32(A0, I);
11405 case PT_Sint64:
11406 return emitDecPopSint64(A0, I);
11407 case PT_Uint64:
11408 return emitDecPopUint64(A0, I);
11409 case PT_IntAP:
11410 return emitDecPopIntAP(A0, I);
11411 case PT_IntAPS:
11412 return emitDecPopIntAPS(A0, I);
11413 case PT_Bool:
11414 return emitDecPopBool(A0, I);
11415 case PT_FixedPoint:
11416 return emitDecPopFixedPoint(A0, I);
11417 default: llvm_unreachable("invalid type: emitDecPop");
11418 }
11419 llvm_unreachable("invalid enum value");
11420}
11421#endif
11422#ifdef GET_LINK_IMPL
11423bool ByteCodeEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
11424 return emitOp<bool>(OP_DecPopSint8, A0, L);
11425}
11426bool ByteCodeEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
11427 return emitOp<bool>(OP_DecPopUint8, A0, L);
11428}
11429bool ByteCodeEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
11430 return emitOp<bool>(OP_DecPopSint16, A0, L);
11431}
11432bool ByteCodeEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
11433 return emitOp<bool>(OP_DecPopUint16, A0, L);
11434}
11435bool ByteCodeEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
11436 return emitOp<bool>(OP_DecPopSint32, A0, L);
11437}
11438bool ByteCodeEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
11439 return emitOp<bool>(OP_DecPopUint32, A0, L);
11440}
11441bool ByteCodeEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
11442 return emitOp<bool>(OP_DecPopSint64, A0, L);
11443}
11444bool ByteCodeEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
11445 return emitOp<bool>(OP_DecPopUint64, A0, L);
11446}
11447bool ByteCodeEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
11448 return emitOp<bool>(OP_DecPopIntAP, A0, L);
11449}
11450bool ByteCodeEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
11451 return emitOp<bool>(OP_DecPopIntAPS, A0, L);
11452}
11453bool ByteCodeEmitter::emitDecPopBool( bool A0, SourceInfo L) {
11454 return emitOp<bool>(OP_DecPopBool, A0, L);
11455}
11456bool ByteCodeEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
11457 return emitOp<bool>(OP_DecPopFixedPoint, A0, L);
11458}
11459#endif
11460#ifdef GET_EVAL_IMPL
11461bool EvalEmitter::emitDecPopSint8( bool A0, SourceInfo L) {
11462 if (!isActive()) return true;
11463 CurrentSource = L;
11464 return DecPop<PT_Sint8>(S, OpPC, A0);
11465}
11466bool EvalEmitter::emitDecPopUint8( bool A0, SourceInfo L) {
11467 if (!isActive()) return true;
11468 CurrentSource = L;
11469 return DecPop<PT_Uint8>(S, OpPC, A0);
11470}
11471bool EvalEmitter::emitDecPopSint16( bool A0, SourceInfo L) {
11472 if (!isActive()) return true;
11473 CurrentSource = L;
11474 return DecPop<PT_Sint16>(S, OpPC, A0);
11475}
11476bool EvalEmitter::emitDecPopUint16( bool A0, SourceInfo L) {
11477 if (!isActive()) return true;
11478 CurrentSource = L;
11479 return DecPop<PT_Uint16>(S, OpPC, A0);
11480}
11481bool EvalEmitter::emitDecPopSint32( bool A0, SourceInfo L) {
11482 if (!isActive()) return true;
11483 CurrentSource = L;
11484 return DecPop<PT_Sint32>(S, OpPC, A0);
11485}
11486bool EvalEmitter::emitDecPopUint32( bool A0, SourceInfo L) {
11487 if (!isActive()) return true;
11488 CurrentSource = L;
11489 return DecPop<PT_Uint32>(S, OpPC, A0);
11490}
11491bool EvalEmitter::emitDecPopSint64( bool A0, SourceInfo L) {
11492 if (!isActive()) return true;
11493 CurrentSource = L;
11494 return DecPop<PT_Sint64>(S, OpPC, A0);
11495}
11496bool EvalEmitter::emitDecPopUint64( bool A0, SourceInfo L) {
11497 if (!isActive()) return true;
11498 CurrentSource = L;
11499 return DecPop<PT_Uint64>(S, OpPC, A0);
11500}
11501bool EvalEmitter::emitDecPopIntAP( bool A0, SourceInfo L) {
11502 if (!isActive()) return true;
11503 CurrentSource = L;
11504 return DecPop<PT_IntAP>(S, OpPC, A0);
11505}
11506bool EvalEmitter::emitDecPopIntAPS( bool A0, SourceInfo L) {
11507 if (!isActive()) return true;
11508 CurrentSource = L;
11509 return DecPop<PT_IntAPS>(S, OpPC, A0);
11510}
11511bool EvalEmitter::emitDecPopBool( bool A0, SourceInfo L) {
11512 if (!isActive()) return true;
11513 CurrentSource = L;
11514 return DecPop<PT_Bool>(S, OpPC, A0);
11515}
11516bool EvalEmitter::emitDecPopFixedPoint( bool A0, SourceInfo L) {
11517 if (!isActive()) return true;
11518 CurrentSource = L;
11519 return DecPop<PT_FixedPoint>(S, OpPC, A0);
11520}
11521#endif
11522#ifdef GET_OPCODE_NAMES
11523OP_DecPopBitfieldSint8,
11524OP_DecPopBitfieldUint8,
11525OP_DecPopBitfieldSint16,
11526OP_DecPopBitfieldUint16,
11527OP_DecPopBitfieldSint32,
11528OP_DecPopBitfieldUint32,
11529OP_DecPopBitfieldSint64,
11530OP_DecPopBitfieldUint64,
11531OP_DecPopBitfieldIntAP,
11532OP_DecPopBitfieldIntAPS,
11533OP_DecPopBitfieldBool,
11534OP_DecPopBitfieldFixedPoint,
11535#endif
11536#ifdef GET_INTERP
11537case OP_DecPopBitfieldSint8: {
11538 const auto V0 = ReadArg<bool>(S, PC);
11539 const auto V1 = ReadArg<uint32_t>(S, PC);
11540 if (!DecPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
11541 return false;
11542 continue;
11543}
11544case OP_DecPopBitfieldUint8: {
11545 const auto V0 = ReadArg<bool>(S, PC);
11546 const auto V1 = ReadArg<uint32_t>(S, PC);
11547 if (!DecPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
11548 return false;
11549 continue;
11550}
11551case OP_DecPopBitfieldSint16: {
11552 const auto V0 = ReadArg<bool>(S, PC);
11553 const auto V1 = ReadArg<uint32_t>(S, PC);
11554 if (!DecPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
11555 return false;
11556 continue;
11557}
11558case OP_DecPopBitfieldUint16: {
11559 const auto V0 = ReadArg<bool>(S, PC);
11560 const auto V1 = ReadArg<uint32_t>(S, PC);
11561 if (!DecPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
11562 return false;
11563 continue;
11564}
11565case OP_DecPopBitfieldSint32: {
11566 const auto V0 = ReadArg<bool>(S, PC);
11567 const auto V1 = ReadArg<uint32_t>(S, PC);
11568 if (!DecPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
11569 return false;
11570 continue;
11571}
11572case OP_DecPopBitfieldUint32: {
11573 const auto V0 = ReadArg<bool>(S, PC);
11574 const auto V1 = ReadArg<uint32_t>(S, PC);
11575 if (!DecPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
11576 return false;
11577 continue;
11578}
11579case OP_DecPopBitfieldSint64: {
11580 const auto V0 = ReadArg<bool>(S, PC);
11581 const auto V1 = ReadArg<uint32_t>(S, PC);
11582 if (!DecPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
11583 return false;
11584 continue;
11585}
11586case OP_DecPopBitfieldUint64: {
11587 const auto V0 = ReadArg<bool>(S, PC);
11588 const auto V1 = ReadArg<uint32_t>(S, PC);
11589 if (!DecPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
11590 return false;
11591 continue;
11592}
11593case OP_DecPopBitfieldIntAP: {
11594 const auto V0 = ReadArg<bool>(S, PC);
11595 const auto V1 = ReadArg<uint32_t>(S, PC);
11596 if (!DecPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
11597 return false;
11598 continue;
11599}
11600case OP_DecPopBitfieldIntAPS: {
11601 const auto V0 = ReadArg<bool>(S, PC);
11602 const auto V1 = ReadArg<uint32_t>(S, PC);
11603 if (!DecPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
11604 return false;
11605 continue;
11606}
11607case OP_DecPopBitfieldBool: {
11608 const auto V0 = ReadArg<bool>(S, PC);
11609 const auto V1 = ReadArg<uint32_t>(S, PC);
11610 if (!DecPopBitfield<PT_Bool>(S, OpPC, V0, V1))
11611 return false;
11612 continue;
11613}
11614case OP_DecPopBitfieldFixedPoint: {
11615 const auto V0 = ReadArg<bool>(S, PC);
11616 const auto V1 = ReadArg<uint32_t>(S, PC);
11617 if (!DecPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
11618 return false;
11619 continue;
11620}
11621#endif
11622#ifdef GET_DISASM
11623case OP_DecPopBitfieldSint8:
11624 Text.Op = PrintName("DecPopBitfieldSint8");
11625 Text.Args.push_back(printArg<bool>(P, PC));
11626 Text.Args.push_back(printArg<uint32_t>(P, PC));
11627 break;
11628case OP_DecPopBitfieldUint8:
11629 Text.Op = PrintName("DecPopBitfieldUint8");
11630 Text.Args.push_back(printArg<bool>(P, PC));
11631 Text.Args.push_back(printArg<uint32_t>(P, PC));
11632 break;
11633case OP_DecPopBitfieldSint16:
11634 Text.Op = PrintName("DecPopBitfieldSint16");
11635 Text.Args.push_back(printArg<bool>(P, PC));
11636 Text.Args.push_back(printArg<uint32_t>(P, PC));
11637 break;
11638case OP_DecPopBitfieldUint16:
11639 Text.Op = PrintName("DecPopBitfieldUint16");
11640 Text.Args.push_back(printArg<bool>(P, PC));
11641 Text.Args.push_back(printArg<uint32_t>(P, PC));
11642 break;
11643case OP_DecPopBitfieldSint32:
11644 Text.Op = PrintName("DecPopBitfieldSint32");
11645 Text.Args.push_back(printArg<bool>(P, PC));
11646 Text.Args.push_back(printArg<uint32_t>(P, PC));
11647 break;
11648case OP_DecPopBitfieldUint32:
11649 Text.Op = PrintName("DecPopBitfieldUint32");
11650 Text.Args.push_back(printArg<bool>(P, PC));
11651 Text.Args.push_back(printArg<uint32_t>(P, PC));
11652 break;
11653case OP_DecPopBitfieldSint64:
11654 Text.Op = PrintName("DecPopBitfieldSint64");
11655 Text.Args.push_back(printArg<bool>(P, PC));
11656 Text.Args.push_back(printArg<uint32_t>(P, PC));
11657 break;
11658case OP_DecPopBitfieldUint64:
11659 Text.Op = PrintName("DecPopBitfieldUint64");
11660 Text.Args.push_back(printArg<bool>(P, PC));
11661 Text.Args.push_back(printArg<uint32_t>(P, PC));
11662 break;
11663case OP_DecPopBitfieldIntAP:
11664 Text.Op = PrintName("DecPopBitfieldIntAP");
11665 Text.Args.push_back(printArg<bool>(P, PC));
11666 Text.Args.push_back(printArg<uint32_t>(P, PC));
11667 break;
11668case OP_DecPopBitfieldIntAPS:
11669 Text.Op = PrintName("DecPopBitfieldIntAPS");
11670 Text.Args.push_back(printArg<bool>(P, PC));
11671 Text.Args.push_back(printArg<uint32_t>(P, PC));
11672 break;
11673case OP_DecPopBitfieldBool:
11674 Text.Op = PrintName("DecPopBitfieldBool");
11675 Text.Args.push_back(printArg<bool>(P, PC));
11676 Text.Args.push_back(printArg<uint32_t>(P, PC));
11677 break;
11678case OP_DecPopBitfieldFixedPoint:
11679 Text.Op = PrintName("DecPopBitfieldFixedPoint");
11680 Text.Args.push_back(printArg<bool>(P, PC));
11681 Text.Args.push_back(printArg<uint32_t>(P, PC));
11682 break;
11683#endif
11684#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11685bool emitDecPopBitfieldSint8( bool , uint32_t , SourceInfo);
11686bool emitDecPopBitfieldUint8( bool , uint32_t , SourceInfo);
11687bool emitDecPopBitfieldSint16( bool , uint32_t , SourceInfo);
11688bool emitDecPopBitfieldUint16( bool , uint32_t , SourceInfo);
11689bool emitDecPopBitfieldSint32( bool , uint32_t , SourceInfo);
11690bool emitDecPopBitfieldUint32( bool , uint32_t , SourceInfo);
11691bool emitDecPopBitfieldSint64( bool , uint32_t , SourceInfo);
11692bool emitDecPopBitfieldUint64( bool , uint32_t , SourceInfo);
11693bool emitDecPopBitfieldIntAP( bool , uint32_t , SourceInfo);
11694bool emitDecPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
11695bool emitDecPopBitfieldBool( bool , uint32_t , SourceInfo);
11696bool emitDecPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
11697#endif
11698#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11699[[nodiscard]] bool emitDecPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
11700#endif
11701#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11702bool
11703#if defined(GET_EVAL_IMPL)
11704EvalEmitter
11705#else
11706ByteCodeEmitter
11707#endif
11708::emitDecPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
11709 switch (T0) {
11710 case PT_Sint8:
11711 return emitDecPopBitfieldSint8(A0, A1, I);
11712 case PT_Uint8:
11713 return emitDecPopBitfieldUint8(A0, A1, I);
11714 case PT_Sint16:
11715 return emitDecPopBitfieldSint16(A0, A1, I);
11716 case PT_Uint16:
11717 return emitDecPopBitfieldUint16(A0, A1, I);
11718 case PT_Sint32:
11719 return emitDecPopBitfieldSint32(A0, A1, I);
11720 case PT_Uint32:
11721 return emitDecPopBitfieldUint32(A0, A1, I);
11722 case PT_Sint64:
11723 return emitDecPopBitfieldSint64(A0, A1, I);
11724 case PT_Uint64:
11725 return emitDecPopBitfieldUint64(A0, A1, I);
11726 case PT_IntAP:
11727 return emitDecPopBitfieldIntAP(A0, A1, I);
11728 case PT_IntAPS:
11729 return emitDecPopBitfieldIntAPS(A0, A1, I);
11730 case PT_Bool:
11731 return emitDecPopBitfieldBool(A0, A1, I);
11732 case PT_FixedPoint:
11733 return emitDecPopBitfieldFixedPoint(A0, A1, I);
11734 default: llvm_unreachable("invalid type: emitDecPopBitfield");
11735 }
11736 llvm_unreachable("invalid enum value");
11737}
11738#endif
11739#ifdef GET_LINK_IMPL
11740bool ByteCodeEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11741 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint8, A0, A1, L);
11742}
11743bool ByteCodeEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11744 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint8, A0, A1, L);
11745}
11746bool ByteCodeEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11747 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint16, A0, A1, L);
11748}
11749bool ByteCodeEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11750 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint16, A0, A1, L);
11751}
11752bool ByteCodeEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11753 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint32, A0, A1, L);
11754}
11755bool ByteCodeEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11756 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint32, A0, A1, L);
11757}
11758bool ByteCodeEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11759 return emitOp<bool, uint32_t>(OP_DecPopBitfieldSint64, A0, A1, L);
11760}
11761bool ByteCodeEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11762 return emitOp<bool, uint32_t>(OP_DecPopBitfieldUint64, A0, A1, L);
11763}
11764bool ByteCodeEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11765 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAP, A0, A1, L);
11766}
11767bool ByteCodeEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11768 return emitOp<bool, uint32_t>(OP_DecPopBitfieldIntAPS, A0, A1, L);
11769}
11770bool ByteCodeEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11771 return emitOp<bool, uint32_t>(OP_DecPopBitfieldBool, A0, A1, L);
11772}
11773bool ByteCodeEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11774 return emitOp<bool, uint32_t>(OP_DecPopBitfieldFixedPoint, A0, A1, L);
11775}
11776#endif
11777#ifdef GET_EVAL_IMPL
11778bool EvalEmitter::emitDecPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
11779 if (!isActive()) return true;
11780 CurrentSource = L;
11781 return DecPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
11782}
11783bool EvalEmitter::emitDecPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
11784 if (!isActive()) return true;
11785 CurrentSource = L;
11786 return DecPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
11787}
11788bool EvalEmitter::emitDecPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
11789 if (!isActive()) return true;
11790 CurrentSource = L;
11791 return DecPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
11792}
11793bool EvalEmitter::emitDecPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
11794 if (!isActive()) return true;
11795 CurrentSource = L;
11796 return DecPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
11797}
11798bool EvalEmitter::emitDecPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
11799 if (!isActive()) return true;
11800 CurrentSource = L;
11801 return DecPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
11802}
11803bool EvalEmitter::emitDecPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
11804 if (!isActive()) return true;
11805 CurrentSource = L;
11806 return DecPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
11807}
11808bool EvalEmitter::emitDecPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
11809 if (!isActive()) return true;
11810 CurrentSource = L;
11811 return DecPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
11812}
11813bool EvalEmitter::emitDecPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
11814 if (!isActive()) return true;
11815 CurrentSource = L;
11816 return DecPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
11817}
11818bool EvalEmitter::emitDecPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
11819 if (!isActive()) return true;
11820 CurrentSource = L;
11821 return DecPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
11822}
11823bool EvalEmitter::emitDecPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
11824 if (!isActive()) return true;
11825 CurrentSource = L;
11826 return DecPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
11827}
11828bool EvalEmitter::emitDecPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
11829 if (!isActive()) return true;
11830 CurrentSource = L;
11831 return DecPopBitfield<PT_Bool>(S, OpPC, A0, A1);
11832}
11833bool EvalEmitter::emitDecPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
11834 if (!isActive()) return true;
11835 CurrentSource = L;
11836 return DecPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
11837}
11838#endif
11839#ifdef GET_OPCODE_NAMES
11840OP_DecPtr,
11841#endif
11842#ifdef GET_INTERP
11843case OP_DecPtr: {
11844 if (!DecPtr(S, OpPC))
11845 return false;
11846 continue;
11847}
11848#endif
11849#ifdef GET_DISASM
11850case OP_DecPtr:
11851 Text.Op = PrintName("DecPtr");
11852 break;
11853#endif
11854#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11855bool emitDecPtr(SourceInfo);
11856#endif
11857#ifdef GET_LINK_IMPL
11858bool ByteCodeEmitter::emitDecPtr(SourceInfo L) {
11859 return emitOp<>(OP_DecPtr, L);
11860}
11861#endif
11862#ifdef GET_EVAL_IMPL
11863bool EvalEmitter::emitDecPtr(SourceInfo L) {
11864 if (!isActive()) return true;
11865 CurrentSource = L;
11866 return DecPtr(S, OpPC);
11867}
11868#endif
11869#ifdef GET_OPCODE_NAMES
11870OP_DecayPtrPtrPtr,
11871OP_DecayPtrPtrMemberPtr,
11872OP_DecayPtrMemberPtrPtr,
11873OP_DecayPtrMemberPtrMemberPtr,
11874#endif
11875#ifdef GET_INTERP
11876case OP_DecayPtrPtrPtr: {
11877 if (!DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC))
11878 return false;
11879 continue;
11880}
11881case OP_DecayPtrPtrMemberPtr: {
11882 if (!DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC))
11883 return false;
11884 continue;
11885}
11886case OP_DecayPtrMemberPtrPtr: {
11887 if (!DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC))
11888 return false;
11889 continue;
11890}
11891case OP_DecayPtrMemberPtrMemberPtr: {
11892 if (!DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC))
11893 return false;
11894 continue;
11895}
11896#endif
11897#ifdef GET_DISASM
11898case OP_DecayPtrPtrPtr:
11899 Text.Op = PrintName("DecayPtrPtrPtr");
11900 break;
11901case OP_DecayPtrPtrMemberPtr:
11902 Text.Op = PrintName("DecayPtrPtrMemberPtr");
11903 break;
11904case OP_DecayPtrMemberPtrPtr:
11905 Text.Op = PrintName("DecayPtrMemberPtrPtr");
11906 break;
11907case OP_DecayPtrMemberPtrMemberPtr:
11908 Text.Op = PrintName("DecayPtrMemberPtrMemberPtr");
11909 break;
11910#endif
11911#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11912bool emitDecayPtrPtrPtr(SourceInfo);
11913bool emitDecayPtrPtrMemberPtr(SourceInfo);
11914bool emitDecayPtrMemberPtrPtr(SourceInfo);
11915bool emitDecayPtrMemberPtrMemberPtr(SourceInfo);
11916#endif
11917#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
11918[[nodiscard]] bool emitDecayPtr(PrimType, PrimType, SourceInfo I);
11919#endif
11920#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
11921bool
11922#if defined(GET_EVAL_IMPL)
11923EvalEmitter
11924#else
11925ByteCodeEmitter
11926#endif
11927::emitDecayPtr(PrimType T0, PrimType T1, SourceInfo I) {
11928 switch (T0) {
11929 case PT_Ptr:
11930 switch (T1) {
11931 case PT_Ptr:
11932 return emitDecayPtrPtrPtr(I);
11933 case PT_MemberPtr:
11934 return emitDecayPtrPtrMemberPtr(I);
11935 default: llvm_unreachable("invalid type: emitDecayPtr");
11936 }
11937 llvm_unreachable("invalid enum value");
11938 case PT_MemberPtr:
11939 switch (T1) {
11940 case PT_Ptr:
11941 return emitDecayPtrMemberPtrPtr(I);
11942 case PT_MemberPtr:
11943 return emitDecayPtrMemberPtrMemberPtr(I);
11944 default: llvm_unreachable("invalid type: emitDecayPtr");
11945 }
11946 llvm_unreachable("invalid enum value");
11947 default: llvm_unreachable("invalid type: emitDecayPtr");
11948 }
11949 llvm_unreachable("invalid enum value");
11950}
11951#endif
11952#ifdef GET_LINK_IMPL
11953bool ByteCodeEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
11954 return emitOp<>(OP_DecayPtrPtrPtr, L);
11955}
11956bool ByteCodeEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
11957 return emitOp<>(OP_DecayPtrPtrMemberPtr, L);
11958}
11959bool ByteCodeEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
11960 return emitOp<>(OP_DecayPtrMemberPtrPtr, L);
11961}
11962bool ByteCodeEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
11963 return emitOp<>(OP_DecayPtrMemberPtrMemberPtr, L);
11964}
11965#endif
11966#ifdef GET_EVAL_IMPL
11967bool EvalEmitter::emitDecayPtrPtrPtr(SourceInfo L) {
11968 if (!isActive()) return true;
11969 CurrentSource = L;
11970 return DecayPtr<PT_Ptr, PT_Ptr>(S, OpPC);
11971}
11972bool EvalEmitter::emitDecayPtrPtrMemberPtr(SourceInfo L) {
11973 if (!isActive()) return true;
11974 CurrentSource = L;
11975 return DecayPtr<PT_Ptr, PT_MemberPtr>(S, OpPC);
11976}
11977bool EvalEmitter::emitDecayPtrMemberPtrPtr(SourceInfo L) {
11978 if (!isActive()) return true;
11979 CurrentSource = L;
11980 return DecayPtr<PT_MemberPtr, PT_Ptr>(S, OpPC);
11981}
11982bool EvalEmitter::emitDecayPtrMemberPtrMemberPtr(SourceInfo L) {
11983 if (!isActive()) return true;
11984 CurrentSource = L;
11985 return DecayPtr<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
11986}
11987#endif
11988#ifdef GET_OPCODE_NAMES
11989OP_Decf,
11990#endif
11991#ifdef GET_INTERP
11992case OP_Decf: {
11993 const auto V0 = ReadArg<uint32_t>(S, PC);
11994 if (!Decf(S, OpPC, V0))
11995 return false;
11996 continue;
11997}
11998#endif
11999#ifdef GET_DISASM
12000case OP_Decf:
12001 Text.Op = PrintName("Decf");
12002 Text.Args.push_back(printArg<uint32_t>(P, PC));
12003 break;
12004#endif
12005#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12006bool emitDecf( uint32_t , SourceInfo);
12007#endif
12008#ifdef GET_LINK_IMPL
12009bool ByteCodeEmitter::emitDecf( uint32_t A0, SourceInfo L) {
12010 return emitOp<uint32_t>(OP_Decf, A0, L);
12011}
12012#endif
12013#ifdef GET_EVAL_IMPL
12014bool EvalEmitter::emitDecf( uint32_t A0, SourceInfo L) {
12015 if (!isActive()) return true;
12016 CurrentSource = L;
12017 return Decf(S, OpPC, A0);
12018}
12019#endif
12020#ifdef GET_OPCODE_NAMES
12021OP_DecfPop,
12022#endif
12023#ifdef GET_INTERP
12024case OP_DecfPop: {
12025 const auto V0 = ReadArg<uint32_t>(S, PC);
12026 if (!DecfPop(S, OpPC, V0))
12027 return false;
12028 continue;
12029}
12030#endif
12031#ifdef GET_DISASM
12032case OP_DecfPop:
12033 Text.Op = PrintName("DecfPop");
12034 Text.Args.push_back(printArg<uint32_t>(P, PC));
12035 break;
12036#endif
12037#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12038bool emitDecfPop( uint32_t , SourceInfo);
12039#endif
12040#ifdef GET_LINK_IMPL
12041bool ByteCodeEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
12042 return emitOp<uint32_t>(OP_DecfPop, A0, L);
12043}
12044#endif
12045#ifdef GET_EVAL_IMPL
12046bool EvalEmitter::emitDecfPop( uint32_t A0, SourceInfo L) {
12047 if (!isActive()) return true;
12048 CurrentSource = L;
12049 return DecfPop(S, OpPC, A0);
12050}
12051#endif
12052#ifdef GET_OPCODE_NAMES
12053OP_Destroy,
12054#endif
12055#ifdef GET_INTERP
12056case OP_Destroy: {
12057 const auto V0 = ReadArg<uint32_t>(S, PC);
12058 if (!Destroy(S, OpPC, V0))
12059 return false;
12060 continue;
12061}
12062#endif
12063#ifdef GET_DISASM
12064case OP_Destroy:
12065 Text.Op = PrintName("Destroy");
12066 Text.Args.push_back(printArg<uint32_t>(P, PC));
12067 break;
12068#endif
12069#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12070bool emitDestroy( uint32_t , SourceInfo);
12071#endif
12072#ifdef GET_LINK_IMPL
12073bool ByteCodeEmitter::emitDestroy( uint32_t A0, SourceInfo L) {
12074 return emitOp<uint32_t>(OP_Destroy, A0, L);
12075}
12076#endif
12077#ifdef GET_OPCODE_NAMES
12078OP_DiagTypeid,
12079#endif
12080#ifdef GET_INTERP
12081case OP_DiagTypeid: {
12082 if (!DiagTypeid(S, OpPC))
12083 return false;
12084 continue;
12085}
12086#endif
12087#ifdef GET_DISASM
12088case OP_DiagTypeid:
12089 Text.Op = PrintName("DiagTypeid");
12090 break;
12091#endif
12092#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12093bool emitDiagTypeid(SourceInfo);
12094#endif
12095#ifdef GET_LINK_IMPL
12096bool ByteCodeEmitter::emitDiagTypeid(SourceInfo L) {
12097 return emitOp<>(OP_DiagTypeid, L);
12098}
12099#endif
12100#ifdef GET_EVAL_IMPL
12101bool EvalEmitter::emitDiagTypeid(SourceInfo L) {
12102 if (!isActive()) return true;
12103 CurrentSource = L;
12104 return DiagTypeid(S, OpPC);
12105}
12106#endif
12107#ifdef GET_OPCODE_NAMES
12108OP_DivSint8,
12109OP_DivUint8,
12110OP_DivSint16,
12111OP_DivUint16,
12112OP_DivSint32,
12113OP_DivUint32,
12114OP_DivSint64,
12115OP_DivUint64,
12116OP_DivIntAP,
12117OP_DivIntAPS,
12118OP_DivFixedPoint,
12119#endif
12120#ifdef GET_INTERP
12121case OP_DivSint8: {
12122 if (!Div<PT_Sint8>(S, OpPC))
12123 return false;
12124 continue;
12125}
12126case OP_DivUint8: {
12127 if (!Div<PT_Uint8>(S, OpPC))
12128 return false;
12129 continue;
12130}
12131case OP_DivSint16: {
12132 if (!Div<PT_Sint16>(S, OpPC))
12133 return false;
12134 continue;
12135}
12136case OP_DivUint16: {
12137 if (!Div<PT_Uint16>(S, OpPC))
12138 return false;
12139 continue;
12140}
12141case OP_DivSint32: {
12142 if (!Div<PT_Sint32>(S, OpPC))
12143 return false;
12144 continue;
12145}
12146case OP_DivUint32: {
12147 if (!Div<PT_Uint32>(S, OpPC))
12148 return false;
12149 continue;
12150}
12151case OP_DivSint64: {
12152 if (!Div<PT_Sint64>(S, OpPC))
12153 return false;
12154 continue;
12155}
12156case OP_DivUint64: {
12157 if (!Div<PT_Uint64>(S, OpPC))
12158 return false;
12159 continue;
12160}
12161case OP_DivIntAP: {
12162 if (!Div<PT_IntAP>(S, OpPC))
12163 return false;
12164 continue;
12165}
12166case OP_DivIntAPS: {
12167 if (!Div<PT_IntAPS>(S, OpPC))
12168 return false;
12169 continue;
12170}
12171case OP_DivFixedPoint: {
12172 if (!Div<PT_FixedPoint>(S, OpPC))
12173 return false;
12174 continue;
12175}
12176#endif
12177#ifdef GET_DISASM
12178case OP_DivSint8:
12179 Text.Op = PrintName("DivSint8");
12180 break;
12181case OP_DivUint8:
12182 Text.Op = PrintName("DivUint8");
12183 break;
12184case OP_DivSint16:
12185 Text.Op = PrintName("DivSint16");
12186 break;
12187case OP_DivUint16:
12188 Text.Op = PrintName("DivUint16");
12189 break;
12190case OP_DivSint32:
12191 Text.Op = PrintName("DivSint32");
12192 break;
12193case OP_DivUint32:
12194 Text.Op = PrintName("DivUint32");
12195 break;
12196case OP_DivSint64:
12197 Text.Op = PrintName("DivSint64");
12198 break;
12199case OP_DivUint64:
12200 Text.Op = PrintName("DivUint64");
12201 break;
12202case OP_DivIntAP:
12203 Text.Op = PrintName("DivIntAP");
12204 break;
12205case OP_DivIntAPS:
12206 Text.Op = PrintName("DivIntAPS");
12207 break;
12208case OP_DivFixedPoint:
12209 Text.Op = PrintName("DivFixedPoint");
12210 break;
12211#endif
12212#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12213bool emitDivSint8(SourceInfo);
12214bool emitDivUint8(SourceInfo);
12215bool emitDivSint16(SourceInfo);
12216bool emitDivUint16(SourceInfo);
12217bool emitDivSint32(SourceInfo);
12218bool emitDivUint32(SourceInfo);
12219bool emitDivSint64(SourceInfo);
12220bool emitDivUint64(SourceInfo);
12221bool emitDivIntAP(SourceInfo);
12222bool emitDivIntAPS(SourceInfo);
12223bool emitDivFixedPoint(SourceInfo);
12224#endif
12225#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12226[[nodiscard]] bool emitDiv(PrimType, SourceInfo I);
12227#endif
12228#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12229bool
12230#if defined(GET_EVAL_IMPL)
12231EvalEmitter
12232#else
12233ByteCodeEmitter
12234#endif
12235::emitDiv(PrimType T0, SourceInfo I) {
12236 switch (T0) {
12237 case PT_Sint8:
12238 return emitDivSint8(I);
12239 case PT_Uint8:
12240 return emitDivUint8(I);
12241 case PT_Sint16:
12242 return emitDivSint16(I);
12243 case PT_Uint16:
12244 return emitDivUint16(I);
12245 case PT_Sint32:
12246 return emitDivSint32(I);
12247 case PT_Uint32:
12248 return emitDivUint32(I);
12249 case PT_Sint64:
12250 return emitDivSint64(I);
12251 case PT_Uint64:
12252 return emitDivUint64(I);
12253 case PT_IntAP:
12254 return emitDivIntAP(I);
12255 case PT_IntAPS:
12256 return emitDivIntAPS(I);
12257 case PT_FixedPoint:
12258 return emitDivFixedPoint(I);
12259 default: llvm_unreachable("invalid type: emitDiv");
12260 }
12261 llvm_unreachable("invalid enum value");
12262}
12263#endif
12264#ifdef GET_LINK_IMPL
12265bool ByteCodeEmitter::emitDivSint8(SourceInfo L) {
12266 return emitOp<>(OP_DivSint8, L);
12267}
12268bool ByteCodeEmitter::emitDivUint8(SourceInfo L) {
12269 return emitOp<>(OP_DivUint8, L);
12270}
12271bool ByteCodeEmitter::emitDivSint16(SourceInfo L) {
12272 return emitOp<>(OP_DivSint16, L);
12273}
12274bool ByteCodeEmitter::emitDivUint16(SourceInfo L) {
12275 return emitOp<>(OP_DivUint16, L);
12276}
12277bool ByteCodeEmitter::emitDivSint32(SourceInfo L) {
12278 return emitOp<>(OP_DivSint32, L);
12279}
12280bool ByteCodeEmitter::emitDivUint32(SourceInfo L) {
12281 return emitOp<>(OP_DivUint32, L);
12282}
12283bool ByteCodeEmitter::emitDivSint64(SourceInfo L) {
12284 return emitOp<>(OP_DivSint64, L);
12285}
12286bool ByteCodeEmitter::emitDivUint64(SourceInfo L) {
12287 return emitOp<>(OP_DivUint64, L);
12288}
12289bool ByteCodeEmitter::emitDivIntAP(SourceInfo L) {
12290 return emitOp<>(OP_DivIntAP, L);
12291}
12292bool ByteCodeEmitter::emitDivIntAPS(SourceInfo L) {
12293 return emitOp<>(OP_DivIntAPS, L);
12294}
12295bool ByteCodeEmitter::emitDivFixedPoint(SourceInfo L) {
12296 return emitOp<>(OP_DivFixedPoint, L);
12297}
12298#endif
12299#ifdef GET_EVAL_IMPL
12300bool EvalEmitter::emitDivSint8(SourceInfo L) {
12301 if (!isActive()) return true;
12302 CurrentSource = L;
12303 return Div<PT_Sint8>(S, OpPC);
12304}
12305bool EvalEmitter::emitDivUint8(SourceInfo L) {
12306 if (!isActive()) return true;
12307 CurrentSource = L;
12308 return Div<PT_Uint8>(S, OpPC);
12309}
12310bool EvalEmitter::emitDivSint16(SourceInfo L) {
12311 if (!isActive()) return true;
12312 CurrentSource = L;
12313 return Div<PT_Sint16>(S, OpPC);
12314}
12315bool EvalEmitter::emitDivUint16(SourceInfo L) {
12316 if (!isActive()) return true;
12317 CurrentSource = L;
12318 return Div<PT_Uint16>(S, OpPC);
12319}
12320bool EvalEmitter::emitDivSint32(SourceInfo L) {
12321 if (!isActive()) return true;
12322 CurrentSource = L;
12323 return Div<PT_Sint32>(S, OpPC);
12324}
12325bool EvalEmitter::emitDivUint32(SourceInfo L) {
12326 if (!isActive()) return true;
12327 CurrentSource = L;
12328 return Div<PT_Uint32>(S, OpPC);
12329}
12330bool EvalEmitter::emitDivSint64(SourceInfo L) {
12331 if (!isActive()) return true;
12332 CurrentSource = L;
12333 return Div<PT_Sint64>(S, OpPC);
12334}
12335bool EvalEmitter::emitDivUint64(SourceInfo L) {
12336 if (!isActive()) return true;
12337 CurrentSource = L;
12338 return Div<PT_Uint64>(S, OpPC);
12339}
12340bool EvalEmitter::emitDivIntAP(SourceInfo L) {
12341 if (!isActive()) return true;
12342 CurrentSource = L;
12343 return Div<PT_IntAP>(S, OpPC);
12344}
12345bool EvalEmitter::emitDivIntAPS(SourceInfo L) {
12346 if (!isActive()) return true;
12347 CurrentSource = L;
12348 return Div<PT_IntAPS>(S, OpPC);
12349}
12350bool EvalEmitter::emitDivFixedPoint(SourceInfo L) {
12351 if (!isActive()) return true;
12352 CurrentSource = L;
12353 return Div<PT_FixedPoint>(S, OpPC);
12354}
12355#endif
12356#ifdef GET_OPCODE_NAMES
12357OP_DivcSint8,
12358OP_DivcUint8,
12359OP_DivcSint16,
12360OP_DivcUint16,
12361OP_DivcSint32,
12362OP_DivcUint32,
12363OP_DivcSint64,
12364OP_DivcUint64,
12365OP_DivcIntAP,
12366OP_DivcIntAPS,
12367OP_DivcFloat,
12368#endif
12369#ifdef GET_INTERP
12370case OP_DivcSint8: {
12371 if (!Divc<PT_Sint8>(S, OpPC))
12372 return false;
12373 continue;
12374}
12375case OP_DivcUint8: {
12376 if (!Divc<PT_Uint8>(S, OpPC))
12377 return false;
12378 continue;
12379}
12380case OP_DivcSint16: {
12381 if (!Divc<PT_Sint16>(S, OpPC))
12382 return false;
12383 continue;
12384}
12385case OP_DivcUint16: {
12386 if (!Divc<PT_Uint16>(S, OpPC))
12387 return false;
12388 continue;
12389}
12390case OP_DivcSint32: {
12391 if (!Divc<PT_Sint32>(S, OpPC))
12392 return false;
12393 continue;
12394}
12395case OP_DivcUint32: {
12396 if (!Divc<PT_Uint32>(S, OpPC))
12397 return false;
12398 continue;
12399}
12400case OP_DivcSint64: {
12401 if (!Divc<PT_Sint64>(S, OpPC))
12402 return false;
12403 continue;
12404}
12405case OP_DivcUint64: {
12406 if (!Divc<PT_Uint64>(S, OpPC))
12407 return false;
12408 continue;
12409}
12410case OP_DivcIntAP: {
12411 if (!Divc<PT_IntAP>(S, OpPC))
12412 return false;
12413 continue;
12414}
12415case OP_DivcIntAPS: {
12416 if (!Divc<PT_IntAPS>(S, OpPC))
12417 return false;
12418 continue;
12419}
12420case OP_DivcFloat: {
12421 if (!Divc<PT_Float>(S, OpPC))
12422 return false;
12423 continue;
12424}
12425#endif
12426#ifdef GET_DISASM
12427case OP_DivcSint8:
12428 Text.Op = PrintName("DivcSint8");
12429 break;
12430case OP_DivcUint8:
12431 Text.Op = PrintName("DivcUint8");
12432 break;
12433case OP_DivcSint16:
12434 Text.Op = PrintName("DivcSint16");
12435 break;
12436case OP_DivcUint16:
12437 Text.Op = PrintName("DivcUint16");
12438 break;
12439case OP_DivcSint32:
12440 Text.Op = PrintName("DivcSint32");
12441 break;
12442case OP_DivcUint32:
12443 Text.Op = PrintName("DivcUint32");
12444 break;
12445case OP_DivcSint64:
12446 Text.Op = PrintName("DivcSint64");
12447 break;
12448case OP_DivcUint64:
12449 Text.Op = PrintName("DivcUint64");
12450 break;
12451case OP_DivcIntAP:
12452 Text.Op = PrintName("DivcIntAP");
12453 break;
12454case OP_DivcIntAPS:
12455 Text.Op = PrintName("DivcIntAPS");
12456 break;
12457case OP_DivcFloat:
12458 Text.Op = PrintName("DivcFloat");
12459 break;
12460#endif
12461#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12462bool emitDivcSint8(SourceInfo);
12463bool emitDivcUint8(SourceInfo);
12464bool emitDivcSint16(SourceInfo);
12465bool emitDivcUint16(SourceInfo);
12466bool emitDivcSint32(SourceInfo);
12467bool emitDivcUint32(SourceInfo);
12468bool emitDivcSint64(SourceInfo);
12469bool emitDivcUint64(SourceInfo);
12470bool emitDivcIntAP(SourceInfo);
12471bool emitDivcIntAPS(SourceInfo);
12472bool emitDivcFloat(SourceInfo);
12473#endif
12474#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12475[[nodiscard]] bool emitDivc(PrimType, SourceInfo I);
12476#endif
12477#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12478bool
12479#if defined(GET_EVAL_IMPL)
12480EvalEmitter
12481#else
12482ByteCodeEmitter
12483#endif
12484::emitDivc(PrimType T0, SourceInfo I) {
12485 switch (T0) {
12486 case PT_Sint8:
12487 return emitDivcSint8(I);
12488 case PT_Uint8:
12489 return emitDivcUint8(I);
12490 case PT_Sint16:
12491 return emitDivcSint16(I);
12492 case PT_Uint16:
12493 return emitDivcUint16(I);
12494 case PT_Sint32:
12495 return emitDivcSint32(I);
12496 case PT_Uint32:
12497 return emitDivcUint32(I);
12498 case PT_Sint64:
12499 return emitDivcSint64(I);
12500 case PT_Uint64:
12501 return emitDivcUint64(I);
12502 case PT_IntAP:
12503 return emitDivcIntAP(I);
12504 case PT_IntAPS:
12505 return emitDivcIntAPS(I);
12506 case PT_Float:
12507 return emitDivcFloat(I);
12508 default: llvm_unreachable("invalid type: emitDivc");
12509 }
12510 llvm_unreachable("invalid enum value");
12511}
12512#endif
12513#ifdef GET_LINK_IMPL
12514bool ByteCodeEmitter::emitDivcSint8(SourceInfo L) {
12515 return emitOp<>(OP_DivcSint8, L);
12516}
12517bool ByteCodeEmitter::emitDivcUint8(SourceInfo L) {
12518 return emitOp<>(OP_DivcUint8, L);
12519}
12520bool ByteCodeEmitter::emitDivcSint16(SourceInfo L) {
12521 return emitOp<>(OP_DivcSint16, L);
12522}
12523bool ByteCodeEmitter::emitDivcUint16(SourceInfo L) {
12524 return emitOp<>(OP_DivcUint16, L);
12525}
12526bool ByteCodeEmitter::emitDivcSint32(SourceInfo L) {
12527 return emitOp<>(OP_DivcSint32, L);
12528}
12529bool ByteCodeEmitter::emitDivcUint32(SourceInfo L) {
12530 return emitOp<>(OP_DivcUint32, L);
12531}
12532bool ByteCodeEmitter::emitDivcSint64(SourceInfo L) {
12533 return emitOp<>(OP_DivcSint64, L);
12534}
12535bool ByteCodeEmitter::emitDivcUint64(SourceInfo L) {
12536 return emitOp<>(OP_DivcUint64, L);
12537}
12538bool ByteCodeEmitter::emitDivcIntAP(SourceInfo L) {
12539 return emitOp<>(OP_DivcIntAP, L);
12540}
12541bool ByteCodeEmitter::emitDivcIntAPS(SourceInfo L) {
12542 return emitOp<>(OP_DivcIntAPS, L);
12543}
12544bool ByteCodeEmitter::emitDivcFloat(SourceInfo L) {
12545 return emitOp<>(OP_DivcFloat, L);
12546}
12547#endif
12548#ifdef GET_EVAL_IMPL
12549bool EvalEmitter::emitDivcSint8(SourceInfo L) {
12550 if (!isActive()) return true;
12551 CurrentSource = L;
12552 return Divc<PT_Sint8>(S, OpPC);
12553}
12554bool EvalEmitter::emitDivcUint8(SourceInfo L) {
12555 if (!isActive()) return true;
12556 CurrentSource = L;
12557 return Divc<PT_Uint8>(S, OpPC);
12558}
12559bool EvalEmitter::emitDivcSint16(SourceInfo L) {
12560 if (!isActive()) return true;
12561 CurrentSource = L;
12562 return Divc<PT_Sint16>(S, OpPC);
12563}
12564bool EvalEmitter::emitDivcUint16(SourceInfo L) {
12565 if (!isActive()) return true;
12566 CurrentSource = L;
12567 return Divc<PT_Uint16>(S, OpPC);
12568}
12569bool EvalEmitter::emitDivcSint32(SourceInfo L) {
12570 if (!isActive()) return true;
12571 CurrentSource = L;
12572 return Divc<PT_Sint32>(S, OpPC);
12573}
12574bool EvalEmitter::emitDivcUint32(SourceInfo L) {
12575 if (!isActive()) return true;
12576 CurrentSource = L;
12577 return Divc<PT_Uint32>(S, OpPC);
12578}
12579bool EvalEmitter::emitDivcSint64(SourceInfo L) {
12580 if (!isActive()) return true;
12581 CurrentSource = L;
12582 return Divc<PT_Sint64>(S, OpPC);
12583}
12584bool EvalEmitter::emitDivcUint64(SourceInfo L) {
12585 if (!isActive()) return true;
12586 CurrentSource = L;
12587 return Divc<PT_Uint64>(S, OpPC);
12588}
12589bool EvalEmitter::emitDivcIntAP(SourceInfo L) {
12590 if (!isActive()) return true;
12591 CurrentSource = L;
12592 return Divc<PT_IntAP>(S, OpPC);
12593}
12594bool EvalEmitter::emitDivcIntAPS(SourceInfo L) {
12595 if (!isActive()) return true;
12596 CurrentSource = L;
12597 return Divc<PT_IntAPS>(S, OpPC);
12598}
12599bool EvalEmitter::emitDivcFloat(SourceInfo L) {
12600 if (!isActive()) return true;
12601 CurrentSource = L;
12602 return Divc<PT_Float>(S, OpPC);
12603}
12604#endif
12605#ifdef GET_OPCODE_NAMES
12606OP_Divf,
12607#endif
12608#ifdef GET_INTERP
12609case OP_Divf: {
12610 const auto V0 = ReadArg<uint32_t>(S, PC);
12611 if (!Divf(S, OpPC, V0))
12612 return false;
12613 continue;
12614}
12615#endif
12616#ifdef GET_DISASM
12617case OP_Divf:
12618 Text.Op = PrintName("Divf");
12619 Text.Args.push_back(printArg<uint32_t>(P, PC));
12620 break;
12621#endif
12622#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12623bool emitDivf( uint32_t , SourceInfo);
12624#endif
12625#ifdef GET_LINK_IMPL
12626bool ByteCodeEmitter::emitDivf( uint32_t A0, SourceInfo L) {
12627 return emitOp<uint32_t>(OP_Divf, A0, L);
12628}
12629#endif
12630#ifdef GET_EVAL_IMPL
12631bool EvalEmitter::emitDivf( uint32_t A0, SourceInfo L) {
12632 if (!isActive()) return true;
12633 CurrentSource = L;
12634 return Divf(S, OpPC, A0);
12635}
12636#endif
12637#ifdef GET_OPCODE_NAMES
12638OP_Dump,
12639#endif
12640#ifdef GET_INTERP
12641case OP_Dump: {
12642 if (!Dump(S, OpPC))
12643 return false;
12644 continue;
12645}
12646#endif
12647#ifdef GET_DISASM
12648case OP_Dump:
12649 Text.Op = PrintName("Dump");
12650 break;
12651#endif
12652#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12653bool emitDump(SourceInfo);
12654#endif
12655#ifdef GET_LINK_IMPL
12656bool ByteCodeEmitter::emitDump(SourceInfo L) {
12657 return emitOp<>(OP_Dump, L);
12658}
12659#endif
12660#ifdef GET_EVAL_IMPL
12661bool EvalEmitter::emitDump(SourceInfo L) {
12662 if (!isActive()) return true;
12663 CurrentSource = L;
12664 return Dump(S, OpPC);
12665}
12666#endif
12667#ifdef GET_OPCODE_NAMES
12668OP_DupSint8,
12669OP_DupUint8,
12670OP_DupSint16,
12671OP_DupUint16,
12672OP_DupSint32,
12673OP_DupUint32,
12674OP_DupSint64,
12675OP_DupUint64,
12676OP_DupIntAP,
12677OP_DupIntAPS,
12678OP_DupBool,
12679OP_DupFixedPoint,
12680OP_DupPtr,
12681OP_DupMemberPtr,
12682OP_DupFloat,
12683#endif
12684#ifdef GET_INTERP
12685case OP_DupSint8: {
12686 if (!Dup<PT_Sint8>(S, OpPC))
12687 return false;
12688 continue;
12689}
12690case OP_DupUint8: {
12691 if (!Dup<PT_Uint8>(S, OpPC))
12692 return false;
12693 continue;
12694}
12695case OP_DupSint16: {
12696 if (!Dup<PT_Sint16>(S, OpPC))
12697 return false;
12698 continue;
12699}
12700case OP_DupUint16: {
12701 if (!Dup<PT_Uint16>(S, OpPC))
12702 return false;
12703 continue;
12704}
12705case OP_DupSint32: {
12706 if (!Dup<PT_Sint32>(S, OpPC))
12707 return false;
12708 continue;
12709}
12710case OP_DupUint32: {
12711 if (!Dup<PT_Uint32>(S, OpPC))
12712 return false;
12713 continue;
12714}
12715case OP_DupSint64: {
12716 if (!Dup<PT_Sint64>(S, OpPC))
12717 return false;
12718 continue;
12719}
12720case OP_DupUint64: {
12721 if (!Dup<PT_Uint64>(S, OpPC))
12722 return false;
12723 continue;
12724}
12725case OP_DupIntAP: {
12726 if (!Dup<PT_IntAP>(S, OpPC))
12727 return false;
12728 continue;
12729}
12730case OP_DupIntAPS: {
12731 if (!Dup<PT_IntAPS>(S, OpPC))
12732 return false;
12733 continue;
12734}
12735case OP_DupBool: {
12736 if (!Dup<PT_Bool>(S, OpPC))
12737 return false;
12738 continue;
12739}
12740case OP_DupFixedPoint: {
12741 if (!Dup<PT_FixedPoint>(S, OpPC))
12742 return false;
12743 continue;
12744}
12745case OP_DupPtr: {
12746 if (!Dup<PT_Ptr>(S, OpPC))
12747 return false;
12748 continue;
12749}
12750case OP_DupMemberPtr: {
12751 if (!Dup<PT_MemberPtr>(S, OpPC))
12752 return false;
12753 continue;
12754}
12755case OP_DupFloat: {
12756 if (!Dup<PT_Float>(S, OpPC))
12757 return false;
12758 continue;
12759}
12760#endif
12761#ifdef GET_DISASM
12762case OP_DupSint8:
12763 Text.Op = PrintName("DupSint8");
12764 break;
12765case OP_DupUint8:
12766 Text.Op = PrintName("DupUint8");
12767 break;
12768case OP_DupSint16:
12769 Text.Op = PrintName("DupSint16");
12770 break;
12771case OP_DupUint16:
12772 Text.Op = PrintName("DupUint16");
12773 break;
12774case OP_DupSint32:
12775 Text.Op = PrintName("DupSint32");
12776 break;
12777case OP_DupUint32:
12778 Text.Op = PrintName("DupUint32");
12779 break;
12780case OP_DupSint64:
12781 Text.Op = PrintName("DupSint64");
12782 break;
12783case OP_DupUint64:
12784 Text.Op = PrintName("DupUint64");
12785 break;
12786case OP_DupIntAP:
12787 Text.Op = PrintName("DupIntAP");
12788 break;
12789case OP_DupIntAPS:
12790 Text.Op = PrintName("DupIntAPS");
12791 break;
12792case OP_DupBool:
12793 Text.Op = PrintName("DupBool");
12794 break;
12795case OP_DupFixedPoint:
12796 Text.Op = PrintName("DupFixedPoint");
12797 break;
12798case OP_DupPtr:
12799 Text.Op = PrintName("DupPtr");
12800 break;
12801case OP_DupMemberPtr:
12802 Text.Op = PrintName("DupMemberPtr");
12803 break;
12804case OP_DupFloat:
12805 Text.Op = PrintName("DupFloat");
12806 break;
12807#endif
12808#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12809bool emitDupSint8(SourceInfo);
12810bool emitDupUint8(SourceInfo);
12811bool emitDupSint16(SourceInfo);
12812bool emitDupUint16(SourceInfo);
12813bool emitDupSint32(SourceInfo);
12814bool emitDupUint32(SourceInfo);
12815bool emitDupSint64(SourceInfo);
12816bool emitDupUint64(SourceInfo);
12817bool emitDupIntAP(SourceInfo);
12818bool emitDupIntAPS(SourceInfo);
12819bool emitDupBool(SourceInfo);
12820bool emitDupFixedPoint(SourceInfo);
12821bool emitDupPtr(SourceInfo);
12822bool emitDupMemberPtr(SourceInfo);
12823bool emitDupFloat(SourceInfo);
12824#endif
12825#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
12826[[nodiscard]] bool emitDup(PrimType, SourceInfo I);
12827#endif
12828#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
12829bool
12830#if defined(GET_EVAL_IMPL)
12831EvalEmitter
12832#else
12833ByteCodeEmitter
12834#endif
12835::emitDup(PrimType T0, SourceInfo I) {
12836 switch (T0) {
12837 case PT_Sint8:
12838 return emitDupSint8(I);
12839 case PT_Uint8:
12840 return emitDupUint8(I);
12841 case PT_Sint16:
12842 return emitDupSint16(I);
12843 case PT_Uint16:
12844 return emitDupUint16(I);
12845 case PT_Sint32:
12846 return emitDupSint32(I);
12847 case PT_Uint32:
12848 return emitDupUint32(I);
12849 case PT_Sint64:
12850 return emitDupSint64(I);
12851 case PT_Uint64:
12852 return emitDupUint64(I);
12853 case PT_IntAP:
12854 return emitDupIntAP(I);
12855 case PT_IntAPS:
12856 return emitDupIntAPS(I);
12857 case PT_Bool:
12858 return emitDupBool(I);
12859 case PT_FixedPoint:
12860 return emitDupFixedPoint(I);
12861 case PT_Ptr:
12862 return emitDupPtr(I);
12863 case PT_MemberPtr:
12864 return emitDupMemberPtr(I);
12865 case PT_Float:
12866 return emitDupFloat(I);
12867 }
12868 llvm_unreachable("invalid enum value");
12869}
12870#endif
12871#ifdef GET_LINK_IMPL
12872bool ByteCodeEmitter::emitDupSint8(SourceInfo L) {
12873 return emitOp<>(OP_DupSint8, L);
12874}
12875bool ByteCodeEmitter::emitDupUint8(SourceInfo L) {
12876 return emitOp<>(OP_DupUint8, L);
12877}
12878bool ByteCodeEmitter::emitDupSint16(SourceInfo L) {
12879 return emitOp<>(OP_DupSint16, L);
12880}
12881bool ByteCodeEmitter::emitDupUint16(SourceInfo L) {
12882 return emitOp<>(OP_DupUint16, L);
12883}
12884bool ByteCodeEmitter::emitDupSint32(SourceInfo L) {
12885 return emitOp<>(OP_DupSint32, L);
12886}
12887bool ByteCodeEmitter::emitDupUint32(SourceInfo L) {
12888 return emitOp<>(OP_DupUint32, L);
12889}
12890bool ByteCodeEmitter::emitDupSint64(SourceInfo L) {
12891 return emitOp<>(OP_DupSint64, L);
12892}
12893bool ByteCodeEmitter::emitDupUint64(SourceInfo L) {
12894 return emitOp<>(OP_DupUint64, L);
12895}
12896bool ByteCodeEmitter::emitDupIntAP(SourceInfo L) {
12897 return emitOp<>(OP_DupIntAP, L);
12898}
12899bool ByteCodeEmitter::emitDupIntAPS(SourceInfo L) {
12900 return emitOp<>(OP_DupIntAPS, L);
12901}
12902bool ByteCodeEmitter::emitDupBool(SourceInfo L) {
12903 return emitOp<>(OP_DupBool, L);
12904}
12905bool ByteCodeEmitter::emitDupFixedPoint(SourceInfo L) {
12906 return emitOp<>(OP_DupFixedPoint, L);
12907}
12908bool ByteCodeEmitter::emitDupPtr(SourceInfo L) {
12909 return emitOp<>(OP_DupPtr, L);
12910}
12911bool ByteCodeEmitter::emitDupMemberPtr(SourceInfo L) {
12912 return emitOp<>(OP_DupMemberPtr, L);
12913}
12914bool ByteCodeEmitter::emitDupFloat(SourceInfo L) {
12915 return emitOp<>(OP_DupFloat, L);
12916}
12917#endif
12918#ifdef GET_EVAL_IMPL
12919bool EvalEmitter::emitDupSint8(SourceInfo L) {
12920 if (!isActive()) return true;
12921 CurrentSource = L;
12922 return Dup<PT_Sint8>(S, OpPC);
12923}
12924bool EvalEmitter::emitDupUint8(SourceInfo L) {
12925 if (!isActive()) return true;
12926 CurrentSource = L;
12927 return Dup<PT_Uint8>(S, OpPC);
12928}
12929bool EvalEmitter::emitDupSint16(SourceInfo L) {
12930 if (!isActive()) return true;
12931 CurrentSource = L;
12932 return Dup<PT_Sint16>(S, OpPC);
12933}
12934bool EvalEmitter::emitDupUint16(SourceInfo L) {
12935 if (!isActive()) return true;
12936 CurrentSource = L;
12937 return Dup<PT_Uint16>(S, OpPC);
12938}
12939bool EvalEmitter::emitDupSint32(SourceInfo L) {
12940 if (!isActive()) return true;
12941 CurrentSource = L;
12942 return Dup<PT_Sint32>(S, OpPC);
12943}
12944bool EvalEmitter::emitDupUint32(SourceInfo L) {
12945 if (!isActive()) return true;
12946 CurrentSource = L;
12947 return Dup<PT_Uint32>(S, OpPC);
12948}
12949bool EvalEmitter::emitDupSint64(SourceInfo L) {
12950 if (!isActive()) return true;
12951 CurrentSource = L;
12952 return Dup<PT_Sint64>(S, OpPC);
12953}
12954bool EvalEmitter::emitDupUint64(SourceInfo L) {
12955 if (!isActive()) return true;
12956 CurrentSource = L;
12957 return Dup<PT_Uint64>(S, OpPC);
12958}
12959bool EvalEmitter::emitDupIntAP(SourceInfo L) {
12960 if (!isActive()) return true;
12961 CurrentSource = L;
12962 return Dup<PT_IntAP>(S, OpPC);
12963}
12964bool EvalEmitter::emitDupIntAPS(SourceInfo L) {
12965 if (!isActive()) return true;
12966 CurrentSource = L;
12967 return Dup<PT_IntAPS>(S, OpPC);
12968}
12969bool EvalEmitter::emitDupBool(SourceInfo L) {
12970 if (!isActive()) return true;
12971 CurrentSource = L;
12972 return Dup<PT_Bool>(S, OpPC);
12973}
12974bool EvalEmitter::emitDupFixedPoint(SourceInfo L) {
12975 if (!isActive()) return true;
12976 CurrentSource = L;
12977 return Dup<PT_FixedPoint>(S, OpPC);
12978}
12979bool EvalEmitter::emitDupPtr(SourceInfo L) {
12980 if (!isActive()) return true;
12981 CurrentSource = L;
12982 return Dup<PT_Ptr>(S, OpPC);
12983}
12984bool EvalEmitter::emitDupMemberPtr(SourceInfo L) {
12985 if (!isActive()) return true;
12986 CurrentSource = L;
12987 return Dup<PT_MemberPtr>(S, OpPC);
12988}
12989bool EvalEmitter::emitDupFloat(SourceInfo L) {
12990 if (!isActive()) return true;
12991 CurrentSource = L;
12992 return Dup<PT_Float>(S, OpPC);
12993}
12994#endif
12995#ifdef GET_OPCODE_NAMES
12996OP_EQSint8,
12997OP_EQUint8,
12998OP_EQSint16,
12999OP_EQUint16,
13000OP_EQSint32,
13001OP_EQUint32,
13002OP_EQSint64,
13003OP_EQUint64,
13004OP_EQIntAP,
13005OP_EQIntAPS,
13006OP_EQBool,
13007OP_EQFixedPoint,
13008OP_EQPtr,
13009OP_EQMemberPtr,
13010OP_EQFloat,
13011#endif
13012#ifdef GET_INTERP
13013case OP_EQSint8: {
13014 if (!EQ<PT_Sint8>(S, OpPC))
13015 return false;
13016 continue;
13017}
13018case OP_EQUint8: {
13019 if (!EQ<PT_Uint8>(S, OpPC))
13020 return false;
13021 continue;
13022}
13023case OP_EQSint16: {
13024 if (!EQ<PT_Sint16>(S, OpPC))
13025 return false;
13026 continue;
13027}
13028case OP_EQUint16: {
13029 if (!EQ<PT_Uint16>(S, OpPC))
13030 return false;
13031 continue;
13032}
13033case OP_EQSint32: {
13034 if (!EQ<PT_Sint32>(S, OpPC))
13035 return false;
13036 continue;
13037}
13038case OP_EQUint32: {
13039 if (!EQ<PT_Uint32>(S, OpPC))
13040 return false;
13041 continue;
13042}
13043case OP_EQSint64: {
13044 if (!EQ<PT_Sint64>(S, OpPC))
13045 return false;
13046 continue;
13047}
13048case OP_EQUint64: {
13049 if (!EQ<PT_Uint64>(S, OpPC))
13050 return false;
13051 continue;
13052}
13053case OP_EQIntAP: {
13054 if (!EQ<PT_IntAP>(S, OpPC))
13055 return false;
13056 continue;
13057}
13058case OP_EQIntAPS: {
13059 if (!EQ<PT_IntAPS>(S, OpPC))
13060 return false;
13061 continue;
13062}
13063case OP_EQBool: {
13064 if (!EQ<PT_Bool>(S, OpPC))
13065 return false;
13066 continue;
13067}
13068case OP_EQFixedPoint: {
13069 if (!EQ<PT_FixedPoint>(S, OpPC))
13070 return false;
13071 continue;
13072}
13073case OP_EQPtr: {
13074 if (!EQ<PT_Ptr>(S, OpPC))
13075 return false;
13076 continue;
13077}
13078case OP_EQMemberPtr: {
13079 if (!EQ<PT_MemberPtr>(S, OpPC))
13080 return false;
13081 continue;
13082}
13083case OP_EQFloat: {
13084 if (!EQ<PT_Float>(S, OpPC))
13085 return false;
13086 continue;
13087}
13088#endif
13089#ifdef GET_DISASM
13090case OP_EQSint8:
13091 Text.Op = PrintName("EQSint8");
13092 break;
13093case OP_EQUint8:
13094 Text.Op = PrintName("EQUint8");
13095 break;
13096case OP_EQSint16:
13097 Text.Op = PrintName("EQSint16");
13098 break;
13099case OP_EQUint16:
13100 Text.Op = PrintName("EQUint16");
13101 break;
13102case OP_EQSint32:
13103 Text.Op = PrintName("EQSint32");
13104 break;
13105case OP_EQUint32:
13106 Text.Op = PrintName("EQUint32");
13107 break;
13108case OP_EQSint64:
13109 Text.Op = PrintName("EQSint64");
13110 break;
13111case OP_EQUint64:
13112 Text.Op = PrintName("EQUint64");
13113 break;
13114case OP_EQIntAP:
13115 Text.Op = PrintName("EQIntAP");
13116 break;
13117case OP_EQIntAPS:
13118 Text.Op = PrintName("EQIntAPS");
13119 break;
13120case OP_EQBool:
13121 Text.Op = PrintName("EQBool");
13122 break;
13123case OP_EQFixedPoint:
13124 Text.Op = PrintName("EQFixedPoint");
13125 break;
13126case OP_EQPtr:
13127 Text.Op = PrintName("EQPtr");
13128 break;
13129case OP_EQMemberPtr:
13130 Text.Op = PrintName("EQMemberPtr");
13131 break;
13132case OP_EQFloat:
13133 Text.Op = PrintName("EQFloat");
13134 break;
13135#endif
13136#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13137bool emitEQSint8(SourceInfo);
13138bool emitEQUint8(SourceInfo);
13139bool emitEQSint16(SourceInfo);
13140bool emitEQUint16(SourceInfo);
13141bool emitEQSint32(SourceInfo);
13142bool emitEQUint32(SourceInfo);
13143bool emitEQSint64(SourceInfo);
13144bool emitEQUint64(SourceInfo);
13145bool emitEQIntAP(SourceInfo);
13146bool emitEQIntAPS(SourceInfo);
13147bool emitEQBool(SourceInfo);
13148bool emitEQFixedPoint(SourceInfo);
13149bool emitEQPtr(SourceInfo);
13150bool emitEQMemberPtr(SourceInfo);
13151bool emitEQFloat(SourceInfo);
13152#endif
13153#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13154[[nodiscard]] bool emitEQ(PrimType, SourceInfo I);
13155#endif
13156#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
13157bool
13158#if defined(GET_EVAL_IMPL)
13159EvalEmitter
13160#else
13161ByteCodeEmitter
13162#endif
13163::emitEQ(PrimType T0, SourceInfo I) {
13164 switch (T0) {
13165 case PT_Sint8:
13166 return emitEQSint8(I);
13167 case PT_Uint8:
13168 return emitEQUint8(I);
13169 case PT_Sint16:
13170 return emitEQSint16(I);
13171 case PT_Uint16:
13172 return emitEQUint16(I);
13173 case PT_Sint32:
13174 return emitEQSint32(I);
13175 case PT_Uint32:
13176 return emitEQUint32(I);
13177 case PT_Sint64:
13178 return emitEQSint64(I);
13179 case PT_Uint64:
13180 return emitEQUint64(I);
13181 case PT_IntAP:
13182 return emitEQIntAP(I);
13183 case PT_IntAPS:
13184 return emitEQIntAPS(I);
13185 case PT_Bool:
13186 return emitEQBool(I);
13187 case PT_FixedPoint:
13188 return emitEQFixedPoint(I);
13189 case PT_Ptr:
13190 return emitEQPtr(I);
13191 case PT_MemberPtr:
13192 return emitEQMemberPtr(I);
13193 case PT_Float:
13194 return emitEQFloat(I);
13195 }
13196 llvm_unreachable("invalid enum value");
13197}
13198#endif
13199#ifdef GET_LINK_IMPL
13200bool ByteCodeEmitter::emitEQSint8(SourceInfo L) {
13201 return emitOp<>(OP_EQSint8, L);
13202}
13203bool ByteCodeEmitter::emitEQUint8(SourceInfo L) {
13204 return emitOp<>(OP_EQUint8, L);
13205}
13206bool ByteCodeEmitter::emitEQSint16(SourceInfo L) {
13207 return emitOp<>(OP_EQSint16, L);
13208}
13209bool ByteCodeEmitter::emitEQUint16(SourceInfo L) {
13210 return emitOp<>(OP_EQUint16, L);
13211}
13212bool ByteCodeEmitter::emitEQSint32(SourceInfo L) {
13213 return emitOp<>(OP_EQSint32, L);
13214}
13215bool ByteCodeEmitter::emitEQUint32(SourceInfo L) {
13216 return emitOp<>(OP_EQUint32, L);
13217}
13218bool ByteCodeEmitter::emitEQSint64(SourceInfo L) {
13219 return emitOp<>(OP_EQSint64, L);
13220}
13221bool ByteCodeEmitter::emitEQUint64(SourceInfo L) {
13222 return emitOp<>(OP_EQUint64, L);
13223}
13224bool ByteCodeEmitter::emitEQIntAP(SourceInfo L) {
13225 return emitOp<>(OP_EQIntAP, L);
13226}
13227bool ByteCodeEmitter::emitEQIntAPS(SourceInfo L) {
13228 return emitOp<>(OP_EQIntAPS, L);
13229}
13230bool ByteCodeEmitter::emitEQBool(SourceInfo L) {
13231 return emitOp<>(OP_EQBool, L);
13232}
13233bool ByteCodeEmitter::emitEQFixedPoint(SourceInfo L) {
13234 return emitOp<>(OP_EQFixedPoint, L);
13235}
13236bool ByteCodeEmitter::emitEQPtr(SourceInfo L) {
13237 return emitOp<>(OP_EQPtr, L);
13238}
13239bool ByteCodeEmitter::emitEQMemberPtr(SourceInfo L) {
13240 return emitOp<>(OP_EQMemberPtr, L);
13241}
13242bool ByteCodeEmitter::emitEQFloat(SourceInfo L) {
13243 return emitOp<>(OP_EQFloat, L);
13244}
13245#endif
13246#ifdef GET_EVAL_IMPL
13247bool EvalEmitter::emitEQSint8(SourceInfo L) {
13248 if (!isActive()) return true;
13249 CurrentSource = L;
13250 return EQ<PT_Sint8>(S, OpPC);
13251}
13252bool EvalEmitter::emitEQUint8(SourceInfo L) {
13253 if (!isActive()) return true;
13254 CurrentSource = L;
13255 return EQ<PT_Uint8>(S, OpPC);
13256}
13257bool EvalEmitter::emitEQSint16(SourceInfo L) {
13258 if (!isActive()) return true;
13259 CurrentSource = L;
13260 return EQ<PT_Sint16>(S, OpPC);
13261}
13262bool EvalEmitter::emitEQUint16(SourceInfo L) {
13263 if (!isActive()) return true;
13264 CurrentSource = L;
13265 return EQ<PT_Uint16>(S, OpPC);
13266}
13267bool EvalEmitter::emitEQSint32(SourceInfo L) {
13268 if (!isActive()) return true;
13269 CurrentSource = L;
13270 return EQ<PT_Sint32>(S, OpPC);
13271}
13272bool EvalEmitter::emitEQUint32(SourceInfo L) {
13273 if (!isActive()) return true;
13274 CurrentSource = L;
13275 return EQ<PT_Uint32>(S, OpPC);
13276}
13277bool EvalEmitter::emitEQSint64(SourceInfo L) {
13278 if (!isActive()) return true;
13279 CurrentSource = L;
13280 return EQ<PT_Sint64>(S, OpPC);
13281}
13282bool EvalEmitter::emitEQUint64(SourceInfo L) {
13283 if (!isActive()) return true;
13284 CurrentSource = L;
13285 return EQ<PT_Uint64>(S, OpPC);
13286}
13287bool EvalEmitter::emitEQIntAP(SourceInfo L) {
13288 if (!isActive()) return true;
13289 CurrentSource = L;
13290 return EQ<PT_IntAP>(S, OpPC);
13291}
13292bool EvalEmitter::emitEQIntAPS(SourceInfo L) {
13293 if (!isActive()) return true;
13294 CurrentSource = L;
13295 return EQ<PT_IntAPS>(S, OpPC);
13296}
13297bool EvalEmitter::emitEQBool(SourceInfo L) {
13298 if (!isActive()) return true;
13299 CurrentSource = L;
13300 return EQ<PT_Bool>(S, OpPC);
13301}
13302bool EvalEmitter::emitEQFixedPoint(SourceInfo L) {
13303 if (!isActive()) return true;
13304 CurrentSource = L;
13305 return EQ<PT_FixedPoint>(S, OpPC);
13306}
13307bool EvalEmitter::emitEQPtr(SourceInfo L) {
13308 if (!isActive()) return true;
13309 CurrentSource = L;
13310 return EQ<PT_Ptr>(S, OpPC);
13311}
13312bool EvalEmitter::emitEQMemberPtr(SourceInfo L) {
13313 if (!isActive()) return true;
13314 CurrentSource = L;
13315 return EQ<PT_MemberPtr>(S, OpPC);
13316}
13317bool EvalEmitter::emitEQFloat(SourceInfo L) {
13318 if (!isActive()) return true;
13319 CurrentSource = L;
13320 return EQ<PT_Float>(S, OpPC);
13321}
13322#endif
13323#ifdef GET_OPCODE_NAMES
13324OP_EnableLocal,
13325#endif
13326#ifdef GET_INTERP
13327case OP_EnableLocal: {
13328 const auto V0 = ReadArg<uint32_t>(S, PC);
13329 if (!EnableLocal(S, OpPC, V0))
13330 return false;
13331 continue;
13332}
13333#endif
13334#ifdef GET_DISASM
13335case OP_EnableLocal:
13336 Text.Op = PrintName("EnableLocal");
13337 Text.Args.push_back(printArg<uint32_t>(P, PC));
13338 break;
13339#endif
13340#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13341bool emitEnableLocal( uint32_t , SourceInfo);
13342#endif
13343#ifdef GET_LINK_IMPL
13344bool ByteCodeEmitter::emitEnableLocal( uint32_t A0, SourceInfo L) {
13345 return emitOp<uint32_t>(OP_EnableLocal, A0, L);
13346}
13347#endif
13348#ifdef GET_OPCODE_NAMES
13349OP_EndLifetime,
13350#endif
13351#ifdef GET_INTERP
13352case OP_EndLifetime: {
13353 if (!EndLifetime(S, OpPC))
13354 return false;
13355 continue;
13356}
13357#endif
13358#ifdef GET_DISASM
13359case OP_EndLifetime:
13360 Text.Op = PrintName("EndLifetime");
13361 break;
13362#endif
13363#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13364bool emitEndLifetime(SourceInfo);
13365#endif
13366#ifdef GET_LINK_IMPL
13367bool ByteCodeEmitter::emitEndLifetime(SourceInfo L) {
13368 return emitOp<>(OP_EndLifetime, L);
13369}
13370#endif
13371#ifdef GET_EVAL_IMPL
13372bool EvalEmitter::emitEndLifetime(SourceInfo L) {
13373 if (!isActive()) return true;
13374 CurrentSource = L;
13375 return EndLifetime(S, OpPC);
13376}
13377#endif
13378#ifdef GET_OPCODE_NAMES
13379OP_EndLifetimePop,
13380#endif
13381#ifdef GET_INTERP
13382case OP_EndLifetimePop: {
13383 if (!EndLifetimePop(S, OpPC))
13384 return false;
13385 continue;
13386}
13387#endif
13388#ifdef GET_DISASM
13389case OP_EndLifetimePop:
13390 Text.Op = PrintName("EndLifetimePop");
13391 break;
13392#endif
13393#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13394bool emitEndLifetimePop(SourceInfo);
13395#endif
13396#ifdef GET_LINK_IMPL
13397bool ByteCodeEmitter::emitEndLifetimePop(SourceInfo L) {
13398 return emitOp<>(OP_EndLifetimePop, L);
13399}
13400#endif
13401#ifdef GET_EVAL_IMPL
13402bool EvalEmitter::emitEndLifetimePop(SourceInfo L) {
13403 if (!isActive()) return true;
13404 CurrentSource = L;
13405 return EndLifetimePop(S, OpPC);
13406}
13407#endif
13408#ifdef GET_OPCODE_NAMES
13409OP_EndSpeculation,
13410#endif
13411#ifdef GET_INTERP
13412case OP_EndSpeculation: {
13413 if (!EndSpeculation(S, OpPC))
13414 return false;
13415 continue;
13416}
13417#endif
13418#ifdef GET_DISASM
13419case OP_EndSpeculation:
13420 Text.Op = PrintName("EndSpeculation");
13421 break;
13422#endif
13423#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13424bool emitEndSpeculation(SourceInfo);
13425#endif
13426#ifdef GET_LINK_IMPL
13427bool ByteCodeEmitter::emitEndSpeculation(SourceInfo L) {
13428 return emitOp<>(OP_EndSpeculation, L);
13429}
13430#endif
13431#ifdef GET_EVAL_IMPL
13432bool EvalEmitter::emitEndSpeculation(SourceInfo L) {
13433 if (!isActive()) return true;
13434 CurrentSource = L;
13435 return EndSpeculation(S, OpPC);
13436}
13437#endif
13438#ifdef GET_OPCODE_NAMES
13439OP_Error,
13440#endif
13441#ifdef GET_INTERP
13442case OP_Error: {
13443 if (!Error(S, OpPC))
13444 return false;
13445 continue;
13446}
13447#endif
13448#ifdef GET_DISASM
13449case OP_Error:
13450 Text.Op = PrintName("Error");
13451 break;
13452#endif
13453#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13454bool emitError(SourceInfo);
13455#endif
13456#ifdef GET_LINK_IMPL
13457bool ByteCodeEmitter::emitError(SourceInfo L) {
13458 return emitOp<>(OP_Error, L);
13459}
13460#endif
13461#ifdef GET_EVAL_IMPL
13462bool EvalEmitter::emitError(SourceInfo L) {
13463 if (!isActive()) return true;
13464 CurrentSource = L;
13465 return Error(S, OpPC);
13466}
13467#endif
13468#ifdef GET_OPCODE_NAMES
13469OP_ExpandPtr,
13470#endif
13471#ifdef GET_INTERP
13472case OP_ExpandPtr: {
13473 if (!ExpandPtr(S, OpPC))
13474 return false;
13475 continue;
13476}
13477#endif
13478#ifdef GET_DISASM
13479case OP_ExpandPtr:
13480 Text.Op = PrintName("ExpandPtr");
13481 break;
13482#endif
13483#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13484bool emitExpandPtr(SourceInfo);
13485#endif
13486#ifdef GET_LINK_IMPL
13487bool ByteCodeEmitter::emitExpandPtr(SourceInfo L) {
13488 return emitOp<>(OP_ExpandPtr, L);
13489}
13490#endif
13491#ifdef GET_EVAL_IMPL
13492bool EvalEmitter::emitExpandPtr(SourceInfo L) {
13493 if (!isActive()) return true;
13494 CurrentSource = L;
13495 return ExpandPtr(S, OpPC);
13496}
13497#endif
13498#ifdef GET_OPCODE_NAMES
13499OP_FinishInit,
13500#endif
13501#ifdef GET_INTERP
13502case OP_FinishInit: {
13503 if (!FinishInit(S, OpPC))
13504 return false;
13505 continue;
13506}
13507#endif
13508#ifdef GET_DISASM
13509case OP_FinishInit:
13510 Text.Op = PrintName("FinishInit");
13511 break;
13512#endif
13513#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13514bool emitFinishInit(SourceInfo);
13515#endif
13516#ifdef GET_LINK_IMPL
13517bool ByteCodeEmitter::emitFinishInit(SourceInfo L) {
13518 return emitOp<>(OP_FinishInit, L);
13519}
13520#endif
13521#ifdef GET_EVAL_IMPL
13522bool EvalEmitter::emitFinishInit(SourceInfo L) {
13523 if (!isActive()) return true;
13524 CurrentSource = L;
13525 return FinishInit(S, OpPC);
13526}
13527#endif
13528#ifdef GET_OPCODE_NAMES
13529OP_FinishInitActivate,
13530#endif
13531#ifdef GET_INTERP
13532case OP_FinishInitActivate: {
13533 if (!FinishInitActivate(S, OpPC))
13534 return false;
13535 continue;
13536}
13537#endif
13538#ifdef GET_DISASM
13539case OP_FinishInitActivate:
13540 Text.Op = PrintName("FinishInitActivate");
13541 break;
13542#endif
13543#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13544bool emitFinishInitActivate(SourceInfo);
13545#endif
13546#ifdef GET_LINK_IMPL
13547bool ByteCodeEmitter::emitFinishInitActivate(SourceInfo L) {
13548 return emitOp<>(OP_FinishInitActivate, L);
13549}
13550#endif
13551#ifdef GET_EVAL_IMPL
13552bool EvalEmitter::emitFinishInitActivate(SourceInfo L) {
13553 if (!isActive()) return true;
13554 CurrentSource = L;
13555 return FinishInitActivate(S, OpPC);
13556}
13557#endif
13558#ifdef GET_OPCODE_NAMES
13559OP_FinishInitActivatePop,
13560#endif
13561#ifdef GET_INTERP
13562case OP_FinishInitActivatePop: {
13563 if (!FinishInitActivatePop(S, OpPC))
13564 return false;
13565 continue;
13566}
13567#endif
13568#ifdef GET_DISASM
13569case OP_FinishInitActivatePop:
13570 Text.Op = PrintName("FinishInitActivatePop");
13571 break;
13572#endif
13573#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13574bool emitFinishInitActivatePop(SourceInfo);
13575#endif
13576#ifdef GET_LINK_IMPL
13577bool ByteCodeEmitter::emitFinishInitActivatePop(SourceInfo L) {
13578 return emitOp<>(OP_FinishInitActivatePop, L);
13579}
13580#endif
13581#ifdef GET_EVAL_IMPL
13582bool EvalEmitter::emitFinishInitActivatePop(SourceInfo L) {
13583 if (!isActive()) return true;
13584 CurrentSource = L;
13585 return FinishInitActivatePop(S, OpPC);
13586}
13587#endif
13588#ifdef GET_OPCODE_NAMES
13589OP_FinishInitGlobal,
13590#endif
13591#ifdef GET_INTERP
13592case OP_FinishInitGlobal: {
13593 if (!FinishInitGlobal(S, OpPC))
13594 return false;
13595 continue;
13596}
13597#endif
13598#ifdef GET_DISASM
13599case OP_FinishInitGlobal:
13600 Text.Op = PrintName("FinishInitGlobal");
13601 break;
13602#endif
13603#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13604bool emitFinishInitGlobal(SourceInfo);
13605#endif
13606#ifdef GET_LINK_IMPL
13607bool ByteCodeEmitter::emitFinishInitGlobal(SourceInfo L) {
13608 return emitOp<>(OP_FinishInitGlobal, L);
13609}
13610#endif
13611#ifdef GET_EVAL_IMPL
13612bool EvalEmitter::emitFinishInitGlobal(SourceInfo L) {
13613 if (!isActive()) return true;
13614 CurrentSource = L;
13615 return FinishInitGlobal(S, OpPC);
13616}
13617#endif
13618#ifdef GET_OPCODE_NAMES
13619OP_FinishInitPop,
13620#endif
13621#ifdef GET_INTERP
13622case OP_FinishInitPop: {
13623 if (!FinishInitPop(S, OpPC))
13624 return false;
13625 continue;
13626}
13627#endif
13628#ifdef GET_DISASM
13629case OP_FinishInitPop:
13630 Text.Op = PrintName("FinishInitPop");
13631 break;
13632#endif
13633#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
13634bool emitFinishInitPop(SourceInfo);
13635#endif
13636#ifdef GET_LINK_IMPL
13637bool ByteCodeEmitter::emitFinishInitPop(SourceInfo L) {
13638 return emitOp<>(OP_FinishInitPop, L);
13639}
13640#endif
13641#ifdef GET_EVAL_IMPL
13642bool EvalEmitter::emitFinishInitPop(SourceInfo L) {
13643 if (!isActive()) return true;
13644 CurrentSource = L;
13645 return FinishInitPop(S, OpPC);
13646}
13647#endif
13648#ifdef GET_OPCODE_NAMES
13649OP_FlipSint8Sint8,
13650OP_FlipSint8Uint8,
13651OP_FlipSint8Sint16,
13652OP_FlipSint8Uint16,
13653OP_FlipSint8Sint32,
13654OP_FlipSint8Uint32,
13655OP_FlipSint8Sint64,
13656OP_FlipSint8Uint64,
13657OP_FlipSint8IntAP,
13658OP_FlipSint8IntAPS,
13659OP_FlipSint8Bool,
13660OP_FlipSint8FixedPoint,
13661OP_FlipSint8Ptr,
13662OP_FlipSint8MemberPtr,
13663OP_FlipSint8Float,
13664OP_FlipUint8Sint8,
13665OP_FlipUint8Uint8,
13666OP_FlipUint8Sint16,
13667OP_FlipUint8Uint16,
13668OP_FlipUint8Sint32,
13669OP_FlipUint8Uint32,
13670OP_FlipUint8Sint64,
13671OP_FlipUint8Uint64,
13672OP_FlipUint8IntAP,
13673OP_FlipUint8IntAPS,
13674OP_FlipUint8Bool,
13675OP_FlipUint8FixedPoint,
13676OP_FlipUint8Ptr,
13677OP_FlipUint8MemberPtr,
13678OP_FlipUint8Float,
13679OP_FlipSint16Sint8,
13680OP_FlipSint16Uint8,
13681OP_FlipSint16Sint16,
13682OP_FlipSint16Uint16,
13683OP_FlipSint16Sint32,
13684OP_FlipSint16Uint32,
13685OP_FlipSint16Sint64,
13686OP_FlipSint16Uint64,
13687OP_FlipSint16IntAP,
13688OP_FlipSint16IntAPS,
13689OP_FlipSint16Bool,
13690OP_FlipSint16FixedPoint,
13691OP_FlipSint16Ptr,
13692OP_FlipSint16MemberPtr,
13693OP_FlipSint16Float,
13694OP_FlipUint16Sint8,
13695OP_FlipUint16Uint8,
13696OP_FlipUint16Sint16,
13697OP_FlipUint16Uint16,
13698OP_FlipUint16Sint32,
13699OP_FlipUint16Uint32,
13700OP_FlipUint16Sint64,
13701OP_FlipUint16Uint64,
13702OP_FlipUint16IntAP,
13703OP_FlipUint16IntAPS,
13704OP_FlipUint16Bool,
13705OP_FlipUint16FixedPoint,
13706OP_FlipUint16Ptr,
13707OP_FlipUint16MemberPtr,
13708OP_FlipUint16Float,
13709OP_FlipSint32Sint8,
13710OP_FlipSint32Uint8,
13711OP_FlipSint32Sint16,
13712OP_FlipSint32Uint16,
13713OP_FlipSint32Sint32,
13714OP_FlipSint32Uint32,
13715OP_FlipSint32Sint64,
13716OP_FlipSint32Uint64,
13717OP_FlipSint32IntAP,
13718OP_FlipSint32IntAPS,
13719OP_FlipSint32Bool,
13720OP_FlipSint32FixedPoint,
13721OP_FlipSint32Ptr,
13722OP_FlipSint32MemberPtr,
13723OP_FlipSint32Float,
13724OP_FlipUint32Sint8,
13725OP_FlipUint32Uint8,
13726OP_FlipUint32Sint16,
13727OP_FlipUint32Uint16,
13728OP_FlipUint32Sint32,
13729OP_FlipUint32Uint32,
13730OP_FlipUint32Sint64,
13731OP_FlipUint32Uint64,
13732OP_FlipUint32IntAP,
13733OP_FlipUint32IntAPS,
13734OP_FlipUint32Bool,
13735OP_FlipUint32FixedPoint,
13736OP_FlipUint32Ptr,
13737OP_FlipUint32MemberPtr,
13738OP_FlipUint32Float,
13739OP_FlipSint64Sint8,
13740OP_FlipSint64Uint8,
13741OP_FlipSint64Sint16,
13742OP_FlipSint64Uint16,
13743OP_FlipSint64Sint32,
13744OP_FlipSint64Uint32,
13745OP_FlipSint64Sint64,
13746OP_FlipSint64Uint64,
13747OP_FlipSint64IntAP,
13748OP_FlipSint64IntAPS,
13749OP_FlipSint64Bool,
13750OP_FlipSint64FixedPoint,
13751OP_FlipSint64Ptr,
13752OP_FlipSint64MemberPtr,
13753OP_FlipSint64Float,
13754OP_FlipUint64Sint8,
13755OP_FlipUint64Uint8,
13756OP_FlipUint64Sint16,
13757OP_FlipUint64Uint16,
13758OP_FlipUint64Sint32,
13759OP_FlipUint64Uint32,
13760OP_FlipUint64Sint64,
13761OP_FlipUint64Uint64,
13762OP_FlipUint64IntAP,
13763OP_FlipUint64IntAPS,
13764OP_FlipUint64Bool,
13765OP_FlipUint64FixedPoint,
13766OP_FlipUint64Ptr,
13767OP_FlipUint64MemberPtr,
13768OP_FlipUint64Float,
13769OP_FlipIntAPSint8,
13770OP_FlipIntAPUint8,
13771OP_FlipIntAPSint16,
13772OP_FlipIntAPUint16,
13773OP_FlipIntAPSint32,
13774OP_FlipIntAPUint32,
13775OP_FlipIntAPSint64,
13776OP_FlipIntAPUint64,
13777OP_FlipIntAPIntAP,
13778OP_FlipIntAPIntAPS,
13779OP_FlipIntAPBool,
13780OP_FlipIntAPFixedPoint,
13781OP_FlipIntAPPtr,
13782OP_FlipIntAPMemberPtr,
13783OP_FlipIntAPFloat,
13784OP_FlipIntAPSSint8,
13785OP_FlipIntAPSUint8,
13786OP_FlipIntAPSSint16,
13787OP_FlipIntAPSUint16,
13788OP_FlipIntAPSSint32,
13789OP_FlipIntAPSUint32,
13790OP_FlipIntAPSSint64,
13791OP_FlipIntAPSUint64,
13792OP_FlipIntAPSIntAP,
13793OP_FlipIntAPSIntAPS,
13794OP_FlipIntAPSBool,
13795OP_FlipIntAPSFixedPoint,
13796OP_FlipIntAPSPtr,
13797OP_FlipIntAPSMemberPtr,
13798OP_FlipIntAPSFloat,
13799OP_FlipBoolSint8,
13800OP_FlipBoolUint8,
13801OP_FlipBoolSint16,
13802OP_FlipBoolUint16,
13803OP_FlipBoolSint32,
13804OP_FlipBoolUint32,
13805OP_FlipBoolSint64,
13806OP_FlipBoolUint64,
13807OP_FlipBoolIntAP,
13808OP_FlipBoolIntAPS,
13809OP_FlipBoolBool,
13810OP_FlipBoolFixedPoint,
13811OP_FlipBoolPtr,
13812OP_FlipBoolMemberPtr,
13813OP_FlipBoolFloat,
13814OP_FlipFixedPointSint8,
13815OP_FlipFixedPointUint8,
13816OP_FlipFixedPointSint16,
13817OP_FlipFixedPointUint16,
13818OP_FlipFixedPointSint32,
13819OP_FlipFixedPointUint32,
13820OP_FlipFixedPointSint64,
13821OP_FlipFixedPointUint64,
13822OP_FlipFixedPointIntAP,
13823OP_FlipFixedPointIntAPS,
13824OP_FlipFixedPointBool,
13825OP_FlipFixedPointFixedPoint,
13826OP_FlipFixedPointPtr,
13827OP_FlipFixedPointMemberPtr,
13828OP_FlipFixedPointFloat,
13829OP_FlipPtrSint8,
13830OP_FlipPtrUint8,
13831OP_FlipPtrSint16,
13832OP_FlipPtrUint16,
13833OP_FlipPtrSint32,
13834OP_FlipPtrUint32,
13835OP_FlipPtrSint64,
13836OP_FlipPtrUint64,
13837OP_FlipPtrIntAP,
13838OP_FlipPtrIntAPS,
13839OP_FlipPtrBool,
13840OP_FlipPtrFixedPoint,
13841OP_FlipPtrPtr,
13842OP_FlipPtrMemberPtr,
13843OP_FlipPtrFloat,
13844OP_FlipMemberPtrSint8,
13845OP_FlipMemberPtrUint8,
13846OP_FlipMemberPtrSint16,
13847OP_FlipMemberPtrUint16,
13848OP_FlipMemberPtrSint32,
13849OP_FlipMemberPtrUint32,
13850OP_FlipMemberPtrSint64,
13851OP_FlipMemberPtrUint64,
13852OP_FlipMemberPtrIntAP,
13853OP_FlipMemberPtrIntAPS,
13854OP_FlipMemberPtrBool,
13855OP_FlipMemberPtrFixedPoint,
13856OP_FlipMemberPtrPtr,
13857OP_FlipMemberPtrMemberPtr,
13858OP_FlipMemberPtrFloat,
13859OP_FlipFloatSint8,
13860OP_FlipFloatUint8,
13861OP_FlipFloatSint16,
13862OP_FlipFloatUint16,
13863OP_FlipFloatSint32,
13864OP_FlipFloatUint32,
13865OP_FlipFloatSint64,
13866OP_FlipFloatUint64,
13867OP_FlipFloatIntAP,
13868OP_FlipFloatIntAPS,
13869OP_FlipFloatBool,
13870OP_FlipFloatFixedPoint,
13871OP_FlipFloatPtr,
13872OP_FlipFloatMemberPtr,
13873OP_FlipFloatFloat,
13874#endif
13875#ifdef GET_INTERP
13876case OP_FlipSint8Sint8: {
13877 if (!Flip<PT_Sint8, PT_Sint8>(S, OpPC))
13878 return false;
13879 continue;
13880}
13881case OP_FlipSint8Uint8: {
13882 if (!Flip<PT_Sint8, PT_Uint8>(S, OpPC))
13883 return false;
13884 continue;
13885}
13886case OP_FlipSint8Sint16: {
13887 if (!Flip<PT_Sint8, PT_Sint16>(S, OpPC))
13888 return false;
13889 continue;
13890}
13891case OP_FlipSint8Uint16: {
13892 if (!Flip<PT_Sint8, PT_Uint16>(S, OpPC))
13893 return false;
13894 continue;
13895}
13896case OP_FlipSint8Sint32: {
13897 if (!Flip<PT_Sint8, PT_Sint32>(S, OpPC))
13898 return false;
13899 continue;
13900}
13901case OP_FlipSint8Uint32: {
13902 if (!Flip<PT_Sint8, PT_Uint32>(S, OpPC))
13903 return false;
13904 continue;
13905}
13906case OP_FlipSint8Sint64: {
13907 if (!Flip<PT_Sint8, PT_Sint64>(S, OpPC))
13908 return false;
13909 continue;
13910}
13911case OP_FlipSint8Uint64: {
13912 if (!Flip<PT_Sint8, PT_Uint64>(S, OpPC))
13913 return false;
13914 continue;
13915}
13916case OP_FlipSint8IntAP: {
13917 if (!Flip<PT_Sint8, PT_IntAP>(S, OpPC))
13918 return false;
13919 continue;
13920}
13921case OP_FlipSint8IntAPS: {
13922 if (!Flip<PT_Sint8, PT_IntAPS>(S, OpPC))
13923 return false;
13924 continue;
13925}
13926case OP_FlipSint8Bool: {
13927 if (!Flip<PT_Sint8, PT_Bool>(S, OpPC))
13928 return false;
13929 continue;
13930}
13931case OP_FlipSint8FixedPoint: {
13932 if (!Flip<PT_Sint8, PT_FixedPoint>(S, OpPC))
13933 return false;
13934 continue;
13935}
13936case OP_FlipSint8Ptr: {
13937 if (!Flip<PT_Sint8, PT_Ptr>(S, OpPC))
13938 return false;
13939 continue;
13940}
13941case OP_FlipSint8MemberPtr: {
13942 if (!Flip<PT_Sint8, PT_MemberPtr>(S, OpPC))
13943 return false;
13944 continue;
13945}
13946case OP_FlipSint8Float: {
13947 if (!Flip<PT_Sint8, PT_Float>(S, OpPC))
13948 return false;
13949 continue;
13950}
13951case OP_FlipUint8Sint8: {
13952 if (!Flip<PT_Uint8, PT_Sint8>(S, OpPC))
13953 return false;
13954 continue;
13955}
13956case OP_FlipUint8Uint8: {
13957 if (!Flip<PT_Uint8, PT_Uint8>(S, OpPC))
13958 return false;
13959 continue;
13960}
13961case OP_FlipUint8Sint16: {
13962 if (!Flip<PT_Uint8, PT_Sint16>(S, OpPC))
13963 return false;
13964 continue;
13965}
13966case OP_FlipUint8Uint16: {
13967 if (!Flip<PT_Uint8, PT_Uint16>(S, OpPC))
13968 return false;
13969 continue;
13970}
13971case OP_FlipUint8Sint32: {
13972 if (!Flip<PT_Uint8, PT_Sint32>(S, OpPC))
13973 return false;
13974 continue;
13975}
13976case OP_FlipUint8Uint32: {
13977 if (!Flip<PT_Uint8, PT_Uint32>(S, OpPC))
13978 return false;
13979 continue;
13980}
13981case OP_FlipUint8Sint64: {
13982 if (!Flip<PT_Uint8, PT_Sint64>(S, OpPC))
13983 return false;
13984 continue;
13985}
13986case OP_FlipUint8Uint64: {
13987 if (!Flip<PT_Uint8, PT_Uint64>(S, OpPC))
13988 return false;
13989 continue;
13990}
13991case OP_FlipUint8IntAP: {
13992 if (!Flip<PT_Uint8, PT_IntAP>(S, OpPC))
13993 return false;
13994 continue;
13995}
13996case OP_FlipUint8IntAPS: {
13997 if (!Flip<PT_Uint8, PT_IntAPS>(S, OpPC))
13998 return false;
13999 continue;
14000}
14001case OP_FlipUint8Bool: {
14002 if (!Flip<PT_Uint8, PT_Bool>(S, OpPC))
14003 return false;
14004 continue;
14005}
14006case OP_FlipUint8FixedPoint: {
14007 if (!Flip<PT_Uint8, PT_FixedPoint>(S, OpPC))
14008 return false;
14009 continue;
14010}
14011case OP_FlipUint8Ptr: {
14012 if (!Flip<PT_Uint8, PT_Ptr>(S, OpPC))
14013 return false;
14014 continue;
14015}
14016case OP_FlipUint8MemberPtr: {
14017 if (!Flip<PT_Uint8, PT_MemberPtr>(S, OpPC))
14018 return false;
14019 continue;
14020}
14021case OP_FlipUint8Float: {
14022 if (!Flip<PT_Uint8, PT_Float>(S, OpPC))
14023 return false;
14024 continue;
14025}
14026case OP_FlipSint16Sint8: {
14027 if (!Flip<PT_Sint16, PT_Sint8>(S, OpPC))
14028 return false;
14029 continue;
14030}
14031case OP_FlipSint16Uint8: {
14032 if (!Flip<PT_Sint16, PT_Uint8>(S, OpPC))
14033 return false;
14034 continue;
14035}
14036case OP_FlipSint16Sint16: {
14037 if (!Flip<PT_Sint16, PT_Sint16>(S, OpPC))
14038 return false;
14039 continue;
14040}
14041case OP_FlipSint16Uint16: {
14042 if (!Flip<PT_Sint16, PT_Uint16>(S, OpPC))
14043 return false;
14044 continue;
14045}
14046case OP_FlipSint16Sint32: {
14047 if (!Flip<PT_Sint16, PT_Sint32>(S, OpPC))
14048 return false;
14049 continue;
14050}
14051case OP_FlipSint16Uint32: {
14052 if (!Flip<PT_Sint16, PT_Uint32>(S, OpPC))
14053 return false;
14054 continue;
14055}
14056case OP_FlipSint16Sint64: {
14057 if (!Flip<PT_Sint16, PT_Sint64>(S, OpPC))
14058 return false;
14059 continue;
14060}
14061case OP_FlipSint16Uint64: {
14062 if (!Flip<PT_Sint16, PT_Uint64>(S, OpPC))
14063 return false;
14064 continue;
14065}
14066case OP_FlipSint16IntAP: {
14067 if (!Flip<PT_Sint16, PT_IntAP>(S, OpPC))
14068 return false;
14069 continue;
14070}
14071case OP_FlipSint16IntAPS: {
14072 if (!Flip<PT_Sint16, PT_IntAPS>(S, OpPC))
14073 return false;
14074 continue;
14075}
14076case OP_FlipSint16Bool: {
14077 if (!Flip<PT_Sint16, PT_Bool>(S, OpPC))
14078 return false;
14079 continue;
14080}
14081case OP_FlipSint16FixedPoint: {
14082 if (!Flip<PT_Sint16, PT_FixedPoint>(S, OpPC))
14083 return false;
14084 continue;
14085}
14086case OP_FlipSint16Ptr: {
14087 if (!Flip<PT_Sint16, PT_Ptr>(S, OpPC))
14088 return false;
14089 continue;
14090}
14091case OP_FlipSint16MemberPtr: {
14092 if (!Flip<PT_Sint16, PT_MemberPtr>(S, OpPC))
14093 return false;
14094 continue;
14095}
14096case OP_FlipSint16Float: {
14097 if (!Flip<PT_Sint16, PT_Float>(S, OpPC))
14098 return false;
14099 continue;
14100}
14101case OP_FlipUint16Sint8: {
14102 if (!Flip<PT_Uint16, PT_Sint8>(S, OpPC))
14103 return false;
14104 continue;
14105}
14106case OP_FlipUint16Uint8: {
14107 if (!Flip<PT_Uint16, PT_Uint8>(S, OpPC))
14108 return false;
14109 continue;
14110}
14111case OP_FlipUint16Sint16: {
14112 if (!Flip<PT_Uint16, PT_Sint16>(S, OpPC))
14113 return false;
14114 continue;
14115}
14116case OP_FlipUint16Uint16: {
14117 if (!Flip<PT_Uint16, PT_Uint16>(S, OpPC))
14118 return false;
14119 continue;
14120}
14121case OP_FlipUint16Sint32: {
14122 if (!Flip<PT_Uint16, PT_Sint32>(S, OpPC))
14123 return false;
14124 continue;
14125}
14126case OP_FlipUint16Uint32: {
14127 if (!Flip<PT_Uint16, PT_Uint32>(S, OpPC))
14128 return false;
14129 continue;
14130}
14131case OP_FlipUint16Sint64: {
14132 if (!Flip<PT_Uint16, PT_Sint64>(S, OpPC))
14133 return false;
14134 continue;
14135}
14136case OP_FlipUint16Uint64: {
14137 if (!Flip<PT_Uint16, PT_Uint64>(S, OpPC))
14138 return false;
14139 continue;
14140}
14141case OP_FlipUint16IntAP: {
14142 if (!Flip<PT_Uint16, PT_IntAP>(S, OpPC))
14143 return false;
14144 continue;
14145}
14146case OP_FlipUint16IntAPS: {
14147 if (!Flip<PT_Uint16, PT_IntAPS>(S, OpPC))
14148 return false;
14149 continue;
14150}
14151case OP_FlipUint16Bool: {
14152 if (!Flip<PT_Uint16, PT_Bool>(S, OpPC))
14153 return false;
14154 continue;
14155}
14156case OP_FlipUint16FixedPoint: {
14157 if (!Flip<PT_Uint16, PT_FixedPoint>(S, OpPC))
14158 return false;
14159 continue;
14160}
14161case OP_FlipUint16Ptr: {
14162 if (!Flip<PT_Uint16, PT_Ptr>(S, OpPC))
14163 return false;
14164 continue;
14165}
14166case OP_FlipUint16MemberPtr: {
14167 if (!Flip<PT_Uint16, PT_MemberPtr>(S, OpPC))
14168 return false;
14169 continue;
14170}
14171case OP_FlipUint16Float: {
14172 if (!Flip<PT_Uint16, PT_Float>(S, OpPC))
14173 return false;
14174 continue;
14175}
14176case OP_FlipSint32Sint8: {
14177 if (!Flip<PT_Sint32, PT_Sint8>(S, OpPC))
14178 return false;
14179 continue;
14180}
14181case OP_FlipSint32Uint8: {
14182 if (!Flip<PT_Sint32, PT_Uint8>(S, OpPC))
14183 return false;
14184 continue;
14185}
14186case OP_FlipSint32Sint16: {
14187 if (!Flip<PT_Sint32, PT_Sint16>(S, OpPC))
14188 return false;
14189 continue;
14190}
14191case OP_FlipSint32Uint16: {
14192 if (!Flip<PT_Sint32, PT_Uint16>(S, OpPC))
14193 return false;
14194 continue;
14195}
14196case OP_FlipSint32Sint32: {
14197 if (!Flip<PT_Sint32, PT_Sint32>(S, OpPC))
14198 return false;
14199 continue;
14200}
14201case OP_FlipSint32Uint32: {
14202 if (!Flip<PT_Sint32, PT_Uint32>(S, OpPC))
14203 return false;
14204 continue;
14205}
14206case OP_FlipSint32Sint64: {
14207 if (!Flip<PT_Sint32, PT_Sint64>(S, OpPC))
14208 return false;
14209 continue;
14210}
14211case OP_FlipSint32Uint64: {
14212 if (!Flip<PT_Sint32, PT_Uint64>(S, OpPC))
14213 return false;
14214 continue;
14215}
14216case OP_FlipSint32IntAP: {
14217 if (!Flip<PT_Sint32, PT_IntAP>(S, OpPC))
14218 return false;
14219 continue;
14220}
14221case OP_FlipSint32IntAPS: {
14222 if (!Flip<PT_Sint32, PT_IntAPS>(S, OpPC))
14223 return false;
14224 continue;
14225}
14226case OP_FlipSint32Bool: {
14227 if (!Flip<PT_Sint32, PT_Bool>(S, OpPC))
14228 return false;
14229 continue;
14230}
14231case OP_FlipSint32FixedPoint: {
14232 if (!Flip<PT_Sint32, PT_FixedPoint>(S, OpPC))
14233 return false;
14234 continue;
14235}
14236case OP_FlipSint32Ptr: {
14237 if (!Flip<PT_Sint32, PT_Ptr>(S, OpPC))
14238 return false;
14239 continue;
14240}
14241case OP_FlipSint32MemberPtr: {
14242 if (!Flip<PT_Sint32, PT_MemberPtr>(S, OpPC))
14243 return false;
14244 continue;
14245}
14246case OP_FlipSint32Float: {
14247 if (!Flip<PT_Sint32, PT_Float>(S, OpPC))
14248 return false;
14249 continue;
14250}
14251case OP_FlipUint32Sint8: {
14252 if (!Flip<PT_Uint32, PT_Sint8>(S, OpPC))
14253 return false;
14254 continue;
14255}
14256case OP_FlipUint32Uint8: {
14257 if (!Flip<PT_Uint32, PT_Uint8>(S, OpPC))
14258 return false;
14259 continue;
14260}
14261case OP_FlipUint32Sint16: {
14262 if (!Flip<PT_Uint32, PT_Sint16>(S, OpPC))
14263 return false;
14264 continue;
14265}
14266case OP_FlipUint32Uint16: {
14267 if (!Flip<PT_Uint32, PT_Uint16>(S, OpPC))
14268 return false;
14269 continue;
14270}
14271case OP_FlipUint32Sint32: {
14272 if (!Flip<PT_Uint32, PT_Sint32>(S, OpPC))
14273 return false;
14274 continue;
14275}
14276case OP_FlipUint32Uint32: {
14277 if (!Flip<PT_Uint32, PT_Uint32>(S, OpPC))
14278 return false;
14279 continue;
14280}
14281case OP_FlipUint32Sint64: {
14282 if (!Flip<PT_Uint32, PT_Sint64>(S, OpPC))
14283 return false;
14284 continue;
14285}
14286case OP_FlipUint32Uint64: {
14287 if (!Flip<PT_Uint32, PT_Uint64>(S, OpPC))
14288 return false;
14289 continue;
14290}
14291case OP_FlipUint32IntAP: {
14292 if (!Flip<PT_Uint32, PT_IntAP>(S, OpPC))
14293 return false;
14294 continue;
14295}
14296case OP_FlipUint32IntAPS: {
14297 if (!Flip<PT_Uint32, PT_IntAPS>(S, OpPC))
14298 return false;
14299 continue;
14300}
14301case OP_FlipUint32Bool: {
14302 if (!Flip<PT_Uint32, PT_Bool>(S, OpPC))
14303 return false;
14304 continue;
14305}
14306case OP_FlipUint32FixedPoint: {
14307 if (!Flip<PT_Uint32, PT_FixedPoint>(S, OpPC))
14308 return false;
14309 continue;
14310}
14311case OP_FlipUint32Ptr: {
14312 if (!Flip<PT_Uint32, PT_Ptr>(S, OpPC))
14313 return false;
14314 continue;
14315}
14316case OP_FlipUint32MemberPtr: {
14317 if (!Flip<PT_Uint32, PT_MemberPtr>(S, OpPC))
14318 return false;
14319 continue;
14320}
14321case OP_FlipUint32Float: {
14322 if (!Flip<PT_Uint32, PT_Float>(S, OpPC))
14323 return false;
14324 continue;
14325}
14326case OP_FlipSint64Sint8: {
14327 if (!Flip<PT_Sint64, PT_Sint8>(S, OpPC))
14328 return false;
14329 continue;
14330}
14331case OP_FlipSint64Uint8: {
14332 if (!Flip<PT_Sint64, PT_Uint8>(S, OpPC))
14333 return false;
14334 continue;
14335}
14336case OP_FlipSint64Sint16: {
14337 if (!Flip<PT_Sint64, PT_Sint16>(S, OpPC))
14338 return false;
14339 continue;
14340}
14341case OP_FlipSint64Uint16: {
14342 if (!Flip<PT_Sint64, PT_Uint16>(S, OpPC))
14343 return false;
14344 continue;
14345}
14346case OP_FlipSint64Sint32: {
14347 if (!Flip<PT_Sint64, PT_Sint32>(S, OpPC))
14348 return false;
14349 continue;
14350}
14351case OP_FlipSint64Uint32: {
14352 if (!Flip<PT_Sint64, PT_Uint32>(S, OpPC))
14353 return false;
14354 continue;
14355}
14356case OP_FlipSint64Sint64: {
14357 if (!Flip<PT_Sint64, PT_Sint64>(S, OpPC))
14358 return false;
14359 continue;
14360}
14361case OP_FlipSint64Uint64: {
14362 if (!Flip<PT_Sint64, PT_Uint64>(S, OpPC))
14363 return false;
14364 continue;
14365}
14366case OP_FlipSint64IntAP: {
14367 if (!Flip<PT_Sint64, PT_IntAP>(S, OpPC))
14368 return false;
14369 continue;
14370}
14371case OP_FlipSint64IntAPS: {
14372 if (!Flip<PT_Sint64, PT_IntAPS>(S, OpPC))
14373 return false;
14374 continue;
14375}
14376case OP_FlipSint64Bool: {
14377 if (!Flip<PT_Sint64, PT_Bool>(S, OpPC))
14378 return false;
14379 continue;
14380}
14381case OP_FlipSint64FixedPoint: {
14382 if (!Flip<PT_Sint64, PT_FixedPoint>(S, OpPC))
14383 return false;
14384 continue;
14385}
14386case OP_FlipSint64Ptr: {
14387 if (!Flip<PT_Sint64, PT_Ptr>(S, OpPC))
14388 return false;
14389 continue;
14390}
14391case OP_FlipSint64MemberPtr: {
14392 if (!Flip<PT_Sint64, PT_MemberPtr>(S, OpPC))
14393 return false;
14394 continue;
14395}
14396case OP_FlipSint64Float: {
14397 if (!Flip<PT_Sint64, PT_Float>(S, OpPC))
14398 return false;
14399 continue;
14400}
14401case OP_FlipUint64Sint8: {
14402 if (!Flip<PT_Uint64, PT_Sint8>(S, OpPC))
14403 return false;
14404 continue;
14405}
14406case OP_FlipUint64Uint8: {
14407 if (!Flip<PT_Uint64, PT_Uint8>(S, OpPC))
14408 return false;
14409 continue;
14410}
14411case OP_FlipUint64Sint16: {
14412 if (!Flip<PT_Uint64, PT_Sint16>(S, OpPC))
14413 return false;
14414 continue;
14415}
14416case OP_FlipUint64Uint16: {
14417 if (!Flip<PT_Uint64, PT_Uint16>(S, OpPC))
14418 return false;
14419 continue;
14420}
14421case OP_FlipUint64Sint32: {
14422 if (!Flip<PT_Uint64, PT_Sint32>(S, OpPC))
14423 return false;
14424 continue;
14425}
14426case OP_FlipUint64Uint32: {
14427 if (!Flip<PT_Uint64, PT_Uint32>(S, OpPC))
14428 return false;
14429 continue;
14430}
14431case OP_FlipUint64Sint64: {
14432 if (!Flip<PT_Uint64, PT_Sint64>(S, OpPC))
14433 return false;
14434 continue;
14435}
14436case OP_FlipUint64Uint64: {
14437 if (!Flip<PT_Uint64, PT_Uint64>(S, OpPC))
14438 return false;
14439 continue;
14440}
14441case OP_FlipUint64IntAP: {
14442 if (!Flip<PT_Uint64, PT_IntAP>(S, OpPC))
14443 return false;
14444 continue;
14445}
14446case OP_FlipUint64IntAPS: {
14447 if (!Flip<PT_Uint64, PT_IntAPS>(S, OpPC))
14448 return false;
14449 continue;
14450}
14451case OP_FlipUint64Bool: {
14452 if (!Flip<PT_Uint64, PT_Bool>(S, OpPC))
14453 return false;
14454 continue;
14455}
14456case OP_FlipUint64FixedPoint: {
14457 if (!Flip<PT_Uint64, PT_FixedPoint>(S, OpPC))
14458 return false;
14459 continue;
14460}
14461case OP_FlipUint64Ptr: {
14462 if (!Flip<PT_Uint64, PT_Ptr>(S, OpPC))
14463 return false;
14464 continue;
14465}
14466case OP_FlipUint64MemberPtr: {
14467 if (!Flip<PT_Uint64, PT_MemberPtr>(S, OpPC))
14468 return false;
14469 continue;
14470}
14471case OP_FlipUint64Float: {
14472 if (!Flip<PT_Uint64, PT_Float>(S, OpPC))
14473 return false;
14474 continue;
14475}
14476case OP_FlipIntAPSint8: {
14477 if (!Flip<PT_IntAP, PT_Sint8>(S, OpPC))
14478 return false;
14479 continue;
14480}
14481case OP_FlipIntAPUint8: {
14482 if (!Flip<PT_IntAP, PT_Uint8>(S, OpPC))
14483 return false;
14484 continue;
14485}
14486case OP_FlipIntAPSint16: {
14487 if (!Flip<PT_IntAP, PT_Sint16>(S, OpPC))
14488 return false;
14489 continue;
14490}
14491case OP_FlipIntAPUint16: {
14492 if (!Flip<PT_IntAP, PT_Uint16>(S, OpPC))
14493 return false;
14494 continue;
14495}
14496case OP_FlipIntAPSint32: {
14497 if (!Flip<PT_IntAP, PT_Sint32>(S, OpPC))
14498 return false;
14499 continue;
14500}
14501case OP_FlipIntAPUint32: {
14502 if (!Flip<PT_IntAP, PT_Uint32>(S, OpPC))
14503 return false;
14504 continue;
14505}
14506case OP_FlipIntAPSint64: {
14507 if (!Flip<PT_IntAP, PT_Sint64>(S, OpPC))
14508 return false;
14509 continue;
14510}
14511case OP_FlipIntAPUint64: {
14512 if (!Flip<PT_IntAP, PT_Uint64>(S, OpPC))
14513 return false;
14514 continue;
14515}
14516case OP_FlipIntAPIntAP: {
14517 if (!Flip<PT_IntAP, PT_IntAP>(S, OpPC))
14518 return false;
14519 continue;
14520}
14521case OP_FlipIntAPIntAPS: {
14522 if (!Flip<PT_IntAP, PT_IntAPS>(S, OpPC))
14523 return false;
14524 continue;
14525}
14526case OP_FlipIntAPBool: {
14527 if (!Flip<PT_IntAP, PT_Bool>(S, OpPC))
14528 return false;
14529 continue;
14530}
14531case OP_FlipIntAPFixedPoint: {
14532 if (!Flip<PT_IntAP, PT_FixedPoint>(S, OpPC))
14533 return false;
14534 continue;
14535}
14536case OP_FlipIntAPPtr: {
14537 if (!Flip<PT_IntAP, PT_Ptr>(S, OpPC))
14538 return false;
14539 continue;
14540}
14541case OP_FlipIntAPMemberPtr: {
14542 if (!Flip<PT_IntAP, PT_MemberPtr>(S, OpPC))
14543 return false;
14544 continue;
14545}
14546case OP_FlipIntAPFloat: {
14547 if (!Flip<PT_IntAP, PT_Float>(S, OpPC))
14548 return false;
14549 continue;
14550}
14551case OP_FlipIntAPSSint8: {
14552 if (!Flip<PT_IntAPS, PT_Sint8>(S, OpPC))
14553 return false;
14554 continue;
14555}
14556case OP_FlipIntAPSUint8: {
14557 if (!Flip<PT_IntAPS, PT_Uint8>(S, OpPC))
14558 return false;
14559 continue;
14560}
14561case OP_FlipIntAPSSint16: {
14562 if (!Flip<PT_IntAPS, PT_Sint16>(S, OpPC))
14563 return false;
14564 continue;
14565}
14566case OP_FlipIntAPSUint16: {
14567 if (!Flip<PT_IntAPS, PT_Uint16>(S, OpPC))
14568 return false;
14569 continue;
14570}
14571case OP_FlipIntAPSSint32: {
14572 if (!Flip<PT_IntAPS, PT_Sint32>(S, OpPC))
14573 return false;
14574 continue;
14575}
14576case OP_FlipIntAPSUint32: {
14577 if (!Flip<PT_IntAPS, PT_Uint32>(S, OpPC))
14578 return false;
14579 continue;
14580}
14581case OP_FlipIntAPSSint64: {
14582 if (!Flip<PT_IntAPS, PT_Sint64>(S, OpPC))
14583 return false;
14584 continue;
14585}
14586case OP_FlipIntAPSUint64: {
14587 if (!Flip<PT_IntAPS, PT_Uint64>(S, OpPC))
14588 return false;
14589 continue;
14590}
14591case OP_FlipIntAPSIntAP: {
14592 if (!Flip<PT_IntAPS, PT_IntAP>(S, OpPC))
14593 return false;
14594 continue;
14595}
14596case OP_FlipIntAPSIntAPS: {
14597 if (!Flip<PT_IntAPS, PT_IntAPS>(S, OpPC))
14598 return false;
14599 continue;
14600}
14601case OP_FlipIntAPSBool: {
14602 if (!Flip<PT_IntAPS, PT_Bool>(S, OpPC))
14603 return false;
14604 continue;
14605}
14606case OP_FlipIntAPSFixedPoint: {
14607 if (!Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC))
14608 return false;
14609 continue;
14610}
14611case OP_FlipIntAPSPtr: {
14612 if (!Flip<PT_IntAPS, PT_Ptr>(S, OpPC))
14613 return false;
14614 continue;
14615}
14616case OP_FlipIntAPSMemberPtr: {
14617 if (!Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC))
14618 return false;
14619 continue;
14620}
14621case OP_FlipIntAPSFloat: {
14622 if (!Flip<PT_IntAPS, PT_Float>(S, OpPC))
14623 return false;
14624 continue;
14625}
14626case OP_FlipBoolSint8: {
14627 if (!Flip<PT_Bool, PT_Sint8>(S, OpPC))
14628 return false;
14629 continue;
14630}
14631case OP_FlipBoolUint8: {
14632 if (!Flip<PT_Bool, PT_Uint8>(S, OpPC))
14633 return false;
14634 continue;
14635}
14636case OP_FlipBoolSint16: {
14637 if (!Flip<PT_Bool, PT_Sint16>(S, OpPC))
14638 return false;
14639 continue;
14640}
14641case OP_FlipBoolUint16: {
14642 if (!Flip<PT_Bool, PT_Uint16>(S, OpPC))
14643 return false;
14644 continue;
14645}
14646case OP_FlipBoolSint32: {
14647 if (!Flip<PT_Bool, PT_Sint32>(S, OpPC))
14648 return false;
14649 continue;
14650}
14651case OP_FlipBoolUint32: {
14652 if (!Flip<PT_Bool, PT_Uint32>(S, OpPC))
14653 return false;
14654 continue;
14655}
14656case OP_FlipBoolSint64: {
14657 if (!Flip<PT_Bool, PT_Sint64>(S, OpPC))
14658 return false;
14659 continue;
14660}
14661case OP_FlipBoolUint64: {
14662 if (!Flip<PT_Bool, PT_Uint64>(S, OpPC))
14663 return false;
14664 continue;
14665}
14666case OP_FlipBoolIntAP: {
14667 if (!Flip<PT_Bool, PT_IntAP>(S, OpPC))
14668 return false;
14669 continue;
14670}
14671case OP_FlipBoolIntAPS: {
14672 if (!Flip<PT_Bool, PT_IntAPS>(S, OpPC))
14673 return false;
14674 continue;
14675}
14676case OP_FlipBoolBool: {
14677 if (!Flip<PT_Bool, PT_Bool>(S, OpPC))
14678 return false;
14679 continue;
14680}
14681case OP_FlipBoolFixedPoint: {
14682 if (!Flip<PT_Bool, PT_FixedPoint>(S, OpPC))
14683 return false;
14684 continue;
14685}
14686case OP_FlipBoolPtr: {
14687 if (!Flip<PT_Bool, PT_Ptr>(S, OpPC))
14688 return false;
14689 continue;
14690}
14691case OP_FlipBoolMemberPtr: {
14692 if (!Flip<PT_Bool, PT_MemberPtr>(S, OpPC))
14693 return false;
14694 continue;
14695}
14696case OP_FlipBoolFloat: {
14697 if (!Flip<PT_Bool, PT_Float>(S, OpPC))
14698 return false;
14699 continue;
14700}
14701case OP_FlipFixedPointSint8: {
14702 if (!Flip<PT_FixedPoint, PT_Sint8>(S, OpPC))
14703 return false;
14704 continue;
14705}
14706case OP_FlipFixedPointUint8: {
14707 if (!Flip<PT_FixedPoint, PT_Uint8>(S, OpPC))
14708 return false;
14709 continue;
14710}
14711case OP_FlipFixedPointSint16: {
14712 if (!Flip<PT_FixedPoint, PT_Sint16>(S, OpPC))
14713 return false;
14714 continue;
14715}
14716case OP_FlipFixedPointUint16: {
14717 if (!Flip<PT_FixedPoint, PT_Uint16>(S, OpPC))
14718 return false;
14719 continue;
14720}
14721case OP_FlipFixedPointSint32: {
14722 if (!Flip<PT_FixedPoint, PT_Sint32>(S, OpPC))
14723 return false;
14724 continue;
14725}
14726case OP_FlipFixedPointUint32: {
14727 if (!Flip<PT_FixedPoint, PT_Uint32>(S, OpPC))
14728 return false;
14729 continue;
14730}
14731case OP_FlipFixedPointSint64: {
14732 if (!Flip<PT_FixedPoint, PT_Sint64>(S, OpPC))
14733 return false;
14734 continue;
14735}
14736case OP_FlipFixedPointUint64: {
14737 if (!Flip<PT_FixedPoint, PT_Uint64>(S, OpPC))
14738 return false;
14739 continue;
14740}
14741case OP_FlipFixedPointIntAP: {
14742 if (!Flip<PT_FixedPoint, PT_IntAP>(S, OpPC))
14743 return false;
14744 continue;
14745}
14746case OP_FlipFixedPointIntAPS: {
14747 if (!Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC))
14748 return false;
14749 continue;
14750}
14751case OP_FlipFixedPointBool: {
14752 if (!Flip<PT_FixedPoint, PT_Bool>(S, OpPC))
14753 return false;
14754 continue;
14755}
14756case OP_FlipFixedPointFixedPoint: {
14757 if (!Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC))
14758 return false;
14759 continue;
14760}
14761case OP_FlipFixedPointPtr: {
14762 if (!Flip<PT_FixedPoint, PT_Ptr>(S, OpPC))
14763 return false;
14764 continue;
14765}
14766case OP_FlipFixedPointMemberPtr: {
14767 if (!Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC))
14768 return false;
14769 continue;
14770}
14771case OP_FlipFixedPointFloat: {
14772 if (!Flip<PT_FixedPoint, PT_Float>(S, OpPC))
14773 return false;
14774 continue;
14775}
14776case OP_FlipPtrSint8: {
14777 if (!Flip<PT_Ptr, PT_Sint8>(S, OpPC))
14778 return false;
14779 continue;
14780}
14781case OP_FlipPtrUint8: {
14782 if (!Flip<PT_Ptr, PT_Uint8>(S, OpPC))
14783 return false;
14784 continue;
14785}
14786case OP_FlipPtrSint16: {
14787 if (!Flip<PT_Ptr, PT_Sint16>(S, OpPC))
14788 return false;
14789 continue;
14790}
14791case OP_FlipPtrUint16: {
14792 if (!Flip<PT_Ptr, PT_Uint16>(S, OpPC))
14793 return false;
14794 continue;
14795}
14796case OP_FlipPtrSint32: {
14797 if (!Flip<PT_Ptr, PT_Sint32>(S, OpPC))
14798 return false;
14799 continue;
14800}
14801case OP_FlipPtrUint32: {
14802 if (!Flip<PT_Ptr, PT_Uint32>(S, OpPC))
14803 return false;
14804 continue;
14805}
14806case OP_FlipPtrSint64: {
14807 if (!Flip<PT_Ptr, PT_Sint64>(S, OpPC))
14808 return false;
14809 continue;
14810}
14811case OP_FlipPtrUint64: {
14812 if (!Flip<PT_Ptr, PT_Uint64>(S, OpPC))
14813 return false;
14814 continue;
14815}
14816case OP_FlipPtrIntAP: {
14817 if (!Flip<PT_Ptr, PT_IntAP>(S, OpPC))
14818 return false;
14819 continue;
14820}
14821case OP_FlipPtrIntAPS: {
14822 if (!Flip<PT_Ptr, PT_IntAPS>(S, OpPC))
14823 return false;
14824 continue;
14825}
14826case OP_FlipPtrBool: {
14827 if (!Flip<PT_Ptr, PT_Bool>(S, OpPC))
14828 return false;
14829 continue;
14830}
14831case OP_FlipPtrFixedPoint: {
14832 if (!Flip<PT_Ptr, PT_FixedPoint>(S, OpPC))
14833 return false;
14834 continue;
14835}
14836case OP_FlipPtrPtr: {
14837 if (!Flip<PT_Ptr, PT_Ptr>(S, OpPC))
14838 return false;
14839 continue;
14840}
14841case OP_FlipPtrMemberPtr: {
14842 if (!Flip<PT_Ptr, PT_MemberPtr>(S, OpPC))
14843 return false;
14844 continue;
14845}
14846case OP_FlipPtrFloat: {
14847 if (!Flip<PT_Ptr, PT_Float>(S, OpPC))
14848 return false;
14849 continue;
14850}
14851case OP_FlipMemberPtrSint8: {
14852 if (!Flip<PT_MemberPtr, PT_Sint8>(S, OpPC))
14853 return false;
14854 continue;
14855}
14856case OP_FlipMemberPtrUint8: {
14857 if (!Flip<PT_MemberPtr, PT_Uint8>(S, OpPC))
14858 return false;
14859 continue;
14860}
14861case OP_FlipMemberPtrSint16: {
14862 if (!Flip<PT_MemberPtr, PT_Sint16>(S, OpPC))
14863 return false;
14864 continue;
14865}
14866case OP_FlipMemberPtrUint16: {
14867 if (!Flip<PT_MemberPtr, PT_Uint16>(S, OpPC))
14868 return false;
14869 continue;
14870}
14871case OP_FlipMemberPtrSint32: {
14872 if (!Flip<PT_MemberPtr, PT_Sint32>(S, OpPC))
14873 return false;
14874 continue;
14875}
14876case OP_FlipMemberPtrUint32: {
14877 if (!Flip<PT_MemberPtr, PT_Uint32>(S, OpPC))
14878 return false;
14879 continue;
14880}
14881case OP_FlipMemberPtrSint64: {
14882 if (!Flip<PT_MemberPtr, PT_Sint64>(S, OpPC))
14883 return false;
14884 continue;
14885}
14886case OP_FlipMemberPtrUint64: {
14887 if (!Flip<PT_MemberPtr, PT_Uint64>(S, OpPC))
14888 return false;
14889 continue;
14890}
14891case OP_FlipMemberPtrIntAP: {
14892 if (!Flip<PT_MemberPtr, PT_IntAP>(S, OpPC))
14893 return false;
14894 continue;
14895}
14896case OP_FlipMemberPtrIntAPS: {
14897 if (!Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC))
14898 return false;
14899 continue;
14900}
14901case OP_FlipMemberPtrBool: {
14902 if (!Flip<PT_MemberPtr, PT_Bool>(S, OpPC))
14903 return false;
14904 continue;
14905}
14906case OP_FlipMemberPtrFixedPoint: {
14907 if (!Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC))
14908 return false;
14909 continue;
14910}
14911case OP_FlipMemberPtrPtr: {
14912 if (!Flip<PT_MemberPtr, PT_Ptr>(S, OpPC))
14913 return false;
14914 continue;
14915}
14916case OP_FlipMemberPtrMemberPtr: {
14917 if (!Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC))
14918 return false;
14919 continue;
14920}
14921case OP_FlipMemberPtrFloat: {
14922 if (!Flip<PT_MemberPtr, PT_Float>(S, OpPC))
14923 return false;
14924 continue;
14925}
14926case OP_FlipFloatSint8: {
14927 if (!Flip<PT_Float, PT_Sint8>(S, OpPC))
14928 return false;
14929 continue;
14930}
14931case OP_FlipFloatUint8: {
14932 if (!Flip<PT_Float, PT_Uint8>(S, OpPC))
14933 return false;
14934 continue;
14935}
14936case OP_FlipFloatSint16: {
14937 if (!Flip<PT_Float, PT_Sint16>(S, OpPC))
14938 return false;
14939 continue;
14940}
14941case OP_FlipFloatUint16: {
14942 if (!Flip<PT_Float, PT_Uint16>(S, OpPC))
14943 return false;
14944 continue;
14945}
14946case OP_FlipFloatSint32: {
14947 if (!Flip<PT_Float, PT_Sint32>(S, OpPC))
14948 return false;
14949 continue;
14950}
14951case OP_FlipFloatUint32: {
14952 if (!Flip<PT_Float, PT_Uint32>(S, OpPC))
14953 return false;
14954 continue;
14955}
14956case OP_FlipFloatSint64: {
14957 if (!Flip<PT_Float, PT_Sint64>(S, OpPC))
14958 return false;
14959 continue;
14960}
14961case OP_FlipFloatUint64: {
14962 if (!Flip<PT_Float, PT_Uint64>(S, OpPC))
14963 return false;
14964 continue;
14965}
14966case OP_FlipFloatIntAP: {
14967 if (!Flip<PT_Float, PT_IntAP>(S, OpPC))
14968 return false;
14969 continue;
14970}
14971case OP_FlipFloatIntAPS: {
14972 if (!Flip<PT_Float, PT_IntAPS>(S, OpPC))
14973 return false;
14974 continue;
14975}
14976case OP_FlipFloatBool: {
14977 if (!Flip<PT_Float, PT_Bool>(S, OpPC))
14978 return false;
14979 continue;
14980}
14981case OP_FlipFloatFixedPoint: {
14982 if (!Flip<PT_Float, PT_FixedPoint>(S, OpPC))
14983 return false;
14984 continue;
14985}
14986case OP_FlipFloatPtr: {
14987 if (!Flip<PT_Float, PT_Ptr>(S, OpPC))
14988 return false;
14989 continue;
14990}
14991case OP_FlipFloatMemberPtr: {
14992 if (!Flip<PT_Float, PT_MemberPtr>(S, OpPC))
14993 return false;
14994 continue;
14995}
14996case OP_FlipFloatFloat: {
14997 if (!Flip<PT_Float, PT_Float>(S, OpPC))
14998 return false;
14999 continue;
15000}
15001#endif
15002#ifdef GET_DISASM
15003case OP_FlipSint8Sint8:
15004 Text.Op = PrintName("FlipSint8Sint8");
15005 break;
15006case OP_FlipSint8Uint8:
15007 Text.Op = PrintName("FlipSint8Uint8");
15008 break;
15009case OP_FlipSint8Sint16:
15010 Text.Op = PrintName("FlipSint8Sint16");
15011 break;
15012case OP_FlipSint8Uint16:
15013 Text.Op = PrintName("FlipSint8Uint16");
15014 break;
15015case OP_FlipSint8Sint32:
15016 Text.Op = PrintName("FlipSint8Sint32");
15017 break;
15018case OP_FlipSint8Uint32:
15019 Text.Op = PrintName("FlipSint8Uint32");
15020 break;
15021case OP_FlipSint8Sint64:
15022 Text.Op = PrintName("FlipSint8Sint64");
15023 break;
15024case OP_FlipSint8Uint64:
15025 Text.Op = PrintName("FlipSint8Uint64");
15026 break;
15027case OP_FlipSint8IntAP:
15028 Text.Op = PrintName("FlipSint8IntAP");
15029 break;
15030case OP_FlipSint8IntAPS:
15031 Text.Op = PrintName("FlipSint8IntAPS");
15032 break;
15033case OP_FlipSint8Bool:
15034 Text.Op = PrintName("FlipSint8Bool");
15035 break;
15036case OP_FlipSint8FixedPoint:
15037 Text.Op = PrintName("FlipSint8FixedPoint");
15038 break;
15039case OP_FlipSint8Ptr:
15040 Text.Op = PrintName("FlipSint8Ptr");
15041 break;
15042case OP_FlipSint8MemberPtr:
15043 Text.Op = PrintName("FlipSint8MemberPtr");
15044 break;
15045case OP_FlipSint8Float:
15046 Text.Op = PrintName("FlipSint8Float");
15047 break;
15048case OP_FlipUint8Sint8:
15049 Text.Op = PrintName("FlipUint8Sint8");
15050 break;
15051case OP_FlipUint8Uint8:
15052 Text.Op = PrintName("FlipUint8Uint8");
15053 break;
15054case OP_FlipUint8Sint16:
15055 Text.Op = PrintName("FlipUint8Sint16");
15056 break;
15057case OP_FlipUint8Uint16:
15058 Text.Op = PrintName("FlipUint8Uint16");
15059 break;
15060case OP_FlipUint8Sint32:
15061 Text.Op = PrintName("FlipUint8Sint32");
15062 break;
15063case OP_FlipUint8Uint32:
15064 Text.Op = PrintName("FlipUint8Uint32");
15065 break;
15066case OP_FlipUint8Sint64:
15067 Text.Op = PrintName("FlipUint8Sint64");
15068 break;
15069case OP_FlipUint8Uint64:
15070 Text.Op = PrintName("FlipUint8Uint64");
15071 break;
15072case OP_FlipUint8IntAP:
15073 Text.Op = PrintName("FlipUint8IntAP");
15074 break;
15075case OP_FlipUint8IntAPS:
15076 Text.Op = PrintName("FlipUint8IntAPS");
15077 break;
15078case OP_FlipUint8Bool:
15079 Text.Op = PrintName("FlipUint8Bool");
15080 break;
15081case OP_FlipUint8FixedPoint:
15082 Text.Op = PrintName("FlipUint8FixedPoint");
15083 break;
15084case OP_FlipUint8Ptr:
15085 Text.Op = PrintName("FlipUint8Ptr");
15086 break;
15087case OP_FlipUint8MemberPtr:
15088 Text.Op = PrintName("FlipUint8MemberPtr");
15089 break;
15090case OP_FlipUint8Float:
15091 Text.Op = PrintName("FlipUint8Float");
15092 break;
15093case OP_FlipSint16Sint8:
15094 Text.Op = PrintName("FlipSint16Sint8");
15095 break;
15096case OP_FlipSint16Uint8:
15097 Text.Op = PrintName("FlipSint16Uint8");
15098 break;
15099case OP_FlipSint16Sint16:
15100 Text.Op = PrintName("FlipSint16Sint16");
15101 break;
15102case OP_FlipSint16Uint16:
15103 Text.Op = PrintName("FlipSint16Uint16");
15104 break;
15105case OP_FlipSint16Sint32:
15106 Text.Op = PrintName("FlipSint16Sint32");
15107 break;
15108case OP_FlipSint16Uint32:
15109 Text.Op = PrintName("FlipSint16Uint32");
15110 break;
15111case OP_FlipSint16Sint64:
15112 Text.Op = PrintName("FlipSint16Sint64");
15113 break;
15114case OP_FlipSint16Uint64:
15115 Text.Op = PrintName("FlipSint16Uint64");
15116 break;
15117case OP_FlipSint16IntAP:
15118 Text.Op = PrintName("FlipSint16IntAP");
15119 break;
15120case OP_FlipSint16IntAPS:
15121 Text.Op = PrintName("FlipSint16IntAPS");
15122 break;
15123case OP_FlipSint16Bool:
15124 Text.Op = PrintName("FlipSint16Bool");
15125 break;
15126case OP_FlipSint16FixedPoint:
15127 Text.Op = PrintName("FlipSint16FixedPoint");
15128 break;
15129case OP_FlipSint16Ptr:
15130 Text.Op = PrintName("FlipSint16Ptr");
15131 break;
15132case OP_FlipSint16MemberPtr:
15133 Text.Op = PrintName("FlipSint16MemberPtr");
15134 break;
15135case OP_FlipSint16Float:
15136 Text.Op = PrintName("FlipSint16Float");
15137 break;
15138case OP_FlipUint16Sint8:
15139 Text.Op = PrintName("FlipUint16Sint8");
15140 break;
15141case OP_FlipUint16Uint8:
15142 Text.Op = PrintName("FlipUint16Uint8");
15143 break;
15144case OP_FlipUint16Sint16:
15145 Text.Op = PrintName("FlipUint16Sint16");
15146 break;
15147case OP_FlipUint16Uint16:
15148 Text.Op = PrintName("FlipUint16Uint16");
15149 break;
15150case OP_FlipUint16Sint32:
15151 Text.Op = PrintName("FlipUint16Sint32");
15152 break;
15153case OP_FlipUint16Uint32:
15154 Text.Op = PrintName("FlipUint16Uint32");
15155 break;
15156case OP_FlipUint16Sint64:
15157 Text.Op = PrintName("FlipUint16Sint64");
15158 break;
15159case OP_FlipUint16Uint64:
15160 Text.Op = PrintName("FlipUint16Uint64");
15161 break;
15162case OP_FlipUint16IntAP:
15163 Text.Op = PrintName("FlipUint16IntAP");
15164 break;
15165case OP_FlipUint16IntAPS:
15166 Text.Op = PrintName("FlipUint16IntAPS");
15167 break;
15168case OP_FlipUint16Bool:
15169 Text.Op = PrintName("FlipUint16Bool");
15170 break;
15171case OP_FlipUint16FixedPoint:
15172 Text.Op = PrintName("FlipUint16FixedPoint");
15173 break;
15174case OP_FlipUint16Ptr:
15175 Text.Op = PrintName("FlipUint16Ptr");
15176 break;
15177case OP_FlipUint16MemberPtr:
15178 Text.Op = PrintName("FlipUint16MemberPtr");
15179 break;
15180case OP_FlipUint16Float:
15181 Text.Op = PrintName("FlipUint16Float");
15182 break;
15183case OP_FlipSint32Sint8:
15184 Text.Op = PrintName("FlipSint32Sint8");
15185 break;
15186case OP_FlipSint32Uint8:
15187 Text.Op = PrintName("FlipSint32Uint8");
15188 break;
15189case OP_FlipSint32Sint16:
15190 Text.Op = PrintName("FlipSint32Sint16");
15191 break;
15192case OP_FlipSint32Uint16:
15193 Text.Op = PrintName("FlipSint32Uint16");
15194 break;
15195case OP_FlipSint32Sint32:
15196 Text.Op = PrintName("FlipSint32Sint32");
15197 break;
15198case OP_FlipSint32Uint32:
15199 Text.Op = PrintName("FlipSint32Uint32");
15200 break;
15201case OP_FlipSint32Sint64:
15202 Text.Op = PrintName("FlipSint32Sint64");
15203 break;
15204case OP_FlipSint32Uint64:
15205 Text.Op = PrintName("FlipSint32Uint64");
15206 break;
15207case OP_FlipSint32IntAP:
15208 Text.Op = PrintName("FlipSint32IntAP");
15209 break;
15210case OP_FlipSint32IntAPS:
15211 Text.Op = PrintName("FlipSint32IntAPS");
15212 break;
15213case OP_FlipSint32Bool:
15214 Text.Op = PrintName("FlipSint32Bool");
15215 break;
15216case OP_FlipSint32FixedPoint:
15217 Text.Op = PrintName("FlipSint32FixedPoint");
15218 break;
15219case OP_FlipSint32Ptr:
15220 Text.Op = PrintName("FlipSint32Ptr");
15221 break;
15222case OP_FlipSint32MemberPtr:
15223 Text.Op = PrintName("FlipSint32MemberPtr");
15224 break;
15225case OP_FlipSint32Float:
15226 Text.Op = PrintName("FlipSint32Float");
15227 break;
15228case OP_FlipUint32Sint8:
15229 Text.Op = PrintName("FlipUint32Sint8");
15230 break;
15231case OP_FlipUint32Uint8:
15232 Text.Op = PrintName("FlipUint32Uint8");
15233 break;
15234case OP_FlipUint32Sint16:
15235 Text.Op = PrintName("FlipUint32Sint16");
15236 break;
15237case OP_FlipUint32Uint16:
15238 Text.Op = PrintName("FlipUint32Uint16");
15239 break;
15240case OP_FlipUint32Sint32:
15241 Text.Op = PrintName("FlipUint32Sint32");
15242 break;
15243case OP_FlipUint32Uint32:
15244 Text.Op = PrintName("FlipUint32Uint32");
15245 break;
15246case OP_FlipUint32Sint64:
15247 Text.Op = PrintName("FlipUint32Sint64");
15248 break;
15249case OP_FlipUint32Uint64:
15250 Text.Op = PrintName("FlipUint32Uint64");
15251 break;
15252case OP_FlipUint32IntAP:
15253 Text.Op = PrintName("FlipUint32IntAP");
15254 break;
15255case OP_FlipUint32IntAPS:
15256 Text.Op = PrintName("FlipUint32IntAPS");
15257 break;
15258case OP_FlipUint32Bool:
15259 Text.Op = PrintName("FlipUint32Bool");
15260 break;
15261case OP_FlipUint32FixedPoint:
15262 Text.Op = PrintName("FlipUint32FixedPoint");
15263 break;
15264case OP_FlipUint32Ptr:
15265 Text.Op = PrintName("FlipUint32Ptr");
15266 break;
15267case OP_FlipUint32MemberPtr:
15268 Text.Op = PrintName("FlipUint32MemberPtr");
15269 break;
15270case OP_FlipUint32Float:
15271 Text.Op = PrintName("FlipUint32Float");
15272 break;
15273case OP_FlipSint64Sint8:
15274 Text.Op = PrintName("FlipSint64Sint8");
15275 break;
15276case OP_FlipSint64Uint8:
15277 Text.Op = PrintName("FlipSint64Uint8");
15278 break;
15279case OP_FlipSint64Sint16:
15280 Text.Op = PrintName("FlipSint64Sint16");
15281 break;
15282case OP_FlipSint64Uint16:
15283 Text.Op = PrintName("FlipSint64Uint16");
15284 break;
15285case OP_FlipSint64Sint32:
15286 Text.Op = PrintName("FlipSint64Sint32");
15287 break;
15288case OP_FlipSint64Uint32:
15289 Text.Op = PrintName("FlipSint64Uint32");
15290 break;
15291case OP_FlipSint64Sint64:
15292 Text.Op = PrintName("FlipSint64Sint64");
15293 break;
15294case OP_FlipSint64Uint64:
15295 Text.Op = PrintName("FlipSint64Uint64");
15296 break;
15297case OP_FlipSint64IntAP:
15298 Text.Op = PrintName("FlipSint64IntAP");
15299 break;
15300case OP_FlipSint64IntAPS:
15301 Text.Op = PrintName("FlipSint64IntAPS");
15302 break;
15303case OP_FlipSint64Bool:
15304 Text.Op = PrintName("FlipSint64Bool");
15305 break;
15306case OP_FlipSint64FixedPoint:
15307 Text.Op = PrintName("FlipSint64FixedPoint");
15308 break;
15309case OP_FlipSint64Ptr:
15310 Text.Op = PrintName("FlipSint64Ptr");
15311 break;
15312case OP_FlipSint64MemberPtr:
15313 Text.Op = PrintName("FlipSint64MemberPtr");
15314 break;
15315case OP_FlipSint64Float:
15316 Text.Op = PrintName("FlipSint64Float");
15317 break;
15318case OP_FlipUint64Sint8:
15319 Text.Op = PrintName("FlipUint64Sint8");
15320 break;
15321case OP_FlipUint64Uint8:
15322 Text.Op = PrintName("FlipUint64Uint8");
15323 break;
15324case OP_FlipUint64Sint16:
15325 Text.Op = PrintName("FlipUint64Sint16");
15326 break;
15327case OP_FlipUint64Uint16:
15328 Text.Op = PrintName("FlipUint64Uint16");
15329 break;
15330case OP_FlipUint64Sint32:
15331 Text.Op = PrintName("FlipUint64Sint32");
15332 break;
15333case OP_FlipUint64Uint32:
15334 Text.Op = PrintName("FlipUint64Uint32");
15335 break;
15336case OP_FlipUint64Sint64:
15337 Text.Op = PrintName("FlipUint64Sint64");
15338 break;
15339case OP_FlipUint64Uint64:
15340 Text.Op = PrintName("FlipUint64Uint64");
15341 break;
15342case OP_FlipUint64IntAP:
15343 Text.Op = PrintName("FlipUint64IntAP");
15344 break;
15345case OP_FlipUint64IntAPS:
15346 Text.Op = PrintName("FlipUint64IntAPS");
15347 break;
15348case OP_FlipUint64Bool:
15349 Text.Op = PrintName("FlipUint64Bool");
15350 break;
15351case OP_FlipUint64FixedPoint:
15352 Text.Op = PrintName("FlipUint64FixedPoint");
15353 break;
15354case OP_FlipUint64Ptr:
15355 Text.Op = PrintName("FlipUint64Ptr");
15356 break;
15357case OP_FlipUint64MemberPtr:
15358 Text.Op = PrintName("FlipUint64MemberPtr");
15359 break;
15360case OP_FlipUint64Float:
15361 Text.Op = PrintName("FlipUint64Float");
15362 break;
15363case OP_FlipIntAPSint8:
15364 Text.Op = PrintName("FlipIntAPSint8");
15365 break;
15366case OP_FlipIntAPUint8:
15367 Text.Op = PrintName("FlipIntAPUint8");
15368 break;
15369case OP_FlipIntAPSint16:
15370 Text.Op = PrintName("FlipIntAPSint16");
15371 break;
15372case OP_FlipIntAPUint16:
15373 Text.Op = PrintName("FlipIntAPUint16");
15374 break;
15375case OP_FlipIntAPSint32:
15376 Text.Op = PrintName("FlipIntAPSint32");
15377 break;
15378case OP_FlipIntAPUint32:
15379 Text.Op = PrintName("FlipIntAPUint32");
15380 break;
15381case OP_FlipIntAPSint64:
15382 Text.Op = PrintName("FlipIntAPSint64");
15383 break;
15384case OP_FlipIntAPUint64:
15385 Text.Op = PrintName("FlipIntAPUint64");
15386 break;
15387case OP_FlipIntAPIntAP:
15388 Text.Op = PrintName("FlipIntAPIntAP");
15389 break;
15390case OP_FlipIntAPIntAPS:
15391 Text.Op = PrintName("FlipIntAPIntAPS");
15392 break;
15393case OP_FlipIntAPBool:
15394 Text.Op = PrintName("FlipIntAPBool");
15395 break;
15396case OP_FlipIntAPFixedPoint:
15397 Text.Op = PrintName("FlipIntAPFixedPoint");
15398 break;
15399case OP_FlipIntAPPtr:
15400 Text.Op = PrintName("FlipIntAPPtr");
15401 break;
15402case OP_FlipIntAPMemberPtr:
15403 Text.Op = PrintName("FlipIntAPMemberPtr");
15404 break;
15405case OP_FlipIntAPFloat:
15406 Text.Op = PrintName("FlipIntAPFloat");
15407 break;
15408case OP_FlipIntAPSSint8:
15409 Text.Op = PrintName("FlipIntAPSSint8");
15410 break;
15411case OP_FlipIntAPSUint8:
15412 Text.Op = PrintName("FlipIntAPSUint8");
15413 break;
15414case OP_FlipIntAPSSint16:
15415 Text.Op = PrintName("FlipIntAPSSint16");
15416 break;
15417case OP_FlipIntAPSUint16:
15418 Text.Op = PrintName("FlipIntAPSUint16");
15419 break;
15420case OP_FlipIntAPSSint32:
15421 Text.Op = PrintName("FlipIntAPSSint32");
15422 break;
15423case OP_FlipIntAPSUint32:
15424 Text.Op = PrintName("FlipIntAPSUint32");
15425 break;
15426case OP_FlipIntAPSSint64:
15427 Text.Op = PrintName("FlipIntAPSSint64");
15428 break;
15429case OP_FlipIntAPSUint64:
15430 Text.Op = PrintName("FlipIntAPSUint64");
15431 break;
15432case OP_FlipIntAPSIntAP:
15433 Text.Op = PrintName("FlipIntAPSIntAP");
15434 break;
15435case OP_FlipIntAPSIntAPS:
15436 Text.Op = PrintName("FlipIntAPSIntAPS");
15437 break;
15438case OP_FlipIntAPSBool:
15439 Text.Op = PrintName("FlipIntAPSBool");
15440 break;
15441case OP_FlipIntAPSFixedPoint:
15442 Text.Op = PrintName("FlipIntAPSFixedPoint");
15443 break;
15444case OP_FlipIntAPSPtr:
15445 Text.Op = PrintName("FlipIntAPSPtr");
15446 break;
15447case OP_FlipIntAPSMemberPtr:
15448 Text.Op = PrintName("FlipIntAPSMemberPtr");
15449 break;
15450case OP_FlipIntAPSFloat:
15451 Text.Op = PrintName("FlipIntAPSFloat");
15452 break;
15453case OP_FlipBoolSint8:
15454 Text.Op = PrintName("FlipBoolSint8");
15455 break;
15456case OP_FlipBoolUint8:
15457 Text.Op = PrintName("FlipBoolUint8");
15458 break;
15459case OP_FlipBoolSint16:
15460 Text.Op = PrintName("FlipBoolSint16");
15461 break;
15462case OP_FlipBoolUint16:
15463 Text.Op = PrintName("FlipBoolUint16");
15464 break;
15465case OP_FlipBoolSint32:
15466 Text.Op = PrintName("FlipBoolSint32");
15467 break;
15468case OP_FlipBoolUint32:
15469 Text.Op = PrintName("FlipBoolUint32");
15470 break;
15471case OP_FlipBoolSint64:
15472 Text.Op = PrintName("FlipBoolSint64");
15473 break;
15474case OP_FlipBoolUint64:
15475 Text.Op = PrintName("FlipBoolUint64");
15476 break;
15477case OP_FlipBoolIntAP:
15478 Text.Op = PrintName("FlipBoolIntAP");
15479 break;
15480case OP_FlipBoolIntAPS:
15481 Text.Op = PrintName("FlipBoolIntAPS");
15482 break;
15483case OP_FlipBoolBool:
15484 Text.Op = PrintName("FlipBoolBool");
15485 break;
15486case OP_FlipBoolFixedPoint:
15487 Text.Op = PrintName("FlipBoolFixedPoint");
15488 break;
15489case OP_FlipBoolPtr:
15490 Text.Op = PrintName("FlipBoolPtr");
15491 break;
15492case OP_FlipBoolMemberPtr:
15493 Text.Op = PrintName("FlipBoolMemberPtr");
15494 break;
15495case OP_FlipBoolFloat:
15496 Text.Op = PrintName("FlipBoolFloat");
15497 break;
15498case OP_FlipFixedPointSint8:
15499 Text.Op = PrintName("FlipFixedPointSint8");
15500 break;
15501case OP_FlipFixedPointUint8:
15502 Text.Op = PrintName("FlipFixedPointUint8");
15503 break;
15504case OP_FlipFixedPointSint16:
15505 Text.Op = PrintName("FlipFixedPointSint16");
15506 break;
15507case OP_FlipFixedPointUint16:
15508 Text.Op = PrintName("FlipFixedPointUint16");
15509 break;
15510case OP_FlipFixedPointSint32:
15511 Text.Op = PrintName("FlipFixedPointSint32");
15512 break;
15513case OP_FlipFixedPointUint32:
15514 Text.Op = PrintName("FlipFixedPointUint32");
15515 break;
15516case OP_FlipFixedPointSint64:
15517 Text.Op = PrintName("FlipFixedPointSint64");
15518 break;
15519case OP_FlipFixedPointUint64:
15520 Text.Op = PrintName("FlipFixedPointUint64");
15521 break;
15522case OP_FlipFixedPointIntAP:
15523 Text.Op = PrintName("FlipFixedPointIntAP");
15524 break;
15525case OP_FlipFixedPointIntAPS:
15526 Text.Op = PrintName("FlipFixedPointIntAPS");
15527 break;
15528case OP_FlipFixedPointBool:
15529 Text.Op = PrintName("FlipFixedPointBool");
15530 break;
15531case OP_FlipFixedPointFixedPoint:
15532 Text.Op = PrintName("FlipFixedPointFixedPoint");
15533 break;
15534case OP_FlipFixedPointPtr:
15535 Text.Op = PrintName("FlipFixedPointPtr");
15536 break;
15537case OP_FlipFixedPointMemberPtr:
15538 Text.Op = PrintName("FlipFixedPointMemberPtr");
15539 break;
15540case OP_FlipFixedPointFloat:
15541 Text.Op = PrintName("FlipFixedPointFloat");
15542 break;
15543case OP_FlipPtrSint8:
15544 Text.Op = PrintName("FlipPtrSint8");
15545 break;
15546case OP_FlipPtrUint8:
15547 Text.Op = PrintName("FlipPtrUint8");
15548 break;
15549case OP_FlipPtrSint16:
15550 Text.Op = PrintName("FlipPtrSint16");
15551 break;
15552case OP_FlipPtrUint16:
15553 Text.Op = PrintName("FlipPtrUint16");
15554 break;
15555case OP_FlipPtrSint32:
15556 Text.Op = PrintName("FlipPtrSint32");
15557 break;
15558case OP_FlipPtrUint32:
15559 Text.Op = PrintName("FlipPtrUint32");
15560 break;
15561case OP_FlipPtrSint64:
15562 Text.Op = PrintName("FlipPtrSint64");
15563 break;
15564case OP_FlipPtrUint64:
15565 Text.Op = PrintName("FlipPtrUint64");
15566 break;
15567case OP_FlipPtrIntAP:
15568 Text.Op = PrintName("FlipPtrIntAP");
15569 break;
15570case OP_FlipPtrIntAPS:
15571 Text.Op = PrintName("FlipPtrIntAPS");
15572 break;
15573case OP_FlipPtrBool:
15574 Text.Op = PrintName("FlipPtrBool");
15575 break;
15576case OP_FlipPtrFixedPoint:
15577 Text.Op = PrintName("FlipPtrFixedPoint");
15578 break;
15579case OP_FlipPtrPtr:
15580 Text.Op = PrintName("FlipPtrPtr");
15581 break;
15582case OP_FlipPtrMemberPtr:
15583 Text.Op = PrintName("FlipPtrMemberPtr");
15584 break;
15585case OP_FlipPtrFloat:
15586 Text.Op = PrintName("FlipPtrFloat");
15587 break;
15588case OP_FlipMemberPtrSint8:
15589 Text.Op = PrintName("FlipMemberPtrSint8");
15590 break;
15591case OP_FlipMemberPtrUint8:
15592 Text.Op = PrintName("FlipMemberPtrUint8");
15593 break;
15594case OP_FlipMemberPtrSint16:
15595 Text.Op = PrintName("FlipMemberPtrSint16");
15596 break;
15597case OP_FlipMemberPtrUint16:
15598 Text.Op = PrintName("FlipMemberPtrUint16");
15599 break;
15600case OP_FlipMemberPtrSint32:
15601 Text.Op = PrintName("FlipMemberPtrSint32");
15602 break;
15603case OP_FlipMemberPtrUint32:
15604 Text.Op = PrintName("FlipMemberPtrUint32");
15605 break;
15606case OP_FlipMemberPtrSint64:
15607 Text.Op = PrintName("FlipMemberPtrSint64");
15608 break;
15609case OP_FlipMemberPtrUint64:
15610 Text.Op = PrintName("FlipMemberPtrUint64");
15611 break;
15612case OP_FlipMemberPtrIntAP:
15613 Text.Op = PrintName("FlipMemberPtrIntAP");
15614 break;
15615case OP_FlipMemberPtrIntAPS:
15616 Text.Op = PrintName("FlipMemberPtrIntAPS");
15617 break;
15618case OP_FlipMemberPtrBool:
15619 Text.Op = PrintName("FlipMemberPtrBool");
15620 break;
15621case OP_FlipMemberPtrFixedPoint:
15622 Text.Op = PrintName("FlipMemberPtrFixedPoint");
15623 break;
15624case OP_FlipMemberPtrPtr:
15625 Text.Op = PrintName("FlipMemberPtrPtr");
15626 break;
15627case OP_FlipMemberPtrMemberPtr:
15628 Text.Op = PrintName("FlipMemberPtrMemberPtr");
15629 break;
15630case OP_FlipMemberPtrFloat:
15631 Text.Op = PrintName("FlipMemberPtrFloat");
15632 break;
15633case OP_FlipFloatSint8:
15634 Text.Op = PrintName("FlipFloatSint8");
15635 break;
15636case OP_FlipFloatUint8:
15637 Text.Op = PrintName("FlipFloatUint8");
15638 break;
15639case OP_FlipFloatSint16:
15640 Text.Op = PrintName("FlipFloatSint16");
15641 break;
15642case OP_FlipFloatUint16:
15643 Text.Op = PrintName("FlipFloatUint16");
15644 break;
15645case OP_FlipFloatSint32:
15646 Text.Op = PrintName("FlipFloatSint32");
15647 break;
15648case OP_FlipFloatUint32:
15649 Text.Op = PrintName("FlipFloatUint32");
15650 break;
15651case OP_FlipFloatSint64:
15652 Text.Op = PrintName("FlipFloatSint64");
15653 break;
15654case OP_FlipFloatUint64:
15655 Text.Op = PrintName("FlipFloatUint64");
15656 break;
15657case OP_FlipFloatIntAP:
15658 Text.Op = PrintName("FlipFloatIntAP");
15659 break;
15660case OP_FlipFloatIntAPS:
15661 Text.Op = PrintName("FlipFloatIntAPS");
15662 break;
15663case OP_FlipFloatBool:
15664 Text.Op = PrintName("FlipFloatBool");
15665 break;
15666case OP_FlipFloatFixedPoint:
15667 Text.Op = PrintName("FlipFloatFixedPoint");
15668 break;
15669case OP_FlipFloatPtr:
15670 Text.Op = PrintName("FlipFloatPtr");
15671 break;
15672case OP_FlipFloatMemberPtr:
15673 Text.Op = PrintName("FlipFloatMemberPtr");
15674 break;
15675case OP_FlipFloatFloat:
15676 Text.Op = PrintName("FlipFloatFloat");
15677 break;
15678#endif
15679#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15680bool emitFlipSint8Sint8(SourceInfo);
15681bool emitFlipSint8Uint8(SourceInfo);
15682bool emitFlipSint8Sint16(SourceInfo);
15683bool emitFlipSint8Uint16(SourceInfo);
15684bool emitFlipSint8Sint32(SourceInfo);
15685bool emitFlipSint8Uint32(SourceInfo);
15686bool emitFlipSint8Sint64(SourceInfo);
15687bool emitFlipSint8Uint64(SourceInfo);
15688bool emitFlipSint8IntAP(SourceInfo);
15689bool emitFlipSint8IntAPS(SourceInfo);
15690bool emitFlipSint8Bool(SourceInfo);
15691bool emitFlipSint8FixedPoint(SourceInfo);
15692bool emitFlipSint8Ptr(SourceInfo);
15693bool emitFlipSint8MemberPtr(SourceInfo);
15694bool emitFlipSint8Float(SourceInfo);
15695bool emitFlipUint8Sint8(SourceInfo);
15696bool emitFlipUint8Uint8(SourceInfo);
15697bool emitFlipUint8Sint16(SourceInfo);
15698bool emitFlipUint8Uint16(SourceInfo);
15699bool emitFlipUint8Sint32(SourceInfo);
15700bool emitFlipUint8Uint32(SourceInfo);
15701bool emitFlipUint8Sint64(SourceInfo);
15702bool emitFlipUint8Uint64(SourceInfo);
15703bool emitFlipUint8IntAP(SourceInfo);
15704bool emitFlipUint8IntAPS(SourceInfo);
15705bool emitFlipUint8Bool(SourceInfo);
15706bool emitFlipUint8FixedPoint(SourceInfo);
15707bool emitFlipUint8Ptr(SourceInfo);
15708bool emitFlipUint8MemberPtr(SourceInfo);
15709bool emitFlipUint8Float(SourceInfo);
15710bool emitFlipSint16Sint8(SourceInfo);
15711bool emitFlipSint16Uint8(SourceInfo);
15712bool emitFlipSint16Sint16(SourceInfo);
15713bool emitFlipSint16Uint16(SourceInfo);
15714bool emitFlipSint16Sint32(SourceInfo);
15715bool emitFlipSint16Uint32(SourceInfo);
15716bool emitFlipSint16Sint64(SourceInfo);
15717bool emitFlipSint16Uint64(SourceInfo);
15718bool emitFlipSint16IntAP(SourceInfo);
15719bool emitFlipSint16IntAPS(SourceInfo);
15720bool emitFlipSint16Bool(SourceInfo);
15721bool emitFlipSint16FixedPoint(SourceInfo);
15722bool emitFlipSint16Ptr(SourceInfo);
15723bool emitFlipSint16MemberPtr(SourceInfo);
15724bool emitFlipSint16Float(SourceInfo);
15725bool emitFlipUint16Sint8(SourceInfo);
15726bool emitFlipUint16Uint8(SourceInfo);
15727bool emitFlipUint16Sint16(SourceInfo);
15728bool emitFlipUint16Uint16(SourceInfo);
15729bool emitFlipUint16Sint32(SourceInfo);
15730bool emitFlipUint16Uint32(SourceInfo);
15731bool emitFlipUint16Sint64(SourceInfo);
15732bool emitFlipUint16Uint64(SourceInfo);
15733bool emitFlipUint16IntAP(SourceInfo);
15734bool emitFlipUint16IntAPS(SourceInfo);
15735bool emitFlipUint16Bool(SourceInfo);
15736bool emitFlipUint16FixedPoint(SourceInfo);
15737bool emitFlipUint16Ptr(SourceInfo);
15738bool emitFlipUint16MemberPtr(SourceInfo);
15739bool emitFlipUint16Float(SourceInfo);
15740bool emitFlipSint32Sint8(SourceInfo);
15741bool emitFlipSint32Uint8(SourceInfo);
15742bool emitFlipSint32Sint16(SourceInfo);
15743bool emitFlipSint32Uint16(SourceInfo);
15744bool emitFlipSint32Sint32(SourceInfo);
15745bool emitFlipSint32Uint32(SourceInfo);
15746bool emitFlipSint32Sint64(SourceInfo);
15747bool emitFlipSint32Uint64(SourceInfo);
15748bool emitFlipSint32IntAP(SourceInfo);
15749bool emitFlipSint32IntAPS(SourceInfo);
15750bool emitFlipSint32Bool(SourceInfo);
15751bool emitFlipSint32FixedPoint(SourceInfo);
15752bool emitFlipSint32Ptr(SourceInfo);
15753bool emitFlipSint32MemberPtr(SourceInfo);
15754bool emitFlipSint32Float(SourceInfo);
15755bool emitFlipUint32Sint8(SourceInfo);
15756bool emitFlipUint32Uint8(SourceInfo);
15757bool emitFlipUint32Sint16(SourceInfo);
15758bool emitFlipUint32Uint16(SourceInfo);
15759bool emitFlipUint32Sint32(SourceInfo);
15760bool emitFlipUint32Uint32(SourceInfo);
15761bool emitFlipUint32Sint64(SourceInfo);
15762bool emitFlipUint32Uint64(SourceInfo);
15763bool emitFlipUint32IntAP(SourceInfo);
15764bool emitFlipUint32IntAPS(SourceInfo);
15765bool emitFlipUint32Bool(SourceInfo);
15766bool emitFlipUint32FixedPoint(SourceInfo);
15767bool emitFlipUint32Ptr(SourceInfo);
15768bool emitFlipUint32MemberPtr(SourceInfo);
15769bool emitFlipUint32Float(SourceInfo);
15770bool emitFlipSint64Sint8(SourceInfo);
15771bool emitFlipSint64Uint8(SourceInfo);
15772bool emitFlipSint64Sint16(SourceInfo);
15773bool emitFlipSint64Uint16(SourceInfo);
15774bool emitFlipSint64Sint32(SourceInfo);
15775bool emitFlipSint64Uint32(SourceInfo);
15776bool emitFlipSint64Sint64(SourceInfo);
15777bool emitFlipSint64Uint64(SourceInfo);
15778bool emitFlipSint64IntAP(SourceInfo);
15779bool emitFlipSint64IntAPS(SourceInfo);
15780bool emitFlipSint64Bool(SourceInfo);
15781bool emitFlipSint64FixedPoint(SourceInfo);
15782bool emitFlipSint64Ptr(SourceInfo);
15783bool emitFlipSint64MemberPtr(SourceInfo);
15784bool emitFlipSint64Float(SourceInfo);
15785bool emitFlipUint64Sint8(SourceInfo);
15786bool emitFlipUint64Uint8(SourceInfo);
15787bool emitFlipUint64Sint16(SourceInfo);
15788bool emitFlipUint64Uint16(SourceInfo);
15789bool emitFlipUint64Sint32(SourceInfo);
15790bool emitFlipUint64Uint32(SourceInfo);
15791bool emitFlipUint64Sint64(SourceInfo);
15792bool emitFlipUint64Uint64(SourceInfo);
15793bool emitFlipUint64IntAP(SourceInfo);
15794bool emitFlipUint64IntAPS(SourceInfo);
15795bool emitFlipUint64Bool(SourceInfo);
15796bool emitFlipUint64FixedPoint(SourceInfo);
15797bool emitFlipUint64Ptr(SourceInfo);
15798bool emitFlipUint64MemberPtr(SourceInfo);
15799bool emitFlipUint64Float(SourceInfo);
15800bool emitFlipIntAPSint8(SourceInfo);
15801bool emitFlipIntAPUint8(SourceInfo);
15802bool emitFlipIntAPSint16(SourceInfo);
15803bool emitFlipIntAPUint16(SourceInfo);
15804bool emitFlipIntAPSint32(SourceInfo);
15805bool emitFlipIntAPUint32(SourceInfo);
15806bool emitFlipIntAPSint64(SourceInfo);
15807bool emitFlipIntAPUint64(SourceInfo);
15808bool emitFlipIntAPIntAP(SourceInfo);
15809bool emitFlipIntAPIntAPS(SourceInfo);
15810bool emitFlipIntAPBool(SourceInfo);
15811bool emitFlipIntAPFixedPoint(SourceInfo);
15812bool emitFlipIntAPPtr(SourceInfo);
15813bool emitFlipIntAPMemberPtr(SourceInfo);
15814bool emitFlipIntAPFloat(SourceInfo);
15815bool emitFlipIntAPSSint8(SourceInfo);
15816bool emitFlipIntAPSUint8(SourceInfo);
15817bool emitFlipIntAPSSint16(SourceInfo);
15818bool emitFlipIntAPSUint16(SourceInfo);
15819bool emitFlipIntAPSSint32(SourceInfo);
15820bool emitFlipIntAPSUint32(SourceInfo);
15821bool emitFlipIntAPSSint64(SourceInfo);
15822bool emitFlipIntAPSUint64(SourceInfo);
15823bool emitFlipIntAPSIntAP(SourceInfo);
15824bool emitFlipIntAPSIntAPS(SourceInfo);
15825bool emitFlipIntAPSBool(SourceInfo);
15826bool emitFlipIntAPSFixedPoint(SourceInfo);
15827bool emitFlipIntAPSPtr(SourceInfo);
15828bool emitFlipIntAPSMemberPtr(SourceInfo);
15829bool emitFlipIntAPSFloat(SourceInfo);
15830bool emitFlipBoolSint8(SourceInfo);
15831bool emitFlipBoolUint8(SourceInfo);
15832bool emitFlipBoolSint16(SourceInfo);
15833bool emitFlipBoolUint16(SourceInfo);
15834bool emitFlipBoolSint32(SourceInfo);
15835bool emitFlipBoolUint32(SourceInfo);
15836bool emitFlipBoolSint64(SourceInfo);
15837bool emitFlipBoolUint64(SourceInfo);
15838bool emitFlipBoolIntAP(SourceInfo);
15839bool emitFlipBoolIntAPS(SourceInfo);
15840bool emitFlipBoolBool(SourceInfo);
15841bool emitFlipBoolFixedPoint(SourceInfo);
15842bool emitFlipBoolPtr(SourceInfo);
15843bool emitFlipBoolMemberPtr(SourceInfo);
15844bool emitFlipBoolFloat(SourceInfo);
15845bool emitFlipFixedPointSint8(SourceInfo);
15846bool emitFlipFixedPointUint8(SourceInfo);
15847bool emitFlipFixedPointSint16(SourceInfo);
15848bool emitFlipFixedPointUint16(SourceInfo);
15849bool emitFlipFixedPointSint32(SourceInfo);
15850bool emitFlipFixedPointUint32(SourceInfo);
15851bool emitFlipFixedPointSint64(SourceInfo);
15852bool emitFlipFixedPointUint64(SourceInfo);
15853bool emitFlipFixedPointIntAP(SourceInfo);
15854bool emitFlipFixedPointIntAPS(SourceInfo);
15855bool emitFlipFixedPointBool(SourceInfo);
15856bool emitFlipFixedPointFixedPoint(SourceInfo);
15857bool emitFlipFixedPointPtr(SourceInfo);
15858bool emitFlipFixedPointMemberPtr(SourceInfo);
15859bool emitFlipFixedPointFloat(SourceInfo);
15860bool emitFlipPtrSint8(SourceInfo);
15861bool emitFlipPtrUint8(SourceInfo);
15862bool emitFlipPtrSint16(SourceInfo);
15863bool emitFlipPtrUint16(SourceInfo);
15864bool emitFlipPtrSint32(SourceInfo);
15865bool emitFlipPtrUint32(SourceInfo);
15866bool emitFlipPtrSint64(SourceInfo);
15867bool emitFlipPtrUint64(SourceInfo);
15868bool emitFlipPtrIntAP(SourceInfo);
15869bool emitFlipPtrIntAPS(SourceInfo);
15870bool emitFlipPtrBool(SourceInfo);
15871bool emitFlipPtrFixedPoint(SourceInfo);
15872bool emitFlipPtrPtr(SourceInfo);
15873bool emitFlipPtrMemberPtr(SourceInfo);
15874bool emitFlipPtrFloat(SourceInfo);
15875bool emitFlipMemberPtrSint8(SourceInfo);
15876bool emitFlipMemberPtrUint8(SourceInfo);
15877bool emitFlipMemberPtrSint16(SourceInfo);
15878bool emitFlipMemberPtrUint16(SourceInfo);
15879bool emitFlipMemberPtrSint32(SourceInfo);
15880bool emitFlipMemberPtrUint32(SourceInfo);
15881bool emitFlipMemberPtrSint64(SourceInfo);
15882bool emitFlipMemberPtrUint64(SourceInfo);
15883bool emitFlipMemberPtrIntAP(SourceInfo);
15884bool emitFlipMemberPtrIntAPS(SourceInfo);
15885bool emitFlipMemberPtrBool(SourceInfo);
15886bool emitFlipMemberPtrFixedPoint(SourceInfo);
15887bool emitFlipMemberPtrPtr(SourceInfo);
15888bool emitFlipMemberPtrMemberPtr(SourceInfo);
15889bool emitFlipMemberPtrFloat(SourceInfo);
15890bool emitFlipFloatSint8(SourceInfo);
15891bool emitFlipFloatUint8(SourceInfo);
15892bool emitFlipFloatSint16(SourceInfo);
15893bool emitFlipFloatUint16(SourceInfo);
15894bool emitFlipFloatSint32(SourceInfo);
15895bool emitFlipFloatUint32(SourceInfo);
15896bool emitFlipFloatSint64(SourceInfo);
15897bool emitFlipFloatUint64(SourceInfo);
15898bool emitFlipFloatIntAP(SourceInfo);
15899bool emitFlipFloatIntAPS(SourceInfo);
15900bool emitFlipFloatBool(SourceInfo);
15901bool emitFlipFloatFixedPoint(SourceInfo);
15902bool emitFlipFloatPtr(SourceInfo);
15903bool emitFlipFloatMemberPtr(SourceInfo);
15904bool emitFlipFloatFloat(SourceInfo);
15905#endif
15906#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
15907[[nodiscard]] bool emitFlip(PrimType, PrimType, SourceInfo I);
15908#endif
15909#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
15910bool
15911#if defined(GET_EVAL_IMPL)
15912EvalEmitter
15913#else
15914ByteCodeEmitter
15915#endif
15916::emitFlip(PrimType T0, PrimType T1, SourceInfo I) {
15917 switch (T0) {
15918 case PT_Sint8:
15919 switch (T1) {
15920 case PT_Sint8:
15921 return emitFlipSint8Sint8(I);
15922 case PT_Uint8:
15923 return emitFlipSint8Uint8(I);
15924 case PT_Sint16:
15925 return emitFlipSint8Sint16(I);
15926 case PT_Uint16:
15927 return emitFlipSint8Uint16(I);
15928 case PT_Sint32:
15929 return emitFlipSint8Sint32(I);
15930 case PT_Uint32:
15931 return emitFlipSint8Uint32(I);
15932 case PT_Sint64:
15933 return emitFlipSint8Sint64(I);
15934 case PT_Uint64:
15935 return emitFlipSint8Uint64(I);
15936 case PT_IntAP:
15937 return emitFlipSint8IntAP(I);
15938 case PT_IntAPS:
15939 return emitFlipSint8IntAPS(I);
15940 case PT_Bool:
15941 return emitFlipSint8Bool(I);
15942 case PT_FixedPoint:
15943 return emitFlipSint8FixedPoint(I);
15944 case PT_Ptr:
15945 return emitFlipSint8Ptr(I);
15946 case PT_MemberPtr:
15947 return emitFlipSint8MemberPtr(I);
15948 case PT_Float:
15949 return emitFlipSint8Float(I);
15950 }
15951 llvm_unreachable("invalid enum value");
15952 case PT_Uint8:
15953 switch (T1) {
15954 case PT_Sint8:
15955 return emitFlipUint8Sint8(I);
15956 case PT_Uint8:
15957 return emitFlipUint8Uint8(I);
15958 case PT_Sint16:
15959 return emitFlipUint8Sint16(I);
15960 case PT_Uint16:
15961 return emitFlipUint8Uint16(I);
15962 case PT_Sint32:
15963 return emitFlipUint8Sint32(I);
15964 case PT_Uint32:
15965 return emitFlipUint8Uint32(I);
15966 case PT_Sint64:
15967 return emitFlipUint8Sint64(I);
15968 case PT_Uint64:
15969 return emitFlipUint8Uint64(I);
15970 case PT_IntAP:
15971 return emitFlipUint8IntAP(I);
15972 case PT_IntAPS:
15973 return emitFlipUint8IntAPS(I);
15974 case PT_Bool:
15975 return emitFlipUint8Bool(I);
15976 case PT_FixedPoint:
15977 return emitFlipUint8FixedPoint(I);
15978 case PT_Ptr:
15979 return emitFlipUint8Ptr(I);
15980 case PT_MemberPtr:
15981 return emitFlipUint8MemberPtr(I);
15982 case PT_Float:
15983 return emitFlipUint8Float(I);
15984 }
15985 llvm_unreachable("invalid enum value");
15986 case PT_Sint16:
15987 switch (T1) {
15988 case PT_Sint8:
15989 return emitFlipSint16Sint8(I);
15990 case PT_Uint8:
15991 return emitFlipSint16Uint8(I);
15992 case PT_Sint16:
15993 return emitFlipSint16Sint16(I);
15994 case PT_Uint16:
15995 return emitFlipSint16Uint16(I);
15996 case PT_Sint32:
15997 return emitFlipSint16Sint32(I);
15998 case PT_Uint32:
15999 return emitFlipSint16Uint32(I);
16000 case PT_Sint64:
16001 return emitFlipSint16Sint64(I);
16002 case PT_Uint64:
16003 return emitFlipSint16Uint64(I);
16004 case PT_IntAP:
16005 return emitFlipSint16IntAP(I);
16006 case PT_IntAPS:
16007 return emitFlipSint16IntAPS(I);
16008 case PT_Bool:
16009 return emitFlipSint16Bool(I);
16010 case PT_FixedPoint:
16011 return emitFlipSint16FixedPoint(I);
16012 case PT_Ptr:
16013 return emitFlipSint16Ptr(I);
16014 case PT_MemberPtr:
16015 return emitFlipSint16MemberPtr(I);
16016 case PT_Float:
16017 return emitFlipSint16Float(I);
16018 }
16019 llvm_unreachable("invalid enum value");
16020 case PT_Uint16:
16021 switch (T1) {
16022 case PT_Sint8:
16023 return emitFlipUint16Sint8(I);
16024 case PT_Uint8:
16025 return emitFlipUint16Uint8(I);
16026 case PT_Sint16:
16027 return emitFlipUint16Sint16(I);
16028 case PT_Uint16:
16029 return emitFlipUint16Uint16(I);
16030 case PT_Sint32:
16031 return emitFlipUint16Sint32(I);
16032 case PT_Uint32:
16033 return emitFlipUint16Uint32(I);
16034 case PT_Sint64:
16035 return emitFlipUint16Sint64(I);
16036 case PT_Uint64:
16037 return emitFlipUint16Uint64(I);
16038 case PT_IntAP:
16039 return emitFlipUint16IntAP(I);
16040 case PT_IntAPS:
16041 return emitFlipUint16IntAPS(I);
16042 case PT_Bool:
16043 return emitFlipUint16Bool(I);
16044 case PT_FixedPoint:
16045 return emitFlipUint16FixedPoint(I);
16046 case PT_Ptr:
16047 return emitFlipUint16Ptr(I);
16048 case PT_MemberPtr:
16049 return emitFlipUint16MemberPtr(I);
16050 case PT_Float:
16051 return emitFlipUint16Float(I);
16052 }
16053 llvm_unreachable("invalid enum value");
16054 case PT_Sint32:
16055 switch (T1) {
16056 case PT_Sint8:
16057 return emitFlipSint32Sint8(I);
16058 case PT_Uint8:
16059 return emitFlipSint32Uint8(I);
16060 case PT_Sint16:
16061 return emitFlipSint32Sint16(I);
16062 case PT_Uint16:
16063 return emitFlipSint32Uint16(I);
16064 case PT_Sint32:
16065 return emitFlipSint32Sint32(I);
16066 case PT_Uint32:
16067 return emitFlipSint32Uint32(I);
16068 case PT_Sint64:
16069 return emitFlipSint32Sint64(I);
16070 case PT_Uint64:
16071 return emitFlipSint32Uint64(I);
16072 case PT_IntAP:
16073 return emitFlipSint32IntAP(I);
16074 case PT_IntAPS:
16075 return emitFlipSint32IntAPS(I);
16076 case PT_Bool:
16077 return emitFlipSint32Bool(I);
16078 case PT_FixedPoint:
16079 return emitFlipSint32FixedPoint(I);
16080 case PT_Ptr:
16081 return emitFlipSint32Ptr(I);
16082 case PT_MemberPtr:
16083 return emitFlipSint32MemberPtr(I);
16084 case PT_Float:
16085 return emitFlipSint32Float(I);
16086 }
16087 llvm_unreachable("invalid enum value");
16088 case PT_Uint32:
16089 switch (T1) {
16090 case PT_Sint8:
16091 return emitFlipUint32Sint8(I);
16092 case PT_Uint8:
16093 return emitFlipUint32Uint8(I);
16094 case PT_Sint16:
16095 return emitFlipUint32Sint16(I);
16096 case PT_Uint16:
16097 return emitFlipUint32Uint16(I);
16098 case PT_Sint32:
16099 return emitFlipUint32Sint32(I);
16100 case PT_Uint32:
16101 return emitFlipUint32Uint32(I);
16102 case PT_Sint64:
16103 return emitFlipUint32Sint64(I);
16104 case PT_Uint64:
16105 return emitFlipUint32Uint64(I);
16106 case PT_IntAP:
16107 return emitFlipUint32IntAP(I);
16108 case PT_IntAPS:
16109 return emitFlipUint32IntAPS(I);
16110 case PT_Bool:
16111 return emitFlipUint32Bool(I);
16112 case PT_FixedPoint:
16113 return emitFlipUint32FixedPoint(I);
16114 case PT_Ptr:
16115 return emitFlipUint32Ptr(I);
16116 case PT_MemberPtr:
16117 return emitFlipUint32MemberPtr(I);
16118 case PT_Float:
16119 return emitFlipUint32Float(I);
16120 }
16121 llvm_unreachable("invalid enum value");
16122 case PT_Sint64:
16123 switch (T1) {
16124 case PT_Sint8:
16125 return emitFlipSint64Sint8(I);
16126 case PT_Uint8:
16127 return emitFlipSint64Uint8(I);
16128 case PT_Sint16:
16129 return emitFlipSint64Sint16(I);
16130 case PT_Uint16:
16131 return emitFlipSint64Uint16(I);
16132 case PT_Sint32:
16133 return emitFlipSint64Sint32(I);
16134 case PT_Uint32:
16135 return emitFlipSint64Uint32(I);
16136 case PT_Sint64:
16137 return emitFlipSint64Sint64(I);
16138 case PT_Uint64:
16139 return emitFlipSint64Uint64(I);
16140 case PT_IntAP:
16141 return emitFlipSint64IntAP(I);
16142 case PT_IntAPS:
16143 return emitFlipSint64IntAPS(I);
16144 case PT_Bool:
16145 return emitFlipSint64Bool(I);
16146 case PT_FixedPoint:
16147 return emitFlipSint64FixedPoint(I);
16148 case PT_Ptr:
16149 return emitFlipSint64Ptr(I);
16150 case PT_MemberPtr:
16151 return emitFlipSint64MemberPtr(I);
16152 case PT_Float:
16153 return emitFlipSint64Float(I);
16154 }
16155 llvm_unreachable("invalid enum value");
16156 case PT_Uint64:
16157 switch (T1) {
16158 case PT_Sint8:
16159 return emitFlipUint64Sint8(I);
16160 case PT_Uint8:
16161 return emitFlipUint64Uint8(I);
16162 case PT_Sint16:
16163 return emitFlipUint64Sint16(I);
16164 case PT_Uint16:
16165 return emitFlipUint64Uint16(I);
16166 case PT_Sint32:
16167 return emitFlipUint64Sint32(I);
16168 case PT_Uint32:
16169 return emitFlipUint64Uint32(I);
16170 case PT_Sint64:
16171 return emitFlipUint64Sint64(I);
16172 case PT_Uint64:
16173 return emitFlipUint64Uint64(I);
16174 case PT_IntAP:
16175 return emitFlipUint64IntAP(I);
16176 case PT_IntAPS:
16177 return emitFlipUint64IntAPS(I);
16178 case PT_Bool:
16179 return emitFlipUint64Bool(I);
16180 case PT_FixedPoint:
16181 return emitFlipUint64FixedPoint(I);
16182 case PT_Ptr:
16183 return emitFlipUint64Ptr(I);
16184 case PT_MemberPtr:
16185 return emitFlipUint64MemberPtr(I);
16186 case PT_Float:
16187 return emitFlipUint64Float(I);
16188 }
16189 llvm_unreachable("invalid enum value");
16190 case PT_IntAP:
16191 switch (T1) {
16192 case PT_Sint8:
16193 return emitFlipIntAPSint8(I);
16194 case PT_Uint8:
16195 return emitFlipIntAPUint8(I);
16196 case PT_Sint16:
16197 return emitFlipIntAPSint16(I);
16198 case PT_Uint16:
16199 return emitFlipIntAPUint16(I);
16200 case PT_Sint32:
16201 return emitFlipIntAPSint32(I);
16202 case PT_Uint32:
16203 return emitFlipIntAPUint32(I);
16204 case PT_Sint64:
16205 return emitFlipIntAPSint64(I);
16206 case PT_Uint64:
16207 return emitFlipIntAPUint64(I);
16208 case PT_IntAP:
16209 return emitFlipIntAPIntAP(I);
16210 case PT_IntAPS:
16211 return emitFlipIntAPIntAPS(I);
16212 case PT_Bool:
16213 return emitFlipIntAPBool(I);
16214 case PT_FixedPoint:
16215 return emitFlipIntAPFixedPoint(I);
16216 case PT_Ptr:
16217 return emitFlipIntAPPtr(I);
16218 case PT_MemberPtr:
16219 return emitFlipIntAPMemberPtr(I);
16220 case PT_Float:
16221 return emitFlipIntAPFloat(I);
16222 }
16223 llvm_unreachable("invalid enum value");
16224 case PT_IntAPS:
16225 switch (T1) {
16226 case PT_Sint8:
16227 return emitFlipIntAPSSint8(I);
16228 case PT_Uint8:
16229 return emitFlipIntAPSUint8(I);
16230 case PT_Sint16:
16231 return emitFlipIntAPSSint16(I);
16232 case PT_Uint16:
16233 return emitFlipIntAPSUint16(I);
16234 case PT_Sint32:
16235 return emitFlipIntAPSSint32(I);
16236 case PT_Uint32:
16237 return emitFlipIntAPSUint32(I);
16238 case PT_Sint64:
16239 return emitFlipIntAPSSint64(I);
16240 case PT_Uint64:
16241 return emitFlipIntAPSUint64(I);
16242 case PT_IntAP:
16243 return emitFlipIntAPSIntAP(I);
16244 case PT_IntAPS:
16245 return emitFlipIntAPSIntAPS(I);
16246 case PT_Bool:
16247 return emitFlipIntAPSBool(I);
16248 case PT_FixedPoint:
16249 return emitFlipIntAPSFixedPoint(I);
16250 case PT_Ptr:
16251 return emitFlipIntAPSPtr(I);
16252 case PT_MemberPtr:
16253 return emitFlipIntAPSMemberPtr(I);
16254 case PT_Float:
16255 return emitFlipIntAPSFloat(I);
16256 }
16257 llvm_unreachable("invalid enum value");
16258 case PT_Bool:
16259 switch (T1) {
16260 case PT_Sint8:
16261 return emitFlipBoolSint8(I);
16262 case PT_Uint8:
16263 return emitFlipBoolUint8(I);
16264 case PT_Sint16:
16265 return emitFlipBoolSint16(I);
16266 case PT_Uint16:
16267 return emitFlipBoolUint16(I);
16268 case PT_Sint32:
16269 return emitFlipBoolSint32(I);
16270 case PT_Uint32:
16271 return emitFlipBoolUint32(I);
16272 case PT_Sint64:
16273 return emitFlipBoolSint64(I);
16274 case PT_Uint64:
16275 return emitFlipBoolUint64(I);
16276 case PT_IntAP:
16277 return emitFlipBoolIntAP(I);
16278 case PT_IntAPS:
16279 return emitFlipBoolIntAPS(I);
16280 case PT_Bool:
16281 return emitFlipBoolBool(I);
16282 case PT_FixedPoint:
16283 return emitFlipBoolFixedPoint(I);
16284 case PT_Ptr:
16285 return emitFlipBoolPtr(I);
16286 case PT_MemberPtr:
16287 return emitFlipBoolMemberPtr(I);
16288 case PT_Float:
16289 return emitFlipBoolFloat(I);
16290 }
16291 llvm_unreachable("invalid enum value");
16292 case PT_FixedPoint:
16293 switch (T1) {
16294 case PT_Sint8:
16295 return emitFlipFixedPointSint8(I);
16296 case PT_Uint8:
16297 return emitFlipFixedPointUint8(I);
16298 case PT_Sint16:
16299 return emitFlipFixedPointSint16(I);
16300 case PT_Uint16:
16301 return emitFlipFixedPointUint16(I);
16302 case PT_Sint32:
16303 return emitFlipFixedPointSint32(I);
16304 case PT_Uint32:
16305 return emitFlipFixedPointUint32(I);
16306 case PT_Sint64:
16307 return emitFlipFixedPointSint64(I);
16308 case PT_Uint64:
16309 return emitFlipFixedPointUint64(I);
16310 case PT_IntAP:
16311 return emitFlipFixedPointIntAP(I);
16312 case PT_IntAPS:
16313 return emitFlipFixedPointIntAPS(I);
16314 case PT_Bool:
16315 return emitFlipFixedPointBool(I);
16316 case PT_FixedPoint:
16317 return emitFlipFixedPointFixedPoint(I);
16318 case PT_Ptr:
16319 return emitFlipFixedPointPtr(I);
16320 case PT_MemberPtr:
16321 return emitFlipFixedPointMemberPtr(I);
16322 case PT_Float:
16323 return emitFlipFixedPointFloat(I);
16324 }
16325 llvm_unreachable("invalid enum value");
16326 case PT_Ptr:
16327 switch (T1) {
16328 case PT_Sint8:
16329 return emitFlipPtrSint8(I);
16330 case PT_Uint8:
16331 return emitFlipPtrUint8(I);
16332 case PT_Sint16:
16333 return emitFlipPtrSint16(I);
16334 case PT_Uint16:
16335 return emitFlipPtrUint16(I);
16336 case PT_Sint32:
16337 return emitFlipPtrSint32(I);
16338 case PT_Uint32:
16339 return emitFlipPtrUint32(I);
16340 case PT_Sint64:
16341 return emitFlipPtrSint64(I);
16342 case PT_Uint64:
16343 return emitFlipPtrUint64(I);
16344 case PT_IntAP:
16345 return emitFlipPtrIntAP(I);
16346 case PT_IntAPS:
16347 return emitFlipPtrIntAPS(I);
16348 case PT_Bool:
16349 return emitFlipPtrBool(I);
16350 case PT_FixedPoint:
16351 return emitFlipPtrFixedPoint(I);
16352 case PT_Ptr:
16353 return emitFlipPtrPtr(I);
16354 case PT_MemberPtr:
16355 return emitFlipPtrMemberPtr(I);
16356 case PT_Float:
16357 return emitFlipPtrFloat(I);
16358 }
16359 llvm_unreachable("invalid enum value");
16360 case PT_MemberPtr:
16361 switch (T1) {
16362 case PT_Sint8:
16363 return emitFlipMemberPtrSint8(I);
16364 case PT_Uint8:
16365 return emitFlipMemberPtrUint8(I);
16366 case PT_Sint16:
16367 return emitFlipMemberPtrSint16(I);
16368 case PT_Uint16:
16369 return emitFlipMemberPtrUint16(I);
16370 case PT_Sint32:
16371 return emitFlipMemberPtrSint32(I);
16372 case PT_Uint32:
16373 return emitFlipMemberPtrUint32(I);
16374 case PT_Sint64:
16375 return emitFlipMemberPtrSint64(I);
16376 case PT_Uint64:
16377 return emitFlipMemberPtrUint64(I);
16378 case PT_IntAP:
16379 return emitFlipMemberPtrIntAP(I);
16380 case PT_IntAPS:
16381 return emitFlipMemberPtrIntAPS(I);
16382 case PT_Bool:
16383 return emitFlipMemberPtrBool(I);
16384 case PT_FixedPoint:
16385 return emitFlipMemberPtrFixedPoint(I);
16386 case PT_Ptr:
16387 return emitFlipMemberPtrPtr(I);
16388 case PT_MemberPtr:
16389 return emitFlipMemberPtrMemberPtr(I);
16390 case PT_Float:
16391 return emitFlipMemberPtrFloat(I);
16392 }
16393 llvm_unreachable("invalid enum value");
16394 case PT_Float:
16395 switch (T1) {
16396 case PT_Sint8:
16397 return emitFlipFloatSint8(I);
16398 case PT_Uint8:
16399 return emitFlipFloatUint8(I);
16400 case PT_Sint16:
16401 return emitFlipFloatSint16(I);
16402 case PT_Uint16:
16403 return emitFlipFloatUint16(I);
16404 case PT_Sint32:
16405 return emitFlipFloatSint32(I);
16406 case PT_Uint32:
16407 return emitFlipFloatUint32(I);
16408 case PT_Sint64:
16409 return emitFlipFloatSint64(I);
16410 case PT_Uint64:
16411 return emitFlipFloatUint64(I);
16412 case PT_IntAP:
16413 return emitFlipFloatIntAP(I);
16414 case PT_IntAPS:
16415 return emitFlipFloatIntAPS(I);
16416 case PT_Bool:
16417 return emitFlipFloatBool(I);
16418 case PT_FixedPoint:
16419 return emitFlipFloatFixedPoint(I);
16420 case PT_Ptr:
16421 return emitFlipFloatPtr(I);
16422 case PT_MemberPtr:
16423 return emitFlipFloatMemberPtr(I);
16424 case PT_Float:
16425 return emitFlipFloatFloat(I);
16426 }
16427 llvm_unreachable("invalid enum value");
16428 }
16429 llvm_unreachable("invalid enum value");
16430}
16431#endif
16432#ifdef GET_LINK_IMPL
16433bool ByteCodeEmitter::emitFlipSint8Sint8(SourceInfo L) {
16434 return emitOp<>(OP_FlipSint8Sint8, L);
16435}
16436bool ByteCodeEmitter::emitFlipSint8Uint8(SourceInfo L) {
16437 return emitOp<>(OP_FlipSint8Uint8, L);
16438}
16439bool ByteCodeEmitter::emitFlipSint8Sint16(SourceInfo L) {
16440 return emitOp<>(OP_FlipSint8Sint16, L);
16441}
16442bool ByteCodeEmitter::emitFlipSint8Uint16(SourceInfo L) {
16443 return emitOp<>(OP_FlipSint8Uint16, L);
16444}
16445bool ByteCodeEmitter::emitFlipSint8Sint32(SourceInfo L) {
16446 return emitOp<>(OP_FlipSint8Sint32, L);
16447}
16448bool ByteCodeEmitter::emitFlipSint8Uint32(SourceInfo L) {
16449 return emitOp<>(OP_FlipSint8Uint32, L);
16450}
16451bool ByteCodeEmitter::emitFlipSint8Sint64(SourceInfo L) {
16452 return emitOp<>(OP_FlipSint8Sint64, L);
16453}
16454bool ByteCodeEmitter::emitFlipSint8Uint64(SourceInfo L) {
16455 return emitOp<>(OP_FlipSint8Uint64, L);
16456}
16457bool ByteCodeEmitter::emitFlipSint8IntAP(SourceInfo L) {
16458 return emitOp<>(OP_FlipSint8IntAP, L);
16459}
16460bool ByteCodeEmitter::emitFlipSint8IntAPS(SourceInfo L) {
16461 return emitOp<>(OP_FlipSint8IntAPS, L);
16462}
16463bool ByteCodeEmitter::emitFlipSint8Bool(SourceInfo L) {
16464 return emitOp<>(OP_FlipSint8Bool, L);
16465}
16466bool ByteCodeEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
16467 return emitOp<>(OP_FlipSint8FixedPoint, L);
16468}
16469bool ByteCodeEmitter::emitFlipSint8Ptr(SourceInfo L) {
16470 return emitOp<>(OP_FlipSint8Ptr, L);
16471}
16472bool ByteCodeEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
16473 return emitOp<>(OP_FlipSint8MemberPtr, L);
16474}
16475bool ByteCodeEmitter::emitFlipSint8Float(SourceInfo L) {
16476 return emitOp<>(OP_FlipSint8Float, L);
16477}
16478bool ByteCodeEmitter::emitFlipUint8Sint8(SourceInfo L) {
16479 return emitOp<>(OP_FlipUint8Sint8, L);
16480}
16481bool ByteCodeEmitter::emitFlipUint8Uint8(SourceInfo L) {
16482 return emitOp<>(OP_FlipUint8Uint8, L);
16483}
16484bool ByteCodeEmitter::emitFlipUint8Sint16(SourceInfo L) {
16485 return emitOp<>(OP_FlipUint8Sint16, L);
16486}
16487bool ByteCodeEmitter::emitFlipUint8Uint16(SourceInfo L) {
16488 return emitOp<>(OP_FlipUint8Uint16, L);
16489}
16490bool ByteCodeEmitter::emitFlipUint8Sint32(SourceInfo L) {
16491 return emitOp<>(OP_FlipUint8Sint32, L);
16492}
16493bool ByteCodeEmitter::emitFlipUint8Uint32(SourceInfo L) {
16494 return emitOp<>(OP_FlipUint8Uint32, L);
16495}
16496bool ByteCodeEmitter::emitFlipUint8Sint64(SourceInfo L) {
16497 return emitOp<>(OP_FlipUint8Sint64, L);
16498}
16499bool ByteCodeEmitter::emitFlipUint8Uint64(SourceInfo L) {
16500 return emitOp<>(OP_FlipUint8Uint64, L);
16501}
16502bool ByteCodeEmitter::emitFlipUint8IntAP(SourceInfo L) {
16503 return emitOp<>(OP_FlipUint8IntAP, L);
16504}
16505bool ByteCodeEmitter::emitFlipUint8IntAPS(SourceInfo L) {
16506 return emitOp<>(OP_FlipUint8IntAPS, L);
16507}
16508bool ByteCodeEmitter::emitFlipUint8Bool(SourceInfo L) {
16509 return emitOp<>(OP_FlipUint8Bool, L);
16510}
16511bool ByteCodeEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
16512 return emitOp<>(OP_FlipUint8FixedPoint, L);
16513}
16514bool ByteCodeEmitter::emitFlipUint8Ptr(SourceInfo L) {
16515 return emitOp<>(OP_FlipUint8Ptr, L);
16516}
16517bool ByteCodeEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
16518 return emitOp<>(OP_FlipUint8MemberPtr, L);
16519}
16520bool ByteCodeEmitter::emitFlipUint8Float(SourceInfo L) {
16521 return emitOp<>(OP_FlipUint8Float, L);
16522}
16523bool ByteCodeEmitter::emitFlipSint16Sint8(SourceInfo L) {
16524 return emitOp<>(OP_FlipSint16Sint8, L);
16525}
16526bool ByteCodeEmitter::emitFlipSint16Uint8(SourceInfo L) {
16527 return emitOp<>(OP_FlipSint16Uint8, L);
16528}
16529bool ByteCodeEmitter::emitFlipSint16Sint16(SourceInfo L) {
16530 return emitOp<>(OP_FlipSint16Sint16, L);
16531}
16532bool ByteCodeEmitter::emitFlipSint16Uint16(SourceInfo L) {
16533 return emitOp<>(OP_FlipSint16Uint16, L);
16534}
16535bool ByteCodeEmitter::emitFlipSint16Sint32(SourceInfo L) {
16536 return emitOp<>(OP_FlipSint16Sint32, L);
16537}
16538bool ByteCodeEmitter::emitFlipSint16Uint32(SourceInfo L) {
16539 return emitOp<>(OP_FlipSint16Uint32, L);
16540}
16541bool ByteCodeEmitter::emitFlipSint16Sint64(SourceInfo L) {
16542 return emitOp<>(OP_FlipSint16Sint64, L);
16543}
16544bool ByteCodeEmitter::emitFlipSint16Uint64(SourceInfo L) {
16545 return emitOp<>(OP_FlipSint16Uint64, L);
16546}
16547bool ByteCodeEmitter::emitFlipSint16IntAP(SourceInfo L) {
16548 return emitOp<>(OP_FlipSint16IntAP, L);
16549}
16550bool ByteCodeEmitter::emitFlipSint16IntAPS(SourceInfo L) {
16551 return emitOp<>(OP_FlipSint16IntAPS, L);
16552}
16553bool ByteCodeEmitter::emitFlipSint16Bool(SourceInfo L) {
16554 return emitOp<>(OP_FlipSint16Bool, L);
16555}
16556bool ByteCodeEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
16557 return emitOp<>(OP_FlipSint16FixedPoint, L);
16558}
16559bool ByteCodeEmitter::emitFlipSint16Ptr(SourceInfo L) {
16560 return emitOp<>(OP_FlipSint16Ptr, L);
16561}
16562bool ByteCodeEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
16563 return emitOp<>(OP_FlipSint16MemberPtr, L);
16564}
16565bool ByteCodeEmitter::emitFlipSint16Float(SourceInfo L) {
16566 return emitOp<>(OP_FlipSint16Float, L);
16567}
16568bool ByteCodeEmitter::emitFlipUint16Sint8(SourceInfo L) {
16569 return emitOp<>(OP_FlipUint16Sint8, L);
16570}
16571bool ByteCodeEmitter::emitFlipUint16Uint8(SourceInfo L) {
16572 return emitOp<>(OP_FlipUint16Uint8, L);
16573}
16574bool ByteCodeEmitter::emitFlipUint16Sint16(SourceInfo L) {
16575 return emitOp<>(OP_FlipUint16Sint16, L);
16576}
16577bool ByteCodeEmitter::emitFlipUint16Uint16(SourceInfo L) {
16578 return emitOp<>(OP_FlipUint16Uint16, L);
16579}
16580bool ByteCodeEmitter::emitFlipUint16Sint32(SourceInfo L) {
16581 return emitOp<>(OP_FlipUint16Sint32, L);
16582}
16583bool ByteCodeEmitter::emitFlipUint16Uint32(SourceInfo L) {
16584 return emitOp<>(OP_FlipUint16Uint32, L);
16585}
16586bool ByteCodeEmitter::emitFlipUint16Sint64(SourceInfo L) {
16587 return emitOp<>(OP_FlipUint16Sint64, L);
16588}
16589bool ByteCodeEmitter::emitFlipUint16Uint64(SourceInfo L) {
16590 return emitOp<>(OP_FlipUint16Uint64, L);
16591}
16592bool ByteCodeEmitter::emitFlipUint16IntAP(SourceInfo L) {
16593 return emitOp<>(OP_FlipUint16IntAP, L);
16594}
16595bool ByteCodeEmitter::emitFlipUint16IntAPS(SourceInfo L) {
16596 return emitOp<>(OP_FlipUint16IntAPS, L);
16597}
16598bool ByteCodeEmitter::emitFlipUint16Bool(SourceInfo L) {
16599 return emitOp<>(OP_FlipUint16Bool, L);
16600}
16601bool ByteCodeEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
16602 return emitOp<>(OP_FlipUint16FixedPoint, L);
16603}
16604bool ByteCodeEmitter::emitFlipUint16Ptr(SourceInfo L) {
16605 return emitOp<>(OP_FlipUint16Ptr, L);
16606}
16607bool ByteCodeEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
16608 return emitOp<>(OP_FlipUint16MemberPtr, L);
16609}
16610bool ByteCodeEmitter::emitFlipUint16Float(SourceInfo L) {
16611 return emitOp<>(OP_FlipUint16Float, L);
16612}
16613bool ByteCodeEmitter::emitFlipSint32Sint8(SourceInfo L) {
16614 return emitOp<>(OP_FlipSint32Sint8, L);
16615}
16616bool ByteCodeEmitter::emitFlipSint32Uint8(SourceInfo L) {
16617 return emitOp<>(OP_FlipSint32Uint8, L);
16618}
16619bool ByteCodeEmitter::emitFlipSint32Sint16(SourceInfo L) {
16620 return emitOp<>(OP_FlipSint32Sint16, L);
16621}
16622bool ByteCodeEmitter::emitFlipSint32Uint16(SourceInfo L) {
16623 return emitOp<>(OP_FlipSint32Uint16, L);
16624}
16625bool ByteCodeEmitter::emitFlipSint32Sint32(SourceInfo L) {
16626 return emitOp<>(OP_FlipSint32Sint32, L);
16627}
16628bool ByteCodeEmitter::emitFlipSint32Uint32(SourceInfo L) {
16629 return emitOp<>(OP_FlipSint32Uint32, L);
16630}
16631bool ByteCodeEmitter::emitFlipSint32Sint64(SourceInfo L) {
16632 return emitOp<>(OP_FlipSint32Sint64, L);
16633}
16634bool ByteCodeEmitter::emitFlipSint32Uint64(SourceInfo L) {
16635 return emitOp<>(OP_FlipSint32Uint64, L);
16636}
16637bool ByteCodeEmitter::emitFlipSint32IntAP(SourceInfo L) {
16638 return emitOp<>(OP_FlipSint32IntAP, L);
16639}
16640bool ByteCodeEmitter::emitFlipSint32IntAPS(SourceInfo L) {
16641 return emitOp<>(OP_FlipSint32IntAPS, L);
16642}
16643bool ByteCodeEmitter::emitFlipSint32Bool(SourceInfo L) {
16644 return emitOp<>(OP_FlipSint32Bool, L);
16645}
16646bool ByteCodeEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
16647 return emitOp<>(OP_FlipSint32FixedPoint, L);
16648}
16649bool ByteCodeEmitter::emitFlipSint32Ptr(SourceInfo L) {
16650 return emitOp<>(OP_FlipSint32Ptr, L);
16651}
16652bool ByteCodeEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
16653 return emitOp<>(OP_FlipSint32MemberPtr, L);
16654}
16655bool ByteCodeEmitter::emitFlipSint32Float(SourceInfo L) {
16656 return emitOp<>(OP_FlipSint32Float, L);
16657}
16658bool ByteCodeEmitter::emitFlipUint32Sint8(SourceInfo L) {
16659 return emitOp<>(OP_FlipUint32Sint8, L);
16660}
16661bool ByteCodeEmitter::emitFlipUint32Uint8(SourceInfo L) {
16662 return emitOp<>(OP_FlipUint32Uint8, L);
16663}
16664bool ByteCodeEmitter::emitFlipUint32Sint16(SourceInfo L) {
16665 return emitOp<>(OP_FlipUint32Sint16, L);
16666}
16667bool ByteCodeEmitter::emitFlipUint32Uint16(SourceInfo L) {
16668 return emitOp<>(OP_FlipUint32Uint16, L);
16669}
16670bool ByteCodeEmitter::emitFlipUint32Sint32(SourceInfo L) {
16671 return emitOp<>(OP_FlipUint32Sint32, L);
16672}
16673bool ByteCodeEmitter::emitFlipUint32Uint32(SourceInfo L) {
16674 return emitOp<>(OP_FlipUint32Uint32, L);
16675}
16676bool ByteCodeEmitter::emitFlipUint32Sint64(SourceInfo L) {
16677 return emitOp<>(OP_FlipUint32Sint64, L);
16678}
16679bool ByteCodeEmitter::emitFlipUint32Uint64(SourceInfo L) {
16680 return emitOp<>(OP_FlipUint32Uint64, L);
16681}
16682bool ByteCodeEmitter::emitFlipUint32IntAP(SourceInfo L) {
16683 return emitOp<>(OP_FlipUint32IntAP, L);
16684}
16685bool ByteCodeEmitter::emitFlipUint32IntAPS(SourceInfo L) {
16686 return emitOp<>(OP_FlipUint32IntAPS, L);
16687}
16688bool ByteCodeEmitter::emitFlipUint32Bool(SourceInfo L) {
16689 return emitOp<>(OP_FlipUint32Bool, L);
16690}
16691bool ByteCodeEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
16692 return emitOp<>(OP_FlipUint32FixedPoint, L);
16693}
16694bool ByteCodeEmitter::emitFlipUint32Ptr(SourceInfo L) {
16695 return emitOp<>(OP_FlipUint32Ptr, L);
16696}
16697bool ByteCodeEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
16698 return emitOp<>(OP_FlipUint32MemberPtr, L);
16699}
16700bool ByteCodeEmitter::emitFlipUint32Float(SourceInfo L) {
16701 return emitOp<>(OP_FlipUint32Float, L);
16702}
16703bool ByteCodeEmitter::emitFlipSint64Sint8(SourceInfo L) {
16704 return emitOp<>(OP_FlipSint64Sint8, L);
16705}
16706bool ByteCodeEmitter::emitFlipSint64Uint8(SourceInfo L) {
16707 return emitOp<>(OP_FlipSint64Uint8, L);
16708}
16709bool ByteCodeEmitter::emitFlipSint64Sint16(SourceInfo L) {
16710 return emitOp<>(OP_FlipSint64Sint16, L);
16711}
16712bool ByteCodeEmitter::emitFlipSint64Uint16(SourceInfo L) {
16713 return emitOp<>(OP_FlipSint64Uint16, L);
16714}
16715bool ByteCodeEmitter::emitFlipSint64Sint32(SourceInfo L) {
16716 return emitOp<>(OP_FlipSint64Sint32, L);
16717}
16718bool ByteCodeEmitter::emitFlipSint64Uint32(SourceInfo L) {
16719 return emitOp<>(OP_FlipSint64Uint32, L);
16720}
16721bool ByteCodeEmitter::emitFlipSint64Sint64(SourceInfo L) {
16722 return emitOp<>(OP_FlipSint64Sint64, L);
16723}
16724bool ByteCodeEmitter::emitFlipSint64Uint64(SourceInfo L) {
16725 return emitOp<>(OP_FlipSint64Uint64, L);
16726}
16727bool ByteCodeEmitter::emitFlipSint64IntAP(SourceInfo L) {
16728 return emitOp<>(OP_FlipSint64IntAP, L);
16729}
16730bool ByteCodeEmitter::emitFlipSint64IntAPS(SourceInfo L) {
16731 return emitOp<>(OP_FlipSint64IntAPS, L);
16732}
16733bool ByteCodeEmitter::emitFlipSint64Bool(SourceInfo L) {
16734 return emitOp<>(OP_FlipSint64Bool, L);
16735}
16736bool ByteCodeEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
16737 return emitOp<>(OP_FlipSint64FixedPoint, L);
16738}
16739bool ByteCodeEmitter::emitFlipSint64Ptr(SourceInfo L) {
16740 return emitOp<>(OP_FlipSint64Ptr, L);
16741}
16742bool ByteCodeEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
16743 return emitOp<>(OP_FlipSint64MemberPtr, L);
16744}
16745bool ByteCodeEmitter::emitFlipSint64Float(SourceInfo L) {
16746 return emitOp<>(OP_FlipSint64Float, L);
16747}
16748bool ByteCodeEmitter::emitFlipUint64Sint8(SourceInfo L) {
16749 return emitOp<>(OP_FlipUint64Sint8, L);
16750}
16751bool ByteCodeEmitter::emitFlipUint64Uint8(SourceInfo L) {
16752 return emitOp<>(OP_FlipUint64Uint8, L);
16753}
16754bool ByteCodeEmitter::emitFlipUint64Sint16(SourceInfo L) {
16755 return emitOp<>(OP_FlipUint64Sint16, L);
16756}
16757bool ByteCodeEmitter::emitFlipUint64Uint16(SourceInfo L) {
16758 return emitOp<>(OP_FlipUint64Uint16, L);
16759}
16760bool ByteCodeEmitter::emitFlipUint64Sint32(SourceInfo L) {
16761 return emitOp<>(OP_FlipUint64Sint32, L);
16762}
16763bool ByteCodeEmitter::emitFlipUint64Uint32(SourceInfo L) {
16764 return emitOp<>(OP_FlipUint64Uint32, L);
16765}
16766bool ByteCodeEmitter::emitFlipUint64Sint64(SourceInfo L) {
16767 return emitOp<>(OP_FlipUint64Sint64, L);
16768}
16769bool ByteCodeEmitter::emitFlipUint64Uint64(SourceInfo L) {
16770 return emitOp<>(OP_FlipUint64Uint64, L);
16771}
16772bool ByteCodeEmitter::emitFlipUint64IntAP(SourceInfo L) {
16773 return emitOp<>(OP_FlipUint64IntAP, L);
16774}
16775bool ByteCodeEmitter::emitFlipUint64IntAPS(SourceInfo L) {
16776 return emitOp<>(OP_FlipUint64IntAPS, L);
16777}
16778bool ByteCodeEmitter::emitFlipUint64Bool(SourceInfo L) {
16779 return emitOp<>(OP_FlipUint64Bool, L);
16780}
16781bool ByteCodeEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
16782 return emitOp<>(OP_FlipUint64FixedPoint, L);
16783}
16784bool ByteCodeEmitter::emitFlipUint64Ptr(SourceInfo L) {
16785 return emitOp<>(OP_FlipUint64Ptr, L);
16786}
16787bool ByteCodeEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
16788 return emitOp<>(OP_FlipUint64MemberPtr, L);
16789}
16790bool ByteCodeEmitter::emitFlipUint64Float(SourceInfo L) {
16791 return emitOp<>(OP_FlipUint64Float, L);
16792}
16793bool ByteCodeEmitter::emitFlipIntAPSint8(SourceInfo L) {
16794 return emitOp<>(OP_FlipIntAPSint8, L);
16795}
16796bool ByteCodeEmitter::emitFlipIntAPUint8(SourceInfo L) {
16797 return emitOp<>(OP_FlipIntAPUint8, L);
16798}
16799bool ByteCodeEmitter::emitFlipIntAPSint16(SourceInfo L) {
16800 return emitOp<>(OP_FlipIntAPSint16, L);
16801}
16802bool ByteCodeEmitter::emitFlipIntAPUint16(SourceInfo L) {
16803 return emitOp<>(OP_FlipIntAPUint16, L);
16804}
16805bool ByteCodeEmitter::emitFlipIntAPSint32(SourceInfo L) {
16806 return emitOp<>(OP_FlipIntAPSint32, L);
16807}
16808bool ByteCodeEmitter::emitFlipIntAPUint32(SourceInfo L) {
16809 return emitOp<>(OP_FlipIntAPUint32, L);
16810}
16811bool ByteCodeEmitter::emitFlipIntAPSint64(SourceInfo L) {
16812 return emitOp<>(OP_FlipIntAPSint64, L);
16813}
16814bool ByteCodeEmitter::emitFlipIntAPUint64(SourceInfo L) {
16815 return emitOp<>(OP_FlipIntAPUint64, L);
16816}
16817bool ByteCodeEmitter::emitFlipIntAPIntAP(SourceInfo L) {
16818 return emitOp<>(OP_FlipIntAPIntAP, L);
16819}
16820bool ByteCodeEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
16821 return emitOp<>(OP_FlipIntAPIntAPS, L);
16822}
16823bool ByteCodeEmitter::emitFlipIntAPBool(SourceInfo L) {
16824 return emitOp<>(OP_FlipIntAPBool, L);
16825}
16826bool ByteCodeEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
16827 return emitOp<>(OP_FlipIntAPFixedPoint, L);
16828}
16829bool ByteCodeEmitter::emitFlipIntAPPtr(SourceInfo L) {
16830 return emitOp<>(OP_FlipIntAPPtr, L);
16831}
16832bool ByteCodeEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
16833 return emitOp<>(OP_FlipIntAPMemberPtr, L);
16834}
16835bool ByteCodeEmitter::emitFlipIntAPFloat(SourceInfo L) {
16836 return emitOp<>(OP_FlipIntAPFloat, L);
16837}
16838bool ByteCodeEmitter::emitFlipIntAPSSint8(SourceInfo L) {
16839 return emitOp<>(OP_FlipIntAPSSint8, L);
16840}
16841bool ByteCodeEmitter::emitFlipIntAPSUint8(SourceInfo L) {
16842 return emitOp<>(OP_FlipIntAPSUint8, L);
16843}
16844bool ByteCodeEmitter::emitFlipIntAPSSint16(SourceInfo L) {
16845 return emitOp<>(OP_FlipIntAPSSint16, L);
16846}
16847bool ByteCodeEmitter::emitFlipIntAPSUint16(SourceInfo L) {
16848 return emitOp<>(OP_FlipIntAPSUint16, L);
16849}
16850bool ByteCodeEmitter::emitFlipIntAPSSint32(SourceInfo L) {
16851 return emitOp<>(OP_FlipIntAPSSint32, L);
16852}
16853bool ByteCodeEmitter::emitFlipIntAPSUint32(SourceInfo L) {
16854 return emitOp<>(OP_FlipIntAPSUint32, L);
16855}
16856bool ByteCodeEmitter::emitFlipIntAPSSint64(SourceInfo L) {
16857 return emitOp<>(OP_FlipIntAPSSint64, L);
16858}
16859bool ByteCodeEmitter::emitFlipIntAPSUint64(SourceInfo L) {
16860 return emitOp<>(OP_FlipIntAPSUint64, L);
16861}
16862bool ByteCodeEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
16863 return emitOp<>(OP_FlipIntAPSIntAP, L);
16864}
16865bool ByteCodeEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
16866 return emitOp<>(OP_FlipIntAPSIntAPS, L);
16867}
16868bool ByteCodeEmitter::emitFlipIntAPSBool(SourceInfo L) {
16869 return emitOp<>(OP_FlipIntAPSBool, L);
16870}
16871bool ByteCodeEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
16872 return emitOp<>(OP_FlipIntAPSFixedPoint, L);
16873}
16874bool ByteCodeEmitter::emitFlipIntAPSPtr(SourceInfo L) {
16875 return emitOp<>(OP_FlipIntAPSPtr, L);
16876}
16877bool ByteCodeEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
16878 return emitOp<>(OP_FlipIntAPSMemberPtr, L);
16879}
16880bool ByteCodeEmitter::emitFlipIntAPSFloat(SourceInfo L) {
16881 return emitOp<>(OP_FlipIntAPSFloat, L);
16882}
16883bool ByteCodeEmitter::emitFlipBoolSint8(SourceInfo L) {
16884 return emitOp<>(OP_FlipBoolSint8, L);
16885}
16886bool ByteCodeEmitter::emitFlipBoolUint8(SourceInfo L) {
16887 return emitOp<>(OP_FlipBoolUint8, L);
16888}
16889bool ByteCodeEmitter::emitFlipBoolSint16(SourceInfo L) {
16890 return emitOp<>(OP_FlipBoolSint16, L);
16891}
16892bool ByteCodeEmitter::emitFlipBoolUint16(SourceInfo L) {
16893 return emitOp<>(OP_FlipBoolUint16, L);
16894}
16895bool ByteCodeEmitter::emitFlipBoolSint32(SourceInfo L) {
16896 return emitOp<>(OP_FlipBoolSint32, L);
16897}
16898bool ByteCodeEmitter::emitFlipBoolUint32(SourceInfo L) {
16899 return emitOp<>(OP_FlipBoolUint32, L);
16900}
16901bool ByteCodeEmitter::emitFlipBoolSint64(SourceInfo L) {
16902 return emitOp<>(OP_FlipBoolSint64, L);
16903}
16904bool ByteCodeEmitter::emitFlipBoolUint64(SourceInfo L) {
16905 return emitOp<>(OP_FlipBoolUint64, L);
16906}
16907bool ByteCodeEmitter::emitFlipBoolIntAP(SourceInfo L) {
16908 return emitOp<>(OP_FlipBoolIntAP, L);
16909}
16910bool ByteCodeEmitter::emitFlipBoolIntAPS(SourceInfo L) {
16911 return emitOp<>(OP_FlipBoolIntAPS, L);
16912}
16913bool ByteCodeEmitter::emitFlipBoolBool(SourceInfo L) {
16914 return emitOp<>(OP_FlipBoolBool, L);
16915}
16916bool ByteCodeEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
16917 return emitOp<>(OP_FlipBoolFixedPoint, L);
16918}
16919bool ByteCodeEmitter::emitFlipBoolPtr(SourceInfo L) {
16920 return emitOp<>(OP_FlipBoolPtr, L);
16921}
16922bool ByteCodeEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
16923 return emitOp<>(OP_FlipBoolMemberPtr, L);
16924}
16925bool ByteCodeEmitter::emitFlipBoolFloat(SourceInfo L) {
16926 return emitOp<>(OP_FlipBoolFloat, L);
16927}
16928bool ByteCodeEmitter::emitFlipFixedPointSint8(SourceInfo L) {
16929 return emitOp<>(OP_FlipFixedPointSint8, L);
16930}
16931bool ByteCodeEmitter::emitFlipFixedPointUint8(SourceInfo L) {
16932 return emitOp<>(OP_FlipFixedPointUint8, L);
16933}
16934bool ByteCodeEmitter::emitFlipFixedPointSint16(SourceInfo L) {
16935 return emitOp<>(OP_FlipFixedPointSint16, L);
16936}
16937bool ByteCodeEmitter::emitFlipFixedPointUint16(SourceInfo L) {
16938 return emitOp<>(OP_FlipFixedPointUint16, L);
16939}
16940bool ByteCodeEmitter::emitFlipFixedPointSint32(SourceInfo L) {
16941 return emitOp<>(OP_FlipFixedPointSint32, L);
16942}
16943bool ByteCodeEmitter::emitFlipFixedPointUint32(SourceInfo L) {
16944 return emitOp<>(OP_FlipFixedPointUint32, L);
16945}
16946bool ByteCodeEmitter::emitFlipFixedPointSint64(SourceInfo L) {
16947 return emitOp<>(OP_FlipFixedPointSint64, L);
16948}
16949bool ByteCodeEmitter::emitFlipFixedPointUint64(SourceInfo L) {
16950 return emitOp<>(OP_FlipFixedPointUint64, L);
16951}
16952bool ByteCodeEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
16953 return emitOp<>(OP_FlipFixedPointIntAP, L);
16954}
16955bool ByteCodeEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
16956 return emitOp<>(OP_FlipFixedPointIntAPS, L);
16957}
16958bool ByteCodeEmitter::emitFlipFixedPointBool(SourceInfo L) {
16959 return emitOp<>(OP_FlipFixedPointBool, L);
16960}
16961bool ByteCodeEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
16962 return emitOp<>(OP_FlipFixedPointFixedPoint, L);
16963}
16964bool ByteCodeEmitter::emitFlipFixedPointPtr(SourceInfo L) {
16965 return emitOp<>(OP_FlipFixedPointPtr, L);
16966}
16967bool ByteCodeEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
16968 return emitOp<>(OP_FlipFixedPointMemberPtr, L);
16969}
16970bool ByteCodeEmitter::emitFlipFixedPointFloat(SourceInfo L) {
16971 return emitOp<>(OP_FlipFixedPointFloat, L);
16972}
16973bool ByteCodeEmitter::emitFlipPtrSint8(SourceInfo L) {
16974 return emitOp<>(OP_FlipPtrSint8, L);
16975}
16976bool ByteCodeEmitter::emitFlipPtrUint8(SourceInfo L) {
16977 return emitOp<>(OP_FlipPtrUint8, L);
16978}
16979bool ByteCodeEmitter::emitFlipPtrSint16(SourceInfo L) {
16980 return emitOp<>(OP_FlipPtrSint16, L);
16981}
16982bool ByteCodeEmitter::emitFlipPtrUint16(SourceInfo L) {
16983 return emitOp<>(OP_FlipPtrUint16, L);
16984}
16985bool ByteCodeEmitter::emitFlipPtrSint32(SourceInfo L) {
16986 return emitOp<>(OP_FlipPtrSint32, L);
16987}
16988bool ByteCodeEmitter::emitFlipPtrUint32(SourceInfo L) {
16989 return emitOp<>(OP_FlipPtrUint32, L);
16990}
16991bool ByteCodeEmitter::emitFlipPtrSint64(SourceInfo L) {
16992 return emitOp<>(OP_FlipPtrSint64, L);
16993}
16994bool ByteCodeEmitter::emitFlipPtrUint64(SourceInfo L) {
16995 return emitOp<>(OP_FlipPtrUint64, L);
16996}
16997bool ByteCodeEmitter::emitFlipPtrIntAP(SourceInfo L) {
16998 return emitOp<>(OP_FlipPtrIntAP, L);
16999}
17000bool ByteCodeEmitter::emitFlipPtrIntAPS(SourceInfo L) {
17001 return emitOp<>(OP_FlipPtrIntAPS, L);
17002}
17003bool ByteCodeEmitter::emitFlipPtrBool(SourceInfo L) {
17004 return emitOp<>(OP_FlipPtrBool, L);
17005}
17006bool ByteCodeEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
17007 return emitOp<>(OP_FlipPtrFixedPoint, L);
17008}
17009bool ByteCodeEmitter::emitFlipPtrPtr(SourceInfo L) {
17010 return emitOp<>(OP_FlipPtrPtr, L);
17011}
17012bool ByteCodeEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
17013 return emitOp<>(OP_FlipPtrMemberPtr, L);
17014}
17015bool ByteCodeEmitter::emitFlipPtrFloat(SourceInfo L) {
17016 return emitOp<>(OP_FlipPtrFloat, L);
17017}
17018bool ByteCodeEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
17019 return emitOp<>(OP_FlipMemberPtrSint8, L);
17020}
17021bool ByteCodeEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
17022 return emitOp<>(OP_FlipMemberPtrUint8, L);
17023}
17024bool ByteCodeEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
17025 return emitOp<>(OP_FlipMemberPtrSint16, L);
17026}
17027bool ByteCodeEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
17028 return emitOp<>(OP_FlipMemberPtrUint16, L);
17029}
17030bool ByteCodeEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
17031 return emitOp<>(OP_FlipMemberPtrSint32, L);
17032}
17033bool ByteCodeEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
17034 return emitOp<>(OP_FlipMemberPtrUint32, L);
17035}
17036bool ByteCodeEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
17037 return emitOp<>(OP_FlipMemberPtrSint64, L);
17038}
17039bool ByteCodeEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
17040 return emitOp<>(OP_FlipMemberPtrUint64, L);
17041}
17042bool ByteCodeEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
17043 return emitOp<>(OP_FlipMemberPtrIntAP, L);
17044}
17045bool ByteCodeEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
17046 return emitOp<>(OP_FlipMemberPtrIntAPS, L);
17047}
17048bool ByteCodeEmitter::emitFlipMemberPtrBool(SourceInfo L) {
17049 return emitOp<>(OP_FlipMemberPtrBool, L);
17050}
17051bool ByteCodeEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
17052 return emitOp<>(OP_FlipMemberPtrFixedPoint, L);
17053}
17054bool ByteCodeEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
17055 return emitOp<>(OP_FlipMemberPtrPtr, L);
17056}
17057bool ByteCodeEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
17058 return emitOp<>(OP_FlipMemberPtrMemberPtr, L);
17059}
17060bool ByteCodeEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
17061 return emitOp<>(OP_FlipMemberPtrFloat, L);
17062}
17063bool ByteCodeEmitter::emitFlipFloatSint8(SourceInfo L) {
17064 return emitOp<>(OP_FlipFloatSint8, L);
17065}
17066bool ByteCodeEmitter::emitFlipFloatUint8(SourceInfo L) {
17067 return emitOp<>(OP_FlipFloatUint8, L);
17068}
17069bool ByteCodeEmitter::emitFlipFloatSint16(SourceInfo L) {
17070 return emitOp<>(OP_FlipFloatSint16, L);
17071}
17072bool ByteCodeEmitter::emitFlipFloatUint16(SourceInfo L) {
17073 return emitOp<>(OP_FlipFloatUint16, L);
17074}
17075bool ByteCodeEmitter::emitFlipFloatSint32(SourceInfo L) {
17076 return emitOp<>(OP_FlipFloatSint32, L);
17077}
17078bool ByteCodeEmitter::emitFlipFloatUint32(SourceInfo L) {
17079 return emitOp<>(OP_FlipFloatUint32, L);
17080}
17081bool ByteCodeEmitter::emitFlipFloatSint64(SourceInfo L) {
17082 return emitOp<>(OP_FlipFloatSint64, L);
17083}
17084bool ByteCodeEmitter::emitFlipFloatUint64(SourceInfo L) {
17085 return emitOp<>(OP_FlipFloatUint64, L);
17086}
17087bool ByteCodeEmitter::emitFlipFloatIntAP(SourceInfo L) {
17088 return emitOp<>(OP_FlipFloatIntAP, L);
17089}
17090bool ByteCodeEmitter::emitFlipFloatIntAPS(SourceInfo L) {
17091 return emitOp<>(OP_FlipFloatIntAPS, L);
17092}
17093bool ByteCodeEmitter::emitFlipFloatBool(SourceInfo L) {
17094 return emitOp<>(OP_FlipFloatBool, L);
17095}
17096bool ByteCodeEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
17097 return emitOp<>(OP_FlipFloatFixedPoint, L);
17098}
17099bool ByteCodeEmitter::emitFlipFloatPtr(SourceInfo L) {
17100 return emitOp<>(OP_FlipFloatPtr, L);
17101}
17102bool ByteCodeEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
17103 return emitOp<>(OP_FlipFloatMemberPtr, L);
17104}
17105bool ByteCodeEmitter::emitFlipFloatFloat(SourceInfo L) {
17106 return emitOp<>(OP_FlipFloatFloat, L);
17107}
17108#endif
17109#ifdef GET_EVAL_IMPL
17110bool EvalEmitter::emitFlipSint8Sint8(SourceInfo L) {
17111 if (!isActive()) return true;
17112 CurrentSource = L;
17113 return Flip<PT_Sint8, PT_Sint8>(S, OpPC);
17114}
17115bool EvalEmitter::emitFlipSint8Uint8(SourceInfo L) {
17116 if (!isActive()) return true;
17117 CurrentSource = L;
17118 return Flip<PT_Sint8, PT_Uint8>(S, OpPC);
17119}
17120bool EvalEmitter::emitFlipSint8Sint16(SourceInfo L) {
17121 if (!isActive()) return true;
17122 CurrentSource = L;
17123 return Flip<PT_Sint8, PT_Sint16>(S, OpPC);
17124}
17125bool EvalEmitter::emitFlipSint8Uint16(SourceInfo L) {
17126 if (!isActive()) return true;
17127 CurrentSource = L;
17128 return Flip<PT_Sint8, PT_Uint16>(S, OpPC);
17129}
17130bool EvalEmitter::emitFlipSint8Sint32(SourceInfo L) {
17131 if (!isActive()) return true;
17132 CurrentSource = L;
17133 return Flip<PT_Sint8, PT_Sint32>(S, OpPC);
17134}
17135bool EvalEmitter::emitFlipSint8Uint32(SourceInfo L) {
17136 if (!isActive()) return true;
17137 CurrentSource = L;
17138 return Flip<PT_Sint8, PT_Uint32>(S, OpPC);
17139}
17140bool EvalEmitter::emitFlipSint8Sint64(SourceInfo L) {
17141 if (!isActive()) return true;
17142 CurrentSource = L;
17143 return Flip<PT_Sint8, PT_Sint64>(S, OpPC);
17144}
17145bool EvalEmitter::emitFlipSint8Uint64(SourceInfo L) {
17146 if (!isActive()) return true;
17147 CurrentSource = L;
17148 return Flip<PT_Sint8, PT_Uint64>(S, OpPC);
17149}
17150bool EvalEmitter::emitFlipSint8IntAP(SourceInfo L) {
17151 if (!isActive()) return true;
17152 CurrentSource = L;
17153 return Flip<PT_Sint8, PT_IntAP>(S, OpPC);
17154}
17155bool EvalEmitter::emitFlipSint8IntAPS(SourceInfo L) {
17156 if (!isActive()) return true;
17157 CurrentSource = L;
17158 return Flip<PT_Sint8, PT_IntAPS>(S, OpPC);
17159}
17160bool EvalEmitter::emitFlipSint8Bool(SourceInfo L) {
17161 if (!isActive()) return true;
17162 CurrentSource = L;
17163 return Flip<PT_Sint8, PT_Bool>(S, OpPC);
17164}
17165bool EvalEmitter::emitFlipSint8FixedPoint(SourceInfo L) {
17166 if (!isActive()) return true;
17167 CurrentSource = L;
17168 return Flip<PT_Sint8, PT_FixedPoint>(S, OpPC);
17169}
17170bool EvalEmitter::emitFlipSint8Ptr(SourceInfo L) {
17171 if (!isActive()) return true;
17172 CurrentSource = L;
17173 return Flip<PT_Sint8, PT_Ptr>(S, OpPC);
17174}
17175bool EvalEmitter::emitFlipSint8MemberPtr(SourceInfo L) {
17176 if (!isActive()) return true;
17177 CurrentSource = L;
17178 return Flip<PT_Sint8, PT_MemberPtr>(S, OpPC);
17179}
17180bool EvalEmitter::emitFlipSint8Float(SourceInfo L) {
17181 if (!isActive()) return true;
17182 CurrentSource = L;
17183 return Flip<PT_Sint8, PT_Float>(S, OpPC);
17184}
17185bool EvalEmitter::emitFlipUint8Sint8(SourceInfo L) {
17186 if (!isActive()) return true;
17187 CurrentSource = L;
17188 return Flip<PT_Uint8, PT_Sint8>(S, OpPC);
17189}
17190bool EvalEmitter::emitFlipUint8Uint8(SourceInfo L) {
17191 if (!isActive()) return true;
17192 CurrentSource = L;
17193 return Flip<PT_Uint8, PT_Uint8>(S, OpPC);
17194}
17195bool EvalEmitter::emitFlipUint8Sint16(SourceInfo L) {
17196 if (!isActive()) return true;
17197 CurrentSource = L;
17198 return Flip<PT_Uint8, PT_Sint16>(S, OpPC);
17199}
17200bool EvalEmitter::emitFlipUint8Uint16(SourceInfo L) {
17201 if (!isActive()) return true;
17202 CurrentSource = L;
17203 return Flip<PT_Uint8, PT_Uint16>(S, OpPC);
17204}
17205bool EvalEmitter::emitFlipUint8Sint32(SourceInfo L) {
17206 if (!isActive()) return true;
17207 CurrentSource = L;
17208 return Flip<PT_Uint8, PT_Sint32>(S, OpPC);
17209}
17210bool EvalEmitter::emitFlipUint8Uint32(SourceInfo L) {
17211 if (!isActive()) return true;
17212 CurrentSource = L;
17213 return Flip<PT_Uint8, PT_Uint32>(S, OpPC);
17214}
17215bool EvalEmitter::emitFlipUint8Sint64(SourceInfo L) {
17216 if (!isActive()) return true;
17217 CurrentSource = L;
17218 return Flip<PT_Uint8, PT_Sint64>(S, OpPC);
17219}
17220bool EvalEmitter::emitFlipUint8Uint64(SourceInfo L) {
17221 if (!isActive()) return true;
17222 CurrentSource = L;
17223 return Flip<PT_Uint8, PT_Uint64>(S, OpPC);
17224}
17225bool EvalEmitter::emitFlipUint8IntAP(SourceInfo L) {
17226 if (!isActive()) return true;
17227 CurrentSource = L;
17228 return Flip<PT_Uint8, PT_IntAP>(S, OpPC);
17229}
17230bool EvalEmitter::emitFlipUint8IntAPS(SourceInfo L) {
17231 if (!isActive()) return true;
17232 CurrentSource = L;
17233 return Flip<PT_Uint8, PT_IntAPS>(S, OpPC);
17234}
17235bool EvalEmitter::emitFlipUint8Bool(SourceInfo L) {
17236 if (!isActive()) return true;
17237 CurrentSource = L;
17238 return Flip<PT_Uint8, PT_Bool>(S, OpPC);
17239}
17240bool EvalEmitter::emitFlipUint8FixedPoint(SourceInfo L) {
17241 if (!isActive()) return true;
17242 CurrentSource = L;
17243 return Flip<PT_Uint8, PT_FixedPoint>(S, OpPC);
17244}
17245bool EvalEmitter::emitFlipUint8Ptr(SourceInfo L) {
17246 if (!isActive()) return true;
17247 CurrentSource = L;
17248 return Flip<PT_Uint8, PT_Ptr>(S, OpPC);
17249}
17250bool EvalEmitter::emitFlipUint8MemberPtr(SourceInfo L) {
17251 if (!isActive()) return true;
17252 CurrentSource = L;
17253 return Flip<PT_Uint8, PT_MemberPtr>(S, OpPC);
17254}
17255bool EvalEmitter::emitFlipUint8Float(SourceInfo L) {
17256 if (!isActive()) return true;
17257 CurrentSource = L;
17258 return Flip<PT_Uint8, PT_Float>(S, OpPC);
17259}
17260bool EvalEmitter::emitFlipSint16Sint8(SourceInfo L) {
17261 if (!isActive()) return true;
17262 CurrentSource = L;
17263 return Flip<PT_Sint16, PT_Sint8>(S, OpPC);
17264}
17265bool EvalEmitter::emitFlipSint16Uint8(SourceInfo L) {
17266 if (!isActive()) return true;
17267 CurrentSource = L;
17268 return Flip<PT_Sint16, PT_Uint8>(S, OpPC);
17269}
17270bool EvalEmitter::emitFlipSint16Sint16(SourceInfo L) {
17271 if (!isActive()) return true;
17272 CurrentSource = L;
17273 return Flip<PT_Sint16, PT_Sint16>(S, OpPC);
17274}
17275bool EvalEmitter::emitFlipSint16Uint16(SourceInfo L) {
17276 if (!isActive()) return true;
17277 CurrentSource = L;
17278 return Flip<PT_Sint16, PT_Uint16>(S, OpPC);
17279}
17280bool EvalEmitter::emitFlipSint16Sint32(SourceInfo L) {
17281 if (!isActive()) return true;
17282 CurrentSource = L;
17283 return Flip<PT_Sint16, PT_Sint32>(S, OpPC);
17284}
17285bool EvalEmitter::emitFlipSint16Uint32(SourceInfo L) {
17286 if (!isActive()) return true;
17287 CurrentSource = L;
17288 return Flip<PT_Sint16, PT_Uint32>(S, OpPC);
17289}
17290bool EvalEmitter::emitFlipSint16Sint64(SourceInfo L) {
17291 if (!isActive()) return true;
17292 CurrentSource = L;
17293 return Flip<PT_Sint16, PT_Sint64>(S, OpPC);
17294}
17295bool EvalEmitter::emitFlipSint16Uint64(SourceInfo L) {
17296 if (!isActive()) return true;
17297 CurrentSource = L;
17298 return Flip<PT_Sint16, PT_Uint64>(S, OpPC);
17299}
17300bool EvalEmitter::emitFlipSint16IntAP(SourceInfo L) {
17301 if (!isActive()) return true;
17302 CurrentSource = L;
17303 return Flip<PT_Sint16, PT_IntAP>(S, OpPC);
17304}
17305bool EvalEmitter::emitFlipSint16IntAPS(SourceInfo L) {
17306 if (!isActive()) return true;
17307 CurrentSource = L;
17308 return Flip<PT_Sint16, PT_IntAPS>(S, OpPC);
17309}
17310bool EvalEmitter::emitFlipSint16Bool(SourceInfo L) {
17311 if (!isActive()) return true;
17312 CurrentSource = L;
17313 return Flip<PT_Sint16, PT_Bool>(S, OpPC);
17314}
17315bool EvalEmitter::emitFlipSint16FixedPoint(SourceInfo L) {
17316 if (!isActive()) return true;
17317 CurrentSource = L;
17318 return Flip<PT_Sint16, PT_FixedPoint>(S, OpPC);
17319}
17320bool EvalEmitter::emitFlipSint16Ptr(SourceInfo L) {
17321 if (!isActive()) return true;
17322 CurrentSource = L;
17323 return Flip<PT_Sint16, PT_Ptr>(S, OpPC);
17324}
17325bool EvalEmitter::emitFlipSint16MemberPtr(SourceInfo L) {
17326 if (!isActive()) return true;
17327 CurrentSource = L;
17328 return Flip<PT_Sint16, PT_MemberPtr>(S, OpPC);
17329}
17330bool EvalEmitter::emitFlipSint16Float(SourceInfo L) {
17331 if (!isActive()) return true;
17332 CurrentSource = L;
17333 return Flip<PT_Sint16, PT_Float>(S, OpPC);
17334}
17335bool EvalEmitter::emitFlipUint16Sint8(SourceInfo L) {
17336 if (!isActive()) return true;
17337 CurrentSource = L;
17338 return Flip<PT_Uint16, PT_Sint8>(S, OpPC);
17339}
17340bool EvalEmitter::emitFlipUint16Uint8(SourceInfo L) {
17341 if (!isActive()) return true;
17342 CurrentSource = L;
17343 return Flip<PT_Uint16, PT_Uint8>(S, OpPC);
17344}
17345bool EvalEmitter::emitFlipUint16Sint16(SourceInfo L) {
17346 if (!isActive()) return true;
17347 CurrentSource = L;
17348 return Flip<PT_Uint16, PT_Sint16>(S, OpPC);
17349}
17350bool EvalEmitter::emitFlipUint16Uint16(SourceInfo L) {
17351 if (!isActive()) return true;
17352 CurrentSource = L;
17353 return Flip<PT_Uint16, PT_Uint16>(S, OpPC);
17354}
17355bool EvalEmitter::emitFlipUint16Sint32(SourceInfo L) {
17356 if (!isActive()) return true;
17357 CurrentSource = L;
17358 return Flip<PT_Uint16, PT_Sint32>(S, OpPC);
17359}
17360bool EvalEmitter::emitFlipUint16Uint32(SourceInfo L) {
17361 if (!isActive()) return true;
17362 CurrentSource = L;
17363 return Flip<PT_Uint16, PT_Uint32>(S, OpPC);
17364}
17365bool EvalEmitter::emitFlipUint16Sint64(SourceInfo L) {
17366 if (!isActive()) return true;
17367 CurrentSource = L;
17368 return Flip<PT_Uint16, PT_Sint64>(S, OpPC);
17369}
17370bool EvalEmitter::emitFlipUint16Uint64(SourceInfo L) {
17371 if (!isActive()) return true;
17372 CurrentSource = L;
17373 return Flip<PT_Uint16, PT_Uint64>(S, OpPC);
17374}
17375bool EvalEmitter::emitFlipUint16IntAP(SourceInfo L) {
17376 if (!isActive()) return true;
17377 CurrentSource = L;
17378 return Flip<PT_Uint16, PT_IntAP>(S, OpPC);
17379}
17380bool EvalEmitter::emitFlipUint16IntAPS(SourceInfo L) {
17381 if (!isActive()) return true;
17382 CurrentSource = L;
17383 return Flip<PT_Uint16, PT_IntAPS>(S, OpPC);
17384}
17385bool EvalEmitter::emitFlipUint16Bool(SourceInfo L) {
17386 if (!isActive()) return true;
17387 CurrentSource = L;
17388 return Flip<PT_Uint16, PT_Bool>(S, OpPC);
17389}
17390bool EvalEmitter::emitFlipUint16FixedPoint(SourceInfo L) {
17391 if (!isActive()) return true;
17392 CurrentSource = L;
17393 return Flip<PT_Uint16, PT_FixedPoint>(S, OpPC);
17394}
17395bool EvalEmitter::emitFlipUint16Ptr(SourceInfo L) {
17396 if (!isActive()) return true;
17397 CurrentSource = L;
17398 return Flip<PT_Uint16, PT_Ptr>(S, OpPC);
17399}
17400bool EvalEmitter::emitFlipUint16MemberPtr(SourceInfo L) {
17401 if (!isActive()) return true;
17402 CurrentSource = L;
17403 return Flip<PT_Uint16, PT_MemberPtr>(S, OpPC);
17404}
17405bool EvalEmitter::emitFlipUint16Float(SourceInfo L) {
17406 if (!isActive()) return true;
17407 CurrentSource = L;
17408 return Flip<PT_Uint16, PT_Float>(S, OpPC);
17409}
17410bool EvalEmitter::emitFlipSint32Sint8(SourceInfo L) {
17411 if (!isActive()) return true;
17412 CurrentSource = L;
17413 return Flip<PT_Sint32, PT_Sint8>(S, OpPC);
17414}
17415bool EvalEmitter::emitFlipSint32Uint8(SourceInfo L) {
17416 if (!isActive()) return true;
17417 CurrentSource = L;
17418 return Flip<PT_Sint32, PT_Uint8>(S, OpPC);
17419}
17420bool EvalEmitter::emitFlipSint32Sint16(SourceInfo L) {
17421 if (!isActive()) return true;
17422 CurrentSource = L;
17423 return Flip<PT_Sint32, PT_Sint16>(S, OpPC);
17424}
17425bool EvalEmitter::emitFlipSint32Uint16(SourceInfo L) {
17426 if (!isActive()) return true;
17427 CurrentSource = L;
17428 return Flip<PT_Sint32, PT_Uint16>(S, OpPC);
17429}
17430bool EvalEmitter::emitFlipSint32Sint32(SourceInfo L) {
17431 if (!isActive()) return true;
17432 CurrentSource = L;
17433 return Flip<PT_Sint32, PT_Sint32>(S, OpPC);
17434}
17435bool EvalEmitter::emitFlipSint32Uint32(SourceInfo L) {
17436 if (!isActive()) return true;
17437 CurrentSource = L;
17438 return Flip<PT_Sint32, PT_Uint32>(S, OpPC);
17439}
17440bool EvalEmitter::emitFlipSint32Sint64(SourceInfo L) {
17441 if (!isActive()) return true;
17442 CurrentSource = L;
17443 return Flip<PT_Sint32, PT_Sint64>(S, OpPC);
17444}
17445bool EvalEmitter::emitFlipSint32Uint64(SourceInfo L) {
17446 if (!isActive()) return true;
17447 CurrentSource = L;
17448 return Flip<PT_Sint32, PT_Uint64>(S, OpPC);
17449}
17450bool EvalEmitter::emitFlipSint32IntAP(SourceInfo L) {
17451 if (!isActive()) return true;
17452 CurrentSource = L;
17453 return Flip<PT_Sint32, PT_IntAP>(S, OpPC);
17454}
17455bool EvalEmitter::emitFlipSint32IntAPS(SourceInfo L) {
17456 if (!isActive()) return true;
17457 CurrentSource = L;
17458 return Flip<PT_Sint32, PT_IntAPS>(S, OpPC);
17459}
17460bool EvalEmitter::emitFlipSint32Bool(SourceInfo L) {
17461 if (!isActive()) return true;
17462 CurrentSource = L;
17463 return Flip<PT_Sint32, PT_Bool>(S, OpPC);
17464}
17465bool EvalEmitter::emitFlipSint32FixedPoint(SourceInfo L) {
17466 if (!isActive()) return true;
17467 CurrentSource = L;
17468 return Flip<PT_Sint32, PT_FixedPoint>(S, OpPC);
17469}
17470bool EvalEmitter::emitFlipSint32Ptr(SourceInfo L) {
17471 if (!isActive()) return true;
17472 CurrentSource = L;
17473 return Flip<PT_Sint32, PT_Ptr>(S, OpPC);
17474}
17475bool EvalEmitter::emitFlipSint32MemberPtr(SourceInfo L) {
17476 if (!isActive()) return true;
17477 CurrentSource = L;
17478 return Flip<PT_Sint32, PT_MemberPtr>(S, OpPC);
17479}
17480bool EvalEmitter::emitFlipSint32Float(SourceInfo L) {
17481 if (!isActive()) return true;
17482 CurrentSource = L;
17483 return Flip<PT_Sint32, PT_Float>(S, OpPC);
17484}
17485bool EvalEmitter::emitFlipUint32Sint8(SourceInfo L) {
17486 if (!isActive()) return true;
17487 CurrentSource = L;
17488 return Flip<PT_Uint32, PT_Sint8>(S, OpPC);
17489}
17490bool EvalEmitter::emitFlipUint32Uint8(SourceInfo L) {
17491 if (!isActive()) return true;
17492 CurrentSource = L;
17493 return Flip<PT_Uint32, PT_Uint8>(S, OpPC);
17494}
17495bool EvalEmitter::emitFlipUint32Sint16(SourceInfo L) {
17496 if (!isActive()) return true;
17497 CurrentSource = L;
17498 return Flip<PT_Uint32, PT_Sint16>(S, OpPC);
17499}
17500bool EvalEmitter::emitFlipUint32Uint16(SourceInfo L) {
17501 if (!isActive()) return true;
17502 CurrentSource = L;
17503 return Flip<PT_Uint32, PT_Uint16>(S, OpPC);
17504}
17505bool EvalEmitter::emitFlipUint32Sint32(SourceInfo L) {
17506 if (!isActive()) return true;
17507 CurrentSource = L;
17508 return Flip<PT_Uint32, PT_Sint32>(S, OpPC);
17509}
17510bool EvalEmitter::emitFlipUint32Uint32(SourceInfo L) {
17511 if (!isActive()) return true;
17512 CurrentSource = L;
17513 return Flip<PT_Uint32, PT_Uint32>(S, OpPC);
17514}
17515bool EvalEmitter::emitFlipUint32Sint64(SourceInfo L) {
17516 if (!isActive()) return true;
17517 CurrentSource = L;
17518 return Flip<PT_Uint32, PT_Sint64>(S, OpPC);
17519}
17520bool EvalEmitter::emitFlipUint32Uint64(SourceInfo L) {
17521 if (!isActive()) return true;
17522 CurrentSource = L;
17523 return Flip<PT_Uint32, PT_Uint64>(S, OpPC);
17524}
17525bool EvalEmitter::emitFlipUint32IntAP(SourceInfo L) {
17526 if (!isActive()) return true;
17527 CurrentSource = L;
17528 return Flip<PT_Uint32, PT_IntAP>(S, OpPC);
17529}
17530bool EvalEmitter::emitFlipUint32IntAPS(SourceInfo L) {
17531 if (!isActive()) return true;
17532 CurrentSource = L;
17533 return Flip<PT_Uint32, PT_IntAPS>(S, OpPC);
17534}
17535bool EvalEmitter::emitFlipUint32Bool(SourceInfo L) {
17536 if (!isActive()) return true;
17537 CurrentSource = L;
17538 return Flip<PT_Uint32, PT_Bool>(S, OpPC);
17539}
17540bool EvalEmitter::emitFlipUint32FixedPoint(SourceInfo L) {
17541 if (!isActive()) return true;
17542 CurrentSource = L;
17543 return Flip<PT_Uint32, PT_FixedPoint>(S, OpPC);
17544}
17545bool EvalEmitter::emitFlipUint32Ptr(SourceInfo L) {
17546 if (!isActive()) return true;
17547 CurrentSource = L;
17548 return Flip<PT_Uint32, PT_Ptr>(S, OpPC);
17549}
17550bool EvalEmitter::emitFlipUint32MemberPtr(SourceInfo L) {
17551 if (!isActive()) return true;
17552 CurrentSource = L;
17553 return Flip<PT_Uint32, PT_MemberPtr>(S, OpPC);
17554}
17555bool EvalEmitter::emitFlipUint32Float(SourceInfo L) {
17556 if (!isActive()) return true;
17557 CurrentSource = L;
17558 return Flip<PT_Uint32, PT_Float>(S, OpPC);
17559}
17560bool EvalEmitter::emitFlipSint64Sint8(SourceInfo L) {
17561 if (!isActive()) return true;
17562 CurrentSource = L;
17563 return Flip<PT_Sint64, PT_Sint8>(S, OpPC);
17564}
17565bool EvalEmitter::emitFlipSint64Uint8(SourceInfo L) {
17566 if (!isActive()) return true;
17567 CurrentSource = L;
17568 return Flip<PT_Sint64, PT_Uint8>(S, OpPC);
17569}
17570bool EvalEmitter::emitFlipSint64Sint16(SourceInfo L) {
17571 if (!isActive()) return true;
17572 CurrentSource = L;
17573 return Flip<PT_Sint64, PT_Sint16>(S, OpPC);
17574}
17575bool EvalEmitter::emitFlipSint64Uint16(SourceInfo L) {
17576 if (!isActive()) return true;
17577 CurrentSource = L;
17578 return Flip<PT_Sint64, PT_Uint16>(S, OpPC);
17579}
17580bool EvalEmitter::emitFlipSint64Sint32(SourceInfo L) {
17581 if (!isActive()) return true;
17582 CurrentSource = L;
17583 return Flip<PT_Sint64, PT_Sint32>(S, OpPC);
17584}
17585bool EvalEmitter::emitFlipSint64Uint32(SourceInfo L) {
17586 if (!isActive()) return true;
17587 CurrentSource = L;
17588 return Flip<PT_Sint64, PT_Uint32>(S, OpPC);
17589}
17590bool EvalEmitter::emitFlipSint64Sint64(SourceInfo L) {
17591 if (!isActive()) return true;
17592 CurrentSource = L;
17593 return Flip<PT_Sint64, PT_Sint64>(S, OpPC);
17594}
17595bool EvalEmitter::emitFlipSint64Uint64(SourceInfo L) {
17596 if (!isActive()) return true;
17597 CurrentSource = L;
17598 return Flip<PT_Sint64, PT_Uint64>(S, OpPC);
17599}
17600bool EvalEmitter::emitFlipSint64IntAP(SourceInfo L) {
17601 if (!isActive()) return true;
17602 CurrentSource = L;
17603 return Flip<PT_Sint64, PT_IntAP>(S, OpPC);
17604}
17605bool EvalEmitter::emitFlipSint64IntAPS(SourceInfo L) {
17606 if (!isActive()) return true;
17607 CurrentSource = L;
17608 return Flip<PT_Sint64, PT_IntAPS>(S, OpPC);
17609}
17610bool EvalEmitter::emitFlipSint64Bool(SourceInfo L) {
17611 if (!isActive()) return true;
17612 CurrentSource = L;
17613 return Flip<PT_Sint64, PT_Bool>(S, OpPC);
17614}
17615bool EvalEmitter::emitFlipSint64FixedPoint(SourceInfo L) {
17616 if (!isActive()) return true;
17617 CurrentSource = L;
17618 return Flip<PT_Sint64, PT_FixedPoint>(S, OpPC);
17619}
17620bool EvalEmitter::emitFlipSint64Ptr(SourceInfo L) {
17621 if (!isActive()) return true;
17622 CurrentSource = L;
17623 return Flip<PT_Sint64, PT_Ptr>(S, OpPC);
17624}
17625bool EvalEmitter::emitFlipSint64MemberPtr(SourceInfo L) {
17626 if (!isActive()) return true;
17627 CurrentSource = L;
17628 return Flip<PT_Sint64, PT_MemberPtr>(S, OpPC);
17629}
17630bool EvalEmitter::emitFlipSint64Float(SourceInfo L) {
17631 if (!isActive()) return true;
17632 CurrentSource = L;
17633 return Flip<PT_Sint64, PT_Float>(S, OpPC);
17634}
17635bool EvalEmitter::emitFlipUint64Sint8(SourceInfo L) {
17636 if (!isActive()) return true;
17637 CurrentSource = L;
17638 return Flip<PT_Uint64, PT_Sint8>(S, OpPC);
17639}
17640bool EvalEmitter::emitFlipUint64Uint8(SourceInfo L) {
17641 if (!isActive()) return true;
17642 CurrentSource = L;
17643 return Flip<PT_Uint64, PT_Uint8>(S, OpPC);
17644}
17645bool EvalEmitter::emitFlipUint64Sint16(SourceInfo L) {
17646 if (!isActive()) return true;
17647 CurrentSource = L;
17648 return Flip<PT_Uint64, PT_Sint16>(S, OpPC);
17649}
17650bool EvalEmitter::emitFlipUint64Uint16(SourceInfo L) {
17651 if (!isActive()) return true;
17652 CurrentSource = L;
17653 return Flip<PT_Uint64, PT_Uint16>(S, OpPC);
17654}
17655bool EvalEmitter::emitFlipUint64Sint32(SourceInfo L) {
17656 if (!isActive()) return true;
17657 CurrentSource = L;
17658 return Flip<PT_Uint64, PT_Sint32>(S, OpPC);
17659}
17660bool EvalEmitter::emitFlipUint64Uint32(SourceInfo L) {
17661 if (!isActive()) return true;
17662 CurrentSource = L;
17663 return Flip<PT_Uint64, PT_Uint32>(S, OpPC);
17664}
17665bool EvalEmitter::emitFlipUint64Sint64(SourceInfo L) {
17666 if (!isActive()) return true;
17667 CurrentSource = L;
17668 return Flip<PT_Uint64, PT_Sint64>(S, OpPC);
17669}
17670bool EvalEmitter::emitFlipUint64Uint64(SourceInfo L) {
17671 if (!isActive()) return true;
17672 CurrentSource = L;
17673 return Flip<PT_Uint64, PT_Uint64>(S, OpPC);
17674}
17675bool EvalEmitter::emitFlipUint64IntAP(SourceInfo L) {
17676 if (!isActive()) return true;
17677 CurrentSource = L;
17678 return Flip<PT_Uint64, PT_IntAP>(S, OpPC);
17679}
17680bool EvalEmitter::emitFlipUint64IntAPS(SourceInfo L) {
17681 if (!isActive()) return true;
17682 CurrentSource = L;
17683 return Flip<PT_Uint64, PT_IntAPS>(S, OpPC);
17684}
17685bool EvalEmitter::emitFlipUint64Bool(SourceInfo L) {
17686 if (!isActive()) return true;
17687 CurrentSource = L;
17688 return Flip<PT_Uint64, PT_Bool>(S, OpPC);
17689}
17690bool EvalEmitter::emitFlipUint64FixedPoint(SourceInfo L) {
17691 if (!isActive()) return true;
17692 CurrentSource = L;
17693 return Flip<PT_Uint64, PT_FixedPoint>(S, OpPC);
17694}
17695bool EvalEmitter::emitFlipUint64Ptr(SourceInfo L) {
17696 if (!isActive()) return true;
17697 CurrentSource = L;
17698 return Flip<PT_Uint64, PT_Ptr>(S, OpPC);
17699}
17700bool EvalEmitter::emitFlipUint64MemberPtr(SourceInfo L) {
17701 if (!isActive()) return true;
17702 CurrentSource = L;
17703 return Flip<PT_Uint64, PT_MemberPtr>(S, OpPC);
17704}
17705bool EvalEmitter::emitFlipUint64Float(SourceInfo L) {
17706 if (!isActive()) return true;
17707 CurrentSource = L;
17708 return Flip<PT_Uint64, PT_Float>(S, OpPC);
17709}
17710bool EvalEmitter::emitFlipIntAPSint8(SourceInfo L) {
17711 if (!isActive()) return true;
17712 CurrentSource = L;
17713 return Flip<PT_IntAP, PT_Sint8>(S, OpPC);
17714}
17715bool EvalEmitter::emitFlipIntAPUint8(SourceInfo L) {
17716 if (!isActive()) return true;
17717 CurrentSource = L;
17718 return Flip<PT_IntAP, PT_Uint8>(S, OpPC);
17719}
17720bool EvalEmitter::emitFlipIntAPSint16(SourceInfo L) {
17721 if (!isActive()) return true;
17722 CurrentSource = L;
17723 return Flip<PT_IntAP, PT_Sint16>(S, OpPC);
17724}
17725bool EvalEmitter::emitFlipIntAPUint16(SourceInfo L) {
17726 if (!isActive()) return true;
17727 CurrentSource = L;
17728 return Flip<PT_IntAP, PT_Uint16>(S, OpPC);
17729}
17730bool EvalEmitter::emitFlipIntAPSint32(SourceInfo L) {
17731 if (!isActive()) return true;
17732 CurrentSource = L;
17733 return Flip<PT_IntAP, PT_Sint32>(S, OpPC);
17734}
17735bool EvalEmitter::emitFlipIntAPUint32(SourceInfo L) {
17736 if (!isActive()) return true;
17737 CurrentSource = L;
17738 return Flip<PT_IntAP, PT_Uint32>(S, OpPC);
17739}
17740bool EvalEmitter::emitFlipIntAPSint64(SourceInfo L) {
17741 if (!isActive()) return true;
17742 CurrentSource = L;
17743 return Flip<PT_IntAP, PT_Sint64>(S, OpPC);
17744}
17745bool EvalEmitter::emitFlipIntAPUint64(SourceInfo L) {
17746 if (!isActive()) return true;
17747 CurrentSource = L;
17748 return Flip<PT_IntAP, PT_Uint64>(S, OpPC);
17749}
17750bool EvalEmitter::emitFlipIntAPIntAP(SourceInfo L) {
17751 if (!isActive()) return true;
17752 CurrentSource = L;
17753 return Flip<PT_IntAP, PT_IntAP>(S, OpPC);
17754}
17755bool EvalEmitter::emitFlipIntAPIntAPS(SourceInfo L) {
17756 if (!isActive()) return true;
17757 CurrentSource = L;
17758 return Flip<PT_IntAP, PT_IntAPS>(S, OpPC);
17759}
17760bool EvalEmitter::emitFlipIntAPBool(SourceInfo L) {
17761 if (!isActive()) return true;
17762 CurrentSource = L;
17763 return Flip<PT_IntAP, PT_Bool>(S, OpPC);
17764}
17765bool EvalEmitter::emitFlipIntAPFixedPoint(SourceInfo L) {
17766 if (!isActive()) return true;
17767 CurrentSource = L;
17768 return Flip<PT_IntAP, PT_FixedPoint>(S, OpPC);
17769}
17770bool EvalEmitter::emitFlipIntAPPtr(SourceInfo L) {
17771 if (!isActive()) return true;
17772 CurrentSource = L;
17773 return Flip<PT_IntAP, PT_Ptr>(S, OpPC);
17774}
17775bool EvalEmitter::emitFlipIntAPMemberPtr(SourceInfo L) {
17776 if (!isActive()) return true;
17777 CurrentSource = L;
17778 return Flip<PT_IntAP, PT_MemberPtr>(S, OpPC);
17779}
17780bool EvalEmitter::emitFlipIntAPFloat(SourceInfo L) {
17781 if (!isActive()) return true;
17782 CurrentSource = L;
17783 return Flip<PT_IntAP, PT_Float>(S, OpPC);
17784}
17785bool EvalEmitter::emitFlipIntAPSSint8(SourceInfo L) {
17786 if (!isActive()) return true;
17787 CurrentSource = L;
17788 return Flip<PT_IntAPS, PT_Sint8>(S, OpPC);
17789}
17790bool EvalEmitter::emitFlipIntAPSUint8(SourceInfo L) {
17791 if (!isActive()) return true;
17792 CurrentSource = L;
17793 return Flip<PT_IntAPS, PT_Uint8>(S, OpPC);
17794}
17795bool EvalEmitter::emitFlipIntAPSSint16(SourceInfo L) {
17796 if (!isActive()) return true;
17797 CurrentSource = L;
17798 return Flip<PT_IntAPS, PT_Sint16>(S, OpPC);
17799}
17800bool EvalEmitter::emitFlipIntAPSUint16(SourceInfo L) {
17801 if (!isActive()) return true;
17802 CurrentSource = L;
17803 return Flip<PT_IntAPS, PT_Uint16>(S, OpPC);
17804}
17805bool EvalEmitter::emitFlipIntAPSSint32(SourceInfo L) {
17806 if (!isActive()) return true;
17807 CurrentSource = L;
17808 return Flip<PT_IntAPS, PT_Sint32>(S, OpPC);
17809}
17810bool EvalEmitter::emitFlipIntAPSUint32(SourceInfo L) {
17811 if (!isActive()) return true;
17812 CurrentSource = L;
17813 return Flip<PT_IntAPS, PT_Uint32>(S, OpPC);
17814}
17815bool EvalEmitter::emitFlipIntAPSSint64(SourceInfo L) {
17816 if (!isActive()) return true;
17817 CurrentSource = L;
17818 return Flip<PT_IntAPS, PT_Sint64>(S, OpPC);
17819}
17820bool EvalEmitter::emitFlipIntAPSUint64(SourceInfo L) {
17821 if (!isActive()) return true;
17822 CurrentSource = L;
17823 return Flip<PT_IntAPS, PT_Uint64>(S, OpPC);
17824}
17825bool EvalEmitter::emitFlipIntAPSIntAP(SourceInfo L) {
17826 if (!isActive()) return true;
17827 CurrentSource = L;
17828 return Flip<PT_IntAPS, PT_IntAP>(S, OpPC);
17829}
17830bool EvalEmitter::emitFlipIntAPSIntAPS(SourceInfo L) {
17831 if (!isActive()) return true;
17832 CurrentSource = L;
17833 return Flip<PT_IntAPS, PT_IntAPS>(S, OpPC);
17834}
17835bool EvalEmitter::emitFlipIntAPSBool(SourceInfo L) {
17836 if (!isActive()) return true;
17837 CurrentSource = L;
17838 return Flip<PT_IntAPS, PT_Bool>(S, OpPC);
17839}
17840bool EvalEmitter::emitFlipIntAPSFixedPoint(SourceInfo L) {
17841 if (!isActive()) return true;
17842 CurrentSource = L;
17843 return Flip<PT_IntAPS, PT_FixedPoint>(S, OpPC);
17844}
17845bool EvalEmitter::emitFlipIntAPSPtr(SourceInfo L) {
17846 if (!isActive()) return true;
17847 CurrentSource = L;
17848 return Flip<PT_IntAPS, PT_Ptr>(S, OpPC);
17849}
17850bool EvalEmitter::emitFlipIntAPSMemberPtr(SourceInfo L) {
17851 if (!isActive()) return true;
17852 CurrentSource = L;
17853 return Flip<PT_IntAPS, PT_MemberPtr>(S, OpPC);
17854}
17855bool EvalEmitter::emitFlipIntAPSFloat(SourceInfo L) {
17856 if (!isActive()) return true;
17857 CurrentSource = L;
17858 return Flip<PT_IntAPS, PT_Float>(S, OpPC);
17859}
17860bool EvalEmitter::emitFlipBoolSint8(SourceInfo L) {
17861 if (!isActive()) return true;
17862 CurrentSource = L;
17863 return Flip<PT_Bool, PT_Sint8>(S, OpPC);
17864}
17865bool EvalEmitter::emitFlipBoolUint8(SourceInfo L) {
17866 if (!isActive()) return true;
17867 CurrentSource = L;
17868 return Flip<PT_Bool, PT_Uint8>(S, OpPC);
17869}
17870bool EvalEmitter::emitFlipBoolSint16(SourceInfo L) {
17871 if (!isActive()) return true;
17872 CurrentSource = L;
17873 return Flip<PT_Bool, PT_Sint16>(S, OpPC);
17874}
17875bool EvalEmitter::emitFlipBoolUint16(SourceInfo L) {
17876 if (!isActive()) return true;
17877 CurrentSource = L;
17878 return Flip<PT_Bool, PT_Uint16>(S, OpPC);
17879}
17880bool EvalEmitter::emitFlipBoolSint32(SourceInfo L) {
17881 if (!isActive()) return true;
17882 CurrentSource = L;
17883 return Flip<PT_Bool, PT_Sint32>(S, OpPC);
17884}
17885bool EvalEmitter::emitFlipBoolUint32(SourceInfo L) {
17886 if (!isActive()) return true;
17887 CurrentSource = L;
17888 return Flip<PT_Bool, PT_Uint32>(S, OpPC);
17889}
17890bool EvalEmitter::emitFlipBoolSint64(SourceInfo L) {
17891 if (!isActive()) return true;
17892 CurrentSource = L;
17893 return Flip<PT_Bool, PT_Sint64>(S, OpPC);
17894}
17895bool EvalEmitter::emitFlipBoolUint64(SourceInfo L) {
17896 if (!isActive()) return true;
17897 CurrentSource = L;
17898 return Flip<PT_Bool, PT_Uint64>(S, OpPC);
17899}
17900bool EvalEmitter::emitFlipBoolIntAP(SourceInfo L) {
17901 if (!isActive()) return true;
17902 CurrentSource = L;
17903 return Flip<PT_Bool, PT_IntAP>(S, OpPC);
17904}
17905bool EvalEmitter::emitFlipBoolIntAPS(SourceInfo L) {
17906 if (!isActive()) return true;
17907 CurrentSource = L;
17908 return Flip<PT_Bool, PT_IntAPS>(S, OpPC);
17909}
17910bool EvalEmitter::emitFlipBoolBool(SourceInfo L) {
17911 if (!isActive()) return true;
17912 CurrentSource = L;
17913 return Flip<PT_Bool, PT_Bool>(S, OpPC);
17914}
17915bool EvalEmitter::emitFlipBoolFixedPoint(SourceInfo L) {
17916 if (!isActive()) return true;
17917 CurrentSource = L;
17918 return Flip<PT_Bool, PT_FixedPoint>(S, OpPC);
17919}
17920bool EvalEmitter::emitFlipBoolPtr(SourceInfo L) {
17921 if (!isActive()) return true;
17922 CurrentSource = L;
17923 return Flip<PT_Bool, PT_Ptr>(S, OpPC);
17924}
17925bool EvalEmitter::emitFlipBoolMemberPtr(SourceInfo L) {
17926 if (!isActive()) return true;
17927 CurrentSource = L;
17928 return Flip<PT_Bool, PT_MemberPtr>(S, OpPC);
17929}
17930bool EvalEmitter::emitFlipBoolFloat(SourceInfo L) {
17931 if (!isActive()) return true;
17932 CurrentSource = L;
17933 return Flip<PT_Bool, PT_Float>(S, OpPC);
17934}
17935bool EvalEmitter::emitFlipFixedPointSint8(SourceInfo L) {
17936 if (!isActive()) return true;
17937 CurrentSource = L;
17938 return Flip<PT_FixedPoint, PT_Sint8>(S, OpPC);
17939}
17940bool EvalEmitter::emitFlipFixedPointUint8(SourceInfo L) {
17941 if (!isActive()) return true;
17942 CurrentSource = L;
17943 return Flip<PT_FixedPoint, PT_Uint8>(S, OpPC);
17944}
17945bool EvalEmitter::emitFlipFixedPointSint16(SourceInfo L) {
17946 if (!isActive()) return true;
17947 CurrentSource = L;
17948 return Flip<PT_FixedPoint, PT_Sint16>(S, OpPC);
17949}
17950bool EvalEmitter::emitFlipFixedPointUint16(SourceInfo L) {
17951 if (!isActive()) return true;
17952 CurrentSource = L;
17953 return Flip<PT_FixedPoint, PT_Uint16>(S, OpPC);
17954}
17955bool EvalEmitter::emitFlipFixedPointSint32(SourceInfo L) {
17956 if (!isActive()) return true;
17957 CurrentSource = L;
17958 return Flip<PT_FixedPoint, PT_Sint32>(S, OpPC);
17959}
17960bool EvalEmitter::emitFlipFixedPointUint32(SourceInfo L) {
17961 if (!isActive()) return true;
17962 CurrentSource = L;
17963 return Flip<PT_FixedPoint, PT_Uint32>(S, OpPC);
17964}
17965bool EvalEmitter::emitFlipFixedPointSint64(SourceInfo L) {
17966 if (!isActive()) return true;
17967 CurrentSource = L;
17968 return Flip<PT_FixedPoint, PT_Sint64>(S, OpPC);
17969}
17970bool EvalEmitter::emitFlipFixedPointUint64(SourceInfo L) {
17971 if (!isActive()) return true;
17972 CurrentSource = L;
17973 return Flip<PT_FixedPoint, PT_Uint64>(S, OpPC);
17974}
17975bool EvalEmitter::emitFlipFixedPointIntAP(SourceInfo L) {
17976 if (!isActive()) return true;
17977 CurrentSource = L;
17978 return Flip<PT_FixedPoint, PT_IntAP>(S, OpPC);
17979}
17980bool EvalEmitter::emitFlipFixedPointIntAPS(SourceInfo L) {
17981 if (!isActive()) return true;
17982 CurrentSource = L;
17983 return Flip<PT_FixedPoint, PT_IntAPS>(S, OpPC);
17984}
17985bool EvalEmitter::emitFlipFixedPointBool(SourceInfo L) {
17986 if (!isActive()) return true;
17987 CurrentSource = L;
17988 return Flip<PT_FixedPoint, PT_Bool>(S, OpPC);
17989}
17990bool EvalEmitter::emitFlipFixedPointFixedPoint(SourceInfo L) {
17991 if (!isActive()) return true;
17992 CurrentSource = L;
17993 return Flip<PT_FixedPoint, PT_FixedPoint>(S, OpPC);
17994}
17995bool EvalEmitter::emitFlipFixedPointPtr(SourceInfo L) {
17996 if (!isActive()) return true;
17997 CurrentSource = L;
17998 return Flip<PT_FixedPoint, PT_Ptr>(S, OpPC);
17999}
18000bool EvalEmitter::emitFlipFixedPointMemberPtr(SourceInfo L) {
18001 if (!isActive()) return true;
18002 CurrentSource = L;
18003 return Flip<PT_FixedPoint, PT_MemberPtr>(S, OpPC);
18004}
18005bool EvalEmitter::emitFlipFixedPointFloat(SourceInfo L) {
18006 if (!isActive()) return true;
18007 CurrentSource = L;
18008 return Flip<PT_FixedPoint, PT_Float>(S, OpPC);
18009}
18010bool EvalEmitter::emitFlipPtrSint8(SourceInfo L) {
18011 if (!isActive()) return true;
18012 CurrentSource = L;
18013 return Flip<PT_Ptr, PT_Sint8>(S, OpPC);
18014}
18015bool EvalEmitter::emitFlipPtrUint8(SourceInfo L) {
18016 if (!isActive()) return true;
18017 CurrentSource = L;
18018 return Flip<PT_Ptr, PT_Uint8>(S, OpPC);
18019}
18020bool EvalEmitter::emitFlipPtrSint16(SourceInfo L) {
18021 if (!isActive()) return true;
18022 CurrentSource = L;
18023 return Flip<PT_Ptr, PT_Sint16>(S, OpPC);
18024}
18025bool EvalEmitter::emitFlipPtrUint16(SourceInfo L) {
18026 if (!isActive()) return true;
18027 CurrentSource = L;
18028 return Flip<PT_Ptr, PT_Uint16>(S, OpPC);
18029}
18030bool EvalEmitter::emitFlipPtrSint32(SourceInfo L) {
18031 if (!isActive()) return true;
18032 CurrentSource = L;
18033 return Flip<PT_Ptr, PT_Sint32>(S, OpPC);
18034}
18035bool EvalEmitter::emitFlipPtrUint32(SourceInfo L) {
18036 if (!isActive()) return true;
18037 CurrentSource = L;
18038 return Flip<PT_Ptr, PT_Uint32>(S, OpPC);
18039}
18040bool EvalEmitter::emitFlipPtrSint64(SourceInfo L) {
18041 if (!isActive()) return true;
18042 CurrentSource = L;
18043 return Flip<PT_Ptr, PT_Sint64>(S, OpPC);
18044}
18045bool EvalEmitter::emitFlipPtrUint64(SourceInfo L) {
18046 if (!isActive()) return true;
18047 CurrentSource = L;
18048 return Flip<PT_Ptr, PT_Uint64>(S, OpPC);
18049}
18050bool EvalEmitter::emitFlipPtrIntAP(SourceInfo L) {
18051 if (!isActive()) return true;
18052 CurrentSource = L;
18053 return Flip<PT_Ptr, PT_IntAP>(S, OpPC);
18054}
18055bool EvalEmitter::emitFlipPtrIntAPS(SourceInfo L) {
18056 if (!isActive()) return true;
18057 CurrentSource = L;
18058 return Flip<PT_Ptr, PT_IntAPS>(S, OpPC);
18059}
18060bool EvalEmitter::emitFlipPtrBool(SourceInfo L) {
18061 if (!isActive()) return true;
18062 CurrentSource = L;
18063 return Flip<PT_Ptr, PT_Bool>(S, OpPC);
18064}
18065bool EvalEmitter::emitFlipPtrFixedPoint(SourceInfo L) {
18066 if (!isActive()) return true;
18067 CurrentSource = L;
18068 return Flip<PT_Ptr, PT_FixedPoint>(S, OpPC);
18069}
18070bool EvalEmitter::emitFlipPtrPtr(SourceInfo L) {
18071 if (!isActive()) return true;
18072 CurrentSource = L;
18073 return Flip<PT_Ptr, PT_Ptr>(S, OpPC);
18074}
18075bool EvalEmitter::emitFlipPtrMemberPtr(SourceInfo L) {
18076 if (!isActive()) return true;
18077 CurrentSource = L;
18078 return Flip<PT_Ptr, PT_MemberPtr>(S, OpPC);
18079}
18080bool EvalEmitter::emitFlipPtrFloat(SourceInfo L) {
18081 if (!isActive()) return true;
18082 CurrentSource = L;
18083 return Flip<PT_Ptr, PT_Float>(S, OpPC);
18084}
18085bool EvalEmitter::emitFlipMemberPtrSint8(SourceInfo L) {
18086 if (!isActive()) return true;
18087 CurrentSource = L;
18088 return Flip<PT_MemberPtr, PT_Sint8>(S, OpPC);
18089}
18090bool EvalEmitter::emitFlipMemberPtrUint8(SourceInfo L) {
18091 if (!isActive()) return true;
18092 CurrentSource = L;
18093 return Flip<PT_MemberPtr, PT_Uint8>(S, OpPC);
18094}
18095bool EvalEmitter::emitFlipMemberPtrSint16(SourceInfo L) {
18096 if (!isActive()) return true;
18097 CurrentSource = L;
18098 return Flip<PT_MemberPtr, PT_Sint16>(S, OpPC);
18099}
18100bool EvalEmitter::emitFlipMemberPtrUint16(SourceInfo L) {
18101 if (!isActive()) return true;
18102 CurrentSource = L;
18103 return Flip<PT_MemberPtr, PT_Uint16>(S, OpPC);
18104}
18105bool EvalEmitter::emitFlipMemberPtrSint32(SourceInfo L) {
18106 if (!isActive()) return true;
18107 CurrentSource = L;
18108 return Flip<PT_MemberPtr, PT_Sint32>(S, OpPC);
18109}
18110bool EvalEmitter::emitFlipMemberPtrUint32(SourceInfo L) {
18111 if (!isActive()) return true;
18112 CurrentSource = L;
18113 return Flip<PT_MemberPtr, PT_Uint32>(S, OpPC);
18114}
18115bool EvalEmitter::emitFlipMemberPtrSint64(SourceInfo L) {
18116 if (!isActive()) return true;
18117 CurrentSource = L;
18118 return Flip<PT_MemberPtr, PT_Sint64>(S, OpPC);
18119}
18120bool EvalEmitter::emitFlipMemberPtrUint64(SourceInfo L) {
18121 if (!isActive()) return true;
18122 CurrentSource = L;
18123 return Flip<PT_MemberPtr, PT_Uint64>(S, OpPC);
18124}
18125bool EvalEmitter::emitFlipMemberPtrIntAP(SourceInfo L) {
18126 if (!isActive()) return true;
18127 CurrentSource = L;
18128 return Flip<PT_MemberPtr, PT_IntAP>(S, OpPC);
18129}
18130bool EvalEmitter::emitFlipMemberPtrIntAPS(SourceInfo L) {
18131 if (!isActive()) return true;
18132 CurrentSource = L;
18133 return Flip<PT_MemberPtr, PT_IntAPS>(S, OpPC);
18134}
18135bool EvalEmitter::emitFlipMemberPtrBool(SourceInfo L) {
18136 if (!isActive()) return true;
18137 CurrentSource = L;
18138 return Flip<PT_MemberPtr, PT_Bool>(S, OpPC);
18139}
18140bool EvalEmitter::emitFlipMemberPtrFixedPoint(SourceInfo L) {
18141 if (!isActive()) return true;
18142 CurrentSource = L;
18143 return Flip<PT_MemberPtr, PT_FixedPoint>(S, OpPC);
18144}
18145bool EvalEmitter::emitFlipMemberPtrPtr(SourceInfo L) {
18146 if (!isActive()) return true;
18147 CurrentSource = L;
18148 return Flip<PT_MemberPtr, PT_Ptr>(S, OpPC);
18149}
18150bool EvalEmitter::emitFlipMemberPtrMemberPtr(SourceInfo L) {
18151 if (!isActive()) return true;
18152 CurrentSource = L;
18153 return Flip<PT_MemberPtr, PT_MemberPtr>(S, OpPC);
18154}
18155bool EvalEmitter::emitFlipMemberPtrFloat(SourceInfo L) {
18156 if (!isActive()) return true;
18157 CurrentSource = L;
18158 return Flip<PT_MemberPtr, PT_Float>(S, OpPC);
18159}
18160bool EvalEmitter::emitFlipFloatSint8(SourceInfo L) {
18161 if (!isActive()) return true;
18162 CurrentSource = L;
18163 return Flip<PT_Float, PT_Sint8>(S, OpPC);
18164}
18165bool EvalEmitter::emitFlipFloatUint8(SourceInfo L) {
18166 if (!isActive()) return true;
18167 CurrentSource = L;
18168 return Flip<PT_Float, PT_Uint8>(S, OpPC);
18169}
18170bool EvalEmitter::emitFlipFloatSint16(SourceInfo L) {
18171 if (!isActive()) return true;
18172 CurrentSource = L;
18173 return Flip<PT_Float, PT_Sint16>(S, OpPC);
18174}
18175bool EvalEmitter::emitFlipFloatUint16(SourceInfo L) {
18176 if (!isActive()) return true;
18177 CurrentSource = L;
18178 return Flip<PT_Float, PT_Uint16>(S, OpPC);
18179}
18180bool EvalEmitter::emitFlipFloatSint32(SourceInfo L) {
18181 if (!isActive()) return true;
18182 CurrentSource = L;
18183 return Flip<PT_Float, PT_Sint32>(S, OpPC);
18184}
18185bool EvalEmitter::emitFlipFloatUint32(SourceInfo L) {
18186 if (!isActive()) return true;
18187 CurrentSource = L;
18188 return Flip<PT_Float, PT_Uint32>(S, OpPC);
18189}
18190bool EvalEmitter::emitFlipFloatSint64(SourceInfo L) {
18191 if (!isActive()) return true;
18192 CurrentSource = L;
18193 return Flip<PT_Float, PT_Sint64>(S, OpPC);
18194}
18195bool EvalEmitter::emitFlipFloatUint64(SourceInfo L) {
18196 if (!isActive()) return true;
18197 CurrentSource = L;
18198 return Flip<PT_Float, PT_Uint64>(S, OpPC);
18199}
18200bool EvalEmitter::emitFlipFloatIntAP(SourceInfo L) {
18201 if (!isActive()) return true;
18202 CurrentSource = L;
18203 return Flip<PT_Float, PT_IntAP>(S, OpPC);
18204}
18205bool EvalEmitter::emitFlipFloatIntAPS(SourceInfo L) {
18206 if (!isActive()) return true;
18207 CurrentSource = L;
18208 return Flip<PT_Float, PT_IntAPS>(S, OpPC);
18209}
18210bool EvalEmitter::emitFlipFloatBool(SourceInfo L) {
18211 if (!isActive()) return true;
18212 CurrentSource = L;
18213 return Flip<PT_Float, PT_Bool>(S, OpPC);
18214}
18215bool EvalEmitter::emitFlipFloatFixedPoint(SourceInfo L) {
18216 if (!isActive()) return true;
18217 CurrentSource = L;
18218 return Flip<PT_Float, PT_FixedPoint>(S, OpPC);
18219}
18220bool EvalEmitter::emitFlipFloatPtr(SourceInfo L) {
18221 if (!isActive()) return true;
18222 CurrentSource = L;
18223 return Flip<PT_Float, PT_Ptr>(S, OpPC);
18224}
18225bool EvalEmitter::emitFlipFloatMemberPtr(SourceInfo L) {
18226 if (!isActive()) return true;
18227 CurrentSource = L;
18228 return Flip<PT_Float, PT_MemberPtr>(S, OpPC);
18229}
18230bool EvalEmitter::emitFlipFloatFloat(SourceInfo L) {
18231 if (!isActive()) return true;
18232 CurrentSource = L;
18233 return Flip<PT_Float, PT_Float>(S, OpPC);
18234}
18235#endif
18236#ifdef GET_OPCODE_NAMES
18237OP_FnPtrCast,
18238#endif
18239#ifdef GET_INTERP
18240case OP_FnPtrCast: {
18241 if (!FnPtrCast(S, OpPC))
18242 return false;
18243 continue;
18244}
18245#endif
18246#ifdef GET_DISASM
18247case OP_FnPtrCast:
18248 Text.Op = PrintName("FnPtrCast");
18249 break;
18250#endif
18251#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18252bool emitFnPtrCast(SourceInfo);
18253#endif
18254#ifdef GET_LINK_IMPL
18255bool ByteCodeEmitter::emitFnPtrCast(SourceInfo L) {
18256 return emitOp<>(OP_FnPtrCast, L);
18257}
18258#endif
18259#ifdef GET_EVAL_IMPL
18260bool EvalEmitter::emitFnPtrCast(SourceInfo L) {
18261 if (!isActive()) return true;
18262 CurrentSource = L;
18263 return FnPtrCast(S, OpPC);
18264}
18265#endif
18266#ifdef GET_OPCODE_NAMES
18267OP_Free,
18268#endif
18269#ifdef GET_INTERP
18270case OP_Free: {
18271 const auto V0 = ReadArg<bool>(S, PC);
18272 const auto V1 = ReadArg<bool>(S, PC);
18273 if (!Free(S, OpPC, V0, V1))
18274 return false;
18275 continue;
18276}
18277#endif
18278#ifdef GET_DISASM
18279case OP_Free:
18280 Text.Op = PrintName("Free");
18281 Text.Args.push_back(printArg<bool>(P, PC));
18282 Text.Args.push_back(printArg<bool>(P, PC));
18283 break;
18284#endif
18285#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18286bool emitFree( bool , bool , SourceInfo);
18287#endif
18288#ifdef GET_LINK_IMPL
18289bool ByteCodeEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
18290 return emitOp<bool, bool>(OP_Free, A0, A1, L);
18291}
18292#endif
18293#ifdef GET_EVAL_IMPL
18294bool EvalEmitter::emitFree( bool A0, bool A1, SourceInfo L) {
18295 if (!isActive()) return true;
18296 CurrentSource = L;
18297 return Free(S, OpPC, A0, A1);
18298}
18299#endif
18300#ifdef GET_OPCODE_NAMES
18301OP_GESint8,
18302OP_GEUint8,
18303OP_GESint16,
18304OP_GEUint16,
18305OP_GESint32,
18306OP_GEUint32,
18307OP_GESint64,
18308OP_GEUint64,
18309OP_GEIntAP,
18310OP_GEIntAPS,
18311OP_GEBool,
18312OP_GEFixedPoint,
18313OP_GEPtr,
18314OP_GEFloat,
18315#endif
18316#ifdef GET_INTERP
18317case OP_GESint8: {
18318 if (!GE<PT_Sint8>(S, OpPC))
18319 return false;
18320 continue;
18321}
18322case OP_GEUint8: {
18323 if (!GE<PT_Uint8>(S, OpPC))
18324 return false;
18325 continue;
18326}
18327case OP_GESint16: {
18328 if (!GE<PT_Sint16>(S, OpPC))
18329 return false;
18330 continue;
18331}
18332case OP_GEUint16: {
18333 if (!GE<PT_Uint16>(S, OpPC))
18334 return false;
18335 continue;
18336}
18337case OP_GESint32: {
18338 if (!GE<PT_Sint32>(S, OpPC))
18339 return false;
18340 continue;
18341}
18342case OP_GEUint32: {
18343 if (!GE<PT_Uint32>(S, OpPC))
18344 return false;
18345 continue;
18346}
18347case OP_GESint64: {
18348 if (!GE<PT_Sint64>(S, OpPC))
18349 return false;
18350 continue;
18351}
18352case OP_GEUint64: {
18353 if (!GE<PT_Uint64>(S, OpPC))
18354 return false;
18355 continue;
18356}
18357case OP_GEIntAP: {
18358 if (!GE<PT_IntAP>(S, OpPC))
18359 return false;
18360 continue;
18361}
18362case OP_GEIntAPS: {
18363 if (!GE<PT_IntAPS>(S, OpPC))
18364 return false;
18365 continue;
18366}
18367case OP_GEBool: {
18368 if (!GE<PT_Bool>(S, OpPC))
18369 return false;
18370 continue;
18371}
18372case OP_GEFixedPoint: {
18373 if (!GE<PT_FixedPoint>(S, OpPC))
18374 return false;
18375 continue;
18376}
18377case OP_GEPtr: {
18378 if (!GE<PT_Ptr>(S, OpPC))
18379 return false;
18380 continue;
18381}
18382case OP_GEFloat: {
18383 if (!GE<PT_Float>(S, OpPC))
18384 return false;
18385 continue;
18386}
18387#endif
18388#ifdef GET_DISASM
18389case OP_GESint8:
18390 Text.Op = PrintName("GESint8");
18391 break;
18392case OP_GEUint8:
18393 Text.Op = PrintName("GEUint8");
18394 break;
18395case OP_GESint16:
18396 Text.Op = PrintName("GESint16");
18397 break;
18398case OP_GEUint16:
18399 Text.Op = PrintName("GEUint16");
18400 break;
18401case OP_GESint32:
18402 Text.Op = PrintName("GESint32");
18403 break;
18404case OP_GEUint32:
18405 Text.Op = PrintName("GEUint32");
18406 break;
18407case OP_GESint64:
18408 Text.Op = PrintName("GESint64");
18409 break;
18410case OP_GEUint64:
18411 Text.Op = PrintName("GEUint64");
18412 break;
18413case OP_GEIntAP:
18414 Text.Op = PrintName("GEIntAP");
18415 break;
18416case OP_GEIntAPS:
18417 Text.Op = PrintName("GEIntAPS");
18418 break;
18419case OP_GEBool:
18420 Text.Op = PrintName("GEBool");
18421 break;
18422case OP_GEFixedPoint:
18423 Text.Op = PrintName("GEFixedPoint");
18424 break;
18425case OP_GEPtr:
18426 Text.Op = PrintName("GEPtr");
18427 break;
18428case OP_GEFloat:
18429 Text.Op = PrintName("GEFloat");
18430 break;
18431#endif
18432#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18433bool emitGESint8(SourceInfo);
18434bool emitGEUint8(SourceInfo);
18435bool emitGESint16(SourceInfo);
18436bool emitGEUint16(SourceInfo);
18437bool emitGESint32(SourceInfo);
18438bool emitGEUint32(SourceInfo);
18439bool emitGESint64(SourceInfo);
18440bool emitGEUint64(SourceInfo);
18441bool emitGEIntAP(SourceInfo);
18442bool emitGEIntAPS(SourceInfo);
18443bool emitGEBool(SourceInfo);
18444bool emitGEFixedPoint(SourceInfo);
18445bool emitGEPtr(SourceInfo);
18446bool emitGEFloat(SourceInfo);
18447#endif
18448#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18449[[nodiscard]] bool emitGE(PrimType, SourceInfo I);
18450#endif
18451#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
18452bool
18453#if defined(GET_EVAL_IMPL)
18454EvalEmitter
18455#else
18456ByteCodeEmitter
18457#endif
18458::emitGE(PrimType T0, SourceInfo I) {
18459 switch (T0) {
18460 case PT_Sint8:
18461 return emitGESint8(I);
18462 case PT_Uint8:
18463 return emitGEUint8(I);
18464 case PT_Sint16:
18465 return emitGESint16(I);
18466 case PT_Uint16:
18467 return emitGEUint16(I);
18468 case PT_Sint32:
18469 return emitGESint32(I);
18470 case PT_Uint32:
18471 return emitGEUint32(I);
18472 case PT_Sint64:
18473 return emitGESint64(I);
18474 case PT_Uint64:
18475 return emitGEUint64(I);
18476 case PT_IntAP:
18477 return emitGEIntAP(I);
18478 case PT_IntAPS:
18479 return emitGEIntAPS(I);
18480 case PT_Bool:
18481 return emitGEBool(I);
18482 case PT_FixedPoint:
18483 return emitGEFixedPoint(I);
18484 case PT_Ptr:
18485 return emitGEPtr(I);
18486 case PT_Float:
18487 return emitGEFloat(I);
18488 default: llvm_unreachable("invalid type: emitGE");
18489 }
18490 llvm_unreachable("invalid enum value");
18491}
18492#endif
18493#ifdef GET_LINK_IMPL
18494bool ByteCodeEmitter::emitGESint8(SourceInfo L) {
18495 return emitOp<>(OP_GESint8, L);
18496}
18497bool ByteCodeEmitter::emitGEUint8(SourceInfo L) {
18498 return emitOp<>(OP_GEUint8, L);
18499}
18500bool ByteCodeEmitter::emitGESint16(SourceInfo L) {
18501 return emitOp<>(OP_GESint16, L);
18502}
18503bool ByteCodeEmitter::emitGEUint16(SourceInfo L) {
18504 return emitOp<>(OP_GEUint16, L);
18505}
18506bool ByteCodeEmitter::emitGESint32(SourceInfo L) {
18507 return emitOp<>(OP_GESint32, L);
18508}
18509bool ByteCodeEmitter::emitGEUint32(SourceInfo L) {
18510 return emitOp<>(OP_GEUint32, L);
18511}
18512bool ByteCodeEmitter::emitGESint64(SourceInfo L) {
18513 return emitOp<>(OP_GESint64, L);
18514}
18515bool ByteCodeEmitter::emitGEUint64(SourceInfo L) {
18516 return emitOp<>(OP_GEUint64, L);
18517}
18518bool ByteCodeEmitter::emitGEIntAP(SourceInfo L) {
18519 return emitOp<>(OP_GEIntAP, L);
18520}
18521bool ByteCodeEmitter::emitGEIntAPS(SourceInfo L) {
18522 return emitOp<>(OP_GEIntAPS, L);
18523}
18524bool ByteCodeEmitter::emitGEBool(SourceInfo L) {
18525 return emitOp<>(OP_GEBool, L);
18526}
18527bool ByteCodeEmitter::emitGEFixedPoint(SourceInfo L) {
18528 return emitOp<>(OP_GEFixedPoint, L);
18529}
18530bool ByteCodeEmitter::emitGEPtr(SourceInfo L) {
18531 return emitOp<>(OP_GEPtr, L);
18532}
18533bool ByteCodeEmitter::emitGEFloat(SourceInfo L) {
18534 return emitOp<>(OP_GEFloat, L);
18535}
18536#endif
18537#ifdef GET_EVAL_IMPL
18538bool EvalEmitter::emitGESint8(SourceInfo L) {
18539 if (!isActive()) return true;
18540 CurrentSource = L;
18541 return GE<PT_Sint8>(S, OpPC);
18542}
18543bool EvalEmitter::emitGEUint8(SourceInfo L) {
18544 if (!isActive()) return true;
18545 CurrentSource = L;
18546 return GE<PT_Uint8>(S, OpPC);
18547}
18548bool EvalEmitter::emitGESint16(SourceInfo L) {
18549 if (!isActive()) return true;
18550 CurrentSource = L;
18551 return GE<PT_Sint16>(S, OpPC);
18552}
18553bool EvalEmitter::emitGEUint16(SourceInfo L) {
18554 if (!isActive()) return true;
18555 CurrentSource = L;
18556 return GE<PT_Uint16>(S, OpPC);
18557}
18558bool EvalEmitter::emitGESint32(SourceInfo L) {
18559 if (!isActive()) return true;
18560 CurrentSource = L;
18561 return GE<PT_Sint32>(S, OpPC);
18562}
18563bool EvalEmitter::emitGEUint32(SourceInfo L) {
18564 if (!isActive()) return true;
18565 CurrentSource = L;
18566 return GE<PT_Uint32>(S, OpPC);
18567}
18568bool EvalEmitter::emitGESint64(SourceInfo L) {
18569 if (!isActive()) return true;
18570 CurrentSource = L;
18571 return GE<PT_Sint64>(S, OpPC);
18572}
18573bool EvalEmitter::emitGEUint64(SourceInfo L) {
18574 if (!isActive()) return true;
18575 CurrentSource = L;
18576 return GE<PT_Uint64>(S, OpPC);
18577}
18578bool EvalEmitter::emitGEIntAP(SourceInfo L) {
18579 if (!isActive()) return true;
18580 CurrentSource = L;
18581 return GE<PT_IntAP>(S, OpPC);
18582}
18583bool EvalEmitter::emitGEIntAPS(SourceInfo L) {
18584 if (!isActive()) return true;
18585 CurrentSource = L;
18586 return GE<PT_IntAPS>(S, OpPC);
18587}
18588bool EvalEmitter::emitGEBool(SourceInfo L) {
18589 if (!isActive()) return true;
18590 CurrentSource = L;
18591 return GE<PT_Bool>(S, OpPC);
18592}
18593bool EvalEmitter::emitGEFixedPoint(SourceInfo L) {
18594 if (!isActive()) return true;
18595 CurrentSource = L;
18596 return GE<PT_FixedPoint>(S, OpPC);
18597}
18598bool EvalEmitter::emitGEPtr(SourceInfo L) {
18599 if (!isActive()) return true;
18600 CurrentSource = L;
18601 return GE<PT_Ptr>(S, OpPC);
18602}
18603bool EvalEmitter::emitGEFloat(SourceInfo L) {
18604 if (!isActive()) return true;
18605 CurrentSource = L;
18606 return GE<PT_Float>(S, OpPC);
18607}
18608#endif
18609#ifdef GET_OPCODE_NAMES
18610OP_GTSint8,
18611OP_GTUint8,
18612OP_GTSint16,
18613OP_GTUint16,
18614OP_GTSint32,
18615OP_GTUint32,
18616OP_GTSint64,
18617OP_GTUint64,
18618OP_GTIntAP,
18619OP_GTIntAPS,
18620OP_GTBool,
18621OP_GTFixedPoint,
18622OP_GTPtr,
18623OP_GTFloat,
18624#endif
18625#ifdef GET_INTERP
18626case OP_GTSint8: {
18627 if (!GT<PT_Sint8>(S, OpPC))
18628 return false;
18629 continue;
18630}
18631case OP_GTUint8: {
18632 if (!GT<PT_Uint8>(S, OpPC))
18633 return false;
18634 continue;
18635}
18636case OP_GTSint16: {
18637 if (!GT<PT_Sint16>(S, OpPC))
18638 return false;
18639 continue;
18640}
18641case OP_GTUint16: {
18642 if (!GT<PT_Uint16>(S, OpPC))
18643 return false;
18644 continue;
18645}
18646case OP_GTSint32: {
18647 if (!GT<PT_Sint32>(S, OpPC))
18648 return false;
18649 continue;
18650}
18651case OP_GTUint32: {
18652 if (!GT<PT_Uint32>(S, OpPC))
18653 return false;
18654 continue;
18655}
18656case OP_GTSint64: {
18657 if (!GT<PT_Sint64>(S, OpPC))
18658 return false;
18659 continue;
18660}
18661case OP_GTUint64: {
18662 if (!GT<PT_Uint64>(S, OpPC))
18663 return false;
18664 continue;
18665}
18666case OP_GTIntAP: {
18667 if (!GT<PT_IntAP>(S, OpPC))
18668 return false;
18669 continue;
18670}
18671case OP_GTIntAPS: {
18672 if (!GT<PT_IntAPS>(S, OpPC))
18673 return false;
18674 continue;
18675}
18676case OP_GTBool: {
18677 if (!GT<PT_Bool>(S, OpPC))
18678 return false;
18679 continue;
18680}
18681case OP_GTFixedPoint: {
18682 if (!GT<PT_FixedPoint>(S, OpPC))
18683 return false;
18684 continue;
18685}
18686case OP_GTPtr: {
18687 if (!GT<PT_Ptr>(S, OpPC))
18688 return false;
18689 continue;
18690}
18691case OP_GTFloat: {
18692 if (!GT<PT_Float>(S, OpPC))
18693 return false;
18694 continue;
18695}
18696#endif
18697#ifdef GET_DISASM
18698case OP_GTSint8:
18699 Text.Op = PrintName("GTSint8");
18700 break;
18701case OP_GTUint8:
18702 Text.Op = PrintName("GTUint8");
18703 break;
18704case OP_GTSint16:
18705 Text.Op = PrintName("GTSint16");
18706 break;
18707case OP_GTUint16:
18708 Text.Op = PrintName("GTUint16");
18709 break;
18710case OP_GTSint32:
18711 Text.Op = PrintName("GTSint32");
18712 break;
18713case OP_GTUint32:
18714 Text.Op = PrintName("GTUint32");
18715 break;
18716case OP_GTSint64:
18717 Text.Op = PrintName("GTSint64");
18718 break;
18719case OP_GTUint64:
18720 Text.Op = PrintName("GTUint64");
18721 break;
18722case OP_GTIntAP:
18723 Text.Op = PrintName("GTIntAP");
18724 break;
18725case OP_GTIntAPS:
18726 Text.Op = PrintName("GTIntAPS");
18727 break;
18728case OP_GTBool:
18729 Text.Op = PrintName("GTBool");
18730 break;
18731case OP_GTFixedPoint:
18732 Text.Op = PrintName("GTFixedPoint");
18733 break;
18734case OP_GTPtr:
18735 Text.Op = PrintName("GTPtr");
18736 break;
18737case OP_GTFloat:
18738 Text.Op = PrintName("GTFloat");
18739 break;
18740#endif
18741#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18742bool emitGTSint8(SourceInfo);
18743bool emitGTUint8(SourceInfo);
18744bool emitGTSint16(SourceInfo);
18745bool emitGTUint16(SourceInfo);
18746bool emitGTSint32(SourceInfo);
18747bool emitGTUint32(SourceInfo);
18748bool emitGTSint64(SourceInfo);
18749bool emitGTUint64(SourceInfo);
18750bool emitGTIntAP(SourceInfo);
18751bool emitGTIntAPS(SourceInfo);
18752bool emitGTBool(SourceInfo);
18753bool emitGTFixedPoint(SourceInfo);
18754bool emitGTPtr(SourceInfo);
18755bool emitGTFloat(SourceInfo);
18756#endif
18757#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
18758[[nodiscard]] bool emitGT(PrimType, SourceInfo I);
18759#endif
18760#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
18761bool
18762#if defined(GET_EVAL_IMPL)
18763EvalEmitter
18764#else
18765ByteCodeEmitter
18766#endif
18767::emitGT(PrimType T0, SourceInfo I) {
18768 switch (T0) {
18769 case PT_Sint8:
18770 return emitGTSint8(I);
18771 case PT_Uint8:
18772 return emitGTUint8(I);
18773 case PT_Sint16:
18774 return emitGTSint16(I);
18775 case PT_Uint16:
18776 return emitGTUint16(I);
18777 case PT_Sint32:
18778 return emitGTSint32(I);
18779 case PT_Uint32:
18780 return emitGTUint32(I);
18781 case PT_Sint64:
18782 return emitGTSint64(I);
18783 case PT_Uint64:
18784 return emitGTUint64(I);
18785 case PT_IntAP:
18786 return emitGTIntAP(I);
18787 case PT_IntAPS:
18788 return emitGTIntAPS(I);
18789 case PT_Bool:
18790 return emitGTBool(I);
18791 case PT_FixedPoint:
18792 return emitGTFixedPoint(I);
18793 case PT_Ptr:
18794 return emitGTPtr(I);
18795 case PT_Float:
18796 return emitGTFloat(I);
18797 default: llvm_unreachable("invalid type: emitGT");
18798 }
18799 llvm_unreachable("invalid enum value");
18800}
18801#endif
18802#ifdef GET_LINK_IMPL
18803bool ByteCodeEmitter::emitGTSint8(SourceInfo L) {
18804 return emitOp<>(OP_GTSint8, L);
18805}
18806bool ByteCodeEmitter::emitGTUint8(SourceInfo L) {
18807 return emitOp<>(OP_GTUint8, L);
18808}
18809bool ByteCodeEmitter::emitGTSint16(SourceInfo L) {
18810 return emitOp<>(OP_GTSint16, L);
18811}
18812bool ByteCodeEmitter::emitGTUint16(SourceInfo L) {
18813 return emitOp<>(OP_GTUint16, L);
18814}
18815bool ByteCodeEmitter::emitGTSint32(SourceInfo L) {
18816 return emitOp<>(OP_GTSint32, L);
18817}
18818bool ByteCodeEmitter::emitGTUint32(SourceInfo L) {
18819 return emitOp<>(OP_GTUint32, L);
18820}
18821bool ByteCodeEmitter::emitGTSint64(SourceInfo L) {
18822 return emitOp<>(OP_GTSint64, L);
18823}
18824bool ByteCodeEmitter::emitGTUint64(SourceInfo L) {
18825 return emitOp<>(OP_GTUint64, L);
18826}
18827bool ByteCodeEmitter::emitGTIntAP(SourceInfo L) {
18828 return emitOp<>(OP_GTIntAP, L);
18829}
18830bool ByteCodeEmitter::emitGTIntAPS(SourceInfo L) {
18831 return emitOp<>(OP_GTIntAPS, L);
18832}
18833bool ByteCodeEmitter::emitGTBool(SourceInfo L) {
18834 return emitOp<>(OP_GTBool, L);
18835}
18836bool ByteCodeEmitter::emitGTFixedPoint(SourceInfo L) {
18837 return emitOp<>(OP_GTFixedPoint, L);
18838}
18839bool ByteCodeEmitter::emitGTPtr(SourceInfo L) {
18840 return emitOp<>(OP_GTPtr, L);
18841}
18842bool ByteCodeEmitter::emitGTFloat(SourceInfo L) {
18843 return emitOp<>(OP_GTFloat, L);
18844}
18845#endif
18846#ifdef GET_EVAL_IMPL
18847bool EvalEmitter::emitGTSint8(SourceInfo L) {
18848 if (!isActive()) return true;
18849 CurrentSource = L;
18850 return GT<PT_Sint8>(S, OpPC);
18851}
18852bool EvalEmitter::emitGTUint8(SourceInfo L) {
18853 if (!isActive()) return true;
18854 CurrentSource = L;
18855 return GT<PT_Uint8>(S, OpPC);
18856}
18857bool EvalEmitter::emitGTSint16(SourceInfo L) {
18858 if (!isActive()) return true;
18859 CurrentSource = L;
18860 return GT<PT_Sint16>(S, OpPC);
18861}
18862bool EvalEmitter::emitGTUint16(SourceInfo L) {
18863 if (!isActive()) return true;
18864 CurrentSource = L;
18865 return GT<PT_Uint16>(S, OpPC);
18866}
18867bool EvalEmitter::emitGTSint32(SourceInfo L) {
18868 if (!isActive()) return true;
18869 CurrentSource = L;
18870 return GT<PT_Sint32>(S, OpPC);
18871}
18872bool EvalEmitter::emitGTUint32(SourceInfo L) {
18873 if (!isActive()) return true;
18874 CurrentSource = L;
18875 return GT<PT_Uint32>(S, OpPC);
18876}
18877bool EvalEmitter::emitGTSint64(SourceInfo L) {
18878 if (!isActive()) return true;
18879 CurrentSource = L;
18880 return GT<PT_Sint64>(S, OpPC);
18881}
18882bool EvalEmitter::emitGTUint64(SourceInfo L) {
18883 if (!isActive()) return true;
18884 CurrentSource = L;
18885 return GT<PT_Uint64>(S, OpPC);
18886}
18887bool EvalEmitter::emitGTIntAP(SourceInfo L) {
18888 if (!isActive()) return true;
18889 CurrentSource = L;
18890 return GT<PT_IntAP>(S, OpPC);
18891}
18892bool EvalEmitter::emitGTIntAPS(SourceInfo L) {
18893 if (!isActive()) return true;
18894 CurrentSource = L;
18895 return GT<PT_IntAPS>(S, OpPC);
18896}
18897bool EvalEmitter::emitGTBool(SourceInfo L) {
18898 if (!isActive()) return true;
18899 CurrentSource = L;
18900 return GT<PT_Bool>(S, OpPC);
18901}
18902bool EvalEmitter::emitGTFixedPoint(SourceInfo L) {
18903 if (!isActive()) return true;
18904 CurrentSource = L;
18905 return GT<PT_FixedPoint>(S, OpPC);
18906}
18907bool EvalEmitter::emitGTPtr(SourceInfo L) {
18908 if (!isActive()) return true;
18909 CurrentSource = L;
18910 return GT<PT_Ptr>(S, OpPC);
18911}
18912bool EvalEmitter::emitGTFloat(SourceInfo L) {
18913 if (!isActive()) return true;
18914 CurrentSource = L;
18915 return GT<PT_Float>(S, OpPC);
18916}
18917#endif
18918#ifdef GET_OPCODE_NAMES
18919OP_GetFieldSint8,
18920OP_GetFieldUint8,
18921OP_GetFieldSint16,
18922OP_GetFieldUint16,
18923OP_GetFieldSint32,
18924OP_GetFieldUint32,
18925OP_GetFieldSint64,
18926OP_GetFieldUint64,
18927OP_GetFieldIntAP,
18928OP_GetFieldIntAPS,
18929OP_GetFieldBool,
18930OP_GetFieldFixedPoint,
18931OP_GetFieldPtr,
18932OP_GetFieldMemberPtr,
18933OP_GetFieldFloat,
18934#endif
18935#ifdef GET_INTERP
18936case OP_GetFieldSint8: {
18937 const auto V0 = ReadArg<uint32_t>(S, PC);
18938 if (!GetField<PT_Sint8>(S, OpPC, V0))
18939 return false;
18940 continue;
18941}
18942case OP_GetFieldUint8: {
18943 const auto V0 = ReadArg<uint32_t>(S, PC);
18944 if (!GetField<PT_Uint8>(S, OpPC, V0))
18945 return false;
18946 continue;
18947}
18948case OP_GetFieldSint16: {
18949 const auto V0 = ReadArg<uint32_t>(S, PC);
18950 if (!GetField<PT_Sint16>(S, OpPC, V0))
18951 return false;
18952 continue;
18953}
18954case OP_GetFieldUint16: {
18955 const auto V0 = ReadArg<uint32_t>(S, PC);
18956 if (!GetField<PT_Uint16>(S, OpPC, V0))
18957 return false;
18958 continue;
18959}
18960case OP_GetFieldSint32: {
18961 const auto V0 = ReadArg<uint32_t>(S, PC);
18962 if (!GetField<PT_Sint32>(S, OpPC, V0))
18963 return false;
18964 continue;
18965}
18966case OP_GetFieldUint32: {
18967 const auto V0 = ReadArg<uint32_t>(S, PC);
18968 if (!GetField<PT_Uint32>(S, OpPC, V0))
18969 return false;
18970 continue;
18971}
18972case OP_GetFieldSint64: {
18973 const auto V0 = ReadArg<uint32_t>(S, PC);
18974 if (!GetField<PT_Sint64>(S, OpPC, V0))
18975 return false;
18976 continue;
18977}
18978case OP_GetFieldUint64: {
18979 const auto V0 = ReadArg<uint32_t>(S, PC);
18980 if (!GetField<PT_Uint64>(S, OpPC, V0))
18981 return false;
18982 continue;
18983}
18984case OP_GetFieldIntAP: {
18985 const auto V0 = ReadArg<uint32_t>(S, PC);
18986 if (!GetField<PT_IntAP>(S, OpPC, V0))
18987 return false;
18988 continue;
18989}
18990case OP_GetFieldIntAPS: {
18991 const auto V0 = ReadArg<uint32_t>(S, PC);
18992 if (!GetField<PT_IntAPS>(S, OpPC, V0))
18993 return false;
18994 continue;
18995}
18996case OP_GetFieldBool: {
18997 const auto V0 = ReadArg<uint32_t>(S, PC);
18998 if (!GetField<PT_Bool>(S, OpPC, V0))
18999 return false;
19000 continue;
19001}
19002case OP_GetFieldFixedPoint: {
19003 const auto V0 = ReadArg<uint32_t>(S, PC);
19004 if (!GetField<PT_FixedPoint>(S, OpPC, V0))
19005 return false;
19006 continue;
19007}
19008case OP_GetFieldPtr: {
19009 const auto V0 = ReadArg<uint32_t>(S, PC);
19010 if (!GetField<PT_Ptr>(S, OpPC, V0))
19011 return false;
19012 continue;
19013}
19014case OP_GetFieldMemberPtr: {
19015 const auto V0 = ReadArg<uint32_t>(S, PC);
19016 if (!GetField<PT_MemberPtr>(S, OpPC, V0))
19017 return false;
19018 continue;
19019}
19020case OP_GetFieldFloat: {
19021 const auto V0 = ReadArg<uint32_t>(S, PC);
19022 if (!GetField<PT_Float>(S, OpPC, V0))
19023 return false;
19024 continue;
19025}
19026#endif
19027#ifdef GET_DISASM
19028case OP_GetFieldSint8:
19029 Text.Op = PrintName("GetFieldSint8");
19030 Text.Args.push_back(printArg<uint32_t>(P, PC));
19031 break;
19032case OP_GetFieldUint8:
19033 Text.Op = PrintName("GetFieldUint8");
19034 Text.Args.push_back(printArg<uint32_t>(P, PC));
19035 break;
19036case OP_GetFieldSint16:
19037 Text.Op = PrintName("GetFieldSint16");
19038 Text.Args.push_back(printArg<uint32_t>(P, PC));
19039 break;
19040case OP_GetFieldUint16:
19041 Text.Op = PrintName("GetFieldUint16");
19042 Text.Args.push_back(printArg<uint32_t>(P, PC));
19043 break;
19044case OP_GetFieldSint32:
19045 Text.Op = PrintName("GetFieldSint32");
19046 Text.Args.push_back(printArg<uint32_t>(P, PC));
19047 break;
19048case OP_GetFieldUint32:
19049 Text.Op = PrintName("GetFieldUint32");
19050 Text.Args.push_back(printArg<uint32_t>(P, PC));
19051 break;
19052case OP_GetFieldSint64:
19053 Text.Op = PrintName("GetFieldSint64");
19054 Text.Args.push_back(printArg<uint32_t>(P, PC));
19055 break;
19056case OP_GetFieldUint64:
19057 Text.Op = PrintName("GetFieldUint64");
19058 Text.Args.push_back(printArg<uint32_t>(P, PC));
19059 break;
19060case OP_GetFieldIntAP:
19061 Text.Op = PrintName("GetFieldIntAP");
19062 Text.Args.push_back(printArg<uint32_t>(P, PC));
19063 break;
19064case OP_GetFieldIntAPS:
19065 Text.Op = PrintName("GetFieldIntAPS");
19066 Text.Args.push_back(printArg<uint32_t>(P, PC));
19067 break;
19068case OP_GetFieldBool:
19069 Text.Op = PrintName("GetFieldBool");
19070 Text.Args.push_back(printArg<uint32_t>(P, PC));
19071 break;
19072case OP_GetFieldFixedPoint:
19073 Text.Op = PrintName("GetFieldFixedPoint");
19074 Text.Args.push_back(printArg<uint32_t>(P, PC));
19075 break;
19076case OP_GetFieldPtr:
19077 Text.Op = PrintName("GetFieldPtr");
19078 Text.Args.push_back(printArg<uint32_t>(P, PC));
19079 break;
19080case OP_GetFieldMemberPtr:
19081 Text.Op = PrintName("GetFieldMemberPtr");
19082 Text.Args.push_back(printArg<uint32_t>(P, PC));
19083 break;
19084case OP_GetFieldFloat:
19085 Text.Op = PrintName("GetFieldFloat");
19086 Text.Args.push_back(printArg<uint32_t>(P, PC));
19087 break;
19088#endif
19089#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19090bool emitGetFieldSint8( uint32_t , SourceInfo);
19091bool emitGetFieldUint8( uint32_t , SourceInfo);
19092bool emitGetFieldSint16( uint32_t , SourceInfo);
19093bool emitGetFieldUint16( uint32_t , SourceInfo);
19094bool emitGetFieldSint32( uint32_t , SourceInfo);
19095bool emitGetFieldUint32( uint32_t , SourceInfo);
19096bool emitGetFieldSint64( uint32_t , SourceInfo);
19097bool emitGetFieldUint64( uint32_t , SourceInfo);
19098bool emitGetFieldIntAP( uint32_t , SourceInfo);
19099bool emitGetFieldIntAPS( uint32_t , SourceInfo);
19100bool emitGetFieldBool( uint32_t , SourceInfo);
19101bool emitGetFieldFixedPoint( uint32_t , SourceInfo);
19102bool emitGetFieldPtr( uint32_t , SourceInfo);
19103bool emitGetFieldMemberPtr( uint32_t , SourceInfo);
19104bool emitGetFieldFloat( uint32_t , SourceInfo);
19105#endif
19106#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19107[[nodiscard]] bool emitGetField(PrimType, uint32_t, SourceInfo I);
19108#endif
19109#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
19110bool
19111#if defined(GET_EVAL_IMPL)
19112EvalEmitter
19113#else
19114ByteCodeEmitter
19115#endif
19116::emitGetField(PrimType T0, uint32_t A0, SourceInfo I) {
19117 switch (T0) {
19118 case PT_Sint8:
19119 return emitGetFieldSint8(A0, I);
19120 case PT_Uint8:
19121 return emitGetFieldUint8(A0, I);
19122 case PT_Sint16:
19123 return emitGetFieldSint16(A0, I);
19124 case PT_Uint16:
19125 return emitGetFieldUint16(A0, I);
19126 case PT_Sint32:
19127 return emitGetFieldSint32(A0, I);
19128 case PT_Uint32:
19129 return emitGetFieldUint32(A0, I);
19130 case PT_Sint64:
19131 return emitGetFieldSint64(A0, I);
19132 case PT_Uint64:
19133 return emitGetFieldUint64(A0, I);
19134 case PT_IntAP:
19135 return emitGetFieldIntAP(A0, I);
19136 case PT_IntAPS:
19137 return emitGetFieldIntAPS(A0, I);
19138 case PT_Bool:
19139 return emitGetFieldBool(A0, I);
19140 case PT_FixedPoint:
19141 return emitGetFieldFixedPoint(A0, I);
19142 case PT_Ptr:
19143 return emitGetFieldPtr(A0, I);
19144 case PT_MemberPtr:
19145 return emitGetFieldMemberPtr(A0, I);
19146 case PT_Float:
19147 return emitGetFieldFloat(A0, I);
19148 }
19149 llvm_unreachable("invalid enum value");
19150}
19151#endif
19152#ifdef GET_LINK_IMPL
19153bool ByteCodeEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
19154 return emitOp<uint32_t>(OP_GetFieldSint8, A0, L);
19155}
19156bool ByteCodeEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
19157 return emitOp<uint32_t>(OP_GetFieldUint8, A0, L);
19158}
19159bool ByteCodeEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
19160 return emitOp<uint32_t>(OP_GetFieldSint16, A0, L);
19161}
19162bool ByteCodeEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
19163 return emitOp<uint32_t>(OP_GetFieldUint16, A0, L);
19164}
19165bool ByteCodeEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
19166 return emitOp<uint32_t>(OP_GetFieldSint32, A0, L);
19167}
19168bool ByteCodeEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
19169 return emitOp<uint32_t>(OP_GetFieldUint32, A0, L);
19170}
19171bool ByteCodeEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
19172 return emitOp<uint32_t>(OP_GetFieldSint64, A0, L);
19173}
19174bool ByteCodeEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
19175 return emitOp<uint32_t>(OP_GetFieldUint64, A0, L);
19176}
19177bool ByteCodeEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
19178 return emitOp<uint32_t>(OP_GetFieldIntAP, A0, L);
19179}
19180bool ByteCodeEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
19181 return emitOp<uint32_t>(OP_GetFieldIntAPS, A0, L);
19182}
19183bool ByteCodeEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
19184 return emitOp<uint32_t>(OP_GetFieldBool, A0, L);
19185}
19186bool ByteCodeEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
19187 return emitOp<uint32_t>(OP_GetFieldFixedPoint, A0, L);
19188}
19189bool ByteCodeEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
19190 return emitOp<uint32_t>(OP_GetFieldPtr, A0, L);
19191}
19192bool ByteCodeEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
19193 return emitOp<uint32_t>(OP_GetFieldMemberPtr, A0, L);
19194}
19195bool ByteCodeEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
19196 return emitOp<uint32_t>(OP_GetFieldFloat, A0, L);
19197}
19198#endif
19199#ifdef GET_EVAL_IMPL
19200bool EvalEmitter::emitGetFieldSint8( uint32_t A0, SourceInfo L) {
19201 if (!isActive()) return true;
19202 CurrentSource = L;
19203 return GetField<PT_Sint8>(S, OpPC, A0);
19204}
19205bool EvalEmitter::emitGetFieldUint8( uint32_t A0, SourceInfo L) {
19206 if (!isActive()) return true;
19207 CurrentSource = L;
19208 return GetField<PT_Uint8>(S, OpPC, A0);
19209}
19210bool EvalEmitter::emitGetFieldSint16( uint32_t A0, SourceInfo L) {
19211 if (!isActive()) return true;
19212 CurrentSource = L;
19213 return GetField<PT_Sint16>(S, OpPC, A0);
19214}
19215bool EvalEmitter::emitGetFieldUint16( uint32_t A0, SourceInfo L) {
19216 if (!isActive()) return true;
19217 CurrentSource = L;
19218 return GetField<PT_Uint16>(S, OpPC, A0);
19219}
19220bool EvalEmitter::emitGetFieldSint32( uint32_t A0, SourceInfo L) {
19221 if (!isActive()) return true;
19222 CurrentSource = L;
19223 return GetField<PT_Sint32>(S, OpPC, A0);
19224}
19225bool EvalEmitter::emitGetFieldUint32( uint32_t A0, SourceInfo L) {
19226 if (!isActive()) return true;
19227 CurrentSource = L;
19228 return GetField<PT_Uint32>(S, OpPC, A0);
19229}
19230bool EvalEmitter::emitGetFieldSint64( uint32_t A0, SourceInfo L) {
19231 if (!isActive()) return true;
19232 CurrentSource = L;
19233 return GetField<PT_Sint64>(S, OpPC, A0);
19234}
19235bool EvalEmitter::emitGetFieldUint64( uint32_t A0, SourceInfo L) {
19236 if (!isActive()) return true;
19237 CurrentSource = L;
19238 return GetField<PT_Uint64>(S, OpPC, A0);
19239}
19240bool EvalEmitter::emitGetFieldIntAP( uint32_t A0, SourceInfo L) {
19241 if (!isActive()) return true;
19242 CurrentSource = L;
19243 return GetField<PT_IntAP>(S, OpPC, A0);
19244}
19245bool EvalEmitter::emitGetFieldIntAPS( uint32_t A0, SourceInfo L) {
19246 if (!isActive()) return true;
19247 CurrentSource = L;
19248 return GetField<PT_IntAPS>(S, OpPC, A0);
19249}
19250bool EvalEmitter::emitGetFieldBool( uint32_t A0, SourceInfo L) {
19251 if (!isActive()) return true;
19252 CurrentSource = L;
19253 return GetField<PT_Bool>(S, OpPC, A0);
19254}
19255bool EvalEmitter::emitGetFieldFixedPoint( uint32_t A0, SourceInfo L) {
19256 if (!isActive()) return true;
19257 CurrentSource = L;
19258 return GetField<PT_FixedPoint>(S, OpPC, A0);
19259}
19260bool EvalEmitter::emitGetFieldPtr( uint32_t A0, SourceInfo L) {
19261 if (!isActive()) return true;
19262 CurrentSource = L;
19263 return GetField<PT_Ptr>(S, OpPC, A0);
19264}
19265bool EvalEmitter::emitGetFieldMemberPtr( uint32_t A0, SourceInfo L) {
19266 if (!isActive()) return true;
19267 CurrentSource = L;
19268 return GetField<PT_MemberPtr>(S, OpPC, A0);
19269}
19270bool EvalEmitter::emitGetFieldFloat( uint32_t A0, SourceInfo L) {
19271 if (!isActive()) return true;
19272 CurrentSource = L;
19273 return GetField<PT_Float>(S, OpPC, A0);
19274}
19275#endif
19276#ifdef GET_OPCODE_NAMES
19277OP_GetFieldPopSint8,
19278OP_GetFieldPopUint8,
19279OP_GetFieldPopSint16,
19280OP_GetFieldPopUint16,
19281OP_GetFieldPopSint32,
19282OP_GetFieldPopUint32,
19283OP_GetFieldPopSint64,
19284OP_GetFieldPopUint64,
19285OP_GetFieldPopIntAP,
19286OP_GetFieldPopIntAPS,
19287OP_GetFieldPopBool,
19288OP_GetFieldPopFixedPoint,
19289OP_GetFieldPopPtr,
19290OP_GetFieldPopMemberPtr,
19291OP_GetFieldPopFloat,
19292#endif
19293#ifdef GET_INTERP
19294case OP_GetFieldPopSint8: {
19295 const auto V0 = ReadArg<uint32_t>(S, PC);
19296 if (!GetFieldPop<PT_Sint8>(S, OpPC, V0))
19297 return false;
19298 continue;
19299}
19300case OP_GetFieldPopUint8: {
19301 const auto V0 = ReadArg<uint32_t>(S, PC);
19302 if (!GetFieldPop<PT_Uint8>(S, OpPC, V0))
19303 return false;
19304 continue;
19305}
19306case OP_GetFieldPopSint16: {
19307 const auto V0 = ReadArg<uint32_t>(S, PC);
19308 if (!GetFieldPop<PT_Sint16>(S, OpPC, V0))
19309 return false;
19310 continue;
19311}
19312case OP_GetFieldPopUint16: {
19313 const auto V0 = ReadArg<uint32_t>(S, PC);
19314 if (!GetFieldPop<PT_Uint16>(S, OpPC, V0))
19315 return false;
19316 continue;
19317}
19318case OP_GetFieldPopSint32: {
19319 const auto V0 = ReadArg<uint32_t>(S, PC);
19320 if (!GetFieldPop<PT_Sint32>(S, OpPC, V0))
19321 return false;
19322 continue;
19323}
19324case OP_GetFieldPopUint32: {
19325 const auto V0 = ReadArg<uint32_t>(S, PC);
19326 if (!GetFieldPop<PT_Uint32>(S, OpPC, V0))
19327 return false;
19328 continue;
19329}
19330case OP_GetFieldPopSint64: {
19331 const auto V0 = ReadArg<uint32_t>(S, PC);
19332 if (!GetFieldPop<PT_Sint64>(S, OpPC, V0))
19333 return false;
19334 continue;
19335}
19336case OP_GetFieldPopUint64: {
19337 const auto V0 = ReadArg<uint32_t>(S, PC);
19338 if (!GetFieldPop<PT_Uint64>(S, OpPC, V0))
19339 return false;
19340 continue;
19341}
19342case OP_GetFieldPopIntAP: {
19343 const auto V0 = ReadArg<uint32_t>(S, PC);
19344 if (!GetFieldPop<PT_IntAP>(S, OpPC, V0))
19345 return false;
19346 continue;
19347}
19348case OP_GetFieldPopIntAPS: {
19349 const auto V0 = ReadArg<uint32_t>(S, PC);
19350 if (!GetFieldPop<PT_IntAPS>(S, OpPC, V0))
19351 return false;
19352 continue;
19353}
19354case OP_GetFieldPopBool: {
19355 const auto V0 = ReadArg<uint32_t>(S, PC);
19356 if (!GetFieldPop<PT_Bool>(S, OpPC, V0))
19357 return false;
19358 continue;
19359}
19360case OP_GetFieldPopFixedPoint: {
19361 const auto V0 = ReadArg<uint32_t>(S, PC);
19362 if (!GetFieldPop<PT_FixedPoint>(S, OpPC, V0))
19363 return false;
19364 continue;
19365}
19366case OP_GetFieldPopPtr: {
19367 const auto V0 = ReadArg<uint32_t>(S, PC);
19368 if (!GetFieldPop<PT_Ptr>(S, OpPC, V0))
19369 return false;
19370 continue;
19371}
19372case OP_GetFieldPopMemberPtr: {
19373 const auto V0 = ReadArg<uint32_t>(S, PC);
19374 if (!GetFieldPop<PT_MemberPtr>(S, OpPC, V0))
19375 return false;
19376 continue;
19377}
19378case OP_GetFieldPopFloat: {
19379 const auto V0 = ReadArg<uint32_t>(S, PC);
19380 if (!GetFieldPop<PT_Float>(S, OpPC, V0))
19381 return false;
19382 continue;
19383}
19384#endif
19385#ifdef GET_DISASM
19386case OP_GetFieldPopSint8:
19387 Text.Op = PrintName("GetFieldPopSint8");
19388 Text.Args.push_back(printArg<uint32_t>(P, PC));
19389 break;
19390case OP_GetFieldPopUint8:
19391 Text.Op = PrintName("GetFieldPopUint8");
19392 Text.Args.push_back(printArg<uint32_t>(P, PC));
19393 break;
19394case OP_GetFieldPopSint16:
19395 Text.Op = PrintName("GetFieldPopSint16");
19396 Text.Args.push_back(printArg<uint32_t>(P, PC));
19397 break;
19398case OP_GetFieldPopUint16:
19399 Text.Op = PrintName("GetFieldPopUint16");
19400 Text.Args.push_back(printArg<uint32_t>(P, PC));
19401 break;
19402case OP_GetFieldPopSint32:
19403 Text.Op = PrintName("GetFieldPopSint32");
19404 Text.Args.push_back(printArg<uint32_t>(P, PC));
19405 break;
19406case OP_GetFieldPopUint32:
19407 Text.Op = PrintName("GetFieldPopUint32");
19408 Text.Args.push_back(printArg<uint32_t>(P, PC));
19409 break;
19410case OP_GetFieldPopSint64:
19411 Text.Op = PrintName("GetFieldPopSint64");
19412 Text.Args.push_back(printArg<uint32_t>(P, PC));
19413 break;
19414case OP_GetFieldPopUint64:
19415 Text.Op = PrintName("GetFieldPopUint64");
19416 Text.Args.push_back(printArg<uint32_t>(P, PC));
19417 break;
19418case OP_GetFieldPopIntAP:
19419 Text.Op = PrintName("GetFieldPopIntAP");
19420 Text.Args.push_back(printArg<uint32_t>(P, PC));
19421 break;
19422case OP_GetFieldPopIntAPS:
19423 Text.Op = PrintName("GetFieldPopIntAPS");
19424 Text.Args.push_back(printArg<uint32_t>(P, PC));
19425 break;
19426case OP_GetFieldPopBool:
19427 Text.Op = PrintName("GetFieldPopBool");
19428 Text.Args.push_back(printArg<uint32_t>(P, PC));
19429 break;
19430case OP_GetFieldPopFixedPoint:
19431 Text.Op = PrintName("GetFieldPopFixedPoint");
19432 Text.Args.push_back(printArg<uint32_t>(P, PC));
19433 break;
19434case OP_GetFieldPopPtr:
19435 Text.Op = PrintName("GetFieldPopPtr");
19436 Text.Args.push_back(printArg<uint32_t>(P, PC));
19437 break;
19438case OP_GetFieldPopMemberPtr:
19439 Text.Op = PrintName("GetFieldPopMemberPtr");
19440 Text.Args.push_back(printArg<uint32_t>(P, PC));
19441 break;
19442case OP_GetFieldPopFloat:
19443 Text.Op = PrintName("GetFieldPopFloat");
19444 Text.Args.push_back(printArg<uint32_t>(P, PC));
19445 break;
19446#endif
19447#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19448bool emitGetFieldPopSint8( uint32_t , SourceInfo);
19449bool emitGetFieldPopUint8( uint32_t , SourceInfo);
19450bool emitGetFieldPopSint16( uint32_t , SourceInfo);
19451bool emitGetFieldPopUint16( uint32_t , SourceInfo);
19452bool emitGetFieldPopSint32( uint32_t , SourceInfo);
19453bool emitGetFieldPopUint32( uint32_t , SourceInfo);
19454bool emitGetFieldPopSint64( uint32_t , SourceInfo);
19455bool emitGetFieldPopUint64( uint32_t , SourceInfo);
19456bool emitGetFieldPopIntAP( uint32_t , SourceInfo);
19457bool emitGetFieldPopIntAPS( uint32_t , SourceInfo);
19458bool emitGetFieldPopBool( uint32_t , SourceInfo);
19459bool emitGetFieldPopFixedPoint( uint32_t , SourceInfo);
19460bool emitGetFieldPopPtr( uint32_t , SourceInfo);
19461bool emitGetFieldPopMemberPtr( uint32_t , SourceInfo);
19462bool emitGetFieldPopFloat( uint32_t , SourceInfo);
19463#endif
19464#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19465[[nodiscard]] bool emitGetFieldPop(PrimType, uint32_t, SourceInfo I);
19466#endif
19467#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
19468bool
19469#if defined(GET_EVAL_IMPL)
19470EvalEmitter
19471#else
19472ByteCodeEmitter
19473#endif
19474::emitGetFieldPop(PrimType T0, uint32_t A0, SourceInfo I) {
19475 switch (T0) {
19476 case PT_Sint8:
19477 return emitGetFieldPopSint8(A0, I);
19478 case PT_Uint8:
19479 return emitGetFieldPopUint8(A0, I);
19480 case PT_Sint16:
19481 return emitGetFieldPopSint16(A0, I);
19482 case PT_Uint16:
19483 return emitGetFieldPopUint16(A0, I);
19484 case PT_Sint32:
19485 return emitGetFieldPopSint32(A0, I);
19486 case PT_Uint32:
19487 return emitGetFieldPopUint32(A0, I);
19488 case PT_Sint64:
19489 return emitGetFieldPopSint64(A0, I);
19490 case PT_Uint64:
19491 return emitGetFieldPopUint64(A0, I);
19492 case PT_IntAP:
19493 return emitGetFieldPopIntAP(A0, I);
19494 case PT_IntAPS:
19495 return emitGetFieldPopIntAPS(A0, I);
19496 case PT_Bool:
19497 return emitGetFieldPopBool(A0, I);
19498 case PT_FixedPoint:
19499 return emitGetFieldPopFixedPoint(A0, I);
19500 case PT_Ptr:
19501 return emitGetFieldPopPtr(A0, I);
19502 case PT_MemberPtr:
19503 return emitGetFieldPopMemberPtr(A0, I);
19504 case PT_Float:
19505 return emitGetFieldPopFloat(A0, I);
19506 }
19507 llvm_unreachable("invalid enum value");
19508}
19509#endif
19510#ifdef GET_LINK_IMPL
19511bool ByteCodeEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
19512 return emitOp<uint32_t>(OP_GetFieldPopSint8, A0, L);
19513}
19514bool ByteCodeEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
19515 return emitOp<uint32_t>(OP_GetFieldPopUint8, A0, L);
19516}
19517bool ByteCodeEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
19518 return emitOp<uint32_t>(OP_GetFieldPopSint16, A0, L);
19519}
19520bool ByteCodeEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
19521 return emitOp<uint32_t>(OP_GetFieldPopUint16, A0, L);
19522}
19523bool ByteCodeEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
19524 return emitOp<uint32_t>(OP_GetFieldPopSint32, A0, L);
19525}
19526bool ByteCodeEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
19527 return emitOp<uint32_t>(OP_GetFieldPopUint32, A0, L);
19528}
19529bool ByteCodeEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
19530 return emitOp<uint32_t>(OP_GetFieldPopSint64, A0, L);
19531}
19532bool ByteCodeEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
19533 return emitOp<uint32_t>(OP_GetFieldPopUint64, A0, L);
19534}
19535bool ByteCodeEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
19536 return emitOp<uint32_t>(OP_GetFieldPopIntAP, A0, L);
19537}
19538bool ByteCodeEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
19539 return emitOp<uint32_t>(OP_GetFieldPopIntAPS, A0, L);
19540}
19541bool ByteCodeEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
19542 return emitOp<uint32_t>(OP_GetFieldPopBool, A0, L);
19543}
19544bool ByteCodeEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
19545 return emitOp<uint32_t>(OP_GetFieldPopFixedPoint, A0, L);
19546}
19547bool ByteCodeEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
19548 return emitOp<uint32_t>(OP_GetFieldPopPtr, A0, L);
19549}
19550bool ByteCodeEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
19551 return emitOp<uint32_t>(OP_GetFieldPopMemberPtr, A0, L);
19552}
19553bool ByteCodeEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
19554 return emitOp<uint32_t>(OP_GetFieldPopFloat, A0, L);
19555}
19556#endif
19557#ifdef GET_EVAL_IMPL
19558bool EvalEmitter::emitGetFieldPopSint8( uint32_t A0, SourceInfo L) {
19559 if (!isActive()) return true;
19560 CurrentSource = L;
19561 return GetFieldPop<PT_Sint8>(S, OpPC, A0);
19562}
19563bool EvalEmitter::emitGetFieldPopUint8( uint32_t A0, SourceInfo L) {
19564 if (!isActive()) return true;
19565 CurrentSource = L;
19566 return GetFieldPop<PT_Uint8>(S, OpPC, A0);
19567}
19568bool EvalEmitter::emitGetFieldPopSint16( uint32_t A0, SourceInfo L) {
19569 if (!isActive()) return true;
19570 CurrentSource = L;
19571 return GetFieldPop<PT_Sint16>(S, OpPC, A0);
19572}
19573bool EvalEmitter::emitGetFieldPopUint16( uint32_t A0, SourceInfo L) {
19574 if (!isActive()) return true;
19575 CurrentSource = L;
19576 return GetFieldPop<PT_Uint16>(S, OpPC, A0);
19577}
19578bool EvalEmitter::emitGetFieldPopSint32( uint32_t A0, SourceInfo L) {
19579 if (!isActive()) return true;
19580 CurrentSource = L;
19581 return GetFieldPop<PT_Sint32>(S, OpPC, A0);
19582}
19583bool EvalEmitter::emitGetFieldPopUint32( uint32_t A0, SourceInfo L) {
19584 if (!isActive()) return true;
19585 CurrentSource = L;
19586 return GetFieldPop<PT_Uint32>(S, OpPC, A0);
19587}
19588bool EvalEmitter::emitGetFieldPopSint64( uint32_t A0, SourceInfo L) {
19589 if (!isActive()) return true;
19590 CurrentSource = L;
19591 return GetFieldPop<PT_Sint64>(S, OpPC, A0);
19592}
19593bool EvalEmitter::emitGetFieldPopUint64( uint32_t A0, SourceInfo L) {
19594 if (!isActive()) return true;
19595 CurrentSource = L;
19596 return GetFieldPop<PT_Uint64>(S, OpPC, A0);
19597}
19598bool EvalEmitter::emitGetFieldPopIntAP( uint32_t A0, SourceInfo L) {
19599 if (!isActive()) return true;
19600 CurrentSource = L;
19601 return GetFieldPop<PT_IntAP>(S, OpPC, A0);
19602}
19603bool EvalEmitter::emitGetFieldPopIntAPS( uint32_t A0, SourceInfo L) {
19604 if (!isActive()) return true;
19605 CurrentSource = L;
19606 return GetFieldPop<PT_IntAPS>(S, OpPC, A0);
19607}
19608bool EvalEmitter::emitGetFieldPopBool( uint32_t A0, SourceInfo L) {
19609 if (!isActive()) return true;
19610 CurrentSource = L;
19611 return GetFieldPop<PT_Bool>(S, OpPC, A0);
19612}
19613bool EvalEmitter::emitGetFieldPopFixedPoint( uint32_t A0, SourceInfo L) {
19614 if (!isActive()) return true;
19615 CurrentSource = L;
19616 return GetFieldPop<PT_FixedPoint>(S, OpPC, A0);
19617}
19618bool EvalEmitter::emitGetFieldPopPtr( uint32_t A0, SourceInfo L) {
19619 if (!isActive()) return true;
19620 CurrentSource = L;
19621 return GetFieldPop<PT_Ptr>(S, OpPC, A0);
19622}
19623bool EvalEmitter::emitGetFieldPopMemberPtr( uint32_t A0, SourceInfo L) {
19624 if (!isActive()) return true;
19625 CurrentSource = L;
19626 return GetFieldPop<PT_MemberPtr>(S, OpPC, A0);
19627}
19628bool EvalEmitter::emitGetFieldPopFloat( uint32_t A0, SourceInfo L) {
19629 if (!isActive()) return true;
19630 CurrentSource = L;
19631 return GetFieldPop<PT_Float>(S, OpPC, A0);
19632}
19633#endif
19634#ifdef GET_OPCODE_NAMES
19635OP_GetFnPtr,
19636#endif
19637#ifdef GET_INTERP
19638case OP_GetFnPtr: {
19639 const auto V0 = ReadArg<const Function *>(S, PC);
19640 if (!GetFnPtr(S, OpPC, V0))
19641 return false;
19642 continue;
19643}
19644#endif
19645#ifdef GET_DISASM
19646case OP_GetFnPtr:
19647 Text.Op = PrintName("GetFnPtr");
19648 Text.Args.push_back(printArg<const Function *>(P, PC));
19649 break;
19650#endif
19651#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19652bool emitGetFnPtr( const Function * , SourceInfo);
19653#endif
19654#ifdef GET_LINK_IMPL
19655bool ByteCodeEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
19656 return emitOp<const Function *>(OP_GetFnPtr, A0, L);
19657}
19658#endif
19659#ifdef GET_EVAL_IMPL
19660bool EvalEmitter::emitGetFnPtr( const Function * A0, SourceInfo L) {
19661 if (!isActive()) return true;
19662 CurrentSource = L;
19663 return GetFnPtr(S, OpPC, A0);
19664}
19665#endif
19666#ifdef GET_OPCODE_NAMES
19667OP_GetGlobalSint8,
19668OP_GetGlobalUint8,
19669OP_GetGlobalSint16,
19670OP_GetGlobalUint16,
19671OP_GetGlobalSint32,
19672OP_GetGlobalUint32,
19673OP_GetGlobalSint64,
19674OP_GetGlobalUint64,
19675OP_GetGlobalIntAP,
19676OP_GetGlobalIntAPS,
19677OP_GetGlobalBool,
19678OP_GetGlobalFixedPoint,
19679OP_GetGlobalPtr,
19680OP_GetGlobalMemberPtr,
19681OP_GetGlobalFloat,
19682#endif
19683#ifdef GET_INTERP
19684case OP_GetGlobalSint8: {
19685 const auto V0 = ReadArg<uint32_t>(S, PC);
19686 if (!GetGlobal<PT_Sint8>(S, OpPC, V0))
19687 return false;
19688 continue;
19689}
19690case OP_GetGlobalUint8: {
19691 const auto V0 = ReadArg<uint32_t>(S, PC);
19692 if (!GetGlobal<PT_Uint8>(S, OpPC, V0))
19693 return false;
19694 continue;
19695}
19696case OP_GetGlobalSint16: {
19697 const auto V0 = ReadArg<uint32_t>(S, PC);
19698 if (!GetGlobal<PT_Sint16>(S, OpPC, V0))
19699 return false;
19700 continue;
19701}
19702case OP_GetGlobalUint16: {
19703 const auto V0 = ReadArg<uint32_t>(S, PC);
19704 if (!GetGlobal<PT_Uint16>(S, OpPC, V0))
19705 return false;
19706 continue;
19707}
19708case OP_GetGlobalSint32: {
19709 const auto V0 = ReadArg<uint32_t>(S, PC);
19710 if (!GetGlobal<PT_Sint32>(S, OpPC, V0))
19711 return false;
19712 continue;
19713}
19714case OP_GetGlobalUint32: {
19715 const auto V0 = ReadArg<uint32_t>(S, PC);
19716 if (!GetGlobal<PT_Uint32>(S, OpPC, V0))
19717 return false;
19718 continue;
19719}
19720case OP_GetGlobalSint64: {
19721 const auto V0 = ReadArg<uint32_t>(S, PC);
19722 if (!GetGlobal<PT_Sint64>(S, OpPC, V0))
19723 return false;
19724 continue;
19725}
19726case OP_GetGlobalUint64: {
19727 const auto V0 = ReadArg<uint32_t>(S, PC);
19728 if (!GetGlobal<PT_Uint64>(S, OpPC, V0))
19729 return false;
19730 continue;
19731}
19732case OP_GetGlobalIntAP: {
19733 const auto V0 = ReadArg<uint32_t>(S, PC);
19734 if (!GetGlobal<PT_IntAP>(S, OpPC, V0))
19735 return false;
19736 continue;
19737}
19738case OP_GetGlobalIntAPS: {
19739 const auto V0 = ReadArg<uint32_t>(S, PC);
19740 if (!GetGlobal<PT_IntAPS>(S, OpPC, V0))
19741 return false;
19742 continue;
19743}
19744case OP_GetGlobalBool: {
19745 const auto V0 = ReadArg<uint32_t>(S, PC);
19746 if (!GetGlobal<PT_Bool>(S, OpPC, V0))
19747 return false;
19748 continue;
19749}
19750case OP_GetGlobalFixedPoint: {
19751 const auto V0 = ReadArg<uint32_t>(S, PC);
19752 if (!GetGlobal<PT_FixedPoint>(S, OpPC, V0))
19753 return false;
19754 continue;
19755}
19756case OP_GetGlobalPtr: {
19757 const auto V0 = ReadArg<uint32_t>(S, PC);
19758 if (!GetGlobal<PT_Ptr>(S, OpPC, V0))
19759 return false;
19760 continue;
19761}
19762case OP_GetGlobalMemberPtr: {
19763 const auto V0 = ReadArg<uint32_t>(S, PC);
19764 if (!GetGlobal<PT_MemberPtr>(S, OpPC, V0))
19765 return false;
19766 continue;
19767}
19768case OP_GetGlobalFloat: {
19769 const auto V0 = ReadArg<uint32_t>(S, PC);
19770 if (!GetGlobal<PT_Float>(S, OpPC, V0))
19771 return false;
19772 continue;
19773}
19774#endif
19775#ifdef GET_DISASM
19776case OP_GetGlobalSint8:
19777 Text.Op = PrintName("GetGlobalSint8");
19778 Text.Args.push_back(printArg<uint32_t>(P, PC));
19779 break;
19780case OP_GetGlobalUint8:
19781 Text.Op = PrintName("GetGlobalUint8");
19782 Text.Args.push_back(printArg<uint32_t>(P, PC));
19783 break;
19784case OP_GetGlobalSint16:
19785 Text.Op = PrintName("GetGlobalSint16");
19786 Text.Args.push_back(printArg<uint32_t>(P, PC));
19787 break;
19788case OP_GetGlobalUint16:
19789 Text.Op = PrintName("GetGlobalUint16");
19790 Text.Args.push_back(printArg<uint32_t>(P, PC));
19791 break;
19792case OP_GetGlobalSint32:
19793 Text.Op = PrintName("GetGlobalSint32");
19794 Text.Args.push_back(printArg<uint32_t>(P, PC));
19795 break;
19796case OP_GetGlobalUint32:
19797 Text.Op = PrintName("GetGlobalUint32");
19798 Text.Args.push_back(printArg<uint32_t>(P, PC));
19799 break;
19800case OP_GetGlobalSint64:
19801 Text.Op = PrintName("GetGlobalSint64");
19802 Text.Args.push_back(printArg<uint32_t>(P, PC));
19803 break;
19804case OP_GetGlobalUint64:
19805 Text.Op = PrintName("GetGlobalUint64");
19806 Text.Args.push_back(printArg<uint32_t>(P, PC));
19807 break;
19808case OP_GetGlobalIntAP:
19809 Text.Op = PrintName("GetGlobalIntAP");
19810 Text.Args.push_back(printArg<uint32_t>(P, PC));
19811 break;
19812case OP_GetGlobalIntAPS:
19813 Text.Op = PrintName("GetGlobalIntAPS");
19814 Text.Args.push_back(printArg<uint32_t>(P, PC));
19815 break;
19816case OP_GetGlobalBool:
19817 Text.Op = PrintName("GetGlobalBool");
19818 Text.Args.push_back(printArg<uint32_t>(P, PC));
19819 break;
19820case OP_GetGlobalFixedPoint:
19821 Text.Op = PrintName("GetGlobalFixedPoint");
19822 Text.Args.push_back(printArg<uint32_t>(P, PC));
19823 break;
19824case OP_GetGlobalPtr:
19825 Text.Op = PrintName("GetGlobalPtr");
19826 Text.Args.push_back(printArg<uint32_t>(P, PC));
19827 break;
19828case OP_GetGlobalMemberPtr:
19829 Text.Op = PrintName("GetGlobalMemberPtr");
19830 Text.Args.push_back(printArg<uint32_t>(P, PC));
19831 break;
19832case OP_GetGlobalFloat:
19833 Text.Op = PrintName("GetGlobalFloat");
19834 Text.Args.push_back(printArg<uint32_t>(P, PC));
19835 break;
19836#endif
19837#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19838bool emitGetGlobalSint8( uint32_t , SourceInfo);
19839bool emitGetGlobalUint8( uint32_t , SourceInfo);
19840bool emitGetGlobalSint16( uint32_t , SourceInfo);
19841bool emitGetGlobalUint16( uint32_t , SourceInfo);
19842bool emitGetGlobalSint32( uint32_t , SourceInfo);
19843bool emitGetGlobalUint32( uint32_t , SourceInfo);
19844bool emitGetGlobalSint64( uint32_t , SourceInfo);
19845bool emitGetGlobalUint64( uint32_t , SourceInfo);
19846bool emitGetGlobalIntAP( uint32_t , SourceInfo);
19847bool emitGetGlobalIntAPS( uint32_t , SourceInfo);
19848bool emitGetGlobalBool( uint32_t , SourceInfo);
19849bool emitGetGlobalFixedPoint( uint32_t , SourceInfo);
19850bool emitGetGlobalPtr( uint32_t , SourceInfo);
19851bool emitGetGlobalMemberPtr( uint32_t , SourceInfo);
19852bool emitGetGlobalFloat( uint32_t , SourceInfo);
19853#endif
19854#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
19855[[nodiscard]] bool emitGetGlobal(PrimType, uint32_t, SourceInfo I);
19856#endif
19857#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
19858bool
19859#if defined(GET_EVAL_IMPL)
19860EvalEmitter
19861#else
19862ByteCodeEmitter
19863#endif
19864::emitGetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
19865 switch (T0) {
19866 case PT_Sint8:
19867 return emitGetGlobalSint8(A0, I);
19868 case PT_Uint8:
19869 return emitGetGlobalUint8(A0, I);
19870 case PT_Sint16:
19871 return emitGetGlobalSint16(A0, I);
19872 case PT_Uint16:
19873 return emitGetGlobalUint16(A0, I);
19874 case PT_Sint32:
19875 return emitGetGlobalSint32(A0, I);
19876 case PT_Uint32:
19877 return emitGetGlobalUint32(A0, I);
19878 case PT_Sint64:
19879 return emitGetGlobalSint64(A0, I);
19880 case PT_Uint64:
19881 return emitGetGlobalUint64(A0, I);
19882 case PT_IntAP:
19883 return emitGetGlobalIntAP(A0, I);
19884 case PT_IntAPS:
19885 return emitGetGlobalIntAPS(A0, I);
19886 case PT_Bool:
19887 return emitGetGlobalBool(A0, I);
19888 case PT_FixedPoint:
19889 return emitGetGlobalFixedPoint(A0, I);
19890 case PT_Ptr:
19891 return emitGetGlobalPtr(A0, I);
19892 case PT_MemberPtr:
19893 return emitGetGlobalMemberPtr(A0, I);
19894 case PT_Float:
19895 return emitGetGlobalFloat(A0, I);
19896 }
19897 llvm_unreachable("invalid enum value");
19898}
19899#endif
19900#ifdef GET_LINK_IMPL
19901bool ByteCodeEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
19902 return emitOp<uint32_t>(OP_GetGlobalSint8, A0, L);
19903}
19904bool ByteCodeEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
19905 return emitOp<uint32_t>(OP_GetGlobalUint8, A0, L);
19906}
19907bool ByteCodeEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
19908 return emitOp<uint32_t>(OP_GetGlobalSint16, A0, L);
19909}
19910bool ByteCodeEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
19911 return emitOp<uint32_t>(OP_GetGlobalUint16, A0, L);
19912}
19913bool ByteCodeEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
19914 return emitOp<uint32_t>(OP_GetGlobalSint32, A0, L);
19915}
19916bool ByteCodeEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
19917 return emitOp<uint32_t>(OP_GetGlobalUint32, A0, L);
19918}
19919bool ByteCodeEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
19920 return emitOp<uint32_t>(OP_GetGlobalSint64, A0, L);
19921}
19922bool ByteCodeEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
19923 return emitOp<uint32_t>(OP_GetGlobalUint64, A0, L);
19924}
19925bool ByteCodeEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
19926 return emitOp<uint32_t>(OP_GetGlobalIntAP, A0, L);
19927}
19928bool ByteCodeEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
19929 return emitOp<uint32_t>(OP_GetGlobalIntAPS, A0, L);
19930}
19931bool ByteCodeEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
19932 return emitOp<uint32_t>(OP_GetGlobalBool, A0, L);
19933}
19934bool ByteCodeEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
19935 return emitOp<uint32_t>(OP_GetGlobalFixedPoint, A0, L);
19936}
19937bool ByteCodeEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
19938 return emitOp<uint32_t>(OP_GetGlobalPtr, A0, L);
19939}
19940bool ByteCodeEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
19941 return emitOp<uint32_t>(OP_GetGlobalMemberPtr, A0, L);
19942}
19943bool ByteCodeEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
19944 return emitOp<uint32_t>(OP_GetGlobalFloat, A0, L);
19945}
19946#endif
19947#ifdef GET_EVAL_IMPL
19948bool EvalEmitter::emitGetGlobalSint8( uint32_t A0, SourceInfo L) {
19949 if (!isActive()) return true;
19950 CurrentSource = L;
19951 return GetGlobal<PT_Sint8>(S, OpPC, A0);
19952}
19953bool EvalEmitter::emitGetGlobalUint8( uint32_t A0, SourceInfo L) {
19954 if (!isActive()) return true;
19955 CurrentSource = L;
19956 return GetGlobal<PT_Uint8>(S, OpPC, A0);
19957}
19958bool EvalEmitter::emitGetGlobalSint16( uint32_t A0, SourceInfo L) {
19959 if (!isActive()) return true;
19960 CurrentSource = L;
19961 return GetGlobal<PT_Sint16>(S, OpPC, A0);
19962}
19963bool EvalEmitter::emitGetGlobalUint16( uint32_t A0, SourceInfo L) {
19964 if (!isActive()) return true;
19965 CurrentSource = L;
19966 return GetGlobal<PT_Uint16>(S, OpPC, A0);
19967}
19968bool EvalEmitter::emitGetGlobalSint32( uint32_t A0, SourceInfo L) {
19969 if (!isActive()) return true;
19970 CurrentSource = L;
19971 return GetGlobal<PT_Sint32>(S, OpPC, A0);
19972}
19973bool EvalEmitter::emitGetGlobalUint32( uint32_t A0, SourceInfo L) {
19974 if (!isActive()) return true;
19975 CurrentSource = L;
19976 return GetGlobal<PT_Uint32>(S, OpPC, A0);
19977}
19978bool EvalEmitter::emitGetGlobalSint64( uint32_t A0, SourceInfo L) {
19979 if (!isActive()) return true;
19980 CurrentSource = L;
19981 return GetGlobal<PT_Sint64>(S, OpPC, A0);
19982}
19983bool EvalEmitter::emitGetGlobalUint64( uint32_t A0, SourceInfo L) {
19984 if (!isActive()) return true;
19985 CurrentSource = L;
19986 return GetGlobal<PT_Uint64>(S, OpPC, A0);
19987}
19988bool EvalEmitter::emitGetGlobalIntAP( uint32_t A0, SourceInfo L) {
19989 if (!isActive()) return true;
19990 CurrentSource = L;
19991 return GetGlobal<PT_IntAP>(S, OpPC, A0);
19992}
19993bool EvalEmitter::emitGetGlobalIntAPS( uint32_t A0, SourceInfo L) {
19994 if (!isActive()) return true;
19995 CurrentSource = L;
19996 return GetGlobal<PT_IntAPS>(S, OpPC, A0);
19997}
19998bool EvalEmitter::emitGetGlobalBool( uint32_t A0, SourceInfo L) {
19999 if (!isActive()) return true;
20000 CurrentSource = L;
20001 return GetGlobal<PT_Bool>(S, OpPC, A0);
20002}
20003bool EvalEmitter::emitGetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
20004 if (!isActive()) return true;
20005 CurrentSource = L;
20006 return GetGlobal<PT_FixedPoint>(S, OpPC, A0);
20007}
20008bool EvalEmitter::emitGetGlobalPtr( uint32_t A0, SourceInfo L) {
20009 if (!isActive()) return true;
20010 CurrentSource = L;
20011 return GetGlobal<PT_Ptr>(S, OpPC, A0);
20012}
20013bool EvalEmitter::emitGetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
20014 if (!isActive()) return true;
20015 CurrentSource = L;
20016 return GetGlobal<PT_MemberPtr>(S, OpPC, A0);
20017}
20018bool EvalEmitter::emitGetGlobalFloat( uint32_t A0, SourceInfo L) {
20019 if (!isActive()) return true;
20020 CurrentSource = L;
20021 return GetGlobal<PT_Float>(S, OpPC, A0);
20022}
20023#endif
20024#ifdef GET_OPCODE_NAMES
20025OP_GetGlobalUncheckedSint8,
20026OP_GetGlobalUncheckedUint8,
20027OP_GetGlobalUncheckedSint16,
20028OP_GetGlobalUncheckedUint16,
20029OP_GetGlobalUncheckedSint32,
20030OP_GetGlobalUncheckedUint32,
20031OP_GetGlobalUncheckedSint64,
20032OP_GetGlobalUncheckedUint64,
20033OP_GetGlobalUncheckedIntAP,
20034OP_GetGlobalUncheckedIntAPS,
20035OP_GetGlobalUncheckedBool,
20036OP_GetGlobalUncheckedFixedPoint,
20037OP_GetGlobalUncheckedPtr,
20038OP_GetGlobalUncheckedMemberPtr,
20039OP_GetGlobalUncheckedFloat,
20040#endif
20041#ifdef GET_INTERP
20042case OP_GetGlobalUncheckedSint8: {
20043 const auto V0 = ReadArg<uint32_t>(S, PC);
20044 if (!GetGlobalUnchecked<PT_Sint8>(S, OpPC, V0))
20045 return false;
20046 continue;
20047}
20048case OP_GetGlobalUncheckedUint8: {
20049 const auto V0 = ReadArg<uint32_t>(S, PC);
20050 if (!GetGlobalUnchecked<PT_Uint8>(S, OpPC, V0))
20051 return false;
20052 continue;
20053}
20054case OP_GetGlobalUncheckedSint16: {
20055 const auto V0 = ReadArg<uint32_t>(S, PC);
20056 if (!GetGlobalUnchecked<PT_Sint16>(S, OpPC, V0))
20057 return false;
20058 continue;
20059}
20060case OP_GetGlobalUncheckedUint16: {
20061 const auto V0 = ReadArg<uint32_t>(S, PC);
20062 if (!GetGlobalUnchecked<PT_Uint16>(S, OpPC, V0))
20063 return false;
20064 continue;
20065}
20066case OP_GetGlobalUncheckedSint32: {
20067 const auto V0 = ReadArg<uint32_t>(S, PC);
20068 if (!GetGlobalUnchecked<PT_Sint32>(S, OpPC, V0))
20069 return false;
20070 continue;
20071}
20072case OP_GetGlobalUncheckedUint32: {
20073 const auto V0 = ReadArg<uint32_t>(S, PC);
20074 if (!GetGlobalUnchecked<PT_Uint32>(S, OpPC, V0))
20075 return false;
20076 continue;
20077}
20078case OP_GetGlobalUncheckedSint64: {
20079 const auto V0 = ReadArg<uint32_t>(S, PC);
20080 if (!GetGlobalUnchecked<PT_Sint64>(S, OpPC, V0))
20081 return false;
20082 continue;
20083}
20084case OP_GetGlobalUncheckedUint64: {
20085 const auto V0 = ReadArg<uint32_t>(S, PC);
20086 if (!GetGlobalUnchecked<PT_Uint64>(S, OpPC, V0))
20087 return false;
20088 continue;
20089}
20090case OP_GetGlobalUncheckedIntAP: {
20091 const auto V0 = ReadArg<uint32_t>(S, PC);
20092 if (!GetGlobalUnchecked<PT_IntAP>(S, OpPC, V0))
20093 return false;
20094 continue;
20095}
20096case OP_GetGlobalUncheckedIntAPS: {
20097 const auto V0 = ReadArg<uint32_t>(S, PC);
20098 if (!GetGlobalUnchecked<PT_IntAPS>(S, OpPC, V0))
20099 return false;
20100 continue;
20101}
20102case OP_GetGlobalUncheckedBool: {
20103 const auto V0 = ReadArg<uint32_t>(S, PC);
20104 if (!GetGlobalUnchecked<PT_Bool>(S, OpPC, V0))
20105 return false;
20106 continue;
20107}
20108case OP_GetGlobalUncheckedFixedPoint: {
20109 const auto V0 = ReadArg<uint32_t>(S, PC);
20110 if (!GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, V0))
20111 return false;
20112 continue;
20113}
20114case OP_GetGlobalUncheckedPtr: {
20115 const auto V0 = ReadArg<uint32_t>(S, PC);
20116 if (!GetGlobalUnchecked<PT_Ptr>(S, OpPC, V0))
20117 return false;
20118 continue;
20119}
20120case OP_GetGlobalUncheckedMemberPtr: {
20121 const auto V0 = ReadArg<uint32_t>(S, PC);
20122 if (!GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, V0))
20123 return false;
20124 continue;
20125}
20126case OP_GetGlobalUncheckedFloat: {
20127 const auto V0 = ReadArg<uint32_t>(S, PC);
20128 if (!GetGlobalUnchecked<PT_Float>(S, OpPC, V0))
20129 return false;
20130 continue;
20131}
20132#endif
20133#ifdef GET_DISASM
20134case OP_GetGlobalUncheckedSint8:
20135 Text.Op = PrintName("GetGlobalUncheckedSint8");
20136 Text.Args.push_back(printArg<uint32_t>(P, PC));
20137 break;
20138case OP_GetGlobalUncheckedUint8:
20139 Text.Op = PrintName("GetGlobalUncheckedUint8");
20140 Text.Args.push_back(printArg<uint32_t>(P, PC));
20141 break;
20142case OP_GetGlobalUncheckedSint16:
20143 Text.Op = PrintName("GetGlobalUncheckedSint16");
20144 Text.Args.push_back(printArg<uint32_t>(P, PC));
20145 break;
20146case OP_GetGlobalUncheckedUint16:
20147 Text.Op = PrintName("GetGlobalUncheckedUint16");
20148 Text.Args.push_back(printArg<uint32_t>(P, PC));
20149 break;
20150case OP_GetGlobalUncheckedSint32:
20151 Text.Op = PrintName("GetGlobalUncheckedSint32");
20152 Text.Args.push_back(printArg<uint32_t>(P, PC));
20153 break;
20154case OP_GetGlobalUncheckedUint32:
20155 Text.Op = PrintName("GetGlobalUncheckedUint32");
20156 Text.Args.push_back(printArg<uint32_t>(P, PC));
20157 break;
20158case OP_GetGlobalUncheckedSint64:
20159 Text.Op = PrintName("GetGlobalUncheckedSint64");
20160 Text.Args.push_back(printArg<uint32_t>(P, PC));
20161 break;
20162case OP_GetGlobalUncheckedUint64:
20163 Text.Op = PrintName("GetGlobalUncheckedUint64");
20164 Text.Args.push_back(printArg<uint32_t>(P, PC));
20165 break;
20166case OP_GetGlobalUncheckedIntAP:
20167 Text.Op = PrintName("GetGlobalUncheckedIntAP");
20168 Text.Args.push_back(printArg<uint32_t>(P, PC));
20169 break;
20170case OP_GetGlobalUncheckedIntAPS:
20171 Text.Op = PrintName("GetGlobalUncheckedIntAPS");
20172 Text.Args.push_back(printArg<uint32_t>(P, PC));
20173 break;
20174case OP_GetGlobalUncheckedBool:
20175 Text.Op = PrintName("GetGlobalUncheckedBool");
20176 Text.Args.push_back(printArg<uint32_t>(P, PC));
20177 break;
20178case OP_GetGlobalUncheckedFixedPoint:
20179 Text.Op = PrintName("GetGlobalUncheckedFixedPoint");
20180 Text.Args.push_back(printArg<uint32_t>(P, PC));
20181 break;
20182case OP_GetGlobalUncheckedPtr:
20183 Text.Op = PrintName("GetGlobalUncheckedPtr");
20184 Text.Args.push_back(printArg<uint32_t>(P, PC));
20185 break;
20186case OP_GetGlobalUncheckedMemberPtr:
20187 Text.Op = PrintName("GetGlobalUncheckedMemberPtr");
20188 Text.Args.push_back(printArg<uint32_t>(P, PC));
20189 break;
20190case OP_GetGlobalUncheckedFloat:
20191 Text.Op = PrintName("GetGlobalUncheckedFloat");
20192 Text.Args.push_back(printArg<uint32_t>(P, PC));
20193 break;
20194#endif
20195#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20196bool emitGetGlobalUncheckedSint8( uint32_t , SourceInfo);
20197bool emitGetGlobalUncheckedUint8( uint32_t , SourceInfo);
20198bool emitGetGlobalUncheckedSint16( uint32_t , SourceInfo);
20199bool emitGetGlobalUncheckedUint16( uint32_t , SourceInfo);
20200bool emitGetGlobalUncheckedSint32( uint32_t , SourceInfo);
20201bool emitGetGlobalUncheckedUint32( uint32_t , SourceInfo);
20202bool emitGetGlobalUncheckedSint64( uint32_t , SourceInfo);
20203bool emitGetGlobalUncheckedUint64( uint32_t , SourceInfo);
20204bool emitGetGlobalUncheckedIntAP( uint32_t , SourceInfo);
20205bool emitGetGlobalUncheckedIntAPS( uint32_t , SourceInfo);
20206bool emitGetGlobalUncheckedBool( uint32_t , SourceInfo);
20207bool emitGetGlobalUncheckedFixedPoint( uint32_t , SourceInfo);
20208bool emitGetGlobalUncheckedPtr( uint32_t , SourceInfo);
20209bool emitGetGlobalUncheckedMemberPtr( uint32_t , SourceInfo);
20210bool emitGetGlobalUncheckedFloat( uint32_t , SourceInfo);
20211#endif
20212#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20213[[nodiscard]] bool emitGetGlobalUnchecked(PrimType, uint32_t, SourceInfo I);
20214#endif
20215#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20216bool
20217#if defined(GET_EVAL_IMPL)
20218EvalEmitter
20219#else
20220ByteCodeEmitter
20221#endif
20222::emitGetGlobalUnchecked(PrimType T0, uint32_t A0, SourceInfo I) {
20223 switch (T0) {
20224 case PT_Sint8:
20225 return emitGetGlobalUncheckedSint8(A0, I);
20226 case PT_Uint8:
20227 return emitGetGlobalUncheckedUint8(A0, I);
20228 case PT_Sint16:
20229 return emitGetGlobalUncheckedSint16(A0, I);
20230 case PT_Uint16:
20231 return emitGetGlobalUncheckedUint16(A0, I);
20232 case PT_Sint32:
20233 return emitGetGlobalUncheckedSint32(A0, I);
20234 case PT_Uint32:
20235 return emitGetGlobalUncheckedUint32(A0, I);
20236 case PT_Sint64:
20237 return emitGetGlobalUncheckedSint64(A0, I);
20238 case PT_Uint64:
20239 return emitGetGlobalUncheckedUint64(A0, I);
20240 case PT_IntAP:
20241 return emitGetGlobalUncheckedIntAP(A0, I);
20242 case PT_IntAPS:
20243 return emitGetGlobalUncheckedIntAPS(A0, I);
20244 case PT_Bool:
20245 return emitGetGlobalUncheckedBool(A0, I);
20246 case PT_FixedPoint:
20247 return emitGetGlobalUncheckedFixedPoint(A0, I);
20248 case PT_Ptr:
20249 return emitGetGlobalUncheckedPtr(A0, I);
20250 case PT_MemberPtr:
20251 return emitGetGlobalUncheckedMemberPtr(A0, I);
20252 case PT_Float:
20253 return emitGetGlobalUncheckedFloat(A0, I);
20254 }
20255 llvm_unreachable("invalid enum value");
20256}
20257#endif
20258#ifdef GET_LINK_IMPL
20259bool ByteCodeEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
20260 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint8, A0, L);
20261}
20262bool ByteCodeEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
20263 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint8, A0, L);
20264}
20265bool ByteCodeEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
20266 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint16, A0, L);
20267}
20268bool ByteCodeEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
20269 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint16, A0, L);
20270}
20271bool ByteCodeEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
20272 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint32, A0, L);
20273}
20274bool ByteCodeEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
20275 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint32, A0, L);
20276}
20277bool ByteCodeEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
20278 return emitOp<uint32_t>(OP_GetGlobalUncheckedSint64, A0, L);
20279}
20280bool ByteCodeEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
20281 return emitOp<uint32_t>(OP_GetGlobalUncheckedUint64, A0, L);
20282}
20283bool ByteCodeEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
20284 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAP, A0, L);
20285}
20286bool ByteCodeEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
20287 return emitOp<uint32_t>(OP_GetGlobalUncheckedIntAPS, A0, L);
20288}
20289bool ByteCodeEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
20290 return emitOp<uint32_t>(OP_GetGlobalUncheckedBool, A0, L);
20291}
20292bool ByteCodeEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
20293 return emitOp<uint32_t>(OP_GetGlobalUncheckedFixedPoint, A0, L);
20294}
20295bool ByteCodeEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
20296 return emitOp<uint32_t>(OP_GetGlobalUncheckedPtr, A0, L);
20297}
20298bool ByteCodeEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
20299 return emitOp<uint32_t>(OP_GetGlobalUncheckedMemberPtr, A0, L);
20300}
20301bool ByteCodeEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
20302 return emitOp<uint32_t>(OP_GetGlobalUncheckedFloat, A0, L);
20303}
20304#endif
20305#ifdef GET_EVAL_IMPL
20306bool EvalEmitter::emitGetGlobalUncheckedSint8( uint32_t A0, SourceInfo L) {
20307 if (!isActive()) return true;
20308 CurrentSource = L;
20309 return GetGlobalUnchecked<PT_Sint8>(S, OpPC, A0);
20310}
20311bool EvalEmitter::emitGetGlobalUncheckedUint8( uint32_t A0, SourceInfo L) {
20312 if (!isActive()) return true;
20313 CurrentSource = L;
20314 return GetGlobalUnchecked<PT_Uint8>(S, OpPC, A0);
20315}
20316bool EvalEmitter::emitGetGlobalUncheckedSint16( uint32_t A0, SourceInfo L) {
20317 if (!isActive()) return true;
20318 CurrentSource = L;
20319 return GetGlobalUnchecked<PT_Sint16>(S, OpPC, A0);
20320}
20321bool EvalEmitter::emitGetGlobalUncheckedUint16( uint32_t A0, SourceInfo L) {
20322 if (!isActive()) return true;
20323 CurrentSource = L;
20324 return GetGlobalUnchecked<PT_Uint16>(S, OpPC, A0);
20325}
20326bool EvalEmitter::emitGetGlobalUncheckedSint32( uint32_t A0, SourceInfo L) {
20327 if (!isActive()) return true;
20328 CurrentSource = L;
20329 return GetGlobalUnchecked<PT_Sint32>(S, OpPC, A0);
20330}
20331bool EvalEmitter::emitGetGlobalUncheckedUint32( uint32_t A0, SourceInfo L) {
20332 if (!isActive()) return true;
20333 CurrentSource = L;
20334 return GetGlobalUnchecked<PT_Uint32>(S, OpPC, A0);
20335}
20336bool EvalEmitter::emitGetGlobalUncheckedSint64( uint32_t A0, SourceInfo L) {
20337 if (!isActive()) return true;
20338 CurrentSource = L;
20339 return GetGlobalUnchecked<PT_Sint64>(S, OpPC, A0);
20340}
20341bool EvalEmitter::emitGetGlobalUncheckedUint64( uint32_t A0, SourceInfo L) {
20342 if (!isActive()) return true;
20343 CurrentSource = L;
20344 return GetGlobalUnchecked<PT_Uint64>(S, OpPC, A0);
20345}
20346bool EvalEmitter::emitGetGlobalUncheckedIntAP( uint32_t A0, SourceInfo L) {
20347 if (!isActive()) return true;
20348 CurrentSource = L;
20349 return GetGlobalUnchecked<PT_IntAP>(S, OpPC, A0);
20350}
20351bool EvalEmitter::emitGetGlobalUncheckedIntAPS( uint32_t A0, SourceInfo L) {
20352 if (!isActive()) return true;
20353 CurrentSource = L;
20354 return GetGlobalUnchecked<PT_IntAPS>(S, OpPC, A0);
20355}
20356bool EvalEmitter::emitGetGlobalUncheckedBool( uint32_t A0, SourceInfo L) {
20357 if (!isActive()) return true;
20358 CurrentSource = L;
20359 return GetGlobalUnchecked<PT_Bool>(S, OpPC, A0);
20360}
20361bool EvalEmitter::emitGetGlobalUncheckedFixedPoint( uint32_t A0, SourceInfo L) {
20362 if (!isActive()) return true;
20363 CurrentSource = L;
20364 return GetGlobalUnchecked<PT_FixedPoint>(S, OpPC, A0);
20365}
20366bool EvalEmitter::emitGetGlobalUncheckedPtr( uint32_t A0, SourceInfo L) {
20367 if (!isActive()) return true;
20368 CurrentSource = L;
20369 return GetGlobalUnchecked<PT_Ptr>(S, OpPC, A0);
20370}
20371bool EvalEmitter::emitGetGlobalUncheckedMemberPtr( uint32_t A0, SourceInfo L) {
20372 if (!isActive()) return true;
20373 CurrentSource = L;
20374 return GetGlobalUnchecked<PT_MemberPtr>(S, OpPC, A0);
20375}
20376bool EvalEmitter::emitGetGlobalUncheckedFloat( uint32_t A0, SourceInfo L) {
20377 if (!isActive()) return true;
20378 CurrentSource = L;
20379 return GetGlobalUnchecked<PT_Float>(S, OpPC, A0);
20380}
20381#endif
20382#ifdef GET_OPCODE_NAMES
20383OP_GetIntPtrSint8,
20384OP_GetIntPtrUint8,
20385OP_GetIntPtrSint16,
20386OP_GetIntPtrUint16,
20387OP_GetIntPtrSint32,
20388OP_GetIntPtrUint32,
20389OP_GetIntPtrSint64,
20390OP_GetIntPtrUint64,
20391OP_GetIntPtrIntAP,
20392OP_GetIntPtrIntAPS,
20393OP_GetIntPtrBool,
20394OP_GetIntPtrFixedPoint,
20395#endif
20396#ifdef GET_INTERP
20397case OP_GetIntPtrSint8: {
20398 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20399 if (!GetIntPtr<PT_Sint8>(S, OpPC, V0))
20400 return false;
20401 continue;
20402}
20403case OP_GetIntPtrUint8: {
20404 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20405 if (!GetIntPtr<PT_Uint8>(S, OpPC, V0))
20406 return false;
20407 continue;
20408}
20409case OP_GetIntPtrSint16: {
20410 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20411 if (!GetIntPtr<PT_Sint16>(S, OpPC, V0))
20412 return false;
20413 continue;
20414}
20415case OP_GetIntPtrUint16: {
20416 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20417 if (!GetIntPtr<PT_Uint16>(S, OpPC, V0))
20418 return false;
20419 continue;
20420}
20421case OP_GetIntPtrSint32: {
20422 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20423 if (!GetIntPtr<PT_Sint32>(S, OpPC, V0))
20424 return false;
20425 continue;
20426}
20427case OP_GetIntPtrUint32: {
20428 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20429 if (!GetIntPtr<PT_Uint32>(S, OpPC, V0))
20430 return false;
20431 continue;
20432}
20433case OP_GetIntPtrSint64: {
20434 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20435 if (!GetIntPtr<PT_Sint64>(S, OpPC, V0))
20436 return false;
20437 continue;
20438}
20439case OP_GetIntPtrUint64: {
20440 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20441 if (!GetIntPtr<PT_Uint64>(S, OpPC, V0))
20442 return false;
20443 continue;
20444}
20445case OP_GetIntPtrIntAP: {
20446 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20447 if (!GetIntPtr<PT_IntAP>(S, OpPC, V0))
20448 return false;
20449 continue;
20450}
20451case OP_GetIntPtrIntAPS: {
20452 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20453 if (!GetIntPtr<PT_IntAPS>(S, OpPC, V0))
20454 return false;
20455 continue;
20456}
20457case OP_GetIntPtrBool: {
20458 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20459 if (!GetIntPtr<PT_Bool>(S, OpPC, V0))
20460 return false;
20461 continue;
20462}
20463case OP_GetIntPtrFixedPoint: {
20464 const auto V0 = ReadArg<const Descriptor *>(S, PC);
20465 if (!GetIntPtr<PT_FixedPoint>(S, OpPC, V0))
20466 return false;
20467 continue;
20468}
20469#endif
20470#ifdef GET_DISASM
20471case OP_GetIntPtrSint8:
20472 Text.Op = PrintName("GetIntPtrSint8");
20473 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20474 break;
20475case OP_GetIntPtrUint8:
20476 Text.Op = PrintName("GetIntPtrUint8");
20477 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20478 break;
20479case OP_GetIntPtrSint16:
20480 Text.Op = PrintName("GetIntPtrSint16");
20481 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20482 break;
20483case OP_GetIntPtrUint16:
20484 Text.Op = PrintName("GetIntPtrUint16");
20485 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20486 break;
20487case OP_GetIntPtrSint32:
20488 Text.Op = PrintName("GetIntPtrSint32");
20489 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20490 break;
20491case OP_GetIntPtrUint32:
20492 Text.Op = PrintName("GetIntPtrUint32");
20493 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20494 break;
20495case OP_GetIntPtrSint64:
20496 Text.Op = PrintName("GetIntPtrSint64");
20497 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20498 break;
20499case OP_GetIntPtrUint64:
20500 Text.Op = PrintName("GetIntPtrUint64");
20501 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20502 break;
20503case OP_GetIntPtrIntAP:
20504 Text.Op = PrintName("GetIntPtrIntAP");
20505 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20506 break;
20507case OP_GetIntPtrIntAPS:
20508 Text.Op = PrintName("GetIntPtrIntAPS");
20509 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20510 break;
20511case OP_GetIntPtrBool:
20512 Text.Op = PrintName("GetIntPtrBool");
20513 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20514 break;
20515case OP_GetIntPtrFixedPoint:
20516 Text.Op = PrintName("GetIntPtrFixedPoint");
20517 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
20518 break;
20519#endif
20520#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20521bool emitGetIntPtrSint8( const Descriptor * , SourceInfo);
20522bool emitGetIntPtrUint8( const Descriptor * , SourceInfo);
20523bool emitGetIntPtrSint16( const Descriptor * , SourceInfo);
20524bool emitGetIntPtrUint16( const Descriptor * , SourceInfo);
20525bool emitGetIntPtrSint32( const Descriptor * , SourceInfo);
20526bool emitGetIntPtrUint32( const Descriptor * , SourceInfo);
20527bool emitGetIntPtrSint64( const Descriptor * , SourceInfo);
20528bool emitGetIntPtrUint64( const Descriptor * , SourceInfo);
20529bool emitGetIntPtrIntAP( const Descriptor * , SourceInfo);
20530bool emitGetIntPtrIntAPS( const Descriptor * , SourceInfo);
20531bool emitGetIntPtrBool( const Descriptor * , SourceInfo);
20532bool emitGetIntPtrFixedPoint( const Descriptor * , SourceInfo);
20533#endif
20534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20535[[nodiscard]] bool emitGetIntPtr(PrimType, const Descriptor *, SourceInfo I);
20536#endif
20537#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20538bool
20539#if defined(GET_EVAL_IMPL)
20540EvalEmitter
20541#else
20542ByteCodeEmitter
20543#endif
20544::emitGetIntPtr(PrimType T0, const Descriptor * A0, SourceInfo I) {
20545 switch (T0) {
20546 case PT_Sint8:
20547 return emitGetIntPtrSint8(A0, I);
20548 case PT_Uint8:
20549 return emitGetIntPtrUint8(A0, I);
20550 case PT_Sint16:
20551 return emitGetIntPtrSint16(A0, I);
20552 case PT_Uint16:
20553 return emitGetIntPtrUint16(A0, I);
20554 case PT_Sint32:
20555 return emitGetIntPtrSint32(A0, I);
20556 case PT_Uint32:
20557 return emitGetIntPtrUint32(A0, I);
20558 case PT_Sint64:
20559 return emitGetIntPtrSint64(A0, I);
20560 case PT_Uint64:
20561 return emitGetIntPtrUint64(A0, I);
20562 case PT_IntAP:
20563 return emitGetIntPtrIntAP(A0, I);
20564 case PT_IntAPS:
20565 return emitGetIntPtrIntAPS(A0, I);
20566 case PT_Bool:
20567 return emitGetIntPtrBool(A0, I);
20568 case PT_FixedPoint:
20569 return emitGetIntPtrFixedPoint(A0, I);
20570 default: llvm_unreachable("invalid type: emitGetIntPtr");
20571 }
20572 llvm_unreachable("invalid enum value");
20573}
20574#endif
20575#ifdef GET_LINK_IMPL
20576bool ByteCodeEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
20577 return emitOp<const Descriptor *>(OP_GetIntPtrSint8, A0, L);
20578}
20579bool ByteCodeEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
20580 return emitOp<const Descriptor *>(OP_GetIntPtrUint8, A0, L);
20581}
20582bool ByteCodeEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
20583 return emitOp<const Descriptor *>(OP_GetIntPtrSint16, A0, L);
20584}
20585bool ByteCodeEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
20586 return emitOp<const Descriptor *>(OP_GetIntPtrUint16, A0, L);
20587}
20588bool ByteCodeEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
20589 return emitOp<const Descriptor *>(OP_GetIntPtrSint32, A0, L);
20590}
20591bool ByteCodeEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
20592 return emitOp<const Descriptor *>(OP_GetIntPtrUint32, A0, L);
20593}
20594bool ByteCodeEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
20595 return emitOp<const Descriptor *>(OP_GetIntPtrSint64, A0, L);
20596}
20597bool ByteCodeEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
20598 return emitOp<const Descriptor *>(OP_GetIntPtrUint64, A0, L);
20599}
20600bool ByteCodeEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
20601 return emitOp<const Descriptor *>(OP_GetIntPtrIntAP, A0, L);
20602}
20603bool ByteCodeEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
20604 return emitOp<const Descriptor *>(OP_GetIntPtrIntAPS, A0, L);
20605}
20606bool ByteCodeEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
20607 return emitOp<const Descriptor *>(OP_GetIntPtrBool, A0, L);
20608}
20609bool ByteCodeEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
20610 return emitOp<const Descriptor *>(OP_GetIntPtrFixedPoint, A0, L);
20611}
20612#endif
20613#ifdef GET_EVAL_IMPL
20614bool EvalEmitter::emitGetIntPtrSint8( const Descriptor * A0, SourceInfo L) {
20615 if (!isActive()) return true;
20616 CurrentSource = L;
20617 return GetIntPtr<PT_Sint8>(S, OpPC, A0);
20618}
20619bool EvalEmitter::emitGetIntPtrUint8( const Descriptor * A0, SourceInfo L) {
20620 if (!isActive()) return true;
20621 CurrentSource = L;
20622 return GetIntPtr<PT_Uint8>(S, OpPC, A0);
20623}
20624bool EvalEmitter::emitGetIntPtrSint16( const Descriptor * A0, SourceInfo L) {
20625 if (!isActive()) return true;
20626 CurrentSource = L;
20627 return GetIntPtr<PT_Sint16>(S, OpPC, A0);
20628}
20629bool EvalEmitter::emitGetIntPtrUint16( const Descriptor * A0, SourceInfo L) {
20630 if (!isActive()) return true;
20631 CurrentSource = L;
20632 return GetIntPtr<PT_Uint16>(S, OpPC, A0);
20633}
20634bool EvalEmitter::emitGetIntPtrSint32( const Descriptor * A0, SourceInfo L) {
20635 if (!isActive()) return true;
20636 CurrentSource = L;
20637 return GetIntPtr<PT_Sint32>(S, OpPC, A0);
20638}
20639bool EvalEmitter::emitGetIntPtrUint32( const Descriptor * A0, SourceInfo L) {
20640 if (!isActive()) return true;
20641 CurrentSource = L;
20642 return GetIntPtr<PT_Uint32>(S, OpPC, A0);
20643}
20644bool EvalEmitter::emitGetIntPtrSint64( const Descriptor * A0, SourceInfo L) {
20645 if (!isActive()) return true;
20646 CurrentSource = L;
20647 return GetIntPtr<PT_Sint64>(S, OpPC, A0);
20648}
20649bool EvalEmitter::emitGetIntPtrUint64( const Descriptor * A0, SourceInfo L) {
20650 if (!isActive()) return true;
20651 CurrentSource = L;
20652 return GetIntPtr<PT_Uint64>(S, OpPC, A0);
20653}
20654bool EvalEmitter::emitGetIntPtrIntAP( const Descriptor * A0, SourceInfo L) {
20655 if (!isActive()) return true;
20656 CurrentSource = L;
20657 return GetIntPtr<PT_IntAP>(S, OpPC, A0);
20658}
20659bool EvalEmitter::emitGetIntPtrIntAPS( const Descriptor * A0, SourceInfo L) {
20660 if (!isActive()) return true;
20661 CurrentSource = L;
20662 return GetIntPtr<PT_IntAPS>(S, OpPC, A0);
20663}
20664bool EvalEmitter::emitGetIntPtrBool( const Descriptor * A0, SourceInfo L) {
20665 if (!isActive()) return true;
20666 CurrentSource = L;
20667 return GetIntPtr<PT_Bool>(S, OpPC, A0);
20668}
20669bool EvalEmitter::emitGetIntPtrFixedPoint( const Descriptor * A0, SourceInfo L) {
20670 if (!isActive()) return true;
20671 CurrentSource = L;
20672 return GetIntPtr<PT_FixedPoint>(S, OpPC, A0);
20673}
20674#endif
20675#ifdef GET_OPCODE_NAMES
20676OP_GetLocalSint8,
20677OP_GetLocalUint8,
20678OP_GetLocalSint16,
20679OP_GetLocalUint16,
20680OP_GetLocalSint32,
20681OP_GetLocalUint32,
20682OP_GetLocalSint64,
20683OP_GetLocalUint64,
20684OP_GetLocalIntAP,
20685OP_GetLocalIntAPS,
20686OP_GetLocalBool,
20687OP_GetLocalFixedPoint,
20688OP_GetLocalPtr,
20689OP_GetLocalMemberPtr,
20690OP_GetLocalFloat,
20691#endif
20692#ifdef GET_INTERP
20693case OP_GetLocalSint8: {
20694 const auto V0 = ReadArg<uint32_t>(S, PC);
20695 if (!GetLocal<PT_Sint8>(S, OpPC, V0))
20696 return false;
20697 continue;
20698}
20699case OP_GetLocalUint8: {
20700 const auto V0 = ReadArg<uint32_t>(S, PC);
20701 if (!GetLocal<PT_Uint8>(S, OpPC, V0))
20702 return false;
20703 continue;
20704}
20705case OP_GetLocalSint16: {
20706 const auto V0 = ReadArg<uint32_t>(S, PC);
20707 if (!GetLocal<PT_Sint16>(S, OpPC, V0))
20708 return false;
20709 continue;
20710}
20711case OP_GetLocalUint16: {
20712 const auto V0 = ReadArg<uint32_t>(S, PC);
20713 if (!GetLocal<PT_Uint16>(S, OpPC, V0))
20714 return false;
20715 continue;
20716}
20717case OP_GetLocalSint32: {
20718 const auto V0 = ReadArg<uint32_t>(S, PC);
20719 if (!GetLocal<PT_Sint32>(S, OpPC, V0))
20720 return false;
20721 continue;
20722}
20723case OP_GetLocalUint32: {
20724 const auto V0 = ReadArg<uint32_t>(S, PC);
20725 if (!GetLocal<PT_Uint32>(S, OpPC, V0))
20726 return false;
20727 continue;
20728}
20729case OP_GetLocalSint64: {
20730 const auto V0 = ReadArg<uint32_t>(S, PC);
20731 if (!GetLocal<PT_Sint64>(S, OpPC, V0))
20732 return false;
20733 continue;
20734}
20735case OP_GetLocalUint64: {
20736 const auto V0 = ReadArg<uint32_t>(S, PC);
20737 if (!GetLocal<PT_Uint64>(S, OpPC, V0))
20738 return false;
20739 continue;
20740}
20741case OP_GetLocalIntAP: {
20742 const auto V0 = ReadArg<uint32_t>(S, PC);
20743 if (!GetLocal<PT_IntAP>(S, OpPC, V0))
20744 return false;
20745 continue;
20746}
20747case OP_GetLocalIntAPS: {
20748 const auto V0 = ReadArg<uint32_t>(S, PC);
20749 if (!GetLocal<PT_IntAPS>(S, OpPC, V0))
20750 return false;
20751 continue;
20752}
20753case OP_GetLocalBool: {
20754 const auto V0 = ReadArg<uint32_t>(S, PC);
20755 if (!GetLocal<PT_Bool>(S, OpPC, V0))
20756 return false;
20757 continue;
20758}
20759case OP_GetLocalFixedPoint: {
20760 const auto V0 = ReadArg<uint32_t>(S, PC);
20761 if (!GetLocal<PT_FixedPoint>(S, OpPC, V0))
20762 return false;
20763 continue;
20764}
20765case OP_GetLocalPtr: {
20766 const auto V0 = ReadArg<uint32_t>(S, PC);
20767 if (!GetLocal<PT_Ptr>(S, OpPC, V0))
20768 return false;
20769 continue;
20770}
20771case OP_GetLocalMemberPtr: {
20772 const auto V0 = ReadArg<uint32_t>(S, PC);
20773 if (!GetLocal<PT_MemberPtr>(S, OpPC, V0))
20774 return false;
20775 continue;
20776}
20777case OP_GetLocalFloat: {
20778 const auto V0 = ReadArg<uint32_t>(S, PC);
20779 if (!GetLocal<PT_Float>(S, OpPC, V0))
20780 return false;
20781 continue;
20782}
20783#endif
20784#ifdef GET_DISASM
20785case OP_GetLocalSint8:
20786 Text.Op = PrintName("GetLocalSint8");
20787 Text.Args.push_back(printArg<uint32_t>(P, PC));
20788 break;
20789case OP_GetLocalUint8:
20790 Text.Op = PrintName("GetLocalUint8");
20791 Text.Args.push_back(printArg<uint32_t>(P, PC));
20792 break;
20793case OP_GetLocalSint16:
20794 Text.Op = PrintName("GetLocalSint16");
20795 Text.Args.push_back(printArg<uint32_t>(P, PC));
20796 break;
20797case OP_GetLocalUint16:
20798 Text.Op = PrintName("GetLocalUint16");
20799 Text.Args.push_back(printArg<uint32_t>(P, PC));
20800 break;
20801case OP_GetLocalSint32:
20802 Text.Op = PrintName("GetLocalSint32");
20803 Text.Args.push_back(printArg<uint32_t>(P, PC));
20804 break;
20805case OP_GetLocalUint32:
20806 Text.Op = PrintName("GetLocalUint32");
20807 Text.Args.push_back(printArg<uint32_t>(P, PC));
20808 break;
20809case OP_GetLocalSint64:
20810 Text.Op = PrintName("GetLocalSint64");
20811 Text.Args.push_back(printArg<uint32_t>(P, PC));
20812 break;
20813case OP_GetLocalUint64:
20814 Text.Op = PrintName("GetLocalUint64");
20815 Text.Args.push_back(printArg<uint32_t>(P, PC));
20816 break;
20817case OP_GetLocalIntAP:
20818 Text.Op = PrintName("GetLocalIntAP");
20819 Text.Args.push_back(printArg<uint32_t>(P, PC));
20820 break;
20821case OP_GetLocalIntAPS:
20822 Text.Op = PrintName("GetLocalIntAPS");
20823 Text.Args.push_back(printArg<uint32_t>(P, PC));
20824 break;
20825case OP_GetLocalBool:
20826 Text.Op = PrintName("GetLocalBool");
20827 Text.Args.push_back(printArg<uint32_t>(P, PC));
20828 break;
20829case OP_GetLocalFixedPoint:
20830 Text.Op = PrintName("GetLocalFixedPoint");
20831 Text.Args.push_back(printArg<uint32_t>(P, PC));
20832 break;
20833case OP_GetLocalPtr:
20834 Text.Op = PrintName("GetLocalPtr");
20835 Text.Args.push_back(printArg<uint32_t>(P, PC));
20836 break;
20837case OP_GetLocalMemberPtr:
20838 Text.Op = PrintName("GetLocalMemberPtr");
20839 Text.Args.push_back(printArg<uint32_t>(P, PC));
20840 break;
20841case OP_GetLocalFloat:
20842 Text.Op = PrintName("GetLocalFloat");
20843 Text.Args.push_back(printArg<uint32_t>(P, PC));
20844 break;
20845#endif
20846#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20847bool emitGetLocalSint8( uint32_t , SourceInfo);
20848bool emitGetLocalUint8( uint32_t , SourceInfo);
20849bool emitGetLocalSint16( uint32_t , SourceInfo);
20850bool emitGetLocalUint16( uint32_t , SourceInfo);
20851bool emitGetLocalSint32( uint32_t , SourceInfo);
20852bool emitGetLocalUint32( uint32_t , SourceInfo);
20853bool emitGetLocalSint64( uint32_t , SourceInfo);
20854bool emitGetLocalUint64( uint32_t , SourceInfo);
20855bool emitGetLocalIntAP( uint32_t , SourceInfo);
20856bool emitGetLocalIntAPS( uint32_t , SourceInfo);
20857bool emitGetLocalBool( uint32_t , SourceInfo);
20858bool emitGetLocalFixedPoint( uint32_t , SourceInfo);
20859bool emitGetLocalPtr( uint32_t , SourceInfo);
20860bool emitGetLocalMemberPtr( uint32_t , SourceInfo);
20861bool emitGetLocalFloat( uint32_t , SourceInfo);
20862#if defined(GET_EVAL_PROTO)
20863template<PrimType>
20864bool emitGetLocal(uint32_t, SourceInfo);
20865#endif
20866#endif
20867#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
20868[[nodiscard]] bool emitGetLocal(PrimType, uint32_t, SourceInfo I);
20869#endif
20870#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
20871bool
20872#if defined(GET_EVAL_IMPL)
20873EvalEmitter
20874#else
20875ByteCodeEmitter
20876#endif
20877::emitGetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
20878 switch (T0) {
20879 case PT_Sint8:
20880#ifdef GET_LINK_IMPL
20881 return emitGetLocalSint8
20882#else
20883 return emitGetLocal<PT_Sint8>
20884#endif
20885 (A0, I);
20886 case PT_Uint8:
20887#ifdef GET_LINK_IMPL
20888 return emitGetLocalUint8
20889#else
20890 return emitGetLocal<PT_Uint8>
20891#endif
20892 (A0, I);
20893 case PT_Sint16:
20894#ifdef GET_LINK_IMPL
20895 return emitGetLocalSint16
20896#else
20897 return emitGetLocal<PT_Sint16>
20898#endif
20899 (A0, I);
20900 case PT_Uint16:
20901#ifdef GET_LINK_IMPL
20902 return emitGetLocalUint16
20903#else
20904 return emitGetLocal<PT_Uint16>
20905#endif
20906 (A0, I);
20907 case PT_Sint32:
20908#ifdef GET_LINK_IMPL
20909 return emitGetLocalSint32
20910#else
20911 return emitGetLocal<PT_Sint32>
20912#endif
20913 (A0, I);
20914 case PT_Uint32:
20915#ifdef GET_LINK_IMPL
20916 return emitGetLocalUint32
20917#else
20918 return emitGetLocal<PT_Uint32>
20919#endif
20920 (A0, I);
20921 case PT_Sint64:
20922#ifdef GET_LINK_IMPL
20923 return emitGetLocalSint64
20924#else
20925 return emitGetLocal<PT_Sint64>
20926#endif
20927 (A0, I);
20928 case PT_Uint64:
20929#ifdef GET_LINK_IMPL
20930 return emitGetLocalUint64
20931#else
20932 return emitGetLocal<PT_Uint64>
20933#endif
20934 (A0, I);
20935 case PT_IntAP:
20936#ifdef GET_LINK_IMPL
20937 return emitGetLocalIntAP
20938#else
20939 return emitGetLocal<PT_IntAP>
20940#endif
20941 (A0, I);
20942 case PT_IntAPS:
20943#ifdef GET_LINK_IMPL
20944 return emitGetLocalIntAPS
20945#else
20946 return emitGetLocal<PT_IntAPS>
20947#endif
20948 (A0, I);
20949 case PT_Bool:
20950#ifdef GET_LINK_IMPL
20951 return emitGetLocalBool
20952#else
20953 return emitGetLocal<PT_Bool>
20954#endif
20955 (A0, I);
20956 case PT_FixedPoint:
20957#ifdef GET_LINK_IMPL
20958 return emitGetLocalFixedPoint
20959#else
20960 return emitGetLocal<PT_FixedPoint>
20961#endif
20962 (A0, I);
20963 case PT_Ptr:
20964#ifdef GET_LINK_IMPL
20965 return emitGetLocalPtr
20966#else
20967 return emitGetLocal<PT_Ptr>
20968#endif
20969 (A0, I);
20970 case PT_MemberPtr:
20971#ifdef GET_LINK_IMPL
20972 return emitGetLocalMemberPtr
20973#else
20974 return emitGetLocal<PT_MemberPtr>
20975#endif
20976 (A0, I);
20977 case PT_Float:
20978#ifdef GET_LINK_IMPL
20979 return emitGetLocalFloat
20980#else
20981 return emitGetLocal<PT_Float>
20982#endif
20983 (A0, I);
20984 }
20985 llvm_unreachable("invalid enum value");
20986}
20987#endif
20988#ifdef GET_LINK_IMPL
20989bool ByteCodeEmitter::emitGetLocalSint8( uint32_t A0, SourceInfo L) {
20990 return emitOp<uint32_t>(OP_GetLocalSint8, A0, L);
20991}
20992bool ByteCodeEmitter::emitGetLocalUint8( uint32_t A0, SourceInfo L) {
20993 return emitOp<uint32_t>(OP_GetLocalUint8, A0, L);
20994}
20995bool ByteCodeEmitter::emitGetLocalSint16( uint32_t A0, SourceInfo L) {
20996 return emitOp<uint32_t>(OP_GetLocalSint16, A0, L);
20997}
20998bool ByteCodeEmitter::emitGetLocalUint16( uint32_t A0, SourceInfo L) {
20999 return emitOp<uint32_t>(OP_GetLocalUint16, A0, L);
21000}
21001bool ByteCodeEmitter::emitGetLocalSint32( uint32_t A0, SourceInfo L) {
21002 return emitOp<uint32_t>(OP_GetLocalSint32, A0, L);
21003}
21004bool ByteCodeEmitter::emitGetLocalUint32( uint32_t A0, SourceInfo L) {
21005 return emitOp<uint32_t>(OP_GetLocalUint32, A0, L);
21006}
21007bool ByteCodeEmitter::emitGetLocalSint64( uint32_t A0, SourceInfo L) {
21008 return emitOp<uint32_t>(OP_GetLocalSint64, A0, L);
21009}
21010bool ByteCodeEmitter::emitGetLocalUint64( uint32_t A0, SourceInfo L) {
21011 return emitOp<uint32_t>(OP_GetLocalUint64, A0, L);
21012}
21013bool ByteCodeEmitter::emitGetLocalIntAP( uint32_t A0, SourceInfo L) {
21014 return emitOp<uint32_t>(OP_GetLocalIntAP, A0, L);
21015}
21016bool ByteCodeEmitter::emitGetLocalIntAPS( uint32_t A0, SourceInfo L) {
21017 return emitOp<uint32_t>(OP_GetLocalIntAPS, A0, L);
21018}
21019bool ByteCodeEmitter::emitGetLocalBool( uint32_t A0, SourceInfo L) {
21020 return emitOp<uint32_t>(OP_GetLocalBool, A0, L);
21021}
21022bool ByteCodeEmitter::emitGetLocalFixedPoint( uint32_t A0, SourceInfo L) {
21023 return emitOp<uint32_t>(OP_GetLocalFixedPoint, A0, L);
21024}
21025bool ByteCodeEmitter::emitGetLocalPtr( uint32_t A0, SourceInfo L) {
21026 return emitOp<uint32_t>(OP_GetLocalPtr, A0, L);
21027}
21028bool ByteCodeEmitter::emitGetLocalMemberPtr( uint32_t A0, SourceInfo L) {
21029 return emitOp<uint32_t>(OP_GetLocalMemberPtr, A0, L);
21030}
21031bool ByteCodeEmitter::emitGetLocalFloat( uint32_t A0, SourceInfo L) {
21032 return emitOp<uint32_t>(OP_GetLocalFloat, A0, L);
21033}
21034#endif
21035#ifdef GET_OPCODE_NAMES
21036OP_GetLocalEnabled,
21037#endif
21038#ifdef GET_INTERP
21039case OP_GetLocalEnabled: {
21040 const auto V0 = ReadArg<uint32_t>(S, PC);
21041 if (!GetLocalEnabled(S, OpPC, V0))
21042 return false;
21043 continue;
21044}
21045#endif
21046#ifdef GET_DISASM
21047case OP_GetLocalEnabled:
21048 Text.Op = PrintName("GetLocalEnabled");
21049 Text.Args.push_back(printArg<uint32_t>(P, PC));
21050 break;
21051#endif
21052#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21053bool emitGetLocalEnabled( uint32_t , SourceInfo);
21054#endif
21055#ifdef GET_LINK_IMPL
21056bool ByteCodeEmitter::emitGetLocalEnabled( uint32_t A0, SourceInfo L) {
21057 return emitOp<uint32_t>(OP_GetLocalEnabled, A0, L);
21058}
21059#endif
21060#ifdef GET_OPCODE_NAMES
21061OP_GetMemberPtr,
21062#endif
21063#ifdef GET_INTERP
21064case OP_GetMemberPtr: {
21065 const auto V0 = ReadArg<const ValueDecl*>(S, PC);
21066 if (!GetMemberPtr(S, OpPC, V0))
21067 return false;
21068 continue;
21069}
21070#endif
21071#ifdef GET_DISASM
21072case OP_GetMemberPtr:
21073 Text.Op = PrintName("GetMemberPtr");
21074 Text.Args.push_back(printArg<const ValueDecl*>(P, PC));
21075 break;
21076#endif
21077#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21078bool emitGetMemberPtr( const ValueDecl* , SourceInfo);
21079#endif
21080#ifdef GET_LINK_IMPL
21081bool ByteCodeEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
21082 return emitOp<const ValueDecl*>(OP_GetMemberPtr, A0, L);
21083}
21084#endif
21085#ifdef GET_EVAL_IMPL
21086bool EvalEmitter::emitGetMemberPtr( const ValueDecl* A0, SourceInfo L) {
21087 if (!isActive()) return true;
21088 CurrentSource = L;
21089 return GetMemberPtr(S, OpPC, A0);
21090}
21091#endif
21092#ifdef GET_OPCODE_NAMES
21093OP_GetMemberPtrBase,
21094#endif
21095#ifdef GET_INTERP
21096case OP_GetMemberPtrBase: {
21097 if (!GetMemberPtrBase(S, OpPC))
21098 return false;
21099 continue;
21100}
21101#endif
21102#ifdef GET_DISASM
21103case OP_GetMemberPtrBase:
21104 Text.Op = PrintName("GetMemberPtrBase");
21105 break;
21106#endif
21107#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21108bool emitGetMemberPtrBase(SourceInfo);
21109#endif
21110#ifdef GET_LINK_IMPL
21111bool ByteCodeEmitter::emitGetMemberPtrBase(SourceInfo L) {
21112 return emitOp<>(OP_GetMemberPtrBase, L);
21113}
21114#endif
21115#ifdef GET_EVAL_IMPL
21116bool EvalEmitter::emitGetMemberPtrBase(SourceInfo L) {
21117 if (!isActive()) return true;
21118 CurrentSource = L;
21119 return GetMemberPtrBase(S, OpPC);
21120}
21121#endif
21122#ifdef GET_OPCODE_NAMES
21123OP_GetMemberPtrDecl,
21124#endif
21125#ifdef GET_INTERP
21126case OP_GetMemberPtrDecl: {
21127 if (!GetMemberPtrDecl(S, OpPC))
21128 return false;
21129 continue;
21130}
21131#endif
21132#ifdef GET_DISASM
21133case OP_GetMemberPtrDecl:
21134 Text.Op = PrintName("GetMemberPtrDecl");
21135 break;
21136#endif
21137#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21138bool emitGetMemberPtrDecl(SourceInfo);
21139#endif
21140#ifdef GET_LINK_IMPL
21141bool ByteCodeEmitter::emitGetMemberPtrDecl(SourceInfo L) {
21142 return emitOp<>(OP_GetMemberPtrDecl, L);
21143}
21144#endif
21145#ifdef GET_EVAL_IMPL
21146bool EvalEmitter::emitGetMemberPtrDecl(SourceInfo L) {
21147 if (!isActive()) return true;
21148 CurrentSource = L;
21149 return GetMemberPtrDecl(S, OpPC);
21150}
21151#endif
21152#ifdef GET_OPCODE_NAMES
21153OP_GetParamSint8,
21154OP_GetParamUint8,
21155OP_GetParamSint16,
21156OP_GetParamUint16,
21157OP_GetParamSint32,
21158OP_GetParamUint32,
21159OP_GetParamSint64,
21160OP_GetParamUint64,
21161OP_GetParamIntAP,
21162OP_GetParamIntAPS,
21163OP_GetParamBool,
21164OP_GetParamFixedPoint,
21165OP_GetParamPtr,
21166OP_GetParamMemberPtr,
21167OP_GetParamFloat,
21168#endif
21169#ifdef GET_INTERP
21170case OP_GetParamSint8: {
21171 const auto V0 = ReadArg<uint32_t>(S, PC);
21172 if (!GetParam<PT_Sint8>(S, OpPC, V0))
21173 return false;
21174 continue;
21175}
21176case OP_GetParamUint8: {
21177 const auto V0 = ReadArg<uint32_t>(S, PC);
21178 if (!GetParam<PT_Uint8>(S, OpPC, V0))
21179 return false;
21180 continue;
21181}
21182case OP_GetParamSint16: {
21183 const auto V0 = ReadArg<uint32_t>(S, PC);
21184 if (!GetParam<PT_Sint16>(S, OpPC, V0))
21185 return false;
21186 continue;
21187}
21188case OP_GetParamUint16: {
21189 const auto V0 = ReadArg<uint32_t>(S, PC);
21190 if (!GetParam<PT_Uint16>(S, OpPC, V0))
21191 return false;
21192 continue;
21193}
21194case OP_GetParamSint32: {
21195 const auto V0 = ReadArg<uint32_t>(S, PC);
21196 if (!GetParam<PT_Sint32>(S, OpPC, V0))
21197 return false;
21198 continue;
21199}
21200case OP_GetParamUint32: {
21201 const auto V0 = ReadArg<uint32_t>(S, PC);
21202 if (!GetParam<PT_Uint32>(S, OpPC, V0))
21203 return false;
21204 continue;
21205}
21206case OP_GetParamSint64: {
21207 const auto V0 = ReadArg<uint32_t>(S, PC);
21208 if (!GetParam<PT_Sint64>(S, OpPC, V0))
21209 return false;
21210 continue;
21211}
21212case OP_GetParamUint64: {
21213 const auto V0 = ReadArg<uint32_t>(S, PC);
21214 if (!GetParam<PT_Uint64>(S, OpPC, V0))
21215 return false;
21216 continue;
21217}
21218case OP_GetParamIntAP: {
21219 const auto V0 = ReadArg<uint32_t>(S, PC);
21220 if (!GetParam<PT_IntAP>(S, OpPC, V0))
21221 return false;
21222 continue;
21223}
21224case OP_GetParamIntAPS: {
21225 const auto V0 = ReadArg<uint32_t>(S, PC);
21226 if (!GetParam<PT_IntAPS>(S, OpPC, V0))
21227 return false;
21228 continue;
21229}
21230case OP_GetParamBool: {
21231 const auto V0 = ReadArg<uint32_t>(S, PC);
21232 if (!GetParam<PT_Bool>(S, OpPC, V0))
21233 return false;
21234 continue;
21235}
21236case OP_GetParamFixedPoint: {
21237 const auto V0 = ReadArg<uint32_t>(S, PC);
21238 if (!GetParam<PT_FixedPoint>(S, OpPC, V0))
21239 return false;
21240 continue;
21241}
21242case OP_GetParamPtr: {
21243 const auto V0 = ReadArg<uint32_t>(S, PC);
21244 if (!GetParam<PT_Ptr>(S, OpPC, V0))
21245 return false;
21246 continue;
21247}
21248case OP_GetParamMemberPtr: {
21249 const auto V0 = ReadArg<uint32_t>(S, PC);
21250 if (!GetParam<PT_MemberPtr>(S, OpPC, V0))
21251 return false;
21252 continue;
21253}
21254case OP_GetParamFloat: {
21255 const auto V0 = ReadArg<uint32_t>(S, PC);
21256 if (!GetParam<PT_Float>(S, OpPC, V0))
21257 return false;
21258 continue;
21259}
21260#endif
21261#ifdef GET_DISASM
21262case OP_GetParamSint8:
21263 Text.Op = PrintName("GetParamSint8");
21264 Text.Args.push_back(printArg<uint32_t>(P, PC));
21265 break;
21266case OP_GetParamUint8:
21267 Text.Op = PrintName("GetParamUint8");
21268 Text.Args.push_back(printArg<uint32_t>(P, PC));
21269 break;
21270case OP_GetParamSint16:
21271 Text.Op = PrintName("GetParamSint16");
21272 Text.Args.push_back(printArg<uint32_t>(P, PC));
21273 break;
21274case OP_GetParamUint16:
21275 Text.Op = PrintName("GetParamUint16");
21276 Text.Args.push_back(printArg<uint32_t>(P, PC));
21277 break;
21278case OP_GetParamSint32:
21279 Text.Op = PrintName("GetParamSint32");
21280 Text.Args.push_back(printArg<uint32_t>(P, PC));
21281 break;
21282case OP_GetParamUint32:
21283 Text.Op = PrintName("GetParamUint32");
21284 Text.Args.push_back(printArg<uint32_t>(P, PC));
21285 break;
21286case OP_GetParamSint64:
21287 Text.Op = PrintName("GetParamSint64");
21288 Text.Args.push_back(printArg<uint32_t>(P, PC));
21289 break;
21290case OP_GetParamUint64:
21291 Text.Op = PrintName("GetParamUint64");
21292 Text.Args.push_back(printArg<uint32_t>(P, PC));
21293 break;
21294case OP_GetParamIntAP:
21295 Text.Op = PrintName("GetParamIntAP");
21296 Text.Args.push_back(printArg<uint32_t>(P, PC));
21297 break;
21298case OP_GetParamIntAPS:
21299 Text.Op = PrintName("GetParamIntAPS");
21300 Text.Args.push_back(printArg<uint32_t>(P, PC));
21301 break;
21302case OP_GetParamBool:
21303 Text.Op = PrintName("GetParamBool");
21304 Text.Args.push_back(printArg<uint32_t>(P, PC));
21305 break;
21306case OP_GetParamFixedPoint:
21307 Text.Op = PrintName("GetParamFixedPoint");
21308 Text.Args.push_back(printArg<uint32_t>(P, PC));
21309 break;
21310case OP_GetParamPtr:
21311 Text.Op = PrintName("GetParamPtr");
21312 Text.Args.push_back(printArg<uint32_t>(P, PC));
21313 break;
21314case OP_GetParamMemberPtr:
21315 Text.Op = PrintName("GetParamMemberPtr");
21316 Text.Args.push_back(printArg<uint32_t>(P, PC));
21317 break;
21318case OP_GetParamFloat:
21319 Text.Op = PrintName("GetParamFloat");
21320 Text.Args.push_back(printArg<uint32_t>(P, PC));
21321 break;
21322#endif
21323#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21324bool emitGetParamSint8( uint32_t , SourceInfo);
21325bool emitGetParamUint8( uint32_t , SourceInfo);
21326bool emitGetParamSint16( uint32_t , SourceInfo);
21327bool emitGetParamUint16( uint32_t , SourceInfo);
21328bool emitGetParamSint32( uint32_t , SourceInfo);
21329bool emitGetParamUint32( uint32_t , SourceInfo);
21330bool emitGetParamSint64( uint32_t , SourceInfo);
21331bool emitGetParamUint64( uint32_t , SourceInfo);
21332bool emitGetParamIntAP( uint32_t , SourceInfo);
21333bool emitGetParamIntAPS( uint32_t , SourceInfo);
21334bool emitGetParamBool( uint32_t , SourceInfo);
21335bool emitGetParamFixedPoint( uint32_t , SourceInfo);
21336bool emitGetParamPtr( uint32_t , SourceInfo);
21337bool emitGetParamMemberPtr( uint32_t , SourceInfo);
21338bool emitGetParamFloat( uint32_t , SourceInfo);
21339#endif
21340#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21341[[nodiscard]] bool emitGetParam(PrimType, uint32_t, SourceInfo I);
21342#endif
21343#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
21344bool
21345#if defined(GET_EVAL_IMPL)
21346EvalEmitter
21347#else
21348ByteCodeEmitter
21349#endif
21350::emitGetParam(PrimType T0, uint32_t A0, SourceInfo I) {
21351 switch (T0) {
21352 case PT_Sint8:
21353 return emitGetParamSint8(A0, I);
21354 case PT_Uint8:
21355 return emitGetParamUint8(A0, I);
21356 case PT_Sint16:
21357 return emitGetParamSint16(A0, I);
21358 case PT_Uint16:
21359 return emitGetParamUint16(A0, I);
21360 case PT_Sint32:
21361 return emitGetParamSint32(A0, I);
21362 case PT_Uint32:
21363 return emitGetParamUint32(A0, I);
21364 case PT_Sint64:
21365 return emitGetParamSint64(A0, I);
21366 case PT_Uint64:
21367 return emitGetParamUint64(A0, I);
21368 case PT_IntAP:
21369 return emitGetParamIntAP(A0, I);
21370 case PT_IntAPS:
21371 return emitGetParamIntAPS(A0, I);
21372 case PT_Bool:
21373 return emitGetParamBool(A0, I);
21374 case PT_FixedPoint:
21375 return emitGetParamFixedPoint(A0, I);
21376 case PT_Ptr:
21377 return emitGetParamPtr(A0, I);
21378 case PT_MemberPtr:
21379 return emitGetParamMemberPtr(A0, I);
21380 case PT_Float:
21381 return emitGetParamFloat(A0, I);
21382 }
21383 llvm_unreachable("invalid enum value");
21384}
21385#endif
21386#ifdef GET_LINK_IMPL
21387bool ByteCodeEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
21388 return emitOp<uint32_t>(OP_GetParamSint8, A0, L);
21389}
21390bool ByteCodeEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
21391 return emitOp<uint32_t>(OP_GetParamUint8, A0, L);
21392}
21393bool ByteCodeEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
21394 return emitOp<uint32_t>(OP_GetParamSint16, A0, L);
21395}
21396bool ByteCodeEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
21397 return emitOp<uint32_t>(OP_GetParamUint16, A0, L);
21398}
21399bool ByteCodeEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
21400 return emitOp<uint32_t>(OP_GetParamSint32, A0, L);
21401}
21402bool ByteCodeEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
21403 return emitOp<uint32_t>(OP_GetParamUint32, A0, L);
21404}
21405bool ByteCodeEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
21406 return emitOp<uint32_t>(OP_GetParamSint64, A0, L);
21407}
21408bool ByteCodeEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
21409 return emitOp<uint32_t>(OP_GetParamUint64, A0, L);
21410}
21411bool ByteCodeEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
21412 return emitOp<uint32_t>(OP_GetParamIntAP, A0, L);
21413}
21414bool ByteCodeEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
21415 return emitOp<uint32_t>(OP_GetParamIntAPS, A0, L);
21416}
21417bool ByteCodeEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
21418 return emitOp<uint32_t>(OP_GetParamBool, A0, L);
21419}
21420bool ByteCodeEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
21421 return emitOp<uint32_t>(OP_GetParamFixedPoint, A0, L);
21422}
21423bool ByteCodeEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
21424 return emitOp<uint32_t>(OP_GetParamPtr, A0, L);
21425}
21426bool ByteCodeEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
21427 return emitOp<uint32_t>(OP_GetParamMemberPtr, A0, L);
21428}
21429bool ByteCodeEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
21430 return emitOp<uint32_t>(OP_GetParamFloat, A0, L);
21431}
21432#endif
21433#ifdef GET_EVAL_IMPL
21434bool EvalEmitter::emitGetParamSint8( uint32_t A0, SourceInfo L) {
21435 if (!isActive()) return true;
21436 CurrentSource = L;
21437 return GetParam<PT_Sint8>(S, OpPC, A0);
21438}
21439bool EvalEmitter::emitGetParamUint8( uint32_t A0, SourceInfo L) {
21440 if (!isActive()) return true;
21441 CurrentSource = L;
21442 return GetParam<PT_Uint8>(S, OpPC, A0);
21443}
21444bool EvalEmitter::emitGetParamSint16( uint32_t A0, SourceInfo L) {
21445 if (!isActive()) return true;
21446 CurrentSource = L;
21447 return GetParam<PT_Sint16>(S, OpPC, A0);
21448}
21449bool EvalEmitter::emitGetParamUint16( uint32_t A0, SourceInfo L) {
21450 if (!isActive()) return true;
21451 CurrentSource = L;
21452 return GetParam<PT_Uint16>(S, OpPC, A0);
21453}
21454bool EvalEmitter::emitGetParamSint32( uint32_t A0, SourceInfo L) {
21455 if (!isActive()) return true;
21456 CurrentSource = L;
21457 return GetParam<PT_Sint32>(S, OpPC, A0);
21458}
21459bool EvalEmitter::emitGetParamUint32( uint32_t A0, SourceInfo L) {
21460 if (!isActive()) return true;
21461 CurrentSource = L;
21462 return GetParam<PT_Uint32>(S, OpPC, A0);
21463}
21464bool EvalEmitter::emitGetParamSint64( uint32_t A0, SourceInfo L) {
21465 if (!isActive()) return true;
21466 CurrentSource = L;
21467 return GetParam<PT_Sint64>(S, OpPC, A0);
21468}
21469bool EvalEmitter::emitGetParamUint64( uint32_t A0, SourceInfo L) {
21470 if (!isActive()) return true;
21471 CurrentSource = L;
21472 return GetParam<PT_Uint64>(S, OpPC, A0);
21473}
21474bool EvalEmitter::emitGetParamIntAP( uint32_t A0, SourceInfo L) {
21475 if (!isActive()) return true;
21476 CurrentSource = L;
21477 return GetParam<PT_IntAP>(S, OpPC, A0);
21478}
21479bool EvalEmitter::emitGetParamIntAPS( uint32_t A0, SourceInfo L) {
21480 if (!isActive()) return true;
21481 CurrentSource = L;
21482 return GetParam<PT_IntAPS>(S, OpPC, A0);
21483}
21484bool EvalEmitter::emitGetParamBool( uint32_t A0, SourceInfo L) {
21485 if (!isActive()) return true;
21486 CurrentSource = L;
21487 return GetParam<PT_Bool>(S, OpPC, A0);
21488}
21489bool EvalEmitter::emitGetParamFixedPoint( uint32_t A0, SourceInfo L) {
21490 if (!isActive()) return true;
21491 CurrentSource = L;
21492 return GetParam<PT_FixedPoint>(S, OpPC, A0);
21493}
21494bool EvalEmitter::emitGetParamPtr( uint32_t A0, SourceInfo L) {
21495 if (!isActive()) return true;
21496 CurrentSource = L;
21497 return GetParam<PT_Ptr>(S, OpPC, A0);
21498}
21499bool EvalEmitter::emitGetParamMemberPtr( uint32_t A0, SourceInfo L) {
21500 if (!isActive()) return true;
21501 CurrentSource = L;
21502 return GetParam<PT_MemberPtr>(S, OpPC, A0);
21503}
21504bool EvalEmitter::emitGetParamFloat( uint32_t A0, SourceInfo L) {
21505 if (!isActive()) return true;
21506 CurrentSource = L;
21507 return GetParam<PT_Float>(S, OpPC, A0);
21508}
21509#endif
21510#ifdef GET_OPCODE_NAMES
21511OP_GetPtrBase,
21512#endif
21513#ifdef GET_INTERP
21514case OP_GetPtrBase: {
21515 const auto V0 = ReadArg<uint32_t>(S, PC);
21516 if (!GetPtrBase(S, OpPC, V0))
21517 return false;
21518 continue;
21519}
21520#endif
21521#ifdef GET_DISASM
21522case OP_GetPtrBase:
21523 Text.Op = PrintName("GetPtrBase");
21524 Text.Args.push_back(printArg<uint32_t>(P, PC));
21525 break;
21526#endif
21527#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21528bool emitGetPtrBase( uint32_t , SourceInfo);
21529#endif
21530#ifdef GET_LINK_IMPL
21531bool ByteCodeEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
21532 return emitOp<uint32_t>(OP_GetPtrBase, A0, L);
21533}
21534#endif
21535#ifdef GET_EVAL_IMPL
21536bool EvalEmitter::emitGetPtrBase( uint32_t A0, SourceInfo L) {
21537 if (!isActive()) return true;
21538 CurrentSource = L;
21539 return GetPtrBase(S, OpPC, A0);
21540}
21541#endif
21542#ifdef GET_OPCODE_NAMES
21543OP_GetPtrBasePop,
21544#endif
21545#ifdef GET_INTERP
21546case OP_GetPtrBasePop: {
21547 const auto V0 = ReadArg<uint32_t>(S, PC);
21548 const auto V1 = ReadArg<bool>(S, PC);
21549 if (!GetPtrBasePop(S, OpPC, V0, V1))
21550 return false;
21551 continue;
21552}
21553#endif
21554#ifdef GET_DISASM
21555case OP_GetPtrBasePop:
21556 Text.Op = PrintName("GetPtrBasePop");
21557 Text.Args.push_back(printArg<uint32_t>(P, PC));
21558 Text.Args.push_back(printArg<bool>(P, PC));
21559 break;
21560#endif
21561#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21562bool emitGetPtrBasePop( uint32_t , bool , SourceInfo);
21563#endif
21564#ifdef GET_LINK_IMPL
21565bool ByteCodeEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
21566 return emitOp<uint32_t, bool>(OP_GetPtrBasePop, A0, A1, L);
21567}
21568#endif
21569#ifdef GET_EVAL_IMPL
21570bool EvalEmitter::emitGetPtrBasePop( uint32_t A0, bool A1, SourceInfo L) {
21571 if (!isActive()) return true;
21572 CurrentSource = L;
21573 return GetPtrBasePop(S, OpPC, A0, A1);
21574}
21575#endif
21576#ifdef GET_OPCODE_NAMES
21577OP_GetPtrDerivedPop,
21578#endif
21579#ifdef GET_INTERP
21580case OP_GetPtrDerivedPop: {
21581 const auto V0 = ReadArg<uint32_t>(S, PC);
21582 const auto V1 = ReadArg<bool>(S, PC);
21583 const auto V2 = ReadArg<const Type *>(S, PC);
21584 if (!GetPtrDerivedPop(S, OpPC, V0, V1, V2))
21585 return false;
21586 continue;
21587}
21588#endif
21589#ifdef GET_DISASM
21590case OP_GetPtrDerivedPop:
21591 Text.Op = PrintName("GetPtrDerivedPop");
21592 Text.Args.push_back(printArg<uint32_t>(P, PC));
21593 Text.Args.push_back(printArg<bool>(P, PC));
21594 Text.Args.push_back(printArg<const Type *>(P, PC));
21595 break;
21596#endif
21597#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21598bool emitGetPtrDerivedPop( uint32_t , bool , const Type * , SourceInfo);
21599#endif
21600#ifdef GET_LINK_IMPL
21601bool ByteCodeEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
21602 return emitOp<uint32_t, bool, const Type *>(OP_GetPtrDerivedPop, A0, A1, A2, L);
21603}
21604#endif
21605#ifdef GET_EVAL_IMPL
21606bool EvalEmitter::emitGetPtrDerivedPop( uint32_t A0, bool A1, const Type * A2, SourceInfo L) {
21607 if (!isActive()) return true;
21608 CurrentSource = L;
21609 return GetPtrDerivedPop(S, OpPC, A0, A1, A2);
21610}
21611#endif
21612#ifdef GET_OPCODE_NAMES
21613OP_GetPtrField,
21614#endif
21615#ifdef GET_INTERP
21616case OP_GetPtrField: {
21617 const auto V0 = ReadArg<uint32_t>(S, PC);
21618 if (!GetPtrField(S, OpPC, V0))
21619 return false;
21620 continue;
21621}
21622#endif
21623#ifdef GET_DISASM
21624case OP_GetPtrField:
21625 Text.Op = PrintName("GetPtrField");
21626 Text.Args.push_back(printArg<uint32_t>(P, PC));
21627 break;
21628#endif
21629#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21630bool emitGetPtrField( uint32_t , SourceInfo);
21631#endif
21632#ifdef GET_LINK_IMPL
21633bool ByteCodeEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
21634 return emitOp<uint32_t>(OP_GetPtrField, A0, L);
21635}
21636#endif
21637#ifdef GET_EVAL_IMPL
21638bool EvalEmitter::emitGetPtrField( uint32_t A0, SourceInfo L) {
21639 if (!isActive()) return true;
21640 CurrentSource = L;
21641 return GetPtrField(S, OpPC, A0);
21642}
21643#endif
21644#ifdef GET_OPCODE_NAMES
21645OP_GetPtrFieldPop,
21646#endif
21647#ifdef GET_INTERP
21648case OP_GetPtrFieldPop: {
21649 const auto V0 = ReadArg<uint32_t>(S, PC);
21650 if (!GetPtrFieldPop(S, OpPC, V0))
21651 return false;
21652 continue;
21653}
21654#endif
21655#ifdef GET_DISASM
21656case OP_GetPtrFieldPop:
21657 Text.Op = PrintName("GetPtrFieldPop");
21658 Text.Args.push_back(printArg<uint32_t>(P, PC));
21659 break;
21660#endif
21661#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21662bool emitGetPtrFieldPop( uint32_t , SourceInfo);
21663#endif
21664#ifdef GET_LINK_IMPL
21665bool ByteCodeEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
21666 return emitOp<uint32_t>(OP_GetPtrFieldPop, A0, L);
21667}
21668#endif
21669#ifdef GET_EVAL_IMPL
21670bool EvalEmitter::emitGetPtrFieldPop( uint32_t A0, SourceInfo L) {
21671 if (!isActive()) return true;
21672 CurrentSource = L;
21673 return GetPtrFieldPop(S, OpPC, A0);
21674}
21675#endif
21676#ifdef GET_OPCODE_NAMES
21677OP_GetPtrGlobal,
21678#endif
21679#ifdef GET_INTERP
21680case OP_GetPtrGlobal: {
21681 const auto V0 = ReadArg<uint32_t>(S, PC);
21682 if (!GetPtrGlobal(S, OpPC, V0))
21683 return false;
21684 continue;
21685}
21686#endif
21687#ifdef GET_DISASM
21688case OP_GetPtrGlobal:
21689 Text.Op = PrintName("GetPtrGlobal");
21690 Text.Args.push_back(printArg<uint32_t>(P, PC));
21691 break;
21692#endif
21693#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21694bool emitGetPtrGlobal( uint32_t , SourceInfo);
21695#endif
21696#ifdef GET_LINK_IMPL
21697bool ByteCodeEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
21698 return emitOp<uint32_t>(OP_GetPtrGlobal, A0, L);
21699}
21700#endif
21701#ifdef GET_EVAL_IMPL
21702bool EvalEmitter::emitGetPtrGlobal( uint32_t A0, SourceInfo L) {
21703 if (!isActive()) return true;
21704 CurrentSource = L;
21705 return GetPtrGlobal(S, OpPC, A0);
21706}
21707#endif
21708#ifdef GET_OPCODE_NAMES
21709OP_GetPtrLocal,
21710#endif
21711#ifdef GET_INTERP
21712case OP_GetPtrLocal: {
21713 const auto V0 = ReadArg<uint32_t>(S, PC);
21714 if (!GetPtrLocal(S, OpPC, V0))
21715 return false;
21716 continue;
21717}
21718#endif
21719#ifdef GET_DISASM
21720case OP_GetPtrLocal:
21721 Text.Op = PrintName("GetPtrLocal");
21722 Text.Args.push_back(printArg<uint32_t>(P, PC));
21723 break;
21724#endif
21725#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21726bool emitGetPtrLocal( uint32_t , SourceInfo);
21727#endif
21728#ifdef GET_LINK_IMPL
21729bool ByteCodeEmitter::emitGetPtrLocal( uint32_t A0, SourceInfo L) {
21730 return emitOp<uint32_t>(OP_GetPtrLocal, A0, L);
21731}
21732#endif
21733#ifdef GET_OPCODE_NAMES
21734OP_GetPtrParam,
21735#endif
21736#ifdef GET_INTERP
21737case OP_GetPtrParam: {
21738 const auto V0 = ReadArg<uint32_t>(S, PC);
21739 if (!GetPtrParam(S, OpPC, V0))
21740 return false;
21741 continue;
21742}
21743#endif
21744#ifdef GET_DISASM
21745case OP_GetPtrParam:
21746 Text.Op = PrintName("GetPtrParam");
21747 Text.Args.push_back(printArg<uint32_t>(P, PC));
21748 break;
21749#endif
21750#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21751bool emitGetPtrParam( uint32_t , SourceInfo);
21752#endif
21753#ifdef GET_LINK_IMPL
21754bool ByteCodeEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
21755 return emitOp<uint32_t>(OP_GetPtrParam, A0, L);
21756}
21757#endif
21758#ifdef GET_EVAL_IMPL
21759bool EvalEmitter::emitGetPtrParam( uint32_t A0, SourceInfo L) {
21760 if (!isActive()) return true;
21761 CurrentSource = L;
21762 return GetPtrParam(S, OpPC, A0);
21763}
21764#endif
21765#ifdef GET_OPCODE_NAMES
21766OP_GetPtrThisBase,
21767#endif
21768#ifdef GET_INTERP
21769case OP_GetPtrThisBase: {
21770 const auto V0 = ReadArg<uint32_t>(S, PC);
21771 if (!GetPtrThisBase(S, OpPC, V0))
21772 return false;
21773 continue;
21774}
21775#endif
21776#ifdef GET_DISASM
21777case OP_GetPtrThisBase:
21778 Text.Op = PrintName("GetPtrThisBase");
21779 Text.Args.push_back(printArg<uint32_t>(P, PC));
21780 break;
21781#endif
21782#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21783bool emitGetPtrThisBase( uint32_t , SourceInfo);
21784#endif
21785#ifdef GET_LINK_IMPL
21786bool ByteCodeEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
21787 return emitOp<uint32_t>(OP_GetPtrThisBase, A0, L);
21788}
21789#endif
21790#ifdef GET_EVAL_IMPL
21791bool EvalEmitter::emitGetPtrThisBase( uint32_t A0, SourceInfo L) {
21792 if (!isActive()) return true;
21793 CurrentSource = L;
21794 return GetPtrThisBase(S, OpPC, A0);
21795}
21796#endif
21797#ifdef GET_OPCODE_NAMES
21798OP_GetPtrThisField,
21799#endif
21800#ifdef GET_INTERP
21801case OP_GetPtrThisField: {
21802 const auto V0 = ReadArg<uint32_t>(S, PC);
21803 if (!GetPtrThisField(S, OpPC, V0))
21804 return false;
21805 continue;
21806}
21807#endif
21808#ifdef GET_DISASM
21809case OP_GetPtrThisField:
21810 Text.Op = PrintName("GetPtrThisField");
21811 Text.Args.push_back(printArg<uint32_t>(P, PC));
21812 break;
21813#endif
21814#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21815bool emitGetPtrThisField( uint32_t , SourceInfo);
21816#endif
21817#ifdef GET_LINK_IMPL
21818bool ByteCodeEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
21819 return emitOp<uint32_t>(OP_GetPtrThisField, A0, L);
21820}
21821#endif
21822#ifdef GET_EVAL_IMPL
21823bool EvalEmitter::emitGetPtrThisField( uint32_t A0, SourceInfo L) {
21824 if (!isActive()) return true;
21825 CurrentSource = L;
21826 return GetPtrThisField(S, OpPC, A0);
21827}
21828#endif
21829#ifdef GET_OPCODE_NAMES
21830OP_GetPtrThisVirtBase,
21831#endif
21832#ifdef GET_INTERP
21833case OP_GetPtrThisVirtBase: {
21834 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
21835 if (!GetPtrThisVirtBase(S, OpPC, V0))
21836 return false;
21837 continue;
21838}
21839#endif
21840#ifdef GET_DISASM
21841case OP_GetPtrThisVirtBase:
21842 Text.Op = PrintName("GetPtrThisVirtBase");
21843 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
21844 break;
21845#endif
21846#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21847bool emitGetPtrThisVirtBase( const RecordDecl * , SourceInfo);
21848#endif
21849#ifdef GET_LINK_IMPL
21850bool ByteCodeEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
21851 return emitOp<const RecordDecl *>(OP_GetPtrThisVirtBase, A0, L);
21852}
21853#endif
21854#ifdef GET_EVAL_IMPL
21855bool EvalEmitter::emitGetPtrThisVirtBase( const RecordDecl * A0, SourceInfo L) {
21856 if (!isActive()) return true;
21857 CurrentSource = L;
21858 return GetPtrThisVirtBase(S, OpPC, A0);
21859}
21860#endif
21861#ifdef GET_OPCODE_NAMES
21862OP_GetPtrVirtBasePop,
21863#endif
21864#ifdef GET_INTERP
21865case OP_GetPtrVirtBasePop: {
21866 const auto V0 = ReadArg<const RecordDecl *>(S, PC);
21867 if (!GetPtrVirtBasePop(S, OpPC, V0))
21868 return false;
21869 continue;
21870}
21871#endif
21872#ifdef GET_DISASM
21873case OP_GetPtrVirtBasePop:
21874 Text.Op = PrintName("GetPtrVirtBasePop");
21875 Text.Args.push_back(printArg<const RecordDecl *>(P, PC));
21876 break;
21877#endif
21878#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
21879bool emitGetPtrVirtBasePop( const RecordDecl * , SourceInfo);
21880#endif
21881#ifdef GET_LINK_IMPL
21882bool ByteCodeEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
21883 return emitOp<const RecordDecl *>(OP_GetPtrVirtBasePop, A0, L);
21884}
21885#endif
21886#ifdef GET_EVAL_IMPL
21887bool EvalEmitter::emitGetPtrVirtBasePop( const RecordDecl * A0, SourceInfo L) {
21888 if (!isActive()) return true;
21889 CurrentSource = L;
21890 return GetPtrVirtBasePop(S, OpPC, A0);
21891}
21892#endif
21893#ifdef GET_OPCODE_NAMES
21894OP_GetThisFieldSint8,
21895OP_GetThisFieldUint8,
21896OP_GetThisFieldSint16,
21897OP_GetThisFieldUint16,
21898OP_GetThisFieldSint32,
21899OP_GetThisFieldUint32,
21900OP_GetThisFieldSint64,
21901OP_GetThisFieldUint64,
21902OP_GetThisFieldIntAP,
21903OP_GetThisFieldIntAPS,
21904OP_GetThisFieldBool,
21905OP_GetThisFieldFixedPoint,
21906OP_GetThisFieldPtr,
21907OP_GetThisFieldMemberPtr,
21908OP_GetThisFieldFloat,
21909#endif
21910#ifdef GET_INTERP
21911case OP_GetThisFieldSint8: {
21912 const auto V0 = ReadArg<uint32_t>(S, PC);
21913 if (!GetThisField<PT_Sint8>(S, OpPC, V0))
21914 return false;
21915 continue;
21916}
21917case OP_GetThisFieldUint8: {
21918 const auto V0 = ReadArg<uint32_t>(S, PC);
21919 if (!GetThisField<PT_Uint8>(S, OpPC, V0))
21920 return false;
21921 continue;
21922}
21923case OP_GetThisFieldSint16: {
21924 const auto V0 = ReadArg<uint32_t>(S, PC);
21925 if (!GetThisField<PT_Sint16>(S, OpPC, V0))
21926 return false;
21927 continue;
21928}
21929case OP_GetThisFieldUint16: {
21930 const auto V0 = ReadArg<uint32_t>(S, PC);
21931 if (!GetThisField<PT_Uint16>(S, OpPC, V0))
21932 return false;
21933 continue;
21934}
21935case OP_GetThisFieldSint32: {
21936 const auto V0 = ReadArg<uint32_t>(S, PC);
21937 if (!GetThisField<PT_Sint32>(S, OpPC, V0))
21938 return false;
21939 continue;
21940}
21941case OP_GetThisFieldUint32: {
21942 const auto V0 = ReadArg<uint32_t>(S, PC);
21943 if (!GetThisField<PT_Uint32>(S, OpPC, V0))
21944 return false;
21945 continue;
21946}
21947case OP_GetThisFieldSint64: {
21948 const auto V0 = ReadArg<uint32_t>(S, PC);
21949 if (!GetThisField<PT_Sint64>(S, OpPC, V0))
21950 return false;
21951 continue;
21952}
21953case OP_GetThisFieldUint64: {
21954 const auto V0 = ReadArg<uint32_t>(S, PC);
21955 if (!GetThisField<PT_Uint64>(S, OpPC, V0))
21956 return false;
21957 continue;
21958}
21959case OP_GetThisFieldIntAP: {
21960 const auto V0 = ReadArg<uint32_t>(S, PC);
21961 if (!GetThisField<PT_IntAP>(S, OpPC, V0))
21962 return false;
21963 continue;
21964}
21965case OP_GetThisFieldIntAPS: {
21966 const auto V0 = ReadArg<uint32_t>(S, PC);
21967 if (!GetThisField<PT_IntAPS>(S, OpPC, V0))
21968 return false;
21969 continue;
21970}
21971case OP_GetThisFieldBool: {
21972 const auto V0 = ReadArg<uint32_t>(S, PC);
21973 if (!GetThisField<PT_Bool>(S, OpPC, V0))
21974 return false;
21975 continue;
21976}
21977case OP_GetThisFieldFixedPoint: {
21978 const auto V0 = ReadArg<uint32_t>(S, PC);
21979 if (!GetThisField<PT_FixedPoint>(S, OpPC, V0))
21980 return false;
21981 continue;
21982}
21983case OP_GetThisFieldPtr: {
21984 const auto V0 = ReadArg<uint32_t>(S, PC);
21985 if (!GetThisField<PT_Ptr>(S, OpPC, V0))
21986 return false;
21987 continue;
21988}
21989case OP_GetThisFieldMemberPtr: {
21990 const auto V0 = ReadArg<uint32_t>(S, PC);
21991 if (!GetThisField<PT_MemberPtr>(S, OpPC, V0))
21992 return false;
21993 continue;
21994}
21995case OP_GetThisFieldFloat: {
21996 const auto V0 = ReadArg<uint32_t>(S, PC);
21997 if (!GetThisField<PT_Float>(S, OpPC, V0))
21998 return false;
21999 continue;
22000}
22001#endif
22002#ifdef GET_DISASM
22003case OP_GetThisFieldSint8:
22004 Text.Op = PrintName("GetThisFieldSint8");
22005 Text.Args.push_back(printArg<uint32_t>(P, PC));
22006 break;
22007case OP_GetThisFieldUint8:
22008 Text.Op = PrintName("GetThisFieldUint8");
22009 Text.Args.push_back(printArg<uint32_t>(P, PC));
22010 break;
22011case OP_GetThisFieldSint16:
22012 Text.Op = PrintName("GetThisFieldSint16");
22013 Text.Args.push_back(printArg<uint32_t>(P, PC));
22014 break;
22015case OP_GetThisFieldUint16:
22016 Text.Op = PrintName("GetThisFieldUint16");
22017 Text.Args.push_back(printArg<uint32_t>(P, PC));
22018 break;
22019case OP_GetThisFieldSint32:
22020 Text.Op = PrintName("GetThisFieldSint32");
22021 Text.Args.push_back(printArg<uint32_t>(P, PC));
22022 break;
22023case OP_GetThisFieldUint32:
22024 Text.Op = PrintName("GetThisFieldUint32");
22025 Text.Args.push_back(printArg<uint32_t>(P, PC));
22026 break;
22027case OP_GetThisFieldSint64:
22028 Text.Op = PrintName("GetThisFieldSint64");
22029 Text.Args.push_back(printArg<uint32_t>(P, PC));
22030 break;
22031case OP_GetThisFieldUint64:
22032 Text.Op = PrintName("GetThisFieldUint64");
22033 Text.Args.push_back(printArg<uint32_t>(P, PC));
22034 break;
22035case OP_GetThisFieldIntAP:
22036 Text.Op = PrintName("GetThisFieldIntAP");
22037 Text.Args.push_back(printArg<uint32_t>(P, PC));
22038 break;
22039case OP_GetThisFieldIntAPS:
22040 Text.Op = PrintName("GetThisFieldIntAPS");
22041 Text.Args.push_back(printArg<uint32_t>(P, PC));
22042 break;
22043case OP_GetThisFieldBool:
22044 Text.Op = PrintName("GetThisFieldBool");
22045 Text.Args.push_back(printArg<uint32_t>(P, PC));
22046 break;
22047case OP_GetThisFieldFixedPoint:
22048 Text.Op = PrintName("GetThisFieldFixedPoint");
22049 Text.Args.push_back(printArg<uint32_t>(P, PC));
22050 break;
22051case OP_GetThisFieldPtr:
22052 Text.Op = PrintName("GetThisFieldPtr");
22053 Text.Args.push_back(printArg<uint32_t>(P, PC));
22054 break;
22055case OP_GetThisFieldMemberPtr:
22056 Text.Op = PrintName("GetThisFieldMemberPtr");
22057 Text.Args.push_back(printArg<uint32_t>(P, PC));
22058 break;
22059case OP_GetThisFieldFloat:
22060 Text.Op = PrintName("GetThisFieldFloat");
22061 Text.Args.push_back(printArg<uint32_t>(P, PC));
22062 break;
22063#endif
22064#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22065bool emitGetThisFieldSint8( uint32_t , SourceInfo);
22066bool emitGetThisFieldUint8( uint32_t , SourceInfo);
22067bool emitGetThisFieldSint16( uint32_t , SourceInfo);
22068bool emitGetThisFieldUint16( uint32_t , SourceInfo);
22069bool emitGetThisFieldSint32( uint32_t , SourceInfo);
22070bool emitGetThisFieldUint32( uint32_t , SourceInfo);
22071bool emitGetThisFieldSint64( uint32_t , SourceInfo);
22072bool emitGetThisFieldUint64( uint32_t , SourceInfo);
22073bool emitGetThisFieldIntAP( uint32_t , SourceInfo);
22074bool emitGetThisFieldIntAPS( uint32_t , SourceInfo);
22075bool emitGetThisFieldBool( uint32_t , SourceInfo);
22076bool emitGetThisFieldFixedPoint( uint32_t , SourceInfo);
22077bool emitGetThisFieldPtr( uint32_t , SourceInfo);
22078bool emitGetThisFieldMemberPtr( uint32_t , SourceInfo);
22079bool emitGetThisFieldFloat( uint32_t , SourceInfo);
22080#endif
22081#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22082[[nodiscard]] bool emitGetThisField(PrimType, uint32_t, SourceInfo I);
22083#endif
22084#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22085bool
22086#if defined(GET_EVAL_IMPL)
22087EvalEmitter
22088#else
22089ByteCodeEmitter
22090#endif
22091::emitGetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
22092 switch (T0) {
22093 case PT_Sint8:
22094 return emitGetThisFieldSint8(A0, I);
22095 case PT_Uint8:
22096 return emitGetThisFieldUint8(A0, I);
22097 case PT_Sint16:
22098 return emitGetThisFieldSint16(A0, I);
22099 case PT_Uint16:
22100 return emitGetThisFieldUint16(A0, I);
22101 case PT_Sint32:
22102 return emitGetThisFieldSint32(A0, I);
22103 case PT_Uint32:
22104 return emitGetThisFieldUint32(A0, I);
22105 case PT_Sint64:
22106 return emitGetThisFieldSint64(A0, I);
22107 case PT_Uint64:
22108 return emitGetThisFieldUint64(A0, I);
22109 case PT_IntAP:
22110 return emitGetThisFieldIntAP(A0, I);
22111 case PT_IntAPS:
22112 return emitGetThisFieldIntAPS(A0, I);
22113 case PT_Bool:
22114 return emitGetThisFieldBool(A0, I);
22115 case PT_FixedPoint:
22116 return emitGetThisFieldFixedPoint(A0, I);
22117 case PT_Ptr:
22118 return emitGetThisFieldPtr(A0, I);
22119 case PT_MemberPtr:
22120 return emitGetThisFieldMemberPtr(A0, I);
22121 case PT_Float:
22122 return emitGetThisFieldFloat(A0, I);
22123 }
22124 llvm_unreachable("invalid enum value");
22125}
22126#endif
22127#ifdef GET_LINK_IMPL
22128bool ByteCodeEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
22129 return emitOp<uint32_t>(OP_GetThisFieldSint8, A0, L);
22130}
22131bool ByteCodeEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
22132 return emitOp<uint32_t>(OP_GetThisFieldUint8, A0, L);
22133}
22134bool ByteCodeEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
22135 return emitOp<uint32_t>(OP_GetThisFieldSint16, A0, L);
22136}
22137bool ByteCodeEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
22138 return emitOp<uint32_t>(OP_GetThisFieldUint16, A0, L);
22139}
22140bool ByteCodeEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
22141 return emitOp<uint32_t>(OP_GetThisFieldSint32, A0, L);
22142}
22143bool ByteCodeEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
22144 return emitOp<uint32_t>(OP_GetThisFieldUint32, A0, L);
22145}
22146bool ByteCodeEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
22147 return emitOp<uint32_t>(OP_GetThisFieldSint64, A0, L);
22148}
22149bool ByteCodeEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
22150 return emitOp<uint32_t>(OP_GetThisFieldUint64, A0, L);
22151}
22152bool ByteCodeEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
22153 return emitOp<uint32_t>(OP_GetThisFieldIntAP, A0, L);
22154}
22155bool ByteCodeEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
22156 return emitOp<uint32_t>(OP_GetThisFieldIntAPS, A0, L);
22157}
22158bool ByteCodeEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
22159 return emitOp<uint32_t>(OP_GetThisFieldBool, A0, L);
22160}
22161bool ByteCodeEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
22162 return emitOp<uint32_t>(OP_GetThisFieldFixedPoint, A0, L);
22163}
22164bool ByteCodeEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
22165 return emitOp<uint32_t>(OP_GetThisFieldPtr, A0, L);
22166}
22167bool ByteCodeEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
22168 return emitOp<uint32_t>(OP_GetThisFieldMemberPtr, A0, L);
22169}
22170bool ByteCodeEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
22171 return emitOp<uint32_t>(OP_GetThisFieldFloat, A0, L);
22172}
22173#endif
22174#ifdef GET_EVAL_IMPL
22175bool EvalEmitter::emitGetThisFieldSint8( uint32_t A0, SourceInfo L) {
22176 if (!isActive()) return true;
22177 CurrentSource = L;
22178 return GetThisField<PT_Sint8>(S, OpPC, A0);
22179}
22180bool EvalEmitter::emitGetThisFieldUint8( uint32_t A0, SourceInfo L) {
22181 if (!isActive()) return true;
22182 CurrentSource = L;
22183 return GetThisField<PT_Uint8>(S, OpPC, A0);
22184}
22185bool EvalEmitter::emitGetThisFieldSint16( uint32_t A0, SourceInfo L) {
22186 if (!isActive()) return true;
22187 CurrentSource = L;
22188 return GetThisField<PT_Sint16>(S, OpPC, A0);
22189}
22190bool EvalEmitter::emitGetThisFieldUint16( uint32_t A0, SourceInfo L) {
22191 if (!isActive()) return true;
22192 CurrentSource = L;
22193 return GetThisField<PT_Uint16>(S, OpPC, A0);
22194}
22195bool EvalEmitter::emitGetThisFieldSint32( uint32_t A0, SourceInfo L) {
22196 if (!isActive()) return true;
22197 CurrentSource = L;
22198 return GetThisField<PT_Sint32>(S, OpPC, A0);
22199}
22200bool EvalEmitter::emitGetThisFieldUint32( uint32_t A0, SourceInfo L) {
22201 if (!isActive()) return true;
22202 CurrentSource = L;
22203 return GetThisField<PT_Uint32>(S, OpPC, A0);
22204}
22205bool EvalEmitter::emitGetThisFieldSint64( uint32_t A0, SourceInfo L) {
22206 if (!isActive()) return true;
22207 CurrentSource = L;
22208 return GetThisField<PT_Sint64>(S, OpPC, A0);
22209}
22210bool EvalEmitter::emitGetThisFieldUint64( uint32_t A0, SourceInfo L) {
22211 if (!isActive()) return true;
22212 CurrentSource = L;
22213 return GetThisField<PT_Uint64>(S, OpPC, A0);
22214}
22215bool EvalEmitter::emitGetThisFieldIntAP( uint32_t A0, SourceInfo L) {
22216 if (!isActive()) return true;
22217 CurrentSource = L;
22218 return GetThisField<PT_IntAP>(S, OpPC, A0);
22219}
22220bool EvalEmitter::emitGetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
22221 if (!isActive()) return true;
22222 CurrentSource = L;
22223 return GetThisField<PT_IntAPS>(S, OpPC, A0);
22224}
22225bool EvalEmitter::emitGetThisFieldBool( uint32_t A0, SourceInfo L) {
22226 if (!isActive()) return true;
22227 CurrentSource = L;
22228 return GetThisField<PT_Bool>(S, OpPC, A0);
22229}
22230bool EvalEmitter::emitGetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
22231 if (!isActive()) return true;
22232 CurrentSource = L;
22233 return GetThisField<PT_FixedPoint>(S, OpPC, A0);
22234}
22235bool EvalEmitter::emitGetThisFieldPtr( uint32_t A0, SourceInfo L) {
22236 if (!isActive()) return true;
22237 CurrentSource = L;
22238 return GetThisField<PT_Ptr>(S, OpPC, A0);
22239}
22240bool EvalEmitter::emitGetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
22241 if (!isActive()) return true;
22242 CurrentSource = L;
22243 return GetThisField<PT_MemberPtr>(S, OpPC, A0);
22244}
22245bool EvalEmitter::emitGetThisFieldFloat( uint32_t A0, SourceInfo L) {
22246 if (!isActive()) return true;
22247 CurrentSource = L;
22248 return GetThisField<PT_Float>(S, OpPC, A0);
22249}
22250#endif
22251#ifdef GET_OPCODE_NAMES
22252OP_GetTypeid,
22253#endif
22254#ifdef GET_INTERP
22255case OP_GetTypeid: {
22256 const auto V0 = ReadArg<const Type *>(S, PC);
22257 const auto V1 = ReadArg<const Type *>(S, PC);
22258 if (!GetTypeid(S, OpPC, V0, V1))
22259 return false;
22260 continue;
22261}
22262#endif
22263#ifdef GET_DISASM
22264case OP_GetTypeid:
22265 Text.Op = PrintName("GetTypeid");
22266 Text.Args.push_back(printArg<const Type *>(P, PC));
22267 Text.Args.push_back(printArg<const Type *>(P, PC));
22268 break;
22269#endif
22270#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22271bool emitGetTypeid( const Type * , const Type * , SourceInfo);
22272#endif
22273#ifdef GET_LINK_IMPL
22274bool ByteCodeEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
22275 return emitOp<const Type *, const Type *>(OP_GetTypeid, A0, A1, L);
22276}
22277#endif
22278#ifdef GET_EVAL_IMPL
22279bool EvalEmitter::emitGetTypeid( const Type * A0, const Type * A1, SourceInfo L) {
22280 if (!isActive()) return true;
22281 CurrentSource = L;
22282 return GetTypeid(S, OpPC, A0, A1);
22283}
22284#endif
22285#ifdef GET_OPCODE_NAMES
22286OP_GetTypeidPtr,
22287#endif
22288#ifdef GET_INTERP
22289case OP_GetTypeidPtr: {
22290 const auto V0 = ReadArg<const Type *>(S, PC);
22291 if (!GetTypeidPtr(S, OpPC, V0))
22292 return false;
22293 continue;
22294}
22295#endif
22296#ifdef GET_DISASM
22297case OP_GetTypeidPtr:
22298 Text.Op = PrintName("GetTypeidPtr");
22299 Text.Args.push_back(printArg<const Type *>(P, PC));
22300 break;
22301#endif
22302#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22303bool emitGetTypeidPtr( const Type * , SourceInfo);
22304#endif
22305#ifdef GET_LINK_IMPL
22306bool ByteCodeEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
22307 return emitOp<const Type *>(OP_GetTypeidPtr, A0, L);
22308}
22309#endif
22310#ifdef GET_EVAL_IMPL
22311bool EvalEmitter::emitGetTypeidPtr( const Type * A0, SourceInfo L) {
22312 if (!isActive()) return true;
22313 CurrentSource = L;
22314 return GetTypeidPtr(S, OpPC, A0);
22315}
22316#endif
22317#ifdef GET_OPCODE_NAMES
22318OP_IncSint8,
22319OP_IncUint8,
22320OP_IncSint16,
22321OP_IncUint16,
22322OP_IncSint32,
22323OP_IncUint32,
22324OP_IncSint64,
22325OP_IncUint64,
22326OP_IncIntAP,
22327OP_IncIntAPS,
22328OP_IncBool,
22329OP_IncFixedPoint,
22330#endif
22331#ifdef GET_INTERP
22332case OP_IncSint8: {
22333 const auto V0 = ReadArg<bool>(S, PC);
22334 if (!Inc<PT_Sint8>(S, OpPC, V0))
22335 return false;
22336 continue;
22337}
22338case OP_IncUint8: {
22339 const auto V0 = ReadArg<bool>(S, PC);
22340 if (!Inc<PT_Uint8>(S, OpPC, V0))
22341 return false;
22342 continue;
22343}
22344case OP_IncSint16: {
22345 const auto V0 = ReadArg<bool>(S, PC);
22346 if (!Inc<PT_Sint16>(S, OpPC, V0))
22347 return false;
22348 continue;
22349}
22350case OP_IncUint16: {
22351 const auto V0 = ReadArg<bool>(S, PC);
22352 if (!Inc<PT_Uint16>(S, OpPC, V0))
22353 return false;
22354 continue;
22355}
22356case OP_IncSint32: {
22357 const auto V0 = ReadArg<bool>(S, PC);
22358 if (!Inc<PT_Sint32>(S, OpPC, V0))
22359 return false;
22360 continue;
22361}
22362case OP_IncUint32: {
22363 const auto V0 = ReadArg<bool>(S, PC);
22364 if (!Inc<PT_Uint32>(S, OpPC, V0))
22365 return false;
22366 continue;
22367}
22368case OP_IncSint64: {
22369 const auto V0 = ReadArg<bool>(S, PC);
22370 if (!Inc<PT_Sint64>(S, OpPC, V0))
22371 return false;
22372 continue;
22373}
22374case OP_IncUint64: {
22375 const auto V0 = ReadArg<bool>(S, PC);
22376 if (!Inc<PT_Uint64>(S, OpPC, V0))
22377 return false;
22378 continue;
22379}
22380case OP_IncIntAP: {
22381 const auto V0 = ReadArg<bool>(S, PC);
22382 if (!Inc<PT_IntAP>(S, OpPC, V0))
22383 return false;
22384 continue;
22385}
22386case OP_IncIntAPS: {
22387 const auto V0 = ReadArg<bool>(S, PC);
22388 if (!Inc<PT_IntAPS>(S, OpPC, V0))
22389 return false;
22390 continue;
22391}
22392case OP_IncBool: {
22393 const auto V0 = ReadArg<bool>(S, PC);
22394 if (!Inc<PT_Bool>(S, OpPC, V0))
22395 return false;
22396 continue;
22397}
22398case OP_IncFixedPoint: {
22399 const auto V0 = ReadArg<bool>(S, PC);
22400 if (!Inc<PT_FixedPoint>(S, OpPC, V0))
22401 return false;
22402 continue;
22403}
22404#endif
22405#ifdef GET_DISASM
22406case OP_IncSint8:
22407 Text.Op = PrintName("IncSint8");
22408 Text.Args.push_back(printArg<bool>(P, PC));
22409 break;
22410case OP_IncUint8:
22411 Text.Op = PrintName("IncUint8");
22412 Text.Args.push_back(printArg<bool>(P, PC));
22413 break;
22414case OP_IncSint16:
22415 Text.Op = PrintName("IncSint16");
22416 Text.Args.push_back(printArg<bool>(P, PC));
22417 break;
22418case OP_IncUint16:
22419 Text.Op = PrintName("IncUint16");
22420 Text.Args.push_back(printArg<bool>(P, PC));
22421 break;
22422case OP_IncSint32:
22423 Text.Op = PrintName("IncSint32");
22424 Text.Args.push_back(printArg<bool>(P, PC));
22425 break;
22426case OP_IncUint32:
22427 Text.Op = PrintName("IncUint32");
22428 Text.Args.push_back(printArg<bool>(P, PC));
22429 break;
22430case OP_IncSint64:
22431 Text.Op = PrintName("IncSint64");
22432 Text.Args.push_back(printArg<bool>(P, PC));
22433 break;
22434case OP_IncUint64:
22435 Text.Op = PrintName("IncUint64");
22436 Text.Args.push_back(printArg<bool>(P, PC));
22437 break;
22438case OP_IncIntAP:
22439 Text.Op = PrintName("IncIntAP");
22440 Text.Args.push_back(printArg<bool>(P, PC));
22441 break;
22442case OP_IncIntAPS:
22443 Text.Op = PrintName("IncIntAPS");
22444 Text.Args.push_back(printArg<bool>(P, PC));
22445 break;
22446case OP_IncBool:
22447 Text.Op = PrintName("IncBool");
22448 Text.Args.push_back(printArg<bool>(P, PC));
22449 break;
22450case OP_IncFixedPoint:
22451 Text.Op = PrintName("IncFixedPoint");
22452 Text.Args.push_back(printArg<bool>(P, PC));
22453 break;
22454#endif
22455#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22456bool emitIncSint8( bool , SourceInfo);
22457bool emitIncUint8( bool , SourceInfo);
22458bool emitIncSint16( bool , SourceInfo);
22459bool emitIncUint16( bool , SourceInfo);
22460bool emitIncSint32( bool , SourceInfo);
22461bool emitIncUint32( bool , SourceInfo);
22462bool emitIncSint64( bool , SourceInfo);
22463bool emitIncUint64( bool , SourceInfo);
22464bool emitIncIntAP( bool , SourceInfo);
22465bool emitIncIntAPS( bool , SourceInfo);
22466bool emitIncBool( bool , SourceInfo);
22467bool emitIncFixedPoint( bool , SourceInfo);
22468#endif
22469#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22470[[nodiscard]] bool emitInc(PrimType, bool, SourceInfo I);
22471#endif
22472#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22473bool
22474#if defined(GET_EVAL_IMPL)
22475EvalEmitter
22476#else
22477ByteCodeEmitter
22478#endif
22479::emitInc(PrimType T0, bool A0, SourceInfo I) {
22480 switch (T0) {
22481 case PT_Sint8:
22482 return emitIncSint8(A0, I);
22483 case PT_Uint8:
22484 return emitIncUint8(A0, I);
22485 case PT_Sint16:
22486 return emitIncSint16(A0, I);
22487 case PT_Uint16:
22488 return emitIncUint16(A0, I);
22489 case PT_Sint32:
22490 return emitIncSint32(A0, I);
22491 case PT_Uint32:
22492 return emitIncUint32(A0, I);
22493 case PT_Sint64:
22494 return emitIncSint64(A0, I);
22495 case PT_Uint64:
22496 return emitIncUint64(A0, I);
22497 case PT_IntAP:
22498 return emitIncIntAP(A0, I);
22499 case PT_IntAPS:
22500 return emitIncIntAPS(A0, I);
22501 case PT_Bool:
22502 return emitIncBool(A0, I);
22503 case PT_FixedPoint:
22504 return emitIncFixedPoint(A0, I);
22505 default: llvm_unreachable("invalid type: emitInc");
22506 }
22507 llvm_unreachable("invalid enum value");
22508}
22509#endif
22510#ifdef GET_LINK_IMPL
22511bool ByteCodeEmitter::emitIncSint8( bool A0, SourceInfo L) {
22512 return emitOp<bool>(OP_IncSint8, A0, L);
22513}
22514bool ByteCodeEmitter::emitIncUint8( bool A0, SourceInfo L) {
22515 return emitOp<bool>(OP_IncUint8, A0, L);
22516}
22517bool ByteCodeEmitter::emitIncSint16( bool A0, SourceInfo L) {
22518 return emitOp<bool>(OP_IncSint16, A0, L);
22519}
22520bool ByteCodeEmitter::emitIncUint16( bool A0, SourceInfo L) {
22521 return emitOp<bool>(OP_IncUint16, A0, L);
22522}
22523bool ByteCodeEmitter::emitIncSint32( bool A0, SourceInfo L) {
22524 return emitOp<bool>(OP_IncSint32, A0, L);
22525}
22526bool ByteCodeEmitter::emitIncUint32( bool A0, SourceInfo L) {
22527 return emitOp<bool>(OP_IncUint32, A0, L);
22528}
22529bool ByteCodeEmitter::emitIncSint64( bool A0, SourceInfo L) {
22530 return emitOp<bool>(OP_IncSint64, A0, L);
22531}
22532bool ByteCodeEmitter::emitIncUint64( bool A0, SourceInfo L) {
22533 return emitOp<bool>(OP_IncUint64, A0, L);
22534}
22535bool ByteCodeEmitter::emitIncIntAP( bool A0, SourceInfo L) {
22536 return emitOp<bool>(OP_IncIntAP, A0, L);
22537}
22538bool ByteCodeEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
22539 return emitOp<bool>(OP_IncIntAPS, A0, L);
22540}
22541bool ByteCodeEmitter::emitIncBool( bool A0, SourceInfo L) {
22542 return emitOp<bool>(OP_IncBool, A0, L);
22543}
22544bool ByteCodeEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
22545 return emitOp<bool>(OP_IncFixedPoint, A0, L);
22546}
22547#endif
22548#ifdef GET_EVAL_IMPL
22549bool EvalEmitter::emitIncSint8( bool A0, SourceInfo L) {
22550 if (!isActive()) return true;
22551 CurrentSource = L;
22552 return Inc<PT_Sint8>(S, OpPC, A0);
22553}
22554bool EvalEmitter::emitIncUint8( bool A0, SourceInfo L) {
22555 if (!isActive()) return true;
22556 CurrentSource = L;
22557 return Inc<PT_Uint8>(S, OpPC, A0);
22558}
22559bool EvalEmitter::emitIncSint16( bool A0, SourceInfo L) {
22560 if (!isActive()) return true;
22561 CurrentSource = L;
22562 return Inc<PT_Sint16>(S, OpPC, A0);
22563}
22564bool EvalEmitter::emitIncUint16( bool A0, SourceInfo L) {
22565 if (!isActive()) return true;
22566 CurrentSource = L;
22567 return Inc<PT_Uint16>(S, OpPC, A0);
22568}
22569bool EvalEmitter::emitIncSint32( bool A0, SourceInfo L) {
22570 if (!isActive()) return true;
22571 CurrentSource = L;
22572 return Inc<PT_Sint32>(S, OpPC, A0);
22573}
22574bool EvalEmitter::emitIncUint32( bool A0, SourceInfo L) {
22575 if (!isActive()) return true;
22576 CurrentSource = L;
22577 return Inc<PT_Uint32>(S, OpPC, A0);
22578}
22579bool EvalEmitter::emitIncSint64( bool A0, SourceInfo L) {
22580 if (!isActive()) return true;
22581 CurrentSource = L;
22582 return Inc<PT_Sint64>(S, OpPC, A0);
22583}
22584bool EvalEmitter::emitIncUint64( bool A0, SourceInfo L) {
22585 if (!isActive()) return true;
22586 CurrentSource = L;
22587 return Inc<PT_Uint64>(S, OpPC, A0);
22588}
22589bool EvalEmitter::emitIncIntAP( bool A0, SourceInfo L) {
22590 if (!isActive()) return true;
22591 CurrentSource = L;
22592 return Inc<PT_IntAP>(S, OpPC, A0);
22593}
22594bool EvalEmitter::emitIncIntAPS( bool A0, SourceInfo L) {
22595 if (!isActive()) return true;
22596 CurrentSource = L;
22597 return Inc<PT_IntAPS>(S, OpPC, A0);
22598}
22599bool EvalEmitter::emitIncBool( bool A0, SourceInfo L) {
22600 if (!isActive()) return true;
22601 CurrentSource = L;
22602 return Inc<PT_Bool>(S, OpPC, A0);
22603}
22604bool EvalEmitter::emitIncFixedPoint( bool A0, SourceInfo L) {
22605 if (!isActive()) return true;
22606 CurrentSource = L;
22607 return Inc<PT_FixedPoint>(S, OpPC, A0);
22608}
22609#endif
22610#ifdef GET_OPCODE_NAMES
22611OP_IncBitfieldSint8,
22612OP_IncBitfieldUint8,
22613OP_IncBitfieldSint16,
22614OP_IncBitfieldUint16,
22615OP_IncBitfieldSint32,
22616OP_IncBitfieldUint32,
22617OP_IncBitfieldSint64,
22618OP_IncBitfieldUint64,
22619OP_IncBitfieldIntAP,
22620OP_IncBitfieldIntAPS,
22621OP_IncBitfieldBool,
22622OP_IncBitfieldFixedPoint,
22623#endif
22624#ifdef GET_INTERP
22625case OP_IncBitfieldSint8: {
22626 const auto V0 = ReadArg<bool>(S, PC);
22627 const auto V1 = ReadArg<uint32_t>(S, PC);
22628 if (!IncBitfield<PT_Sint8>(S, OpPC, V0, V1))
22629 return false;
22630 continue;
22631}
22632case OP_IncBitfieldUint8: {
22633 const auto V0 = ReadArg<bool>(S, PC);
22634 const auto V1 = ReadArg<uint32_t>(S, PC);
22635 if (!IncBitfield<PT_Uint8>(S, OpPC, V0, V1))
22636 return false;
22637 continue;
22638}
22639case OP_IncBitfieldSint16: {
22640 const auto V0 = ReadArg<bool>(S, PC);
22641 const auto V1 = ReadArg<uint32_t>(S, PC);
22642 if (!IncBitfield<PT_Sint16>(S, OpPC, V0, V1))
22643 return false;
22644 continue;
22645}
22646case OP_IncBitfieldUint16: {
22647 const auto V0 = ReadArg<bool>(S, PC);
22648 const auto V1 = ReadArg<uint32_t>(S, PC);
22649 if (!IncBitfield<PT_Uint16>(S, OpPC, V0, V1))
22650 return false;
22651 continue;
22652}
22653case OP_IncBitfieldSint32: {
22654 const auto V0 = ReadArg<bool>(S, PC);
22655 const auto V1 = ReadArg<uint32_t>(S, PC);
22656 if (!IncBitfield<PT_Sint32>(S, OpPC, V0, V1))
22657 return false;
22658 continue;
22659}
22660case OP_IncBitfieldUint32: {
22661 const auto V0 = ReadArg<bool>(S, PC);
22662 const auto V1 = ReadArg<uint32_t>(S, PC);
22663 if (!IncBitfield<PT_Uint32>(S, OpPC, V0, V1))
22664 return false;
22665 continue;
22666}
22667case OP_IncBitfieldSint64: {
22668 const auto V0 = ReadArg<bool>(S, PC);
22669 const auto V1 = ReadArg<uint32_t>(S, PC);
22670 if (!IncBitfield<PT_Sint64>(S, OpPC, V0, V1))
22671 return false;
22672 continue;
22673}
22674case OP_IncBitfieldUint64: {
22675 const auto V0 = ReadArg<bool>(S, PC);
22676 const auto V1 = ReadArg<uint32_t>(S, PC);
22677 if (!IncBitfield<PT_Uint64>(S, OpPC, V0, V1))
22678 return false;
22679 continue;
22680}
22681case OP_IncBitfieldIntAP: {
22682 const auto V0 = ReadArg<bool>(S, PC);
22683 const auto V1 = ReadArg<uint32_t>(S, PC);
22684 if (!IncBitfield<PT_IntAP>(S, OpPC, V0, V1))
22685 return false;
22686 continue;
22687}
22688case OP_IncBitfieldIntAPS: {
22689 const auto V0 = ReadArg<bool>(S, PC);
22690 const auto V1 = ReadArg<uint32_t>(S, PC);
22691 if (!IncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
22692 return false;
22693 continue;
22694}
22695case OP_IncBitfieldBool: {
22696 const auto V0 = ReadArg<bool>(S, PC);
22697 const auto V1 = ReadArg<uint32_t>(S, PC);
22698 if (!IncBitfield<PT_Bool>(S, OpPC, V0, V1))
22699 return false;
22700 continue;
22701}
22702case OP_IncBitfieldFixedPoint: {
22703 const auto V0 = ReadArg<bool>(S, PC);
22704 const auto V1 = ReadArg<uint32_t>(S, PC);
22705 if (!IncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
22706 return false;
22707 continue;
22708}
22709#endif
22710#ifdef GET_DISASM
22711case OP_IncBitfieldSint8:
22712 Text.Op = PrintName("IncBitfieldSint8");
22713 Text.Args.push_back(printArg<bool>(P, PC));
22714 Text.Args.push_back(printArg<uint32_t>(P, PC));
22715 break;
22716case OP_IncBitfieldUint8:
22717 Text.Op = PrintName("IncBitfieldUint8");
22718 Text.Args.push_back(printArg<bool>(P, PC));
22719 Text.Args.push_back(printArg<uint32_t>(P, PC));
22720 break;
22721case OP_IncBitfieldSint16:
22722 Text.Op = PrintName("IncBitfieldSint16");
22723 Text.Args.push_back(printArg<bool>(P, PC));
22724 Text.Args.push_back(printArg<uint32_t>(P, PC));
22725 break;
22726case OP_IncBitfieldUint16:
22727 Text.Op = PrintName("IncBitfieldUint16");
22728 Text.Args.push_back(printArg<bool>(P, PC));
22729 Text.Args.push_back(printArg<uint32_t>(P, PC));
22730 break;
22731case OP_IncBitfieldSint32:
22732 Text.Op = PrintName("IncBitfieldSint32");
22733 Text.Args.push_back(printArg<bool>(P, PC));
22734 Text.Args.push_back(printArg<uint32_t>(P, PC));
22735 break;
22736case OP_IncBitfieldUint32:
22737 Text.Op = PrintName("IncBitfieldUint32");
22738 Text.Args.push_back(printArg<bool>(P, PC));
22739 Text.Args.push_back(printArg<uint32_t>(P, PC));
22740 break;
22741case OP_IncBitfieldSint64:
22742 Text.Op = PrintName("IncBitfieldSint64");
22743 Text.Args.push_back(printArg<bool>(P, PC));
22744 Text.Args.push_back(printArg<uint32_t>(P, PC));
22745 break;
22746case OP_IncBitfieldUint64:
22747 Text.Op = PrintName("IncBitfieldUint64");
22748 Text.Args.push_back(printArg<bool>(P, PC));
22749 Text.Args.push_back(printArg<uint32_t>(P, PC));
22750 break;
22751case OP_IncBitfieldIntAP:
22752 Text.Op = PrintName("IncBitfieldIntAP");
22753 Text.Args.push_back(printArg<bool>(P, PC));
22754 Text.Args.push_back(printArg<uint32_t>(P, PC));
22755 break;
22756case OP_IncBitfieldIntAPS:
22757 Text.Op = PrintName("IncBitfieldIntAPS");
22758 Text.Args.push_back(printArg<bool>(P, PC));
22759 Text.Args.push_back(printArg<uint32_t>(P, PC));
22760 break;
22761case OP_IncBitfieldBool:
22762 Text.Op = PrintName("IncBitfieldBool");
22763 Text.Args.push_back(printArg<bool>(P, PC));
22764 Text.Args.push_back(printArg<uint32_t>(P, PC));
22765 break;
22766case OP_IncBitfieldFixedPoint:
22767 Text.Op = PrintName("IncBitfieldFixedPoint");
22768 Text.Args.push_back(printArg<bool>(P, PC));
22769 Text.Args.push_back(printArg<uint32_t>(P, PC));
22770 break;
22771#endif
22772#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22773bool emitIncBitfieldSint8( bool , uint32_t , SourceInfo);
22774bool emitIncBitfieldUint8( bool , uint32_t , SourceInfo);
22775bool emitIncBitfieldSint16( bool , uint32_t , SourceInfo);
22776bool emitIncBitfieldUint16( bool , uint32_t , SourceInfo);
22777bool emitIncBitfieldSint32( bool , uint32_t , SourceInfo);
22778bool emitIncBitfieldUint32( bool , uint32_t , SourceInfo);
22779bool emitIncBitfieldSint64( bool , uint32_t , SourceInfo);
22780bool emitIncBitfieldUint64( bool , uint32_t , SourceInfo);
22781bool emitIncBitfieldIntAP( bool , uint32_t , SourceInfo);
22782bool emitIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
22783bool emitIncBitfieldBool( bool , uint32_t , SourceInfo);
22784bool emitIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
22785#endif
22786#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
22787[[nodiscard]] bool emitIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
22788#endif
22789#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
22790bool
22791#if defined(GET_EVAL_IMPL)
22792EvalEmitter
22793#else
22794ByteCodeEmitter
22795#endif
22796::emitIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
22797 switch (T0) {
22798 case PT_Sint8:
22799 return emitIncBitfieldSint8(A0, A1, I);
22800 case PT_Uint8:
22801 return emitIncBitfieldUint8(A0, A1, I);
22802 case PT_Sint16:
22803 return emitIncBitfieldSint16(A0, A1, I);
22804 case PT_Uint16:
22805 return emitIncBitfieldUint16(A0, A1, I);
22806 case PT_Sint32:
22807 return emitIncBitfieldSint32(A0, A1, I);
22808 case PT_Uint32:
22809 return emitIncBitfieldUint32(A0, A1, I);
22810 case PT_Sint64:
22811 return emitIncBitfieldSint64(A0, A1, I);
22812 case PT_Uint64:
22813 return emitIncBitfieldUint64(A0, A1, I);
22814 case PT_IntAP:
22815 return emitIncBitfieldIntAP(A0, A1, I);
22816 case PT_IntAPS:
22817 return emitIncBitfieldIntAPS(A0, A1, I);
22818 case PT_Bool:
22819 return emitIncBitfieldBool(A0, A1, I);
22820 case PT_FixedPoint:
22821 return emitIncBitfieldFixedPoint(A0, A1, I);
22822 default: llvm_unreachable("invalid type: emitIncBitfield");
22823 }
22824 llvm_unreachable("invalid enum value");
22825}
22826#endif
22827#ifdef GET_LINK_IMPL
22828bool ByteCodeEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
22829 return emitOp<bool, uint32_t>(OP_IncBitfieldSint8, A0, A1, L);
22830}
22831bool ByteCodeEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
22832 return emitOp<bool, uint32_t>(OP_IncBitfieldUint8, A0, A1, L);
22833}
22834bool ByteCodeEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
22835 return emitOp<bool, uint32_t>(OP_IncBitfieldSint16, A0, A1, L);
22836}
22837bool ByteCodeEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
22838 return emitOp<bool, uint32_t>(OP_IncBitfieldUint16, A0, A1, L);
22839}
22840bool ByteCodeEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
22841 return emitOp<bool, uint32_t>(OP_IncBitfieldSint32, A0, A1, L);
22842}
22843bool ByteCodeEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
22844 return emitOp<bool, uint32_t>(OP_IncBitfieldUint32, A0, A1, L);
22845}
22846bool ByteCodeEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
22847 return emitOp<bool, uint32_t>(OP_IncBitfieldSint64, A0, A1, L);
22848}
22849bool ByteCodeEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
22850 return emitOp<bool, uint32_t>(OP_IncBitfieldUint64, A0, A1, L);
22851}
22852bool ByteCodeEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
22853 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAP, A0, A1, L);
22854}
22855bool ByteCodeEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
22856 return emitOp<bool, uint32_t>(OP_IncBitfieldIntAPS, A0, A1, L);
22857}
22858bool ByteCodeEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
22859 return emitOp<bool, uint32_t>(OP_IncBitfieldBool, A0, A1, L);
22860}
22861bool ByteCodeEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
22862 return emitOp<bool, uint32_t>(OP_IncBitfieldFixedPoint, A0, A1, L);
22863}
22864#endif
22865#ifdef GET_EVAL_IMPL
22866bool EvalEmitter::emitIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
22867 if (!isActive()) return true;
22868 CurrentSource = L;
22869 return IncBitfield<PT_Sint8>(S, OpPC, A0, A1);
22870}
22871bool EvalEmitter::emitIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
22872 if (!isActive()) return true;
22873 CurrentSource = L;
22874 return IncBitfield<PT_Uint8>(S, OpPC, A0, A1);
22875}
22876bool EvalEmitter::emitIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
22877 if (!isActive()) return true;
22878 CurrentSource = L;
22879 return IncBitfield<PT_Sint16>(S, OpPC, A0, A1);
22880}
22881bool EvalEmitter::emitIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
22882 if (!isActive()) return true;
22883 CurrentSource = L;
22884 return IncBitfield<PT_Uint16>(S, OpPC, A0, A1);
22885}
22886bool EvalEmitter::emitIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
22887 if (!isActive()) return true;
22888 CurrentSource = L;
22889 return IncBitfield<PT_Sint32>(S, OpPC, A0, A1);
22890}
22891bool EvalEmitter::emitIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
22892 if (!isActive()) return true;
22893 CurrentSource = L;
22894 return IncBitfield<PT_Uint32>(S, OpPC, A0, A1);
22895}
22896bool EvalEmitter::emitIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
22897 if (!isActive()) return true;
22898 CurrentSource = L;
22899 return IncBitfield<PT_Sint64>(S, OpPC, A0, A1);
22900}
22901bool EvalEmitter::emitIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
22902 if (!isActive()) return true;
22903 CurrentSource = L;
22904 return IncBitfield<PT_Uint64>(S, OpPC, A0, A1);
22905}
22906bool EvalEmitter::emitIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
22907 if (!isActive()) return true;
22908 CurrentSource = L;
22909 return IncBitfield<PT_IntAP>(S, OpPC, A0, A1);
22910}
22911bool EvalEmitter::emitIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
22912 if (!isActive()) return true;
22913 CurrentSource = L;
22914 return IncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
22915}
22916bool EvalEmitter::emitIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
22917 if (!isActive()) return true;
22918 CurrentSource = L;
22919 return IncBitfield<PT_Bool>(S, OpPC, A0, A1);
22920}
22921bool EvalEmitter::emitIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
22922 if (!isActive()) return true;
22923 CurrentSource = L;
22924 return IncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
22925}
22926#endif
22927#ifdef GET_OPCODE_NAMES
22928OP_IncPopSint8,
22929OP_IncPopUint8,
22930OP_IncPopSint16,
22931OP_IncPopUint16,
22932OP_IncPopSint32,
22933OP_IncPopUint32,
22934OP_IncPopSint64,
22935OP_IncPopUint64,
22936OP_IncPopIntAP,
22937OP_IncPopIntAPS,
22938OP_IncPopBool,
22939OP_IncPopFixedPoint,
22940#endif
22941#ifdef GET_INTERP
22942case OP_IncPopSint8: {
22943 const auto V0 = ReadArg<bool>(S, PC);
22944 if (!IncPop<PT_Sint8>(S, OpPC, V0))
22945 return false;
22946 continue;
22947}
22948case OP_IncPopUint8: {
22949 const auto V0 = ReadArg<bool>(S, PC);
22950 if (!IncPop<PT_Uint8>(S, OpPC, V0))
22951 return false;
22952 continue;
22953}
22954case OP_IncPopSint16: {
22955 const auto V0 = ReadArg<bool>(S, PC);
22956 if (!IncPop<PT_Sint16>(S, OpPC, V0))
22957 return false;
22958 continue;
22959}
22960case OP_IncPopUint16: {
22961 const auto V0 = ReadArg<bool>(S, PC);
22962 if (!IncPop<PT_Uint16>(S, OpPC, V0))
22963 return false;
22964 continue;
22965}
22966case OP_IncPopSint32: {
22967 const auto V0 = ReadArg<bool>(S, PC);
22968 if (!IncPop<PT_Sint32>(S, OpPC, V0))
22969 return false;
22970 continue;
22971}
22972case OP_IncPopUint32: {
22973 const auto V0 = ReadArg<bool>(S, PC);
22974 if (!IncPop<PT_Uint32>(S, OpPC, V0))
22975 return false;
22976 continue;
22977}
22978case OP_IncPopSint64: {
22979 const auto V0 = ReadArg<bool>(S, PC);
22980 if (!IncPop<PT_Sint64>(S, OpPC, V0))
22981 return false;
22982 continue;
22983}
22984case OP_IncPopUint64: {
22985 const auto V0 = ReadArg<bool>(S, PC);
22986 if (!IncPop<PT_Uint64>(S, OpPC, V0))
22987 return false;
22988 continue;
22989}
22990case OP_IncPopIntAP: {
22991 const auto V0 = ReadArg<bool>(S, PC);
22992 if (!IncPop<PT_IntAP>(S, OpPC, V0))
22993 return false;
22994 continue;
22995}
22996case OP_IncPopIntAPS: {
22997 const auto V0 = ReadArg<bool>(S, PC);
22998 if (!IncPop<PT_IntAPS>(S, OpPC, V0))
22999 return false;
23000 continue;
23001}
23002case OP_IncPopBool: {
23003 const auto V0 = ReadArg<bool>(S, PC);
23004 if (!IncPop<PT_Bool>(S, OpPC, V0))
23005 return false;
23006 continue;
23007}
23008case OP_IncPopFixedPoint: {
23009 const auto V0 = ReadArg<bool>(S, PC);
23010 if (!IncPop<PT_FixedPoint>(S, OpPC, V0))
23011 return false;
23012 continue;
23013}
23014#endif
23015#ifdef GET_DISASM
23016case OP_IncPopSint8:
23017 Text.Op = PrintName("IncPopSint8");
23018 Text.Args.push_back(printArg<bool>(P, PC));
23019 break;
23020case OP_IncPopUint8:
23021 Text.Op = PrintName("IncPopUint8");
23022 Text.Args.push_back(printArg<bool>(P, PC));
23023 break;
23024case OP_IncPopSint16:
23025 Text.Op = PrintName("IncPopSint16");
23026 Text.Args.push_back(printArg<bool>(P, PC));
23027 break;
23028case OP_IncPopUint16:
23029 Text.Op = PrintName("IncPopUint16");
23030 Text.Args.push_back(printArg<bool>(P, PC));
23031 break;
23032case OP_IncPopSint32:
23033 Text.Op = PrintName("IncPopSint32");
23034 Text.Args.push_back(printArg<bool>(P, PC));
23035 break;
23036case OP_IncPopUint32:
23037 Text.Op = PrintName("IncPopUint32");
23038 Text.Args.push_back(printArg<bool>(P, PC));
23039 break;
23040case OP_IncPopSint64:
23041 Text.Op = PrintName("IncPopSint64");
23042 Text.Args.push_back(printArg<bool>(P, PC));
23043 break;
23044case OP_IncPopUint64:
23045 Text.Op = PrintName("IncPopUint64");
23046 Text.Args.push_back(printArg<bool>(P, PC));
23047 break;
23048case OP_IncPopIntAP:
23049 Text.Op = PrintName("IncPopIntAP");
23050 Text.Args.push_back(printArg<bool>(P, PC));
23051 break;
23052case OP_IncPopIntAPS:
23053 Text.Op = PrintName("IncPopIntAPS");
23054 Text.Args.push_back(printArg<bool>(P, PC));
23055 break;
23056case OP_IncPopBool:
23057 Text.Op = PrintName("IncPopBool");
23058 Text.Args.push_back(printArg<bool>(P, PC));
23059 break;
23060case OP_IncPopFixedPoint:
23061 Text.Op = PrintName("IncPopFixedPoint");
23062 Text.Args.push_back(printArg<bool>(P, PC));
23063 break;
23064#endif
23065#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23066bool emitIncPopSint8( bool , SourceInfo);
23067bool emitIncPopUint8( bool , SourceInfo);
23068bool emitIncPopSint16( bool , SourceInfo);
23069bool emitIncPopUint16( bool , SourceInfo);
23070bool emitIncPopSint32( bool , SourceInfo);
23071bool emitIncPopUint32( bool , SourceInfo);
23072bool emitIncPopSint64( bool , SourceInfo);
23073bool emitIncPopUint64( bool , SourceInfo);
23074bool emitIncPopIntAP( bool , SourceInfo);
23075bool emitIncPopIntAPS( bool , SourceInfo);
23076bool emitIncPopBool( bool , SourceInfo);
23077bool emitIncPopFixedPoint( bool , SourceInfo);
23078#endif
23079#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23080[[nodiscard]] bool emitIncPop(PrimType, bool, SourceInfo I);
23081#endif
23082#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23083bool
23084#if defined(GET_EVAL_IMPL)
23085EvalEmitter
23086#else
23087ByteCodeEmitter
23088#endif
23089::emitIncPop(PrimType T0, bool A0, SourceInfo I) {
23090 switch (T0) {
23091 case PT_Sint8:
23092 return emitIncPopSint8(A0, I);
23093 case PT_Uint8:
23094 return emitIncPopUint8(A0, I);
23095 case PT_Sint16:
23096 return emitIncPopSint16(A0, I);
23097 case PT_Uint16:
23098 return emitIncPopUint16(A0, I);
23099 case PT_Sint32:
23100 return emitIncPopSint32(A0, I);
23101 case PT_Uint32:
23102 return emitIncPopUint32(A0, I);
23103 case PT_Sint64:
23104 return emitIncPopSint64(A0, I);
23105 case PT_Uint64:
23106 return emitIncPopUint64(A0, I);
23107 case PT_IntAP:
23108 return emitIncPopIntAP(A0, I);
23109 case PT_IntAPS:
23110 return emitIncPopIntAPS(A0, I);
23111 case PT_Bool:
23112 return emitIncPopBool(A0, I);
23113 case PT_FixedPoint:
23114 return emitIncPopFixedPoint(A0, I);
23115 default: llvm_unreachable("invalid type: emitIncPop");
23116 }
23117 llvm_unreachable("invalid enum value");
23118}
23119#endif
23120#ifdef GET_LINK_IMPL
23121bool ByteCodeEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
23122 return emitOp<bool>(OP_IncPopSint8, A0, L);
23123}
23124bool ByteCodeEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
23125 return emitOp<bool>(OP_IncPopUint8, A0, L);
23126}
23127bool ByteCodeEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
23128 return emitOp<bool>(OP_IncPopSint16, A0, L);
23129}
23130bool ByteCodeEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
23131 return emitOp<bool>(OP_IncPopUint16, A0, L);
23132}
23133bool ByteCodeEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
23134 return emitOp<bool>(OP_IncPopSint32, A0, L);
23135}
23136bool ByteCodeEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
23137 return emitOp<bool>(OP_IncPopUint32, A0, L);
23138}
23139bool ByteCodeEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
23140 return emitOp<bool>(OP_IncPopSint64, A0, L);
23141}
23142bool ByteCodeEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
23143 return emitOp<bool>(OP_IncPopUint64, A0, L);
23144}
23145bool ByteCodeEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
23146 return emitOp<bool>(OP_IncPopIntAP, A0, L);
23147}
23148bool ByteCodeEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
23149 return emitOp<bool>(OP_IncPopIntAPS, A0, L);
23150}
23151bool ByteCodeEmitter::emitIncPopBool( bool A0, SourceInfo L) {
23152 return emitOp<bool>(OP_IncPopBool, A0, L);
23153}
23154bool ByteCodeEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
23155 return emitOp<bool>(OP_IncPopFixedPoint, A0, L);
23156}
23157#endif
23158#ifdef GET_EVAL_IMPL
23159bool EvalEmitter::emitIncPopSint8( bool A0, SourceInfo L) {
23160 if (!isActive()) return true;
23161 CurrentSource = L;
23162 return IncPop<PT_Sint8>(S, OpPC, A0);
23163}
23164bool EvalEmitter::emitIncPopUint8( bool A0, SourceInfo L) {
23165 if (!isActive()) return true;
23166 CurrentSource = L;
23167 return IncPop<PT_Uint8>(S, OpPC, A0);
23168}
23169bool EvalEmitter::emitIncPopSint16( bool A0, SourceInfo L) {
23170 if (!isActive()) return true;
23171 CurrentSource = L;
23172 return IncPop<PT_Sint16>(S, OpPC, A0);
23173}
23174bool EvalEmitter::emitIncPopUint16( bool A0, SourceInfo L) {
23175 if (!isActive()) return true;
23176 CurrentSource = L;
23177 return IncPop<PT_Uint16>(S, OpPC, A0);
23178}
23179bool EvalEmitter::emitIncPopSint32( bool A0, SourceInfo L) {
23180 if (!isActive()) return true;
23181 CurrentSource = L;
23182 return IncPop<PT_Sint32>(S, OpPC, A0);
23183}
23184bool EvalEmitter::emitIncPopUint32( bool A0, SourceInfo L) {
23185 if (!isActive()) return true;
23186 CurrentSource = L;
23187 return IncPop<PT_Uint32>(S, OpPC, A0);
23188}
23189bool EvalEmitter::emitIncPopSint64( bool A0, SourceInfo L) {
23190 if (!isActive()) return true;
23191 CurrentSource = L;
23192 return IncPop<PT_Sint64>(S, OpPC, A0);
23193}
23194bool EvalEmitter::emitIncPopUint64( bool A0, SourceInfo L) {
23195 if (!isActive()) return true;
23196 CurrentSource = L;
23197 return IncPop<PT_Uint64>(S, OpPC, A0);
23198}
23199bool EvalEmitter::emitIncPopIntAP( bool A0, SourceInfo L) {
23200 if (!isActive()) return true;
23201 CurrentSource = L;
23202 return IncPop<PT_IntAP>(S, OpPC, A0);
23203}
23204bool EvalEmitter::emitIncPopIntAPS( bool A0, SourceInfo L) {
23205 if (!isActive()) return true;
23206 CurrentSource = L;
23207 return IncPop<PT_IntAPS>(S, OpPC, A0);
23208}
23209bool EvalEmitter::emitIncPopBool( bool A0, SourceInfo L) {
23210 if (!isActive()) return true;
23211 CurrentSource = L;
23212 return IncPop<PT_Bool>(S, OpPC, A0);
23213}
23214bool EvalEmitter::emitIncPopFixedPoint( bool A0, SourceInfo L) {
23215 if (!isActive()) return true;
23216 CurrentSource = L;
23217 return IncPop<PT_FixedPoint>(S, OpPC, A0);
23218}
23219#endif
23220#ifdef GET_OPCODE_NAMES
23221OP_IncPopBitfieldSint8,
23222OP_IncPopBitfieldUint8,
23223OP_IncPopBitfieldSint16,
23224OP_IncPopBitfieldUint16,
23225OP_IncPopBitfieldSint32,
23226OP_IncPopBitfieldUint32,
23227OP_IncPopBitfieldSint64,
23228OP_IncPopBitfieldUint64,
23229OP_IncPopBitfieldIntAP,
23230OP_IncPopBitfieldIntAPS,
23231OP_IncPopBitfieldBool,
23232OP_IncPopBitfieldFixedPoint,
23233#endif
23234#ifdef GET_INTERP
23235case OP_IncPopBitfieldSint8: {
23236 const auto V0 = ReadArg<bool>(S, PC);
23237 const auto V1 = ReadArg<uint32_t>(S, PC);
23238 if (!IncPopBitfield<PT_Sint8>(S, OpPC, V0, V1))
23239 return false;
23240 continue;
23241}
23242case OP_IncPopBitfieldUint8: {
23243 const auto V0 = ReadArg<bool>(S, PC);
23244 const auto V1 = ReadArg<uint32_t>(S, PC);
23245 if (!IncPopBitfield<PT_Uint8>(S, OpPC, V0, V1))
23246 return false;
23247 continue;
23248}
23249case OP_IncPopBitfieldSint16: {
23250 const auto V0 = ReadArg<bool>(S, PC);
23251 const auto V1 = ReadArg<uint32_t>(S, PC);
23252 if (!IncPopBitfield<PT_Sint16>(S, OpPC, V0, V1))
23253 return false;
23254 continue;
23255}
23256case OP_IncPopBitfieldUint16: {
23257 const auto V0 = ReadArg<bool>(S, PC);
23258 const auto V1 = ReadArg<uint32_t>(S, PC);
23259 if (!IncPopBitfield<PT_Uint16>(S, OpPC, V0, V1))
23260 return false;
23261 continue;
23262}
23263case OP_IncPopBitfieldSint32: {
23264 const auto V0 = ReadArg<bool>(S, PC);
23265 const auto V1 = ReadArg<uint32_t>(S, PC);
23266 if (!IncPopBitfield<PT_Sint32>(S, OpPC, V0, V1))
23267 return false;
23268 continue;
23269}
23270case OP_IncPopBitfieldUint32: {
23271 const auto V0 = ReadArg<bool>(S, PC);
23272 const auto V1 = ReadArg<uint32_t>(S, PC);
23273 if (!IncPopBitfield<PT_Uint32>(S, OpPC, V0, V1))
23274 return false;
23275 continue;
23276}
23277case OP_IncPopBitfieldSint64: {
23278 const auto V0 = ReadArg<bool>(S, PC);
23279 const auto V1 = ReadArg<uint32_t>(S, PC);
23280 if (!IncPopBitfield<PT_Sint64>(S, OpPC, V0, V1))
23281 return false;
23282 continue;
23283}
23284case OP_IncPopBitfieldUint64: {
23285 const auto V0 = ReadArg<bool>(S, PC);
23286 const auto V1 = ReadArg<uint32_t>(S, PC);
23287 if (!IncPopBitfield<PT_Uint64>(S, OpPC, V0, V1))
23288 return false;
23289 continue;
23290}
23291case OP_IncPopBitfieldIntAP: {
23292 const auto V0 = ReadArg<bool>(S, PC);
23293 const auto V1 = ReadArg<uint32_t>(S, PC);
23294 if (!IncPopBitfield<PT_IntAP>(S, OpPC, V0, V1))
23295 return false;
23296 continue;
23297}
23298case OP_IncPopBitfieldIntAPS: {
23299 const auto V0 = ReadArg<bool>(S, PC);
23300 const auto V1 = ReadArg<uint32_t>(S, PC);
23301 if (!IncPopBitfield<PT_IntAPS>(S, OpPC, V0, V1))
23302 return false;
23303 continue;
23304}
23305case OP_IncPopBitfieldBool: {
23306 const auto V0 = ReadArg<bool>(S, PC);
23307 const auto V1 = ReadArg<uint32_t>(S, PC);
23308 if (!IncPopBitfield<PT_Bool>(S, OpPC, V0, V1))
23309 return false;
23310 continue;
23311}
23312case OP_IncPopBitfieldFixedPoint: {
23313 const auto V0 = ReadArg<bool>(S, PC);
23314 const auto V1 = ReadArg<uint32_t>(S, PC);
23315 if (!IncPopBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
23316 return false;
23317 continue;
23318}
23319#endif
23320#ifdef GET_DISASM
23321case OP_IncPopBitfieldSint8:
23322 Text.Op = PrintName("IncPopBitfieldSint8");
23323 Text.Args.push_back(printArg<bool>(P, PC));
23324 Text.Args.push_back(printArg<uint32_t>(P, PC));
23325 break;
23326case OP_IncPopBitfieldUint8:
23327 Text.Op = PrintName("IncPopBitfieldUint8");
23328 Text.Args.push_back(printArg<bool>(P, PC));
23329 Text.Args.push_back(printArg<uint32_t>(P, PC));
23330 break;
23331case OP_IncPopBitfieldSint16:
23332 Text.Op = PrintName("IncPopBitfieldSint16");
23333 Text.Args.push_back(printArg<bool>(P, PC));
23334 Text.Args.push_back(printArg<uint32_t>(P, PC));
23335 break;
23336case OP_IncPopBitfieldUint16:
23337 Text.Op = PrintName("IncPopBitfieldUint16");
23338 Text.Args.push_back(printArg<bool>(P, PC));
23339 Text.Args.push_back(printArg<uint32_t>(P, PC));
23340 break;
23341case OP_IncPopBitfieldSint32:
23342 Text.Op = PrintName("IncPopBitfieldSint32");
23343 Text.Args.push_back(printArg<bool>(P, PC));
23344 Text.Args.push_back(printArg<uint32_t>(P, PC));
23345 break;
23346case OP_IncPopBitfieldUint32:
23347 Text.Op = PrintName("IncPopBitfieldUint32");
23348 Text.Args.push_back(printArg<bool>(P, PC));
23349 Text.Args.push_back(printArg<uint32_t>(P, PC));
23350 break;
23351case OP_IncPopBitfieldSint64:
23352 Text.Op = PrintName("IncPopBitfieldSint64");
23353 Text.Args.push_back(printArg<bool>(P, PC));
23354 Text.Args.push_back(printArg<uint32_t>(P, PC));
23355 break;
23356case OP_IncPopBitfieldUint64:
23357 Text.Op = PrintName("IncPopBitfieldUint64");
23358 Text.Args.push_back(printArg<bool>(P, PC));
23359 Text.Args.push_back(printArg<uint32_t>(P, PC));
23360 break;
23361case OP_IncPopBitfieldIntAP:
23362 Text.Op = PrintName("IncPopBitfieldIntAP");
23363 Text.Args.push_back(printArg<bool>(P, PC));
23364 Text.Args.push_back(printArg<uint32_t>(P, PC));
23365 break;
23366case OP_IncPopBitfieldIntAPS:
23367 Text.Op = PrintName("IncPopBitfieldIntAPS");
23368 Text.Args.push_back(printArg<bool>(P, PC));
23369 Text.Args.push_back(printArg<uint32_t>(P, PC));
23370 break;
23371case OP_IncPopBitfieldBool:
23372 Text.Op = PrintName("IncPopBitfieldBool");
23373 Text.Args.push_back(printArg<bool>(P, PC));
23374 Text.Args.push_back(printArg<uint32_t>(P, PC));
23375 break;
23376case OP_IncPopBitfieldFixedPoint:
23377 Text.Op = PrintName("IncPopBitfieldFixedPoint");
23378 Text.Args.push_back(printArg<bool>(P, PC));
23379 Text.Args.push_back(printArg<uint32_t>(P, PC));
23380 break;
23381#endif
23382#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23383bool emitIncPopBitfieldSint8( bool , uint32_t , SourceInfo);
23384bool emitIncPopBitfieldUint8( bool , uint32_t , SourceInfo);
23385bool emitIncPopBitfieldSint16( bool , uint32_t , SourceInfo);
23386bool emitIncPopBitfieldUint16( bool , uint32_t , SourceInfo);
23387bool emitIncPopBitfieldSint32( bool , uint32_t , SourceInfo);
23388bool emitIncPopBitfieldUint32( bool , uint32_t , SourceInfo);
23389bool emitIncPopBitfieldSint64( bool , uint32_t , SourceInfo);
23390bool emitIncPopBitfieldUint64( bool , uint32_t , SourceInfo);
23391bool emitIncPopBitfieldIntAP( bool , uint32_t , SourceInfo);
23392bool emitIncPopBitfieldIntAPS( bool , uint32_t , SourceInfo);
23393bool emitIncPopBitfieldBool( bool , uint32_t , SourceInfo);
23394bool emitIncPopBitfieldFixedPoint( bool , uint32_t , SourceInfo);
23395#endif
23396#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23397[[nodiscard]] bool emitIncPopBitfield(PrimType, bool, uint32_t, SourceInfo I);
23398#endif
23399#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23400bool
23401#if defined(GET_EVAL_IMPL)
23402EvalEmitter
23403#else
23404ByteCodeEmitter
23405#endif
23406::emitIncPopBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
23407 switch (T0) {
23408 case PT_Sint8:
23409 return emitIncPopBitfieldSint8(A0, A1, I);
23410 case PT_Uint8:
23411 return emitIncPopBitfieldUint8(A0, A1, I);
23412 case PT_Sint16:
23413 return emitIncPopBitfieldSint16(A0, A1, I);
23414 case PT_Uint16:
23415 return emitIncPopBitfieldUint16(A0, A1, I);
23416 case PT_Sint32:
23417 return emitIncPopBitfieldSint32(A0, A1, I);
23418 case PT_Uint32:
23419 return emitIncPopBitfieldUint32(A0, A1, I);
23420 case PT_Sint64:
23421 return emitIncPopBitfieldSint64(A0, A1, I);
23422 case PT_Uint64:
23423 return emitIncPopBitfieldUint64(A0, A1, I);
23424 case PT_IntAP:
23425 return emitIncPopBitfieldIntAP(A0, A1, I);
23426 case PT_IntAPS:
23427 return emitIncPopBitfieldIntAPS(A0, A1, I);
23428 case PT_Bool:
23429 return emitIncPopBitfieldBool(A0, A1, I);
23430 case PT_FixedPoint:
23431 return emitIncPopBitfieldFixedPoint(A0, A1, I);
23432 default: llvm_unreachable("invalid type: emitIncPopBitfield");
23433 }
23434 llvm_unreachable("invalid enum value");
23435}
23436#endif
23437#ifdef GET_LINK_IMPL
23438bool ByteCodeEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
23439 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint8, A0, A1, L);
23440}
23441bool ByteCodeEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
23442 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint8, A0, A1, L);
23443}
23444bool ByteCodeEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
23445 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint16, A0, A1, L);
23446}
23447bool ByteCodeEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
23448 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint16, A0, A1, L);
23449}
23450bool ByteCodeEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
23451 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint32, A0, A1, L);
23452}
23453bool ByteCodeEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
23454 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint32, A0, A1, L);
23455}
23456bool ByteCodeEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
23457 return emitOp<bool, uint32_t>(OP_IncPopBitfieldSint64, A0, A1, L);
23458}
23459bool ByteCodeEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
23460 return emitOp<bool, uint32_t>(OP_IncPopBitfieldUint64, A0, A1, L);
23461}
23462bool ByteCodeEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
23463 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAP, A0, A1, L);
23464}
23465bool ByteCodeEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
23466 return emitOp<bool, uint32_t>(OP_IncPopBitfieldIntAPS, A0, A1, L);
23467}
23468bool ByteCodeEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
23469 return emitOp<bool, uint32_t>(OP_IncPopBitfieldBool, A0, A1, L);
23470}
23471bool ByteCodeEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
23472 return emitOp<bool, uint32_t>(OP_IncPopBitfieldFixedPoint, A0, A1, L);
23473}
23474#endif
23475#ifdef GET_EVAL_IMPL
23476bool EvalEmitter::emitIncPopBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
23477 if (!isActive()) return true;
23478 CurrentSource = L;
23479 return IncPopBitfield<PT_Sint8>(S, OpPC, A0, A1);
23480}
23481bool EvalEmitter::emitIncPopBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
23482 if (!isActive()) return true;
23483 CurrentSource = L;
23484 return IncPopBitfield<PT_Uint8>(S, OpPC, A0, A1);
23485}
23486bool EvalEmitter::emitIncPopBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
23487 if (!isActive()) return true;
23488 CurrentSource = L;
23489 return IncPopBitfield<PT_Sint16>(S, OpPC, A0, A1);
23490}
23491bool EvalEmitter::emitIncPopBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
23492 if (!isActive()) return true;
23493 CurrentSource = L;
23494 return IncPopBitfield<PT_Uint16>(S, OpPC, A0, A1);
23495}
23496bool EvalEmitter::emitIncPopBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
23497 if (!isActive()) return true;
23498 CurrentSource = L;
23499 return IncPopBitfield<PT_Sint32>(S, OpPC, A0, A1);
23500}
23501bool EvalEmitter::emitIncPopBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
23502 if (!isActive()) return true;
23503 CurrentSource = L;
23504 return IncPopBitfield<PT_Uint32>(S, OpPC, A0, A1);
23505}
23506bool EvalEmitter::emitIncPopBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
23507 if (!isActive()) return true;
23508 CurrentSource = L;
23509 return IncPopBitfield<PT_Sint64>(S, OpPC, A0, A1);
23510}
23511bool EvalEmitter::emitIncPopBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
23512 if (!isActive()) return true;
23513 CurrentSource = L;
23514 return IncPopBitfield<PT_Uint64>(S, OpPC, A0, A1);
23515}
23516bool EvalEmitter::emitIncPopBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
23517 if (!isActive()) return true;
23518 CurrentSource = L;
23519 return IncPopBitfield<PT_IntAP>(S, OpPC, A0, A1);
23520}
23521bool EvalEmitter::emitIncPopBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
23522 if (!isActive()) return true;
23523 CurrentSource = L;
23524 return IncPopBitfield<PT_IntAPS>(S, OpPC, A0, A1);
23525}
23526bool EvalEmitter::emitIncPopBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
23527 if (!isActive()) return true;
23528 CurrentSource = L;
23529 return IncPopBitfield<PT_Bool>(S, OpPC, A0, A1);
23530}
23531bool EvalEmitter::emitIncPopBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
23532 if (!isActive()) return true;
23533 CurrentSource = L;
23534 return IncPopBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
23535}
23536#endif
23537#ifdef GET_OPCODE_NAMES
23538OP_IncPtr,
23539#endif
23540#ifdef GET_INTERP
23541case OP_IncPtr: {
23542 if (!IncPtr(S, OpPC))
23543 return false;
23544 continue;
23545}
23546#endif
23547#ifdef GET_DISASM
23548case OP_IncPtr:
23549 Text.Op = PrintName("IncPtr");
23550 break;
23551#endif
23552#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23553bool emitIncPtr(SourceInfo);
23554#endif
23555#ifdef GET_LINK_IMPL
23556bool ByteCodeEmitter::emitIncPtr(SourceInfo L) {
23557 return emitOp<>(OP_IncPtr, L);
23558}
23559#endif
23560#ifdef GET_EVAL_IMPL
23561bool EvalEmitter::emitIncPtr(SourceInfo L) {
23562 if (!isActive()) return true;
23563 CurrentSource = L;
23564 return IncPtr(S, OpPC);
23565}
23566#endif
23567#ifdef GET_OPCODE_NAMES
23568OP_Incf,
23569#endif
23570#ifdef GET_INTERP
23571case OP_Incf: {
23572 const auto V0 = ReadArg<uint32_t>(S, PC);
23573 if (!Incf(S, OpPC, V0))
23574 return false;
23575 continue;
23576}
23577#endif
23578#ifdef GET_DISASM
23579case OP_Incf:
23580 Text.Op = PrintName("Incf");
23581 Text.Args.push_back(printArg<uint32_t>(P, PC));
23582 break;
23583#endif
23584#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23585bool emitIncf( uint32_t , SourceInfo);
23586#endif
23587#ifdef GET_LINK_IMPL
23588bool ByteCodeEmitter::emitIncf( uint32_t A0, SourceInfo L) {
23589 return emitOp<uint32_t>(OP_Incf, A0, L);
23590}
23591#endif
23592#ifdef GET_EVAL_IMPL
23593bool EvalEmitter::emitIncf( uint32_t A0, SourceInfo L) {
23594 if (!isActive()) return true;
23595 CurrentSource = L;
23596 return Incf(S, OpPC, A0);
23597}
23598#endif
23599#ifdef GET_OPCODE_NAMES
23600OP_IncfPop,
23601#endif
23602#ifdef GET_INTERP
23603case OP_IncfPop: {
23604 const auto V0 = ReadArg<uint32_t>(S, PC);
23605 if (!IncfPop(S, OpPC, V0))
23606 return false;
23607 continue;
23608}
23609#endif
23610#ifdef GET_DISASM
23611case OP_IncfPop:
23612 Text.Op = PrintName("IncfPop");
23613 Text.Args.push_back(printArg<uint32_t>(P, PC));
23614 break;
23615#endif
23616#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23617bool emitIncfPop( uint32_t , SourceInfo);
23618#endif
23619#ifdef GET_LINK_IMPL
23620bool ByteCodeEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
23621 return emitOp<uint32_t>(OP_IncfPop, A0, L);
23622}
23623#endif
23624#ifdef GET_EVAL_IMPL
23625bool EvalEmitter::emitIncfPop( uint32_t A0, SourceInfo L) {
23626 if (!isActive()) return true;
23627 CurrentSource = L;
23628 return IncfPop(S, OpPC, A0);
23629}
23630#endif
23631#ifdef GET_OPCODE_NAMES
23632OP_InitSint8,
23633OP_InitUint8,
23634OP_InitSint16,
23635OP_InitUint16,
23636OP_InitSint32,
23637OP_InitUint32,
23638OP_InitSint64,
23639OP_InitUint64,
23640OP_InitIntAP,
23641OP_InitIntAPS,
23642OP_InitBool,
23643OP_InitFixedPoint,
23644OP_InitPtr,
23645OP_InitMemberPtr,
23646OP_InitFloat,
23647#endif
23648#ifdef GET_INTERP
23649case OP_InitSint8: {
23650 if (!Init<PT_Sint8>(S, OpPC))
23651 return false;
23652 continue;
23653}
23654case OP_InitUint8: {
23655 if (!Init<PT_Uint8>(S, OpPC))
23656 return false;
23657 continue;
23658}
23659case OP_InitSint16: {
23660 if (!Init<PT_Sint16>(S, OpPC))
23661 return false;
23662 continue;
23663}
23664case OP_InitUint16: {
23665 if (!Init<PT_Uint16>(S, OpPC))
23666 return false;
23667 continue;
23668}
23669case OP_InitSint32: {
23670 if (!Init<PT_Sint32>(S, OpPC))
23671 return false;
23672 continue;
23673}
23674case OP_InitUint32: {
23675 if (!Init<PT_Uint32>(S, OpPC))
23676 return false;
23677 continue;
23678}
23679case OP_InitSint64: {
23680 if (!Init<PT_Sint64>(S, OpPC))
23681 return false;
23682 continue;
23683}
23684case OP_InitUint64: {
23685 if (!Init<PT_Uint64>(S, OpPC))
23686 return false;
23687 continue;
23688}
23689case OP_InitIntAP: {
23690 if (!Init<PT_IntAP>(S, OpPC))
23691 return false;
23692 continue;
23693}
23694case OP_InitIntAPS: {
23695 if (!Init<PT_IntAPS>(S, OpPC))
23696 return false;
23697 continue;
23698}
23699case OP_InitBool: {
23700 if (!Init<PT_Bool>(S, OpPC))
23701 return false;
23702 continue;
23703}
23704case OP_InitFixedPoint: {
23705 if (!Init<PT_FixedPoint>(S, OpPC))
23706 return false;
23707 continue;
23708}
23709case OP_InitPtr: {
23710 if (!Init<PT_Ptr>(S, OpPC))
23711 return false;
23712 continue;
23713}
23714case OP_InitMemberPtr: {
23715 if (!Init<PT_MemberPtr>(S, OpPC))
23716 return false;
23717 continue;
23718}
23719case OP_InitFloat: {
23720 if (!Init<PT_Float>(S, OpPC))
23721 return false;
23722 continue;
23723}
23724#endif
23725#ifdef GET_DISASM
23726case OP_InitSint8:
23727 Text.Op = PrintName("InitSint8");
23728 break;
23729case OP_InitUint8:
23730 Text.Op = PrintName("InitUint8");
23731 break;
23732case OP_InitSint16:
23733 Text.Op = PrintName("InitSint16");
23734 break;
23735case OP_InitUint16:
23736 Text.Op = PrintName("InitUint16");
23737 break;
23738case OP_InitSint32:
23739 Text.Op = PrintName("InitSint32");
23740 break;
23741case OP_InitUint32:
23742 Text.Op = PrintName("InitUint32");
23743 break;
23744case OP_InitSint64:
23745 Text.Op = PrintName("InitSint64");
23746 break;
23747case OP_InitUint64:
23748 Text.Op = PrintName("InitUint64");
23749 break;
23750case OP_InitIntAP:
23751 Text.Op = PrintName("InitIntAP");
23752 break;
23753case OP_InitIntAPS:
23754 Text.Op = PrintName("InitIntAPS");
23755 break;
23756case OP_InitBool:
23757 Text.Op = PrintName("InitBool");
23758 break;
23759case OP_InitFixedPoint:
23760 Text.Op = PrintName("InitFixedPoint");
23761 break;
23762case OP_InitPtr:
23763 Text.Op = PrintName("InitPtr");
23764 break;
23765case OP_InitMemberPtr:
23766 Text.Op = PrintName("InitMemberPtr");
23767 break;
23768case OP_InitFloat:
23769 Text.Op = PrintName("InitFloat");
23770 break;
23771#endif
23772#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23773bool emitInitSint8(SourceInfo);
23774bool emitInitUint8(SourceInfo);
23775bool emitInitSint16(SourceInfo);
23776bool emitInitUint16(SourceInfo);
23777bool emitInitSint32(SourceInfo);
23778bool emitInitUint32(SourceInfo);
23779bool emitInitSint64(SourceInfo);
23780bool emitInitUint64(SourceInfo);
23781bool emitInitIntAP(SourceInfo);
23782bool emitInitIntAPS(SourceInfo);
23783bool emitInitBool(SourceInfo);
23784bool emitInitFixedPoint(SourceInfo);
23785bool emitInitPtr(SourceInfo);
23786bool emitInitMemberPtr(SourceInfo);
23787bool emitInitFloat(SourceInfo);
23788#endif
23789#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
23790[[nodiscard]] bool emitInit(PrimType, SourceInfo I);
23791#endif
23792#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
23793bool
23794#if defined(GET_EVAL_IMPL)
23795EvalEmitter
23796#else
23797ByteCodeEmitter
23798#endif
23799::emitInit(PrimType T0, SourceInfo I) {
23800 switch (T0) {
23801 case PT_Sint8:
23802 return emitInitSint8(I);
23803 case PT_Uint8:
23804 return emitInitUint8(I);
23805 case PT_Sint16:
23806 return emitInitSint16(I);
23807 case PT_Uint16:
23808 return emitInitUint16(I);
23809 case PT_Sint32:
23810 return emitInitSint32(I);
23811 case PT_Uint32:
23812 return emitInitUint32(I);
23813 case PT_Sint64:
23814 return emitInitSint64(I);
23815 case PT_Uint64:
23816 return emitInitUint64(I);
23817 case PT_IntAP:
23818 return emitInitIntAP(I);
23819 case PT_IntAPS:
23820 return emitInitIntAPS(I);
23821 case PT_Bool:
23822 return emitInitBool(I);
23823 case PT_FixedPoint:
23824 return emitInitFixedPoint(I);
23825 case PT_Ptr:
23826 return emitInitPtr(I);
23827 case PT_MemberPtr:
23828 return emitInitMemberPtr(I);
23829 case PT_Float:
23830 return emitInitFloat(I);
23831 }
23832 llvm_unreachable("invalid enum value");
23833}
23834#endif
23835#ifdef GET_LINK_IMPL
23836bool ByteCodeEmitter::emitInitSint8(SourceInfo L) {
23837 return emitOp<>(OP_InitSint8, L);
23838}
23839bool ByteCodeEmitter::emitInitUint8(SourceInfo L) {
23840 return emitOp<>(OP_InitUint8, L);
23841}
23842bool ByteCodeEmitter::emitInitSint16(SourceInfo L) {
23843 return emitOp<>(OP_InitSint16, L);
23844}
23845bool ByteCodeEmitter::emitInitUint16(SourceInfo L) {
23846 return emitOp<>(OP_InitUint16, L);
23847}
23848bool ByteCodeEmitter::emitInitSint32(SourceInfo L) {
23849 return emitOp<>(OP_InitSint32, L);
23850}
23851bool ByteCodeEmitter::emitInitUint32(SourceInfo L) {
23852 return emitOp<>(OP_InitUint32, L);
23853}
23854bool ByteCodeEmitter::emitInitSint64(SourceInfo L) {
23855 return emitOp<>(OP_InitSint64, L);
23856}
23857bool ByteCodeEmitter::emitInitUint64(SourceInfo L) {
23858 return emitOp<>(OP_InitUint64, L);
23859}
23860bool ByteCodeEmitter::emitInitIntAP(SourceInfo L) {
23861 return emitOp<>(OP_InitIntAP, L);
23862}
23863bool ByteCodeEmitter::emitInitIntAPS(SourceInfo L) {
23864 return emitOp<>(OP_InitIntAPS, L);
23865}
23866bool ByteCodeEmitter::emitInitBool(SourceInfo L) {
23867 return emitOp<>(OP_InitBool, L);
23868}
23869bool ByteCodeEmitter::emitInitFixedPoint(SourceInfo L) {
23870 return emitOp<>(OP_InitFixedPoint, L);
23871}
23872bool ByteCodeEmitter::emitInitPtr(SourceInfo L) {
23873 return emitOp<>(OP_InitPtr, L);
23874}
23875bool ByteCodeEmitter::emitInitMemberPtr(SourceInfo L) {
23876 return emitOp<>(OP_InitMemberPtr, L);
23877}
23878bool ByteCodeEmitter::emitInitFloat(SourceInfo L) {
23879 return emitOp<>(OP_InitFloat, L);
23880}
23881#endif
23882#ifdef GET_EVAL_IMPL
23883bool EvalEmitter::emitInitSint8(SourceInfo L) {
23884 if (!isActive()) return true;
23885 CurrentSource = L;
23886 return Init<PT_Sint8>(S, OpPC);
23887}
23888bool EvalEmitter::emitInitUint8(SourceInfo L) {
23889 if (!isActive()) return true;
23890 CurrentSource = L;
23891 return Init<PT_Uint8>(S, OpPC);
23892}
23893bool EvalEmitter::emitInitSint16(SourceInfo L) {
23894 if (!isActive()) return true;
23895 CurrentSource = L;
23896 return Init<PT_Sint16>(S, OpPC);
23897}
23898bool EvalEmitter::emitInitUint16(SourceInfo L) {
23899 if (!isActive()) return true;
23900 CurrentSource = L;
23901 return Init<PT_Uint16>(S, OpPC);
23902}
23903bool EvalEmitter::emitInitSint32(SourceInfo L) {
23904 if (!isActive()) return true;
23905 CurrentSource = L;
23906 return Init<PT_Sint32>(S, OpPC);
23907}
23908bool EvalEmitter::emitInitUint32(SourceInfo L) {
23909 if (!isActive()) return true;
23910 CurrentSource = L;
23911 return Init<PT_Uint32>(S, OpPC);
23912}
23913bool EvalEmitter::emitInitSint64(SourceInfo L) {
23914 if (!isActive()) return true;
23915 CurrentSource = L;
23916 return Init<PT_Sint64>(S, OpPC);
23917}
23918bool EvalEmitter::emitInitUint64(SourceInfo L) {
23919 if (!isActive()) return true;
23920 CurrentSource = L;
23921 return Init<PT_Uint64>(S, OpPC);
23922}
23923bool EvalEmitter::emitInitIntAP(SourceInfo L) {
23924 if (!isActive()) return true;
23925 CurrentSource = L;
23926 return Init<PT_IntAP>(S, OpPC);
23927}
23928bool EvalEmitter::emitInitIntAPS(SourceInfo L) {
23929 if (!isActive()) return true;
23930 CurrentSource = L;
23931 return Init<PT_IntAPS>(S, OpPC);
23932}
23933bool EvalEmitter::emitInitBool(SourceInfo L) {
23934 if (!isActive()) return true;
23935 CurrentSource = L;
23936 return Init<PT_Bool>(S, OpPC);
23937}
23938bool EvalEmitter::emitInitFixedPoint(SourceInfo L) {
23939 if (!isActive()) return true;
23940 CurrentSource = L;
23941 return Init<PT_FixedPoint>(S, OpPC);
23942}
23943bool EvalEmitter::emitInitPtr(SourceInfo L) {
23944 if (!isActive()) return true;
23945 CurrentSource = L;
23946 return Init<PT_Ptr>(S, OpPC);
23947}
23948bool EvalEmitter::emitInitMemberPtr(SourceInfo L) {
23949 if (!isActive()) return true;
23950 CurrentSource = L;
23951 return Init<PT_MemberPtr>(S, OpPC);
23952}
23953bool EvalEmitter::emitInitFloat(SourceInfo L) {
23954 if (!isActive()) return true;
23955 CurrentSource = L;
23956 return Init<PT_Float>(S, OpPC);
23957}
23958#endif
23959#ifdef GET_OPCODE_NAMES
23960OP_InitBitFieldSint8,
23961OP_InitBitFieldUint8,
23962OP_InitBitFieldSint16,
23963OP_InitBitFieldUint16,
23964OP_InitBitFieldSint32,
23965OP_InitBitFieldUint32,
23966OP_InitBitFieldSint64,
23967OP_InitBitFieldUint64,
23968OP_InitBitFieldIntAP,
23969OP_InitBitFieldIntAPS,
23970OP_InitBitFieldBool,
23971#endif
23972#ifdef GET_INTERP
23973case OP_InitBitFieldSint8: {
23974 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23975 if (!InitBitField<PT_Sint8>(S, OpPC, V0))
23976 return false;
23977 continue;
23978}
23979case OP_InitBitFieldUint8: {
23980 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23981 if (!InitBitField<PT_Uint8>(S, OpPC, V0))
23982 return false;
23983 continue;
23984}
23985case OP_InitBitFieldSint16: {
23986 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23987 if (!InitBitField<PT_Sint16>(S, OpPC, V0))
23988 return false;
23989 continue;
23990}
23991case OP_InitBitFieldUint16: {
23992 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23993 if (!InitBitField<PT_Uint16>(S, OpPC, V0))
23994 return false;
23995 continue;
23996}
23997case OP_InitBitFieldSint32: {
23998 const auto V0 = ReadArg<const Record::Field *>(S, PC);
23999 if (!InitBitField<PT_Sint32>(S, OpPC, V0))
24000 return false;
24001 continue;
24002}
24003case OP_InitBitFieldUint32: {
24004 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24005 if (!InitBitField<PT_Uint32>(S, OpPC, V0))
24006 return false;
24007 continue;
24008}
24009case OP_InitBitFieldSint64: {
24010 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24011 if (!InitBitField<PT_Sint64>(S, OpPC, V0))
24012 return false;
24013 continue;
24014}
24015case OP_InitBitFieldUint64: {
24016 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24017 if (!InitBitField<PT_Uint64>(S, OpPC, V0))
24018 return false;
24019 continue;
24020}
24021case OP_InitBitFieldIntAP: {
24022 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24023 if (!InitBitField<PT_IntAP>(S, OpPC, V0))
24024 return false;
24025 continue;
24026}
24027case OP_InitBitFieldIntAPS: {
24028 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24029 if (!InitBitField<PT_IntAPS>(S, OpPC, V0))
24030 return false;
24031 continue;
24032}
24033case OP_InitBitFieldBool: {
24034 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24035 if (!InitBitField<PT_Bool>(S, OpPC, V0))
24036 return false;
24037 continue;
24038}
24039#endif
24040#ifdef GET_DISASM
24041case OP_InitBitFieldSint8:
24042 Text.Op = PrintName("InitBitFieldSint8");
24043 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24044 break;
24045case OP_InitBitFieldUint8:
24046 Text.Op = PrintName("InitBitFieldUint8");
24047 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24048 break;
24049case OP_InitBitFieldSint16:
24050 Text.Op = PrintName("InitBitFieldSint16");
24051 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24052 break;
24053case OP_InitBitFieldUint16:
24054 Text.Op = PrintName("InitBitFieldUint16");
24055 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24056 break;
24057case OP_InitBitFieldSint32:
24058 Text.Op = PrintName("InitBitFieldSint32");
24059 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24060 break;
24061case OP_InitBitFieldUint32:
24062 Text.Op = PrintName("InitBitFieldUint32");
24063 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24064 break;
24065case OP_InitBitFieldSint64:
24066 Text.Op = PrintName("InitBitFieldSint64");
24067 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24068 break;
24069case OP_InitBitFieldUint64:
24070 Text.Op = PrintName("InitBitFieldUint64");
24071 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24072 break;
24073case OP_InitBitFieldIntAP:
24074 Text.Op = PrintName("InitBitFieldIntAP");
24075 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24076 break;
24077case OP_InitBitFieldIntAPS:
24078 Text.Op = PrintName("InitBitFieldIntAPS");
24079 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24080 break;
24081case OP_InitBitFieldBool:
24082 Text.Op = PrintName("InitBitFieldBool");
24083 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24084 break;
24085#endif
24086#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24087bool emitInitBitFieldSint8( const Record::Field * , SourceInfo);
24088bool emitInitBitFieldUint8( const Record::Field * , SourceInfo);
24089bool emitInitBitFieldSint16( const Record::Field * , SourceInfo);
24090bool emitInitBitFieldUint16( const Record::Field * , SourceInfo);
24091bool emitInitBitFieldSint32( const Record::Field * , SourceInfo);
24092bool emitInitBitFieldUint32( const Record::Field * , SourceInfo);
24093bool emitInitBitFieldSint64( const Record::Field * , SourceInfo);
24094bool emitInitBitFieldUint64( const Record::Field * , SourceInfo);
24095bool emitInitBitFieldIntAP( const Record::Field * , SourceInfo);
24096bool emitInitBitFieldIntAPS( const Record::Field * , SourceInfo);
24097bool emitInitBitFieldBool( const Record::Field * , SourceInfo);
24098#endif
24099#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24100[[nodiscard]] bool emitInitBitField(PrimType, const Record::Field *, SourceInfo I);
24101#endif
24102#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24103bool
24104#if defined(GET_EVAL_IMPL)
24105EvalEmitter
24106#else
24107ByteCodeEmitter
24108#endif
24109::emitInitBitField(PrimType T0, const Record::Field * A0, SourceInfo I) {
24110 switch (T0) {
24111 case PT_Sint8:
24112 return emitInitBitFieldSint8(A0, I);
24113 case PT_Uint8:
24114 return emitInitBitFieldUint8(A0, I);
24115 case PT_Sint16:
24116 return emitInitBitFieldSint16(A0, I);
24117 case PT_Uint16:
24118 return emitInitBitFieldUint16(A0, I);
24119 case PT_Sint32:
24120 return emitInitBitFieldSint32(A0, I);
24121 case PT_Uint32:
24122 return emitInitBitFieldUint32(A0, I);
24123 case PT_Sint64:
24124 return emitInitBitFieldSint64(A0, I);
24125 case PT_Uint64:
24126 return emitInitBitFieldUint64(A0, I);
24127 case PT_IntAP:
24128 return emitInitBitFieldIntAP(A0, I);
24129 case PT_IntAPS:
24130 return emitInitBitFieldIntAPS(A0, I);
24131 case PT_Bool:
24132 return emitInitBitFieldBool(A0, I);
24133 default: llvm_unreachable("invalid type: emitInitBitField");
24134 }
24135 llvm_unreachable("invalid enum value");
24136}
24137#endif
24138#ifdef GET_LINK_IMPL
24139bool ByteCodeEmitter::emitInitBitFieldSint8( const Record::Field * A0, SourceInfo L) {
24140 return emitOp<const Record::Field *>(OP_InitBitFieldSint8, A0, L);
24141}
24142bool ByteCodeEmitter::emitInitBitFieldUint8( const Record::Field * A0, SourceInfo L) {
24143 return emitOp<const Record::Field *>(OP_InitBitFieldUint8, A0, L);
24144}
24145bool ByteCodeEmitter::emitInitBitFieldSint16( const Record::Field * A0, SourceInfo L) {
24146 return emitOp<const Record::Field *>(OP_InitBitFieldSint16, A0, L);
24147}
24148bool ByteCodeEmitter::emitInitBitFieldUint16( const Record::Field * A0, SourceInfo L) {
24149 return emitOp<const Record::Field *>(OP_InitBitFieldUint16, A0, L);
24150}
24151bool ByteCodeEmitter::emitInitBitFieldSint32( const Record::Field * A0, SourceInfo L) {
24152 return emitOp<const Record::Field *>(OP_InitBitFieldSint32, A0, L);
24153}
24154bool ByteCodeEmitter::emitInitBitFieldUint32( const Record::Field * A0, SourceInfo L) {
24155 return emitOp<const Record::Field *>(OP_InitBitFieldUint32, A0, L);
24156}
24157bool ByteCodeEmitter::emitInitBitFieldSint64( const Record::Field * A0, SourceInfo L) {
24158 return emitOp<const Record::Field *>(OP_InitBitFieldSint64, A0, L);
24159}
24160bool ByteCodeEmitter::emitInitBitFieldUint64( const Record::Field * A0, SourceInfo L) {
24161 return emitOp<const Record::Field *>(OP_InitBitFieldUint64, A0, L);
24162}
24163bool ByteCodeEmitter::emitInitBitFieldIntAP( const Record::Field * A0, SourceInfo L) {
24164 return emitOp<const Record::Field *>(OP_InitBitFieldIntAP, A0, L);
24165}
24166bool ByteCodeEmitter::emitInitBitFieldIntAPS( const Record::Field * A0, SourceInfo L) {
24167 return emitOp<const Record::Field *>(OP_InitBitFieldIntAPS, A0, L);
24168}
24169bool ByteCodeEmitter::emitInitBitFieldBool( const Record::Field * A0, SourceInfo L) {
24170 return emitOp<const Record::Field *>(OP_InitBitFieldBool, A0, L);
24171}
24172#endif
24173#ifdef GET_EVAL_IMPL
24174bool EvalEmitter::emitInitBitFieldSint8( const Record::Field * A0, SourceInfo L) {
24175 if (!isActive()) return true;
24176 CurrentSource = L;
24177 return InitBitField<PT_Sint8>(S, OpPC, A0);
24178}
24179bool EvalEmitter::emitInitBitFieldUint8( const Record::Field * A0, SourceInfo L) {
24180 if (!isActive()) return true;
24181 CurrentSource = L;
24182 return InitBitField<PT_Uint8>(S, OpPC, A0);
24183}
24184bool EvalEmitter::emitInitBitFieldSint16( const Record::Field * A0, SourceInfo L) {
24185 if (!isActive()) return true;
24186 CurrentSource = L;
24187 return InitBitField<PT_Sint16>(S, OpPC, A0);
24188}
24189bool EvalEmitter::emitInitBitFieldUint16( const Record::Field * A0, SourceInfo L) {
24190 if (!isActive()) return true;
24191 CurrentSource = L;
24192 return InitBitField<PT_Uint16>(S, OpPC, A0);
24193}
24194bool EvalEmitter::emitInitBitFieldSint32( const Record::Field * A0, SourceInfo L) {
24195 if (!isActive()) return true;
24196 CurrentSource = L;
24197 return InitBitField<PT_Sint32>(S, OpPC, A0);
24198}
24199bool EvalEmitter::emitInitBitFieldUint32( const Record::Field * A0, SourceInfo L) {
24200 if (!isActive()) return true;
24201 CurrentSource = L;
24202 return InitBitField<PT_Uint32>(S, OpPC, A0);
24203}
24204bool EvalEmitter::emitInitBitFieldSint64( const Record::Field * A0, SourceInfo L) {
24205 if (!isActive()) return true;
24206 CurrentSource = L;
24207 return InitBitField<PT_Sint64>(S, OpPC, A0);
24208}
24209bool EvalEmitter::emitInitBitFieldUint64( const Record::Field * A0, SourceInfo L) {
24210 if (!isActive()) return true;
24211 CurrentSource = L;
24212 return InitBitField<PT_Uint64>(S, OpPC, A0);
24213}
24214bool EvalEmitter::emitInitBitFieldIntAP( const Record::Field * A0, SourceInfo L) {
24215 if (!isActive()) return true;
24216 CurrentSource = L;
24217 return InitBitField<PT_IntAP>(S, OpPC, A0);
24218}
24219bool EvalEmitter::emitInitBitFieldIntAPS( const Record::Field * A0, SourceInfo L) {
24220 if (!isActive()) return true;
24221 CurrentSource = L;
24222 return InitBitField<PT_IntAPS>(S, OpPC, A0);
24223}
24224bool EvalEmitter::emitInitBitFieldBool( const Record::Field * A0, SourceInfo L) {
24225 if (!isActive()) return true;
24226 CurrentSource = L;
24227 return InitBitField<PT_Bool>(S, OpPC, A0);
24228}
24229#endif
24230#ifdef GET_OPCODE_NAMES
24231OP_InitBitFieldActivateSint8,
24232OP_InitBitFieldActivateUint8,
24233OP_InitBitFieldActivateSint16,
24234OP_InitBitFieldActivateUint16,
24235OP_InitBitFieldActivateSint32,
24236OP_InitBitFieldActivateUint32,
24237OP_InitBitFieldActivateSint64,
24238OP_InitBitFieldActivateUint64,
24239OP_InitBitFieldActivateIntAP,
24240OP_InitBitFieldActivateIntAPS,
24241OP_InitBitFieldActivateBool,
24242#endif
24243#ifdef GET_INTERP
24244case OP_InitBitFieldActivateSint8: {
24245 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24246 if (!InitBitFieldActivate<PT_Sint8>(S, OpPC, V0))
24247 return false;
24248 continue;
24249}
24250case OP_InitBitFieldActivateUint8: {
24251 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24252 if (!InitBitFieldActivate<PT_Uint8>(S, OpPC, V0))
24253 return false;
24254 continue;
24255}
24256case OP_InitBitFieldActivateSint16: {
24257 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24258 if (!InitBitFieldActivate<PT_Sint16>(S, OpPC, V0))
24259 return false;
24260 continue;
24261}
24262case OP_InitBitFieldActivateUint16: {
24263 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24264 if (!InitBitFieldActivate<PT_Uint16>(S, OpPC, V0))
24265 return false;
24266 continue;
24267}
24268case OP_InitBitFieldActivateSint32: {
24269 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24270 if (!InitBitFieldActivate<PT_Sint32>(S, OpPC, V0))
24271 return false;
24272 continue;
24273}
24274case OP_InitBitFieldActivateUint32: {
24275 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24276 if (!InitBitFieldActivate<PT_Uint32>(S, OpPC, V0))
24277 return false;
24278 continue;
24279}
24280case OP_InitBitFieldActivateSint64: {
24281 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24282 if (!InitBitFieldActivate<PT_Sint64>(S, OpPC, V0))
24283 return false;
24284 continue;
24285}
24286case OP_InitBitFieldActivateUint64: {
24287 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24288 if (!InitBitFieldActivate<PT_Uint64>(S, OpPC, V0))
24289 return false;
24290 continue;
24291}
24292case OP_InitBitFieldActivateIntAP: {
24293 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24294 if (!InitBitFieldActivate<PT_IntAP>(S, OpPC, V0))
24295 return false;
24296 continue;
24297}
24298case OP_InitBitFieldActivateIntAPS: {
24299 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24300 if (!InitBitFieldActivate<PT_IntAPS>(S, OpPC, V0))
24301 return false;
24302 continue;
24303}
24304case OP_InitBitFieldActivateBool: {
24305 const auto V0 = ReadArg<const Record::Field *>(S, PC);
24306 if (!InitBitFieldActivate<PT_Bool>(S, OpPC, V0))
24307 return false;
24308 continue;
24309}
24310#endif
24311#ifdef GET_DISASM
24312case OP_InitBitFieldActivateSint8:
24313 Text.Op = PrintName("InitBitFieldActivateSint8");
24314 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24315 break;
24316case OP_InitBitFieldActivateUint8:
24317 Text.Op = PrintName("InitBitFieldActivateUint8");
24318 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24319 break;
24320case OP_InitBitFieldActivateSint16:
24321 Text.Op = PrintName("InitBitFieldActivateSint16");
24322 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24323 break;
24324case OP_InitBitFieldActivateUint16:
24325 Text.Op = PrintName("InitBitFieldActivateUint16");
24326 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24327 break;
24328case OP_InitBitFieldActivateSint32:
24329 Text.Op = PrintName("InitBitFieldActivateSint32");
24330 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24331 break;
24332case OP_InitBitFieldActivateUint32:
24333 Text.Op = PrintName("InitBitFieldActivateUint32");
24334 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24335 break;
24336case OP_InitBitFieldActivateSint64:
24337 Text.Op = PrintName("InitBitFieldActivateSint64");
24338 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24339 break;
24340case OP_InitBitFieldActivateUint64:
24341 Text.Op = PrintName("InitBitFieldActivateUint64");
24342 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24343 break;
24344case OP_InitBitFieldActivateIntAP:
24345 Text.Op = PrintName("InitBitFieldActivateIntAP");
24346 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24347 break;
24348case OP_InitBitFieldActivateIntAPS:
24349 Text.Op = PrintName("InitBitFieldActivateIntAPS");
24350 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24351 break;
24352case OP_InitBitFieldActivateBool:
24353 Text.Op = PrintName("InitBitFieldActivateBool");
24354 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
24355 break;
24356#endif
24357#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24358bool emitInitBitFieldActivateSint8( const Record::Field * , SourceInfo);
24359bool emitInitBitFieldActivateUint8( const Record::Field * , SourceInfo);
24360bool emitInitBitFieldActivateSint16( const Record::Field * , SourceInfo);
24361bool emitInitBitFieldActivateUint16( const Record::Field * , SourceInfo);
24362bool emitInitBitFieldActivateSint32( const Record::Field * , SourceInfo);
24363bool emitInitBitFieldActivateUint32( const Record::Field * , SourceInfo);
24364bool emitInitBitFieldActivateSint64( const Record::Field * , SourceInfo);
24365bool emitInitBitFieldActivateUint64( const Record::Field * , SourceInfo);
24366bool emitInitBitFieldActivateIntAP( const Record::Field * , SourceInfo);
24367bool emitInitBitFieldActivateIntAPS( const Record::Field * , SourceInfo);
24368bool emitInitBitFieldActivateBool( const Record::Field * , SourceInfo);
24369#endif
24370#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24371[[nodiscard]] bool emitInitBitFieldActivate(PrimType, const Record::Field *, SourceInfo I);
24372#endif
24373#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24374bool
24375#if defined(GET_EVAL_IMPL)
24376EvalEmitter
24377#else
24378ByteCodeEmitter
24379#endif
24380::emitInitBitFieldActivate(PrimType T0, const Record::Field * A0, SourceInfo I) {
24381 switch (T0) {
24382 case PT_Sint8:
24383 return emitInitBitFieldActivateSint8(A0, I);
24384 case PT_Uint8:
24385 return emitInitBitFieldActivateUint8(A0, I);
24386 case PT_Sint16:
24387 return emitInitBitFieldActivateSint16(A0, I);
24388 case PT_Uint16:
24389 return emitInitBitFieldActivateUint16(A0, I);
24390 case PT_Sint32:
24391 return emitInitBitFieldActivateSint32(A0, I);
24392 case PT_Uint32:
24393 return emitInitBitFieldActivateUint32(A0, I);
24394 case PT_Sint64:
24395 return emitInitBitFieldActivateSint64(A0, I);
24396 case PT_Uint64:
24397 return emitInitBitFieldActivateUint64(A0, I);
24398 case PT_IntAP:
24399 return emitInitBitFieldActivateIntAP(A0, I);
24400 case PT_IntAPS:
24401 return emitInitBitFieldActivateIntAPS(A0, I);
24402 case PT_Bool:
24403 return emitInitBitFieldActivateBool(A0, I);
24404 default: llvm_unreachable("invalid type: emitInitBitFieldActivate");
24405 }
24406 llvm_unreachable("invalid enum value");
24407}
24408#endif
24409#ifdef GET_LINK_IMPL
24410bool ByteCodeEmitter::emitInitBitFieldActivateSint8( const Record::Field * A0, SourceInfo L) {
24411 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint8, A0, L);
24412}
24413bool ByteCodeEmitter::emitInitBitFieldActivateUint8( const Record::Field * A0, SourceInfo L) {
24414 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint8, A0, L);
24415}
24416bool ByteCodeEmitter::emitInitBitFieldActivateSint16( const Record::Field * A0, SourceInfo L) {
24417 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint16, A0, L);
24418}
24419bool ByteCodeEmitter::emitInitBitFieldActivateUint16( const Record::Field * A0, SourceInfo L) {
24420 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint16, A0, L);
24421}
24422bool ByteCodeEmitter::emitInitBitFieldActivateSint32( const Record::Field * A0, SourceInfo L) {
24423 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint32, A0, L);
24424}
24425bool ByteCodeEmitter::emitInitBitFieldActivateUint32( const Record::Field * A0, SourceInfo L) {
24426 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint32, A0, L);
24427}
24428bool ByteCodeEmitter::emitInitBitFieldActivateSint64( const Record::Field * A0, SourceInfo L) {
24429 return emitOp<const Record::Field *>(OP_InitBitFieldActivateSint64, A0, L);
24430}
24431bool ByteCodeEmitter::emitInitBitFieldActivateUint64( const Record::Field * A0, SourceInfo L) {
24432 return emitOp<const Record::Field *>(OP_InitBitFieldActivateUint64, A0, L);
24433}
24434bool ByteCodeEmitter::emitInitBitFieldActivateIntAP( const Record::Field * A0, SourceInfo L) {
24435 return emitOp<const Record::Field *>(OP_InitBitFieldActivateIntAP, A0, L);
24436}
24437bool ByteCodeEmitter::emitInitBitFieldActivateIntAPS( const Record::Field * A0, SourceInfo L) {
24438 return emitOp<const Record::Field *>(OP_InitBitFieldActivateIntAPS, A0, L);
24439}
24440bool ByteCodeEmitter::emitInitBitFieldActivateBool( const Record::Field * A0, SourceInfo L) {
24441 return emitOp<const Record::Field *>(OP_InitBitFieldActivateBool, A0, L);
24442}
24443#endif
24444#ifdef GET_EVAL_IMPL
24445bool EvalEmitter::emitInitBitFieldActivateSint8( const Record::Field * A0, SourceInfo L) {
24446 if (!isActive()) return true;
24447 CurrentSource = L;
24448 return InitBitFieldActivate<PT_Sint8>(S, OpPC, A0);
24449}
24450bool EvalEmitter::emitInitBitFieldActivateUint8( const Record::Field * A0, SourceInfo L) {
24451 if (!isActive()) return true;
24452 CurrentSource = L;
24453 return InitBitFieldActivate<PT_Uint8>(S, OpPC, A0);
24454}
24455bool EvalEmitter::emitInitBitFieldActivateSint16( const Record::Field * A0, SourceInfo L) {
24456 if (!isActive()) return true;
24457 CurrentSource = L;
24458 return InitBitFieldActivate<PT_Sint16>(S, OpPC, A0);
24459}
24460bool EvalEmitter::emitInitBitFieldActivateUint16( const Record::Field * A0, SourceInfo L) {
24461 if (!isActive()) return true;
24462 CurrentSource = L;
24463 return InitBitFieldActivate<PT_Uint16>(S, OpPC, A0);
24464}
24465bool EvalEmitter::emitInitBitFieldActivateSint32( const Record::Field * A0, SourceInfo L) {
24466 if (!isActive()) return true;
24467 CurrentSource = L;
24468 return InitBitFieldActivate<PT_Sint32>(S, OpPC, A0);
24469}
24470bool EvalEmitter::emitInitBitFieldActivateUint32( const Record::Field * A0, SourceInfo L) {
24471 if (!isActive()) return true;
24472 CurrentSource = L;
24473 return InitBitFieldActivate<PT_Uint32>(S, OpPC, A0);
24474}
24475bool EvalEmitter::emitInitBitFieldActivateSint64( const Record::Field * A0, SourceInfo L) {
24476 if (!isActive()) return true;
24477 CurrentSource = L;
24478 return InitBitFieldActivate<PT_Sint64>(S, OpPC, A0);
24479}
24480bool EvalEmitter::emitInitBitFieldActivateUint64( const Record::Field * A0, SourceInfo L) {
24481 if (!isActive()) return true;
24482 CurrentSource = L;
24483 return InitBitFieldActivate<PT_Uint64>(S, OpPC, A0);
24484}
24485bool EvalEmitter::emitInitBitFieldActivateIntAP( const Record::Field * A0, SourceInfo L) {
24486 if (!isActive()) return true;
24487 CurrentSource = L;
24488 return InitBitFieldActivate<PT_IntAP>(S, OpPC, A0);
24489}
24490bool EvalEmitter::emitInitBitFieldActivateIntAPS( const Record::Field * A0, SourceInfo L) {
24491 if (!isActive()) return true;
24492 CurrentSource = L;
24493 return InitBitFieldActivate<PT_IntAPS>(S, OpPC, A0);
24494}
24495bool EvalEmitter::emitInitBitFieldActivateBool( const Record::Field * A0, SourceInfo L) {
24496 if (!isActive()) return true;
24497 CurrentSource = L;
24498 return InitBitFieldActivate<PT_Bool>(S, OpPC, A0);
24499}
24500#endif
24501#ifdef GET_OPCODE_NAMES
24502OP_InitElemSint8,
24503OP_InitElemUint8,
24504OP_InitElemSint16,
24505OP_InitElemUint16,
24506OP_InitElemSint32,
24507OP_InitElemUint32,
24508OP_InitElemSint64,
24509OP_InitElemUint64,
24510OP_InitElemIntAP,
24511OP_InitElemIntAPS,
24512OP_InitElemBool,
24513OP_InitElemFixedPoint,
24514OP_InitElemPtr,
24515OP_InitElemMemberPtr,
24516OP_InitElemFloat,
24517#endif
24518#ifdef GET_INTERP
24519case OP_InitElemSint8: {
24520 const auto V0 = ReadArg<uint32_t>(S, PC);
24521 if (!InitElem<PT_Sint8>(S, OpPC, V0))
24522 return false;
24523 continue;
24524}
24525case OP_InitElemUint8: {
24526 const auto V0 = ReadArg<uint32_t>(S, PC);
24527 if (!InitElem<PT_Uint8>(S, OpPC, V0))
24528 return false;
24529 continue;
24530}
24531case OP_InitElemSint16: {
24532 const auto V0 = ReadArg<uint32_t>(S, PC);
24533 if (!InitElem<PT_Sint16>(S, OpPC, V0))
24534 return false;
24535 continue;
24536}
24537case OP_InitElemUint16: {
24538 const auto V0 = ReadArg<uint32_t>(S, PC);
24539 if (!InitElem<PT_Uint16>(S, OpPC, V0))
24540 return false;
24541 continue;
24542}
24543case OP_InitElemSint32: {
24544 const auto V0 = ReadArg<uint32_t>(S, PC);
24545 if (!InitElem<PT_Sint32>(S, OpPC, V0))
24546 return false;
24547 continue;
24548}
24549case OP_InitElemUint32: {
24550 const auto V0 = ReadArg<uint32_t>(S, PC);
24551 if (!InitElem<PT_Uint32>(S, OpPC, V0))
24552 return false;
24553 continue;
24554}
24555case OP_InitElemSint64: {
24556 const auto V0 = ReadArg<uint32_t>(S, PC);
24557 if (!InitElem<PT_Sint64>(S, OpPC, V0))
24558 return false;
24559 continue;
24560}
24561case OP_InitElemUint64: {
24562 const auto V0 = ReadArg<uint32_t>(S, PC);
24563 if (!InitElem<PT_Uint64>(S, OpPC, V0))
24564 return false;
24565 continue;
24566}
24567case OP_InitElemIntAP: {
24568 const auto V0 = ReadArg<uint32_t>(S, PC);
24569 if (!InitElem<PT_IntAP>(S, OpPC, V0))
24570 return false;
24571 continue;
24572}
24573case OP_InitElemIntAPS: {
24574 const auto V0 = ReadArg<uint32_t>(S, PC);
24575 if (!InitElem<PT_IntAPS>(S, OpPC, V0))
24576 return false;
24577 continue;
24578}
24579case OP_InitElemBool: {
24580 const auto V0 = ReadArg<uint32_t>(S, PC);
24581 if (!InitElem<PT_Bool>(S, OpPC, V0))
24582 return false;
24583 continue;
24584}
24585case OP_InitElemFixedPoint: {
24586 const auto V0 = ReadArg<uint32_t>(S, PC);
24587 if (!InitElem<PT_FixedPoint>(S, OpPC, V0))
24588 return false;
24589 continue;
24590}
24591case OP_InitElemPtr: {
24592 const auto V0 = ReadArg<uint32_t>(S, PC);
24593 if (!InitElem<PT_Ptr>(S, OpPC, V0))
24594 return false;
24595 continue;
24596}
24597case OP_InitElemMemberPtr: {
24598 const auto V0 = ReadArg<uint32_t>(S, PC);
24599 if (!InitElem<PT_MemberPtr>(S, OpPC, V0))
24600 return false;
24601 continue;
24602}
24603case OP_InitElemFloat: {
24604 const auto V0 = ReadArg<uint32_t>(S, PC);
24605 if (!InitElem<PT_Float>(S, OpPC, V0))
24606 return false;
24607 continue;
24608}
24609#endif
24610#ifdef GET_DISASM
24611case OP_InitElemSint8:
24612 Text.Op = PrintName("InitElemSint8");
24613 Text.Args.push_back(printArg<uint32_t>(P, PC));
24614 break;
24615case OP_InitElemUint8:
24616 Text.Op = PrintName("InitElemUint8");
24617 Text.Args.push_back(printArg<uint32_t>(P, PC));
24618 break;
24619case OP_InitElemSint16:
24620 Text.Op = PrintName("InitElemSint16");
24621 Text.Args.push_back(printArg<uint32_t>(P, PC));
24622 break;
24623case OP_InitElemUint16:
24624 Text.Op = PrintName("InitElemUint16");
24625 Text.Args.push_back(printArg<uint32_t>(P, PC));
24626 break;
24627case OP_InitElemSint32:
24628 Text.Op = PrintName("InitElemSint32");
24629 Text.Args.push_back(printArg<uint32_t>(P, PC));
24630 break;
24631case OP_InitElemUint32:
24632 Text.Op = PrintName("InitElemUint32");
24633 Text.Args.push_back(printArg<uint32_t>(P, PC));
24634 break;
24635case OP_InitElemSint64:
24636 Text.Op = PrintName("InitElemSint64");
24637 Text.Args.push_back(printArg<uint32_t>(P, PC));
24638 break;
24639case OP_InitElemUint64:
24640 Text.Op = PrintName("InitElemUint64");
24641 Text.Args.push_back(printArg<uint32_t>(P, PC));
24642 break;
24643case OP_InitElemIntAP:
24644 Text.Op = PrintName("InitElemIntAP");
24645 Text.Args.push_back(printArg<uint32_t>(P, PC));
24646 break;
24647case OP_InitElemIntAPS:
24648 Text.Op = PrintName("InitElemIntAPS");
24649 Text.Args.push_back(printArg<uint32_t>(P, PC));
24650 break;
24651case OP_InitElemBool:
24652 Text.Op = PrintName("InitElemBool");
24653 Text.Args.push_back(printArg<uint32_t>(P, PC));
24654 break;
24655case OP_InitElemFixedPoint:
24656 Text.Op = PrintName("InitElemFixedPoint");
24657 Text.Args.push_back(printArg<uint32_t>(P, PC));
24658 break;
24659case OP_InitElemPtr:
24660 Text.Op = PrintName("InitElemPtr");
24661 Text.Args.push_back(printArg<uint32_t>(P, PC));
24662 break;
24663case OP_InitElemMemberPtr:
24664 Text.Op = PrintName("InitElemMemberPtr");
24665 Text.Args.push_back(printArg<uint32_t>(P, PC));
24666 break;
24667case OP_InitElemFloat:
24668 Text.Op = PrintName("InitElemFloat");
24669 Text.Args.push_back(printArg<uint32_t>(P, PC));
24670 break;
24671#endif
24672#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24673bool emitInitElemSint8( uint32_t , SourceInfo);
24674bool emitInitElemUint8( uint32_t , SourceInfo);
24675bool emitInitElemSint16( uint32_t , SourceInfo);
24676bool emitInitElemUint16( uint32_t , SourceInfo);
24677bool emitInitElemSint32( uint32_t , SourceInfo);
24678bool emitInitElemUint32( uint32_t , SourceInfo);
24679bool emitInitElemSint64( uint32_t , SourceInfo);
24680bool emitInitElemUint64( uint32_t , SourceInfo);
24681bool emitInitElemIntAP( uint32_t , SourceInfo);
24682bool emitInitElemIntAPS( uint32_t , SourceInfo);
24683bool emitInitElemBool( uint32_t , SourceInfo);
24684bool emitInitElemFixedPoint( uint32_t , SourceInfo);
24685bool emitInitElemPtr( uint32_t , SourceInfo);
24686bool emitInitElemMemberPtr( uint32_t , SourceInfo);
24687bool emitInitElemFloat( uint32_t , SourceInfo);
24688#endif
24689#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
24690[[nodiscard]] bool emitInitElem(PrimType, uint32_t, SourceInfo I);
24691#endif
24692#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
24693bool
24694#if defined(GET_EVAL_IMPL)
24695EvalEmitter
24696#else
24697ByteCodeEmitter
24698#endif
24699::emitInitElem(PrimType T0, uint32_t A0, SourceInfo I) {
24700 switch (T0) {
24701 case PT_Sint8:
24702 return emitInitElemSint8(A0, I);
24703 case PT_Uint8:
24704 return emitInitElemUint8(A0, I);
24705 case PT_Sint16:
24706 return emitInitElemSint16(A0, I);
24707 case PT_Uint16:
24708 return emitInitElemUint16(A0, I);
24709 case PT_Sint32:
24710 return emitInitElemSint32(A0, I);
24711 case PT_Uint32:
24712 return emitInitElemUint32(A0, I);
24713 case PT_Sint64:
24714 return emitInitElemSint64(A0, I);
24715 case PT_Uint64:
24716 return emitInitElemUint64(A0, I);
24717 case PT_IntAP:
24718 return emitInitElemIntAP(A0, I);
24719 case PT_IntAPS:
24720 return emitInitElemIntAPS(A0, I);
24721 case PT_Bool:
24722 return emitInitElemBool(A0, I);
24723 case PT_FixedPoint:
24724 return emitInitElemFixedPoint(A0, I);
24725 case PT_Ptr:
24726 return emitInitElemPtr(A0, I);
24727 case PT_MemberPtr:
24728 return emitInitElemMemberPtr(A0, I);
24729 case PT_Float:
24730 return emitInitElemFloat(A0, I);
24731 }
24732 llvm_unreachable("invalid enum value");
24733}
24734#endif
24735#ifdef GET_LINK_IMPL
24736bool ByteCodeEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
24737 return emitOp<uint32_t>(OP_InitElemSint8, A0, L);
24738}
24739bool ByteCodeEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
24740 return emitOp<uint32_t>(OP_InitElemUint8, A0, L);
24741}
24742bool ByteCodeEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
24743 return emitOp<uint32_t>(OP_InitElemSint16, A0, L);
24744}
24745bool ByteCodeEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
24746 return emitOp<uint32_t>(OP_InitElemUint16, A0, L);
24747}
24748bool ByteCodeEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
24749 return emitOp<uint32_t>(OP_InitElemSint32, A0, L);
24750}
24751bool ByteCodeEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
24752 return emitOp<uint32_t>(OP_InitElemUint32, A0, L);
24753}
24754bool ByteCodeEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
24755 return emitOp<uint32_t>(OP_InitElemSint64, A0, L);
24756}
24757bool ByteCodeEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
24758 return emitOp<uint32_t>(OP_InitElemUint64, A0, L);
24759}
24760bool ByteCodeEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
24761 return emitOp<uint32_t>(OP_InitElemIntAP, A0, L);
24762}
24763bool ByteCodeEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
24764 return emitOp<uint32_t>(OP_InitElemIntAPS, A0, L);
24765}
24766bool ByteCodeEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
24767 return emitOp<uint32_t>(OP_InitElemBool, A0, L);
24768}
24769bool ByteCodeEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
24770 return emitOp<uint32_t>(OP_InitElemFixedPoint, A0, L);
24771}
24772bool ByteCodeEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
24773 return emitOp<uint32_t>(OP_InitElemPtr, A0, L);
24774}
24775bool ByteCodeEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
24776 return emitOp<uint32_t>(OP_InitElemMemberPtr, A0, L);
24777}
24778bool ByteCodeEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
24779 return emitOp<uint32_t>(OP_InitElemFloat, A0, L);
24780}
24781#endif
24782#ifdef GET_EVAL_IMPL
24783bool EvalEmitter::emitInitElemSint8( uint32_t A0, SourceInfo L) {
24784 if (!isActive()) return true;
24785 CurrentSource = L;
24786 return InitElem<PT_Sint8>(S, OpPC, A0);
24787}
24788bool EvalEmitter::emitInitElemUint8( uint32_t A0, SourceInfo L) {
24789 if (!isActive()) return true;
24790 CurrentSource = L;
24791 return InitElem<PT_Uint8>(S, OpPC, A0);
24792}
24793bool EvalEmitter::emitInitElemSint16( uint32_t A0, SourceInfo L) {
24794 if (!isActive()) return true;
24795 CurrentSource = L;
24796 return InitElem<PT_Sint16>(S, OpPC, A0);
24797}
24798bool EvalEmitter::emitInitElemUint16( uint32_t A0, SourceInfo L) {
24799 if (!isActive()) return true;
24800 CurrentSource = L;
24801 return InitElem<PT_Uint16>(S, OpPC, A0);
24802}
24803bool EvalEmitter::emitInitElemSint32( uint32_t A0, SourceInfo L) {
24804 if (!isActive()) return true;
24805 CurrentSource = L;
24806 return InitElem<PT_Sint32>(S, OpPC, A0);
24807}
24808bool EvalEmitter::emitInitElemUint32( uint32_t A0, SourceInfo L) {
24809 if (!isActive()) return true;
24810 CurrentSource = L;
24811 return InitElem<PT_Uint32>(S, OpPC, A0);
24812}
24813bool EvalEmitter::emitInitElemSint64( uint32_t A0, SourceInfo L) {
24814 if (!isActive()) return true;
24815 CurrentSource = L;
24816 return InitElem<PT_Sint64>(S, OpPC, A0);
24817}
24818bool EvalEmitter::emitInitElemUint64( uint32_t A0, SourceInfo L) {
24819 if (!isActive()) return true;
24820 CurrentSource = L;
24821 return InitElem<PT_Uint64>(S, OpPC, A0);
24822}
24823bool EvalEmitter::emitInitElemIntAP( uint32_t A0, SourceInfo L) {
24824 if (!isActive()) return true;
24825 CurrentSource = L;
24826 return InitElem<PT_IntAP>(S, OpPC, A0);
24827}
24828bool EvalEmitter::emitInitElemIntAPS( uint32_t A0, SourceInfo L) {
24829 if (!isActive()) return true;
24830 CurrentSource = L;
24831 return InitElem<PT_IntAPS>(S, OpPC, A0);
24832}
24833bool EvalEmitter::emitInitElemBool( uint32_t A0, SourceInfo L) {
24834 if (!isActive()) return true;
24835 CurrentSource = L;
24836 return InitElem<PT_Bool>(S, OpPC, A0);
24837}
24838bool EvalEmitter::emitInitElemFixedPoint( uint32_t A0, SourceInfo L) {
24839 if (!isActive()) return true;
24840 CurrentSource = L;
24841 return InitElem<PT_FixedPoint>(S, OpPC, A0);
24842}
24843bool EvalEmitter::emitInitElemPtr( uint32_t A0, SourceInfo L) {
24844 if (!isActive()) return true;
24845 CurrentSource = L;
24846 return InitElem<PT_Ptr>(S, OpPC, A0);
24847}
24848bool EvalEmitter::emitInitElemMemberPtr( uint32_t A0, SourceInfo L) {
24849 if (!isActive()) return true;
24850 CurrentSource = L;
24851 return InitElem<PT_MemberPtr>(S, OpPC, A0);
24852}
24853bool EvalEmitter::emitInitElemFloat( uint32_t A0, SourceInfo L) {
24854 if (!isActive()) return true;
24855 CurrentSource = L;
24856 return InitElem<PT_Float>(S, OpPC, A0);
24857}
24858#endif
24859#ifdef GET_OPCODE_NAMES
24860OP_InitElemPopSint8,
24861OP_InitElemPopUint8,
24862OP_InitElemPopSint16,
24863OP_InitElemPopUint16,
24864OP_InitElemPopSint32,
24865OP_InitElemPopUint32,
24866OP_InitElemPopSint64,
24867OP_InitElemPopUint64,
24868OP_InitElemPopIntAP,
24869OP_InitElemPopIntAPS,
24870OP_InitElemPopBool,
24871OP_InitElemPopFixedPoint,
24872OP_InitElemPopPtr,
24873OP_InitElemPopMemberPtr,
24874OP_InitElemPopFloat,
24875#endif
24876#ifdef GET_INTERP
24877case OP_InitElemPopSint8: {
24878 const auto V0 = ReadArg<uint32_t>(S, PC);
24879 if (!InitElemPop<PT_Sint8>(S, OpPC, V0))
24880 return false;
24881 continue;
24882}
24883case OP_InitElemPopUint8: {
24884 const auto V0 = ReadArg<uint32_t>(S, PC);
24885 if (!InitElemPop<PT_Uint8>(S, OpPC, V0))
24886 return false;
24887 continue;
24888}
24889case OP_InitElemPopSint16: {
24890 const auto V0 = ReadArg<uint32_t>(S, PC);
24891 if (!InitElemPop<PT_Sint16>(S, OpPC, V0))
24892 return false;
24893 continue;
24894}
24895case OP_InitElemPopUint16: {
24896 const auto V0 = ReadArg<uint32_t>(S, PC);
24897 if (!InitElemPop<PT_Uint16>(S, OpPC, V0))
24898 return false;
24899 continue;
24900}
24901case OP_InitElemPopSint32: {
24902 const auto V0 = ReadArg<uint32_t>(S, PC);
24903 if (!InitElemPop<PT_Sint32>(S, OpPC, V0))
24904 return false;
24905 continue;
24906}
24907case OP_InitElemPopUint32: {
24908 const auto V0 = ReadArg<uint32_t>(S, PC);
24909 if (!InitElemPop<PT_Uint32>(S, OpPC, V0))
24910 return false;
24911 continue;
24912}
24913case OP_InitElemPopSint64: {
24914 const auto V0 = ReadArg<uint32_t>(S, PC);
24915 if (!InitElemPop<PT_Sint64>(S, OpPC, V0))
24916 return false;
24917 continue;
24918}
24919case OP_InitElemPopUint64: {
24920 const auto V0 = ReadArg<uint32_t>(S, PC);
24921 if (!InitElemPop<PT_Uint64>(S, OpPC, V0))
24922 return false;
24923 continue;
24924}
24925case OP_InitElemPopIntAP: {
24926 const auto V0 = ReadArg<uint32_t>(S, PC);
24927 if (!InitElemPop<PT_IntAP>(S, OpPC, V0))
24928 return false;
24929 continue;
24930}
24931case OP_InitElemPopIntAPS: {
24932 const auto V0 = ReadArg<uint32_t>(S, PC);
24933 if (!InitElemPop<PT_IntAPS>(S, OpPC, V0))
24934 return false;
24935 continue;
24936}
24937case OP_InitElemPopBool: {
24938 const auto V0 = ReadArg<uint32_t>(S, PC);
24939 if (!InitElemPop<PT_Bool>(S, OpPC, V0))
24940 return false;
24941 continue;
24942}
24943case OP_InitElemPopFixedPoint: {
24944 const auto V0 = ReadArg<uint32_t>(S, PC);
24945 if (!InitElemPop<PT_FixedPoint>(S, OpPC, V0))
24946 return false;
24947 continue;
24948}
24949case OP_InitElemPopPtr: {
24950 const auto V0 = ReadArg<uint32_t>(S, PC);
24951 if (!InitElemPop<PT_Ptr>(S, OpPC, V0))
24952 return false;
24953 continue;
24954}
24955case OP_InitElemPopMemberPtr: {
24956 const auto V0 = ReadArg<uint32_t>(S, PC);
24957 if (!InitElemPop<PT_MemberPtr>(S, OpPC, V0))
24958 return false;
24959 continue;
24960}
24961case OP_InitElemPopFloat: {
24962 const auto V0 = ReadArg<uint32_t>(S, PC);
24963 if (!InitElemPop<PT_Float>(S, OpPC, V0))
24964 return false;
24965 continue;
24966}
24967#endif
24968#ifdef GET_DISASM
24969case OP_InitElemPopSint8:
24970 Text.Op = PrintName("InitElemPopSint8");
24971 Text.Args.push_back(printArg<uint32_t>(P, PC));
24972 break;
24973case OP_InitElemPopUint8:
24974 Text.Op = PrintName("InitElemPopUint8");
24975 Text.Args.push_back(printArg<uint32_t>(P, PC));
24976 break;
24977case OP_InitElemPopSint16:
24978 Text.Op = PrintName("InitElemPopSint16");
24979 Text.Args.push_back(printArg<uint32_t>(P, PC));
24980 break;
24981case OP_InitElemPopUint16:
24982 Text.Op = PrintName("InitElemPopUint16");
24983 Text.Args.push_back(printArg<uint32_t>(P, PC));
24984 break;
24985case OP_InitElemPopSint32:
24986 Text.Op = PrintName("InitElemPopSint32");
24987 Text.Args.push_back(printArg<uint32_t>(P, PC));
24988 break;
24989case OP_InitElemPopUint32:
24990 Text.Op = PrintName("InitElemPopUint32");
24991 Text.Args.push_back(printArg<uint32_t>(P, PC));
24992 break;
24993case OP_InitElemPopSint64:
24994 Text.Op = PrintName("InitElemPopSint64");
24995 Text.Args.push_back(printArg<uint32_t>(P, PC));
24996 break;
24997case OP_InitElemPopUint64:
24998 Text.Op = PrintName("InitElemPopUint64");
24999 Text.Args.push_back(printArg<uint32_t>(P, PC));
25000 break;
25001case OP_InitElemPopIntAP:
25002 Text.Op = PrintName("InitElemPopIntAP");
25003 Text.Args.push_back(printArg<uint32_t>(P, PC));
25004 break;
25005case OP_InitElemPopIntAPS:
25006 Text.Op = PrintName("InitElemPopIntAPS");
25007 Text.Args.push_back(printArg<uint32_t>(P, PC));
25008 break;
25009case OP_InitElemPopBool:
25010 Text.Op = PrintName("InitElemPopBool");
25011 Text.Args.push_back(printArg<uint32_t>(P, PC));
25012 break;
25013case OP_InitElemPopFixedPoint:
25014 Text.Op = PrintName("InitElemPopFixedPoint");
25015 Text.Args.push_back(printArg<uint32_t>(P, PC));
25016 break;
25017case OP_InitElemPopPtr:
25018 Text.Op = PrintName("InitElemPopPtr");
25019 Text.Args.push_back(printArg<uint32_t>(P, PC));
25020 break;
25021case OP_InitElemPopMemberPtr:
25022 Text.Op = PrintName("InitElemPopMemberPtr");
25023 Text.Args.push_back(printArg<uint32_t>(P, PC));
25024 break;
25025case OP_InitElemPopFloat:
25026 Text.Op = PrintName("InitElemPopFloat");
25027 Text.Args.push_back(printArg<uint32_t>(P, PC));
25028 break;
25029#endif
25030#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25031bool emitInitElemPopSint8( uint32_t , SourceInfo);
25032bool emitInitElemPopUint8( uint32_t , SourceInfo);
25033bool emitInitElemPopSint16( uint32_t , SourceInfo);
25034bool emitInitElemPopUint16( uint32_t , SourceInfo);
25035bool emitInitElemPopSint32( uint32_t , SourceInfo);
25036bool emitInitElemPopUint32( uint32_t , SourceInfo);
25037bool emitInitElemPopSint64( uint32_t , SourceInfo);
25038bool emitInitElemPopUint64( uint32_t , SourceInfo);
25039bool emitInitElemPopIntAP( uint32_t , SourceInfo);
25040bool emitInitElemPopIntAPS( uint32_t , SourceInfo);
25041bool emitInitElemPopBool( uint32_t , SourceInfo);
25042bool emitInitElemPopFixedPoint( uint32_t , SourceInfo);
25043bool emitInitElemPopPtr( uint32_t , SourceInfo);
25044bool emitInitElemPopMemberPtr( uint32_t , SourceInfo);
25045bool emitInitElemPopFloat( uint32_t , SourceInfo);
25046#endif
25047#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25048[[nodiscard]] bool emitInitElemPop(PrimType, uint32_t, SourceInfo I);
25049#endif
25050#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25051bool
25052#if defined(GET_EVAL_IMPL)
25053EvalEmitter
25054#else
25055ByteCodeEmitter
25056#endif
25057::emitInitElemPop(PrimType T0, uint32_t A0, SourceInfo I) {
25058 switch (T0) {
25059 case PT_Sint8:
25060 return emitInitElemPopSint8(A0, I);
25061 case PT_Uint8:
25062 return emitInitElemPopUint8(A0, I);
25063 case PT_Sint16:
25064 return emitInitElemPopSint16(A0, I);
25065 case PT_Uint16:
25066 return emitInitElemPopUint16(A0, I);
25067 case PT_Sint32:
25068 return emitInitElemPopSint32(A0, I);
25069 case PT_Uint32:
25070 return emitInitElemPopUint32(A0, I);
25071 case PT_Sint64:
25072 return emitInitElemPopSint64(A0, I);
25073 case PT_Uint64:
25074 return emitInitElemPopUint64(A0, I);
25075 case PT_IntAP:
25076 return emitInitElemPopIntAP(A0, I);
25077 case PT_IntAPS:
25078 return emitInitElemPopIntAPS(A0, I);
25079 case PT_Bool:
25080 return emitInitElemPopBool(A0, I);
25081 case PT_FixedPoint:
25082 return emitInitElemPopFixedPoint(A0, I);
25083 case PT_Ptr:
25084 return emitInitElemPopPtr(A0, I);
25085 case PT_MemberPtr:
25086 return emitInitElemPopMemberPtr(A0, I);
25087 case PT_Float:
25088 return emitInitElemPopFloat(A0, I);
25089 }
25090 llvm_unreachable("invalid enum value");
25091}
25092#endif
25093#ifdef GET_LINK_IMPL
25094bool ByteCodeEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
25095 return emitOp<uint32_t>(OP_InitElemPopSint8, A0, L);
25096}
25097bool ByteCodeEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
25098 return emitOp<uint32_t>(OP_InitElemPopUint8, A0, L);
25099}
25100bool ByteCodeEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
25101 return emitOp<uint32_t>(OP_InitElemPopSint16, A0, L);
25102}
25103bool ByteCodeEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
25104 return emitOp<uint32_t>(OP_InitElemPopUint16, A0, L);
25105}
25106bool ByteCodeEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
25107 return emitOp<uint32_t>(OP_InitElemPopSint32, A0, L);
25108}
25109bool ByteCodeEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
25110 return emitOp<uint32_t>(OP_InitElemPopUint32, A0, L);
25111}
25112bool ByteCodeEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
25113 return emitOp<uint32_t>(OP_InitElemPopSint64, A0, L);
25114}
25115bool ByteCodeEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
25116 return emitOp<uint32_t>(OP_InitElemPopUint64, A0, L);
25117}
25118bool ByteCodeEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
25119 return emitOp<uint32_t>(OP_InitElemPopIntAP, A0, L);
25120}
25121bool ByteCodeEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
25122 return emitOp<uint32_t>(OP_InitElemPopIntAPS, A0, L);
25123}
25124bool ByteCodeEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
25125 return emitOp<uint32_t>(OP_InitElemPopBool, A0, L);
25126}
25127bool ByteCodeEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
25128 return emitOp<uint32_t>(OP_InitElemPopFixedPoint, A0, L);
25129}
25130bool ByteCodeEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
25131 return emitOp<uint32_t>(OP_InitElemPopPtr, A0, L);
25132}
25133bool ByteCodeEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
25134 return emitOp<uint32_t>(OP_InitElemPopMemberPtr, A0, L);
25135}
25136bool ByteCodeEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
25137 return emitOp<uint32_t>(OP_InitElemPopFloat, A0, L);
25138}
25139#endif
25140#ifdef GET_EVAL_IMPL
25141bool EvalEmitter::emitInitElemPopSint8( uint32_t A0, SourceInfo L) {
25142 if (!isActive()) return true;
25143 CurrentSource = L;
25144 return InitElemPop<PT_Sint8>(S, OpPC, A0);
25145}
25146bool EvalEmitter::emitInitElemPopUint8( uint32_t A0, SourceInfo L) {
25147 if (!isActive()) return true;
25148 CurrentSource = L;
25149 return InitElemPop<PT_Uint8>(S, OpPC, A0);
25150}
25151bool EvalEmitter::emitInitElemPopSint16( uint32_t A0, SourceInfo L) {
25152 if (!isActive()) return true;
25153 CurrentSource = L;
25154 return InitElemPop<PT_Sint16>(S, OpPC, A0);
25155}
25156bool EvalEmitter::emitInitElemPopUint16( uint32_t A0, SourceInfo L) {
25157 if (!isActive()) return true;
25158 CurrentSource = L;
25159 return InitElemPop<PT_Uint16>(S, OpPC, A0);
25160}
25161bool EvalEmitter::emitInitElemPopSint32( uint32_t A0, SourceInfo L) {
25162 if (!isActive()) return true;
25163 CurrentSource = L;
25164 return InitElemPop<PT_Sint32>(S, OpPC, A0);
25165}
25166bool EvalEmitter::emitInitElemPopUint32( uint32_t A0, SourceInfo L) {
25167 if (!isActive()) return true;
25168 CurrentSource = L;
25169 return InitElemPop<PT_Uint32>(S, OpPC, A0);
25170}
25171bool EvalEmitter::emitInitElemPopSint64( uint32_t A0, SourceInfo L) {
25172 if (!isActive()) return true;
25173 CurrentSource = L;
25174 return InitElemPop<PT_Sint64>(S, OpPC, A0);
25175}
25176bool EvalEmitter::emitInitElemPopUint64( uint32_t A0, SourceInfo L) {
25177 if (!isActive()) return true;
25178 CurrentSource = L;
25179 return InitElemPop<PT_Uint64>(S, OpPC, A0);
25180}
25181bool EvalEmitter::emitInitElemPopIntAP( uint32_t A0, SourceInfo L) {
25182 if (!isActive()) return true;
25183 CurrentSource = L;
25184 return InitElemPop<PT_IntAP>(S, OpPC, A0);
25185}
25186bool EvalEmitter::emitInitElemPopIntAPS( uint32_t A0, SourceInfo L) {
25187 if (!isActive()) return true;
25188 CurrentSource = L;
25189 return InitElemPop<PT_IntAPS>(S, OpPC, A0);
25190}
25191bool EvalEmitter::emitInitElemPopBool( uint32_t A0, SourceInfo L) {
25192 if (!isActive()) return true;
25193 CurrentSource = L;
25194 return InitElemPop<PT_Bool>(S, OpPC, A0);
25195}
25196bool EvalEmitter::emitInitElemPopFixedPoint( uint32_t A0, SourceInfo L) {
25197 if (!isActive()) return true;
25198 CurrentSource = L;
25199 return InitElemPop<PT_FixedPoint>(S, OpPC, A0);
25200}
25201bool EvalEmitter::emitInitElemPopPtr( uint32_t A0, SourceInfo L) {
25202 if (!isActive()) return true;
25203 CurrentSource = L;
25204 return InitElemPop<PT_Ptr>(S, OpPC, A0);
25205}
25206bool EvalEmitter::emitInitElemPopMemberPtr( uint32_t A0, SourceInfo L) {
25207 if (!isActive()) return true;
25208 CurrentSource = L;
25209 return InitElemPop<PT_MemberPtr>(S, OpPC, A0);
25210}
25211bool EvalEmitter::emitInitElemPopFloat( uint32_t A0, SourceInfo L) {
25212 if (!isActive()) return true;
25213 CurrentSource = L;
25214 return InitElemPop<PT_Float>(S, OpPC, A0);
25215}
25216#endif
25217#ifdef GET_OPCODE_NAMES
25218OP_InitFieldSint8,
25219OP_InitFieldUint8,
25220OP_InitFieldSint16,
25221OP_InitFieldUint16,
25222OP_InitFieldSint32,
25223OP_InitFieldUint32,
25224OP_InitFieldSint64,
25225OP_InitFieldUint64,
25226OP_InitFieldIntAP,
25227OP_InitFieldIntAPS,
25228OP_InitFieldBool,
25229OP_InitFieldFixedPoint,
25230OP_InitFieldPtr,
25231OP_InitFieldMemberPtr,
25232OP_InitFieldFloat,
25233#endif
25234#ifdef GET_INTERP
25235case OP_InitFieldSint8: {
25236 const auto V0 = ReadArg<uint32_t>(S, PC);
25237 if (!InitField<PT_Sint8>(S, OpPC, V0))
25238 return false;
25239 continue;
25240}
25241case OP_InitFieldUint8: {
25242 const auto V0 = ReadArg<uint32_t>(S, PC);
25243 if (!InitField<PT_Uint8>(S, OpPC, V0))
25244 return false;
25245 continue;
25246}
25247case OP_InitFieldSint16: {
25248 const auto V0 = ReadArg<uint32_t>(S, PC);
25249 if (!InitField<PT_Sint16>(S, OpPC, V0))
25250 return false;
25251 continue;
25252}
25253case OP_InitFieldUint16: {
25254 const auto V0 = ReadArg<uint32_t>(S, PC);
25255 if (!InitField<PT_Uint16>(S, OpPC, V0))
25256 return false;
25257 continue;
25258}
25259case OP_InitFieldSint32: {
25260 const auto V0 = ReadArg<uint32_t>(S, PC);
25261 if (!InitField<PT_Sint32>(S, OpPC, V0))
25262 return false;
25263 continue;
25264}
25265case OP_InitFieldUint32: {
25266 const auto V0 = ReadArg<uint32_t>(S, PC);
25267 if (!InitField<PT_Uint32>(S, OpPC, V0))
25268 return false;
25269 continue;
25270}
25271case OP_InitFieldSint64: {
25272 const auto V0 = ReadArg<uint32_t>(S, PC);
25273 if (!InitField<PT_Sint64>(S, OpPC, V0))
25274 return false;
25275 continue;
25276}
25277case OP_InitFieldUint64: {
25278 const auto V0 = ReadArg<uint32_t>(S, PC);
25279 if (!InitField<PT_Uint64>(S, OpPC, V0))
25280 return false;
25281 continue;
25282}
25283case OP_InitFieldIntAP: {
25284 const auto V0 = ReadArg<uint32_t>(S, PC);
25285 if (!InitField<PT_IntAP>(S, OpPC, V0))
25286 return false;
25287 continue;
25288}
25289case OP_InitFieldIntAPS: {
25290 const auto V0 = ReadArg<uint32_t>(S, PC);
25291 if (!InitField<PT_IntAPS>(S, OpPC, V0))
25292 return false;
25293 continue;
25294}
25295case OP_InitFieldBool: {
25296 const auto V0 = ReadArg<uint32_t>(S, PC);
25297 if (!InitField<PT_Bool>(S, OpPC, V0))
25298 return false;
25299 continue;
25300}
25301case OP_InitFieldFixedPoint: {
25302 const auto V0 = ReadArg<uint32_t>(S, PC);
25303 if (!InitField<PT_FixedPoint>(S, OpPC, V0))
25304 return false;
25305 continue;
25306}
25307case OP_InitFieldPtr: {
25308 const auto V0 = ReadArg<uint32_t>(S, PC);
25309 if (!InitField<PT_Ptr>(S, OpPC, V0))
25310 return false;
25311 continue;
25312}
25313case OP_InitFieldMemberPtr: {
25314 const auto V0 = ReadArg<uint32_t>(S, PC);
25315 if (!InitField<PT_MemberPtr>(S, OpPC, V0))
25316 return false;
25317 continue;
25318}
25319case OP_InitFieldFloat: {
25320 const auto V0 = ReadArg<uint32_t>(S, PC);
25321 if (!InitField<PT_Float>(S, OpPC, V0))
25322 return false;
25323 continue;
25324}
25325#endif
25326#ifdef GET_DISASM
25327case OP_InitFieldSint8:
25328 Text.Op = PrintName("InitFieldSint8");
25329 Text.Args.push_back(printArg<uint32_t>(P, PC));
25330 break;
25331case OP_InitFieldUint8:
25332 Text.Op = PrintName("InitFieldUint8");
25333 Text.Args.push_back(printArg<uint32_t>(P, PC));
25334 break;
25335case OP_InitFieldSint16:
25336 Text.Op = PrintName("InitFieldSint16");
25337 Text.Args.push_back(printArg<uint32_t>(P, PC));
25338 break;
25339case OP_InitFieldUint16:
25340 Text.Op = PrintName("InitFieldUint16");
25341 Text.Args.push_back(printArg<uint32_t>(P, PC));
25342 break;
25343case OP_InitFieldSint32:
25344 Text.Op = PrintName("InitFieldSint32");
25345 Text.Args.push_back(printArg<uint32_t>(P, PC));
25346 break;
25347case OP_InitFieldUint32:
25348 Text.Op = PrintName("InitFieldUint32");
25349 Text.Args.push_back(printArg<uint32_t>(P, PC));
25350 break;
25351case OP_InitFieldSint64:
25352 Text.Op = PrintName("InitFieldSint64");
25353 Text.Args.push_back(printArg<uint32_t>(P, PC));
25354 break;
25355case OP_InitFieldUint64:
25356 Text.Op = PrintName("InitFieldUint64");
25357 Text.Args.push_back(printArg<uint32_t>(P, PC));
25358 break;
25359case OP_InitFieldIntAP:
25360 Text.Op = PrintName("InitFieldIntAP");
25361 Text.Args.push_back(printArg<uint32_t>(P, PC));
25362 break;
25363case OP_InitFieldIntAPS:
25364 Text.Op = PrintName("InitFieldIntAPS");
25365 Text.Args.push_back(printArg<uint32_t>(P, PC));
25366 break;
25367case OP_InitFieldBool:
25368 Text.Op = PrintName("InitFieldBool");
25369 Text.Args.push_back(printArg<uint32_t>(P, PC));
25370 break;
25371case OP_InitFieldFixedPoint:
25372 Text.Op = PrintName("InitFieldFixedPoint");
25373 Text.Args.push_back(printArg<uint32_t>(P, PC));
25374 break;
25375case OP_InitFieldPtr:
25376 Text.Op = PrintName("InitFieldPtr");
25377 Text.Args.push_back(printArg<uint32_t>(P, PC));
25378 break;
25379case OP_InitFieldMemberPtr:
25380 Text.Op = PrintName("InitFieldMemberPtr");
25381 Text.Args.push_back(printArg<uint32_t>(P, PC));
25382 break;
25383case OP_InitFieldFloat:
25384 Text.Op = PrintName("InitFieldFloat");
25385 Text.Args.push_back(printArg<uint32_t>(P, PC));
25386 break;
25387#endif
25388#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25389bool emitInitFieldSint8( uint32_t , SourceInfo);
25390bool emitInitFieldUint8( uint32_t , SourceInfo);
25391bool emitInitFieldSint16( uint32_t , SourceInfo);
25392bool emitInitFieldUint16( uint32_t , SourceInfo);
25393bool emitInitFieldSint32( uint32_t , SourceInfo);
25394bool emitInitFieldUint32( uint32_t , SourceInfo);
25395bool emitInitFieldSint64( uint32_t , SourceInfo);
25396bool emitInitFieldUint64( uint32_t , SourceInfo);
25397bool emitInitFieldIntAP( uint32_t , SourceInfo);
25398bool emitInitFieldIntAPS( uint32_t , SourceInfo);
25399bool emitInitFieldBool( uint32_t , SourceInfo);
25400bool emitInitFieldFixedPoint( uint32_t , SourceInfo);
25401bool emitInitFieldPtr( uint32_t , SourceInfo);
25402bool emitInitFieldMemberPtr( uint32_t , SourceInfo);
25403bool emitInitFieldFloat( uint32_t , SourceInfo);
25404#endif
25405#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25406[[nodiscard]] bool emitInitField(PrimType, uint32_t, SourceInfo I);
25407#endif
25408#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25409bool
25410#if defined(GET_EVAL_IMPL)
25411EvalEmitter
25412#else
25413ByteCodeEmitter
25414#endif
25415::emitInitField(PrimType T0, uint32_t A0, SourceInfo I) {
25416 switch (T0) {
25417 case PT_Sint8:
25418 return emitInitFieldSint8(A0, I);
25419 case PT_Uint8:
25420 return emitInitFieldUint8(A0, I);
25421 case PT_Sint16:
25422 return emitInitFieldSint16(A0, I);
25423 case PT_Uint16:
25424 return emitInitFieldUint16(A0, I);
25425 case PT_Sint32:
25426 return emitInitFieldSint32(A0, I);
25427 case PT_Uint32:
25428 return emitInitFieldUint32(A0, I);
25429 case PT_Sint64:
25430 return emitInitFieldSint64(A0, I);
25431 case PT_Uint64:
25432 return emitInitFieldUint64(A0, I);
25433 case PT_IntAP:
25434 return emitInitFieldIntAP(A0, I);
25435 case PT_IntAPS:
25436 return emitInitFieldIntAPS(A0, I);
25437 case PT_Bool:
25438 return emitInitFieldBool(A0, I);
25439 case PT_FixedPoint:
25440 return emitInitFieldFixedPoint(A0, I);
25441 case PT_Ptr:
25442 return emitInitFieldPtr(A0, I);
25443 case PT_MemberPtr:
25444 return emitInitFieldMemberPtr(A0, I);
25445 case PT_Float:
25446 return emitInitFieldFloat(A0, I);
25447 }
25448 llvm_unreachable("invalid enum value");
25449}
25450#endif
25451#ifdef GET_LINK_IMPL
25452bool ByteCodeEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
25453 return emitOp<uint32_t>(OP_InitFieldSint8, A0, L);
25454}
25455bool ByteCodeEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
25456 return emitOp<uint32_t>(OP_InitFieldUint8, A0, L);
25457}
25458bool ByteCodeEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
25459 return emitOp<uint32_t>(OP_InitFieldSint16, A0, L);
25460}
25461bool ByteCodeEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
25462 return emitOp<uint32_t>(OP_InitFieldUint16, A0, L);
25463}
25464bool ByteCodeEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
25465 return emitOp<uint32_t>(OP_InitFieldSint32, A0, L);
25466}
25467bool ByteCodeEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
25468 return emitOp<uint32_t>(OP_InitFieldUint32, A0, L);
25469}
25470bool ByteCodeEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
25471 return emitOp<uint32_t>(OP_InitFieldSint64, A0, L);
25472}
25473bool ByteCodeEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
25474 return emitOp<uint32_t>(OP_InitFieldUint64, A0, L);
25475}
25476bool ByteCodeEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
25477 return emitOp<uint32_t>(OP_InitFieldIntAP, A0, L);
25478}
25479bool ByteCodeEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
25480 return emitOp<uint32_t>(OP_InitFieldIntAPS, A0, L);
25481}
25482bool ByteCodeEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
25483 return emitOp<uint32_t>(OP_InitFieldBool, A0, L);
25484}
25485bool ByteCodeEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
25486 return emitOp<uint32_t>(OP_InitFieldFixedPoint, A0, L);
25487}
25488bool ByteCodeEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
25489 return emitOp<uint32_t>(OP_InitFieldPtr, A0, L);
25490}
25491bool ByteCodeEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
25492 return emitOp<uint32_t>(OP_InitFieldMemberPtr, A0, L);
25493}
25494bool ByteCodeEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
25495 return emitOp<uint32_t>(OP_InitFieldFloat, A0, L);
25496}
25497#endif
25498#ifdef GET_EVAL_IMPL
25499bool EvalEmitter::emitInitFieldSint8( uint32_t A0, SourceInfo L) {
25500 if (!isActive()) return true;
25501 CurrentSource = L;
25502 return InitField<PT_Sint8>(S, OpPC, A0);
25503}
25504bool EvalEmitter::emitInitFieldUint8( uint32_t A0, SourceInfo L) {
25505 if (!isActive()) return true;
25506 CurrentSource = L;
25507 return InitField<PT_Uint8>(S, OpPC, A0);
25508}
25509bool EvalEmitter::emitInitFieldSint16( uint32_t A0, SourceInfo L) {
25510 if (!isActive()) return true;
25511 CurrentSource = L;
25512 return InitField<PT_Sint16>(S, OpPC, A0);
25513}
25514bool EvalEmitter::emitInitFieldUint16( uint32_t A0, SourceInfo L) {
25515 if (!isActive()) return true;
25516 CurrentSource = L;
25517 return InitField<PT_Uint16>(S, OpPC, A0);
25518}
25519bool EvalEmitter::emitInitFieldSint32( uint32_t A0, SourceInfo L) {
25520 if (!isActive()) return true;
25521 CurrentSource = L;
25522 return InitField<PT_Sint32>(S, OpPC, A0);
25523}
25524bool EvalEmitter::emitInitFieldUint32( uint32_t A0, SourceInfo L) {
25525 if (!isActive()) return true;
25526 CurrentSource = L;
25527 return InitField<PT_Uint32>(S, OpPC, A0);
25528}
25529bool EvalEmitter::emitInitFieldSint64( uint32_t A0, SourceInfo L) {
25530 if (!isActive()) return true;
25531 CurrentSource = L;
25532 return InitField<PT_Sint64>(S, OpPC, A0);
25533}
25534bool EvalEmitter::emitInitFieldUint64( uint32_t A0, SourceInfo L) {
25535 if (!isActive()) return true;
25536 CurrentSource = L;
25537 return InitField<PT_Uint64>(S, OpPC, A0);
25538}
25539bool EvalEmitter::emitInitFieldIntAP( uint32_t A0, SourceInfo L) {
25540 if (!isActive()) return true;
25541 CurrentSource = L;
25542 return InitField<PT_IntAP>(S, OpPC, A0);
25543}
25544bool EvalEmitter::emitInitFieldIntAPS( uint32_t A0, SourceInfo L) {
25545 if (!isActive()) return true;
25546 CurrentSource = L;
25547 return InitField<PT_IntAPS>(S, OpPC, A0);
25548}
25549bool EvalEmitter::emitInitFieldBool( uint32_t A0, SourceInfo L) {
25550 if (!isActive()) return true;
25551 CurrentSource = L;
25552 return InitField<PT_Bool>(S, OpPC, A0);
25553}
25554bool EvalEmitter::emitInitFieldFixedPoint( uint32_t A0, SourceInfo L) {
25555 if (!isActive()) return true;
25556 CurrentSource = L;
25557 return InitField<PT_FixedPoint>(S, OpPC, A0);
25558}
25559bool EvalEmitter::emitInitFieldPtr( uint32_t A0, SourceInfo L) {
25560 if (!isActive()) return true;
25561 CurrentSource = L;
25562 return InitField<PT_Ptr>(S, OpPC, A0);
25563}
25564bool EvalEmitter::emitInitFieldMemberPtr( uint32_t A0, SourceInfo L) {
25565 if (!isActive()) return true;
25566 CurrentSource = L;
25567 return InitField<PT_MemberPtr>(S, OpPC, A0);
25568}
25569bool EvalEmitter::emitInitFieldFloat( uint32_t A0, SourceInfo L) {
25570 if (!isActive()) return true;
25571 CurrentSource = L;
25572 return InitField<PT_Float>(S, OpPC, A0);
25573}
25574#endif
25575#ifdef GET_OPCODE_NAMES
25576OP_InitFieldActivateSint8,
25577OP_InitFieldActivateUint8,
25578OP_InitFieldActivateSint16,
25579OP_InitFieldActivateUint16,
25580OP_InitFieldActivateSint32,
25581OP_InitFieldActivateUint32,
25582OP_InitFieldActivateSint64,
25583OP_InitFieldActivateUint64,
25584OP_InitFieldActivateIntAP,
25585OP_InitFieldActivateIntAPS,
25586OP_InitFieldActivateBool,
25587OP_InitFieldActivateFixedPoint,
25588OP_InitFieldActivatePtr,
25589OP_InitFieldActivateMemberPtr,
25590OP_InitFieldActivateFloat,
25591#endif
25592#ifdef GET_INTERP
25593case OP_InitFieldActivateSint8: {
25594 const auto V0 = ReadArg<uint32_t>(S, PC);
25595 if (!InitFieldActivate<PT_Sint8>(S, OpPC, V0))
25596 return false;
25597 continue;
25598}
25599case OP_InitFieldActivateUint8: {
25600 const auto V0 = ReadArg<uint32_t>(S, PC);
25601 if (!InitFieldActivate<PT_Uint8>(S, OpPC, V0))
25602 return false;
25603 continue;
25604}
25605case OP_InitFieldActivateSint16: {
25606 const auto V0 = ReadArg<uint32_t>(S, PC);
25607 if (!InitFieldActivate<PT_Sint16>(S, OpPC, V0))
25608 return false;
25609 continue;
25610}
25611case OP_InitFieldActivateUint16: {
25612 const auto V0 = ReadArg<uint32_t>(S, PC);
25613 if (!InitFieldActivate<PT_Uint16>(S, OpPC, V0))
25614 return false;
25615 continue;
25616}
25617case OP_InitFieldActivateSint32: {
25618 const auto V0 = ReadArg<uint32_t>(S, PC);
25619 if (!InitFieldActivate<PT_Sint32>(S, OpPC, V0))
25620 return false;
25621 continue;
25622}
25623case OP_InitFieldActivateUint32: {
25624 const auto V0 = ReadArg<uint32_t>(S, PC);
25625 if (!InitFieldActivate<PT_Uint32>(S, OpPC, V0))
25626 return false;
25627 continue;
25628}
25629case OP_InitFieldActivateSint64: {
25630 const auto V0 = ReadArg<uint32_t>(S, PC);
25631 if (!InitFieldActivate<PT_Sint64>(S, OpPC, V0))
25632 return false;
25633 continue;
25634}
25635case OP_InitFieldActivateUint64: {
25636 const auto V0 = ReadArg<uint32_t>(S, PC);
25637 if (!InitFieldActivate<PT_Uint64>(S, OpPC, V0))
25638 return false;
25639 continue;
25640}
25641case OP_InitFieldActivateIntAP: {
25642 const auto V0 = ReadArg<uint32_t>(S, PC);
25643 if (!InitFieldActivate<PT_IntAP>(S, OpPC, V0))
25644 return false;
25645 continue;
25646}
25647case OP_InitFieldActivateIntAPS: {
25648 const auto V0 = ReadArg<uint32_t>(S, PC);
25649 if (!InitFieldActivate<PT_IntAPS>(S, OpPC, V0))
25650 return false;
25651 continue;
25652}
25653case OP_InitFieldActivateBool: {
25654 const auto V0 = ReadArg<uint32_t>(S, PC);
25655 if (!InitFieldActivate<PT_Bool>(S, OpPC, V0))
25656 return false;
25657 continue;
25658}
25659case OP_InitFieldActivateFixedPoint: {
25660 const auto V0 = ReadArg<uint32_t>(S, PC);
25661 if (!InitFieldActivate<PT_FixedPoint>(S, OpPC, V0))
25662 return false;
25663 continue;
25664}
25665case OP_InitFieldActivatePtr: {
25666 const auto V0 = ReadArg<uint32_t>(S, PC);
25667 if (!InitFieldActivate<PT_Ptr>(S, OpPC, V0))
25668 return false;
25669 continue;
25670}
25671case OP_InitFieldActivateMemberPtr: {
25672 const auto V0 = ReadArg<uint32_t>(S, PC);
25673 if (!InitFieldActivate<PT_MemberPtr>(S, OpPC, V0))
25674 return false;
25675 continue;
25676}
25677case OP_InitFieldActivateFloat: {
25678 const auto V0 = ReadArg<uint32_t>(S, PC);
25679 if (!InitFieldActivate<PT_Float>(S, OpPC, V0))
25680 return false;
25681 continue;
25682}
25683#endif
25684#ifdef GET_DISASM
25685case OP_InitFieldActivateSint8:
25686 Text.Op = PrintName("InitFieldActivateSint8");
25687 Text.Args.push_back(printArg<uint32_t>(P, PC));
25688 break;
25689case OP_InitFieldActivateUint8:
25690 Text.Op = PrintName("InitFieldActivateUint8");
25691 Text.Args.push_back(printArg<uint32_t>(P, PC));
25692 break;
25693case OP_InitFieldActivateSint16:
25694 Text.Op = PrintName("InitFieldActivateSint16");
25695 Text.Args.push_back(printArg<uint32_t>(P, PC));
25696 break;
25697case OP_InitFieldActivateUint16:
25698 Text.Op = PrintName("InitFieldActivateUint16");
25699 Text.Args.push_back(printArg<uint32_t>(P, PC));
25700 break;
25701case OP_InitFieldActivateSint32:
25702 Text.Op = PrintName("InitFieldActivateSint32");
25703 Text.Args.push_back(printArg<uint32_t>(P, PC));
25704 break;
25705case OP_InitFieldActivateUint32:
25706 Text.Op = PrintName("InitFieldActivateUint32");
25707 Text.Args.push_back(printArg<uint32_t>(P, PC));
25708 break;
25709case OP_InitFieldActivateSint64:
25710 Text.Op = PrintName("InitFieldActivateSint64");
25711 Text.Args.push_back(printArg<uint32_t>(P, PC));
25712 break;
25713case OP_InitFieldActivateUint64:
25714 Text.Op = PrintName("InitFieldActivateUint64");
25715 Text.Args.push_back(printArg<uint32_t>(P, PC));
25716 break;
25717case OP_InitFieldActivateIntAP:
25718 Text.Op = PrintName("InitFieldActivateIntAP");
25719 Text.Args.push_back(printArg<uint32_t>(P, PC));
25720 break;
25721case OP_InitFieldActivateIntAPS:
25722 Text.Op = PrintName("InitFieldActivateIntAPS");
25723 Text.Args.push_back(printArg<uint32_t>(P, PC));
25724 break;
25725case OP_InitFieldActivateBool:
25726 Text.Op = PrintName("InitFieldActivateBool");
25727 Text.Args.push_back(printArg<uint32_t>(P, PC));
25728 break;
25729case OP_InitFieldActivateFixedPoint:
25730 Text.Op = PrintName("InitFieldActivateFixedPoint");
25731 Text.Args.push_back(printArg<uint32_t>(P, PC));
25732 break;
25733case OP_InitFieldActivatePtr:
25734 Text.Op = PrintName("InitFieldActivatePtr");
25735 Text.Args.push_back(printArg<uint32_t>(P, PC));
25736 break;
25737case OP_InitFieldActivateMemberPtr:
25738 Text.Op = PrintName("InitFieldActivateMemberPtr");
25739 Text.Args.push_back(printArg<uint32_t>(P, PC));
25740 break;
25741case OP_InitFieldActivateFloat:
25742 Text.Op = PrintName("InitFieldActivateFloat");
25743 Text.Args.push_back(printArg<uint32_t>(P, PC));
25744 break;
25745#endif
25746#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25747bool emitInitFieldActivateSint8( uint32_t , SourceInfo);
25748bool emitInitFieldActivateUint8( uint32_t , SourceInfo);
25749bool emitInitFieldActivateSint16( uint32_t , SourceInfo);
25750bool emitInitFieldActivateUint16( uint32_t , SourceInfo);
25751bool emitInitFieldActivateSint32( uint32_t , SourceInfo);
25752bool emitInitFieldActivateUint32( uint32_t , SourceInfo);
25753bool emitInitFieldActivateSint64( uint32_t , SourceInfo);
25754bool emitInitFieldActivateUint64( uint32_t , SourceInfo);
25755bool emitInitFieldActivateIntAP( uint32_t , SourceInfo);
25756bool emitInitFieldActivateIntAPS( uint32_t , SourceInfo);
25757bool emitInitFieldActivateBool( uint32_t , SourceInfo);
25758bool emitInitFieldActivateFixedPoint( uint32_t , SourceInfo);
25759bool emitInitFieldActivatePtr( uint32_t , SourceInfo);
25760bool emitInitFieldActivateMemberPtr( uint32_t , SourceInfo);
25761bool emitInitFieldActivateFloat( uint32_t , SourceInfo);
25762#endif
25763#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
25764[[nodiscard]] bool emitInitFieldActivate(PrimType, uint32_t, SourceInfo I);
25765#endif
25766#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
25767bool
25768#if defined(GET_EVAL_IMPL)
25769EvalEmitter
25770#else
25771ByteCodeEmitter
25772#endif
25773::emitInitFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
25774 switch (T0) {
25775 case PT_Sint8:
25776 return emitInitFieldActivateSint8(A0, I);
25777 case PT_Uint8:
25778 return emitInitFieldActivateUint8(A0, I);
25779 case PT_Sint16:
25780 return emitInitFieldActivateSint16(A0, I);
25781 case PT_Uint16:
25782 return emitInitFieldActivateUint16(A0, I);
25783 case PT_Sint32:
25784 return emitInitFieldActivateSint32(A0, I);
25785 case PT_Uint32:
25786 return emitInitFieldActivateUint32(A0, I);
25787 case PT_Sint64:
25788 return emitInitFieldActivateSint64(A0, I);
25789 case PT_Uint64:
25790 return emitInitFieldActivateUint64(A0, I);
25791 case PT_IntAP:
25792 return emitInitFieldActivateIntAP(A0, I);
25793 case PT_IntAPS:
25794 return emitInitFieldActivateIntAPS(A0, I);
25795 case PT_Bool:
25796 return emitInitFieldActivateBool(A0, I);
25797 case PT_FixedPoint:
25798 return emitInitFieldActivateFixedPoint(A0, I);
25799 case PT_Ptr:
25800 return emitInitFieldActivatePtr(A0, I);
25801 case PT_MemberPtr:
25802 return emitInitFieldActivateMemberPtr(A0, I);
25803 case PT_Float:
25804 return emitInitFieldActivateFloat(A0, I);
25805 }
25806 llvm_unreachable("invalid enum value");
25807}
25808#endif
25809#ifdef GET_LINK_IMPL
25810bool ByteCodeEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
25811 return emitOp<uint32_t>(OP_InitFieldActivateSint8, A0, L);
25812}
25813bool ByteCodeEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
25814 return emitOp<uint32_t>(OP_InitFieldActivateUint8, A0, L);
25815}
25816bool ByteCodeEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
25817 return emitOp<uint32_t>(OP_InitFieldActivateSint16, A0, L);
25818}
25819bool ByteCodeEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
25820 return emitOp<uint32_t>(OP_InitFieldActivateUint16, A0, L);
25821}
25822bool ByteCodeEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
25823 return emitOp<uint32_t>(OP_InitFieldActivateSint32, A0, L);
25824}
25825bool ByteCodeEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
25826 return emitOp<uint32_t>(OP_InitFieldActivateUint32, A0, L);
25827}
25828bool ByteCodeEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
25829 return emitOp<uint32_t>(OP_InitFieldActivateSint64, A0, L);
25830}
25831bool ByteCodeEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
25832 return emitOp<uint32_t>(OP_InitFieldActivateUint64, A0, L);
25833}
25834bool ByteCodeEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
25835 return emitOp<uint32_t>(OP_InitFieldActivateIntAP, A0, L);
25836}
25837bool ByteCodeEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
25838 return emitOp<uint32_t>(OP_InitFieldActivateIntAPS, A0, L);
25839}
25840bool ByteCodeEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
25841 return emitOp<uint32_t>(OP_InitFieldActivateBool, A0, L);
25842}
25843bool ByteCodeEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
25844 return emitOp<uint32_t>(OP_InitFieldActivateFixedPoint, A0, L);
25845}
25846bool ByteCodeEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
25847 return emitOp<uint32_t>(OP_InitFieldActivatePtr, A0, L);
25848}
25849bool ByteCodeEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
25850 return emitOp<uint32_t>(OP_InitFieldActivateMemberPtr, A0, L);
25851}
25852bool ByteCodeEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
25853 return emitOp<uint32_t>(OP_InitFieldActivateFloat, A0, L);
25854}
25855#endif
25856#ifdef GET_EVAL_IMPL
25857bool EvalEmitter::emitInitFieldActivateSint8( uint32_t A0, SourceInfo L) {
25858 if (!isActive()) return true;
25859 CurrentSource = L;
25860 return InitFieldActivate<PT_Sint8>(S, OpPC, A0);
25861}
25862bool EvalEmitter::emitInitFieldActivateUint8( uint32_t A0, SourceInfo L) {
25863 if (!isActive()) return true;
25864 CurrentSource = L;
25865 return InitFieldActivate<PT_Uint8>(S, OpPC, A0);
25866}
25867bool EvalEmitter::emitInitFieldActivateSint16( uint32_t A0, SourceInfo L) {
25868 if (!isActive()) return true;
25869 CurrentSource = L;
25870 return InitFieldActivate<PT_Sint16>(S, OpPC, A0);
25871}
25872bool EvalEmitter::emitInitFieldActivateUint16( uint32_t A0, SourceInfo L) {
25873 if (!isActive()) return true;
25874 CurrentSource = L;
25875 return InitFieldActivate<PT_Uint16>(S, OpPC, A0);
25876}
25877bool EvalEmitter::emitInitFieldActivateSint32( uint32_t A0, SourceInfo L) {
25878 if (!isActive()) return true;
25879 CurrentSource = L;
25880 return InitFieldActivate<PT_Sint32>(S, OpPC, A0);
25881}
25882bool EvalEmitter::emitInitFieldActivateUint32( uint32_t A0, SourceInfo L) {
25883 if (!isActive()) return true;
25884 CurrentSource = L;
25885 return InitFieldActivate<PT_Uint32>(S, OpPC, A0);
25886}
25887bool EvalEmitter::emitInitFieldActivateSint64( uint32_t A0, SourceInfo L) {
25888 if (!isActive()) return true;
25889 CurrentSource = L;
25890 return InitFieldActivate<PT_Sint64>(S, OpPC, A0);
25891}
25892bool EvalEmitter::emitInitFieldActivateUint64( uint32_t A0, SourceInfo L) {
25893 if (!isActive()) return true;
25894 CurrentSource = L;
25895 return InitFieldActivate<PT_Uint64>(S, OpPC, A0);
25896}
25897bool EvalEmitter::emitInitFieldActivateIntAP( uint32_t A0, SourceInfo L) {
25898 if (!isActive()) return true;
25899 CurrentSource = L;
25900 return InitFieldActivate<PT_IntAP>(S, OpPC, A0);
25901}
25902bool EvalEmitter::emitInitFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
25903 if (!isActive()) return true;
25904 CurrentSource = L;
25905 return InitFieldActivate<PT_IntAPS>(S, OpPC, A0);
25906}
25907bool EvalEmitter::emitInitFieldActivateBool( uint32_t A0, SourceInfo L) {
25908 if (!isActive()) return true;
25909 CurrentSource = L;
25910 return InitFieldActivate<PT_Bool>(S, OpPC, A0);
25911}
25912bool EvalEmitter::emitInitFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
25913 if (!isActive()) return true;
25914 CurrentSource = L;
25915 return InitFieldActivate<PT_FixedPoint>(S, OpPC, A0);
25916}
25917bool EvalEmitter::emitInitFieldActivatePtr( uint32_t A0, SourceInfo L) {
25918 if (!isActive()) return true;
25919 CurrentSource = L;
25920 return InitFieldActivate<PT_Ptr>(S, OpPC, A0);
25921}
25922bool EvalEmitter::emitInitFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
25923 if (!isActive()) return true;
25924 CurrentSource = L;
25925 return InitFieldActivate<PT_MemberPtr>(S, OpPC, A0);
25926}
25927bool EvalEmitter::emitInitFieldActivateFloat( uint32_t A0, SourceInfo L) {
25928 if (!isActive()) return true;
25929 CurrentSource = L;
25930 return InitFieldActivate<PT_Float>(S, OpPC, A0);
25931}
25932#endif
25933#ifdef GET_OPCODE_NAMES
25934OP_InitGlobalSint8,
25935OP_InitGlobalUint8,
25936OP_InitGlobalSint16,
25937OP_InitGlobalUint16,
25938OP_InitGlobalSint32,
25939OP_InitGlobalUint32,
25940OP_InitGlobalSint64,
25941OP_InitGlobalUint64,
25942OP_InitGlobalIntAP,
25943OP_InitGlobalIntAPS,
25944OP_InitGlobalBool,
25945OP_InitGlobalFixedPoint,
25946OP_InitGlobalPtr,
25947OP_InitGlobalMemberPtr,
25948OP_InitGlobalFloat,
25949#endif
25950#ifdef GET_INTERP
25951case OP_InitGlobalSint8: {
25952 const auto V0 = ReadArg<uint32_t>(S, PC);
25953 if (!InitGlobal<PT_Sint8>(S, OpPC, V0))
25954 return false;
25955 continue;
25956}
25957case OP_InitGlobalUint8: {
25958 const auto V0 = ReadArg<uint32_t>(S, PC);
25959 if (!InitGlobal<PT_Uint8>(S, OpPC, V0))
25960 return false;
25961 continue;
25962}
25963case OP_InitGlobalSint16: {
25964 const auto V0 = ReadArg<uint32_t>(S, PC);
25965 if (!InitGlobal<PT_Sint16>(S, OpPC, V0))
25966 return false;
25967 continue;
25968}
25969case OP_InitGlobalUint16: {
25970 const auto V0 = ReadArg<uint32_t>(S, PC);
25971 if (!InitGlobal<PT_Uint16>(S, OpPC, V0))
25972 return false;
25973 continue;
25974}
25975case OP_InitGlobalSint32: {
25976 const auto V0 = ReadArg<uint32_t>(S, PC);
25977 if (!InitGlobal<PT_Sint32>(S, OpPC, V0))
25978 return false;
25979 continue;
25980}
25981case OP_InitGlobalUint32: {
25982 const auto V0 = ReadArg<uint32_t>(S, PC);
25983 if (!InitGlobal<PT_Uint32>(S, OpPC, V0))
25984 return false;
25985 continue;
25986}
25987case OP_InitGlobalSint64: {
25988 const auto V0 = ReadArg<uint32_t>(S, PC);
25989 if (!InitGlobal<PT_Sint64>(S, OpPC, V0))
25990 return false;
25991 continue;
25992}
25993case OP_InitGlobalUint64: {
25994 const auto V0 = ReadArg<uint32_t>(S, PC);
25995 if (!InitGlobal<PT_Uint64>(S, OpPC, V0))
25996 return false;
25997 continue;
25998}
25999case OP_InitGlobalIntAP: {
26000 const auto V0 = ReadArg<uint32_t>(S, PC);
26001 if (!InitGlobal<PT_IntAP>(S, OpPC, V0))
26002 return false;
26003 continue;
26004}
26005case OP_InitGlobalIntAPS: {
26006 const auto V0 = ReadArg<uint32_t>(S, PC);
26007 if (!InitGlobal<PT_IntAPS>(S, OpPC, V0))
26008 return false;
26009 continue;
26010}
26011case OP_InitGlobalBool: {
26012 const auto V0 = ReadArg<uint32_t>(S, PC);
26013 if (!InitGlobal<PT_Bool>(S, OpPC, V0))
26014 return false;
26015 continue;
26016}
26017case OP_InitGlobalFixedPoint: {
26018 const auto V0 = ReadArg<uint32_t>(S, PC);
26019 if (!InitGlobal<PT_FixedPoint>(S, OpPC, V0))
26020 return false;
26021 continue;
26022}
26023case OP_InitGlobalPtr: {
26024 const auto V0 = ReadArg<uint32_t>(S, PC);
26025 if (!InitGlobal<PT_Ptr>(S, OpPC, V0))
26026 return false;
26027 continue;
26028}
26029case OP_InitGlobalMemberPtr: {
26030 const auto V0 = ReadArg<uint32_t>(S, PC);
26031 if (!InitGlobal<PT_MemberPtr>(S, OpPC, V0))
26032 return false;
26033 continue;
26034}
26035case OP_InitGlobalFloat: {
26036 const auto V0 = ReadArg<uint32_t>(S, PC);
26037 if (!InitGlobal<PT_Float>(S, OpPC, V0))
26038 return false;
26039 continue;
26040}
26041#endif
26042#ifdef GET_DISASM
26043case OP_InitGlobalSint8:
26044 Text.Op = PrintName("InitGlobalSint8");
26045 Text.Args.push_back(printArg<uint32_t>(P, PC));
26046 break;
26047case OP_InitGlobalUint8:
26048 Text.Op = PrintName("InitGlobalUint8");
26049 Text.Args.push_back(printArg<uint32_t>(P, PC));
26050 break;
26051case OP_InitGlobalSint16:
26052 Text.Op = PrintName("InitGlobalSint16");
26053 Text.Args.push_back(printArg<uint32_t>(P, PC));
26054 break;
26055case OP_InitGlobalUint16:
26056 Text.Op = PrintName("InitGlobalUint16");
26057 Text.Args.push_back(printArg<uint32_t>(P, PC));
26058 break;
26059case OP_InitGlobalSint32:
26060 Text.Op = PrintName("InitGlobalSint32");
26061 Text.Args.push_back(printArg<uint32_t>(P, PC));
26062 break;
26063case OP_InitGlobalUint32:
26064 Text.Op = PrintName("InitGlobalUint32");
26065 Text.Args.push_back(printArg<uint32_t>(P, PC));
26066 break;
26067case OP_InitGlobalSint64:
26068 Text.Op = PrintName("InitGlobalSint64");
26069 Text.Args.push_back(printArg<uint32_t>(P, PC));
26070 break;
26071case OP_InitGlobalUint64:
26072 Text.Op = PrintName("InitGlobalUint64");
26073 Text.Args.push_back(printArg<uint32_t>(P, PC));
26074 break;
26075case OP_InitGlobalIntAP:
26076 Text.Op = PrintName("InitGlobalIntAP");
26077 Text.Args.push_back(printArg<uint32_t>(P, PC));
26078 break;
26079case OP_InitGlobalIntAPS:
26080 Text.Op = PrintName("InitGlobalIntAPS");
26081 Text.Args.push_back(printArg<uint32_t>(P, PC));
26082 break;
26083case OP_InitGlobalBool:
26084 Text.Op = PrintName("InitGlobalBool");
26085 Text.Args.push_back(printArg<uint32_t>(P, PC));
26086 break;
26087case OP_InitGlobalFixedPoint:
26088 Text.Op = PrintName("InitGlobalFixedPoint");
26089 Text.Args.push_back(printArg<uint32_t>(P, PC));
26090 break;
26091case OP_InitGlobalPtr:
26092 Text.Op = PrintName("InitGlobalPtr");
26093 Text.Args.push_back(printArg<uint32_t>(P, PC));
26094 break;
26095case OP_InitGlobalMemberPtr:
26096 Text.Op = PrintName("InitGlobalMemberPtr");
26097 Text.Args.push_back(printArg<uint32_t>(P, PC));
26098 break;
26099case OP_InitGlobalFloat:
26100 Text.Op = PrintName("InitGlobalFloat");
26101 Text.Args.push_back(printArg<uint32_t>(P, PC));
26102 break;
26103#endif
26104#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26105bool emitInitGlobalSint8( uint32_t , SourceInfo);
26106bool emitInitGlobalUint8( uint32_t , SourceInfo);
26107bool emitInitGlobalSint16( uint32_t , SourceInfo);
26108bool emitInitGlobalUint16( uint32_t , SourceInfo);
26109bool emitInitGlobalSint32( uint32_t , SourceInfo);
26110bool emitInitGlobalUint32( uint32_t , SourceInfo);
26111bool emitInitGlobalSint64( uint32_t , SourceInfo);
26112bool emitInitGlobalUint64( uint32_t , SourceInfo);
26113bool emitInitGlobalIntAP( uint32_t , SourceInfo);
26114bool emitInitGlobalIntAPS( uint32_t , SourceInfo);
26115bool emitInitGlobalBool( uint32_t , SourceInfo);
26116bool emitInitGlobalFixedPoint( uint32_t , SourceInfo);
26117bool emitInitGlobalPtr( uint32_t , SourceInfo);
26118bool emitInitGlobalMemberPtr( uint32_t , SourceInfo);
26119bool emitInitGlobalFloat( uint32_t , SourceInfo);
26120#endif
26121#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26122[[nodiscard]] bool emitInitGlobal(PrimType, uint32_t, SourceInfo I);
26123#endif
26124#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26125bool
26126#if defined(GET_EVAL_IMPL)
26127EvalEmitter
26128#else
26129ByteCodeEmitter
26130#endif
26131::emitInitGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
26132 switch (T0) {
26133 case PT_Sint8:
26134 return emitInitGlobalSint8(A0, I);
26135 case PT_Uint8:
26136 return emitInitGlobalUint8(A0, I);
26137 case PT_Sint16:
26138 return emitInitGlobalSint16(A0, I);
26139 case PT_Uint16:
26140 return emitInitGlobalUint16(A0, I);
26141 case PT_Sint32:
26142 return emitInitGlobalSint32(A0, I);
26143 case PT_Uint32:
26144 return emitInitGlobalUint32(A0, I);
26145 case PT_Sint64:
26146 return emitInitGlobalSint64(A0, I);
26147 case PT_Uint64:
26148 return emitInitGlobalUint64(A0, I);
26149 case PT_IntAP:
26150 return emitInitGlobalIntAP(A0, I);
26151 case PT_IntAPS:
26152 return emitInitGlobalIntAPS(A0, I);
26153 case PT_Bool:
26154 return emitInitGlobalBool(A0, I);
26155 case PT_FixedPoint:
26156 return emitInitGlobalFixedPoint(A0, I);
26157 case PT_Ptr:
26158 return emitInitGlobalPtr(A0, I);
26159 case PT_MemberPtr:
26160 return emitInitGlobalMemberPtr(A0, I);
26161 case PT_Float:
26162 return emitInitGlobalFloat(A0, I);
26163 }
26164 llvm_unreachable("invalid enum value");
26165}
26166#endif
26167#ifdef GET_LINK_IMPL
26168bool ByteCodeEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
26169 return emitOp<uint32_t>(OP_InitGlobalSint8, A0, L);
26170}
26171bool ByteCodeEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
26172 return emitOp<uint32_t>(OP_InitGlobalUint8, A0, L);
26173}
26174bool ByteCodeEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
26175 return emitOp<uint32_t>(OP_InitGlobalSint16, A0, L);
26176}
26177bool ByteCodeEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
26178 return emitOp<uint32_t>(OP_InitGlobalUint16, A0, L);
26179}
26180bool ByteCodeEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
26181 return emitOp<uint32_t>(OP_InitGlobalSint32, A0, L);
26182}
26183bool ByteCodeEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
26184 return emitOp<uint32_t>(OP_InitGlobalUint32, A0, L);
26185}
26186bool ByteCodeEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
26187 return emitOp<uint32_t>(OP_InitGlobalSint64, A0, L);
26188}
26189bool ByteCodeEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
26190 return emitOp<uint32_t>(OP_InitGlobalUint64, A0, L);
26191}
26192bool ByteCodeEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
26193 return emitOp<uint32_t>(OP_InitGlobalIntAP, A0, L);
26194}
26195bool ByteCodeEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
26196 return emitOp<uint32_t>(OP_InitGlobalIntAPS, A0, L);
26197}
26198bool ByteCodeEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
26199 return emitOp<uint32_t>(OP_InitGlobalBool, A0, L);
26200}
26201bool ByteCodeEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26202 return emitOp<uint32_t>(OP_InitGlobalFixedPoint, A0, L);
26203}
26204bool ByteCodeEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
26205 return emitOp<uint32_t>(OP_InitGlobalPtr, A0, L);
26206}
26207bool ByteCodeEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26208 return emitOp<uint32_t>(OP_InitGlobalMemberPtr, A0, L);
26209}
26210bool ByteCodeEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
26211 return emitOp<uint32_t>(OP_InitGlobalFloat, A0, L);
26212}
26213#endif
26214#ifdef GET_EVAL_IMPL
26215bool EvalEmitter::emitInitGlobalSint8( uint32_t A0, SourceInfo L) {
26216 if (!isActive()) return true;
26217 CurrentSource = L;
26218 return InitGlobal<PT_Sint8>(S, OpPC, A0);
26219}
26220bool EvalEmitter::emitInitGlobalUint8( uint32_t A0, SourceInfo L) {
26221 if (!isActive()) return true;
26222 CurrentSource = L;
26223 return InitGlobal<PT_Uint8>(S, OpPC, A0);
26224}
26225bool EvalEmitter::emitInitGlobalSint16( uint32_t A0, SourceInfo L) {
26226 if (!isActive()) return true;
26227 CurrentSource = L;
26228 return InitGlobal<PT_Sint16>(S, OpPC, A0);
26229}
26230bool EvalEmitter::emitInitGlobalUint16( uint32_t A0, SourceInfo L) {
26231 if (!isActive()) return true;
26232 CurrentSource = L;
26233 return InitGlobal<PT_Uint16>(S, OpPC, A0);
26234}
26235bool EvalEmitter::emitInitGlobalSint32( uint32_t A0, SourceInfo L) {
26236 if (!isActive()) return true;
26237 CurrentSource = L;
26238 return InitGlobal<PT_Sint32>(S, OpPC, A0);
26239}
26240bool EvalEmitter::emitInitGlobalUint32( uint32_t A0, SourceInfo L) {
26241 if (!isActive()) return true;
26242 CurrentSource = L;
26243 return InitGlobal<PT_Uint32>(S, OpPC, A0);
26244}
26245bool EvalEmitter::emitInitGlobalSint64( uint32_t A0, SourceInfo L) {
26246 if (!isActive()) return true;
26247 CurrentSource = L;
26248 return InitGlobal<PT_Sint64>(S, OpPC, A0);
26249}
26250bool EvalEmitter::emitInitGlobalUint64( uint32_t A0, SourceInfo L) {
26251 if (!isActive()) return true;
26252 CurrentSource = L;
26253 return InitGlobal<PT_Uint64>(S, OpPC, A0);
26254}
26255bool EvalEmitter::emitInitGlobalIntAP( uint32_t A0, SourceInfo L) {
26256 if (!isActive()) return true;
26257 CurrentSource = L;
26258 return InitGlobal<PT_IntAP>(S, OpPC, A0);
26259}
26260bool EvalEmitter::emitInitGlobalIntAPS( uint32_t A0, SourceInfo L) {
26261 if (!isActive()) return true;
26262 CurrentSource = L;
26263 return InitGlobal<PT_IntAPS>(S, OpPC, A0);
26264}
26265bool EvalEmitter::emitInitGlobalBool( uint32_t A0, SourceInfo L) {
26266 if (!isActive()) return true;
26267 CurrentSource = L;
26268 return InitGlobal<PT_Bool>(S, OpPC, A0);
26269}
26270bool EvalEmitter::emitInitGlobalFixedPoint( uint32_t A0, SourceInfo L) {
26271 if (!isActive()) return true;
26272 CurrentSource = L;
26273 return InitGlobal<PT_FixedPoint>(S, OpPC, A0);
26274}
26275bool EvalEmitter::emitInitGlobalPtr( uint32_t A0, SourceInfo L) {
26276 if (!isActive()) return true;
26277 CurrentSource = L;
26278 return InitGlobal<PT_Ptr>(S, OpPC, A0);
26279}
26280bool EvalEmitter::emitInitGlobalMemberPtr( uint32_t A0, SourceInfo L) {
26281 if (!isActive()) return true;
26282 CurrentSource = L;
26283 return InitGlobal<PT_MemberPtr>(S, OpPC, A0);
26284}
26285bool EvalEmitter::emitInitGlobalFloat( uint32_t A0, SourceInfo L) {
26286 if (!isActive()) return true;
26287 CurrentSource = L;
26288 return InitGlobal<PT_Float>(S, OpPC, A0);
26289}
26290#endif
26291#ifdef GET_OPCODE_NAMES
26292OP_InitGlobalTempSint8,
26293OP_InitGlobalTempUint8,
26294OP_InitGlobalTempSint16,
26295OP_InitGlobalTempUint16,
26296OP_InitGlobalTempSint32,
26297OP_InitGlobalTempUint32,
26298OP_InitGlobalTempSint64,
26299OP_InitGlobalTempUint64,
26300OP_InitGlobalTempIntAP,
26301OP_InitGlobalTempIntAPS,
26302OP_InitGlobalTempBool,
26303OP_InitGlobalTempFixedPoint,
26304OP_InitGlobalTempPtr,
26305OP_InitGlobalTempMemberPtr,
26306OP_InitGlobalTempFloat,
26307#endif
26308#ifdef GET_INTERP
26309case OP_InitGlobalTempSint8: {
26310 const auto V0 = ReadArg<uint32_t>(S, PC);
26311 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26312 if (!InitGlobalTemp<PT_Sint8>(S, OpPC, V0, V1))
26313 return false;
26314 continue;
26315}
26316case OP_InitGlobalTempUint8: {
26317 const auto V0 = ReadArg<uint32_t>(S, PC);
26318 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26319 if (!InitGlobalTemp<PT_Uint8>(S, OpPC, V0, V1))
26320 return false;
26321 continue;
26322}
26323case OP_InitGlobalTempSint16: {
26324 const auto V0 = ReadArg<uint32_t>(S, PC);
26325 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26326 if (!InitGlobalTemp<PT_Sint16>(S, OpPC, V0, V1))
26327 return false;
26328 continue;
26329}
26330case OP_InitGlobalTempUint16: {
26331 const auto V0 = ReadArg<uint32_t>(S, PC);
26332 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26333 if (!InitGlobalTemp<PT_Uint16>(S, OpPC, V0, V1))
26334 return false;
26335 continue;
26336}
26337case OP_InitGlobalTempSint32: {
26338 const auto V0 = ReadArg<uint32_t>(S, PC);
26339 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26340 if (!InitGlobalTemp<PT_Sint32>(S, OpPC, V0, V1))
26341 return false;
26342 continue;
26343}
26344case OP_InitGlobalTempUint32: {
26345 const auto V0 = ReadArg<uint32_t>(S, PC);
26346 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26347 if (!InitGlobalTemp<PT_Uint32>(S, OpPC, V0, V1))
26348 return false;
26349 continue;
26350}
26351case OP_InitGlobalTempSint64: {
26352 const auto V0 = ReadArg<uint32_t>(S, PC);
26353 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26354 if (!InitGlobalTemp<PT_Sint64>(S, OpPC, V0, V1))
26355 return false;
26356 continue;
26357}
26358case OP_InitGlobalTempUint64: {
26359 const auto V0 = ReadArg<uint32_t>(S, PC);
26360 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26361 if (!InitGlobalTemp<PT_Uint64>(S, OpPC, V0, V1))
26362 return false;
26363 continue;
26364}
26365case OP_InitGlobalTempIntAP: {
26366 const auto V0 = ReadArg<uint32_t>(S, PC);
26367 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26368 if (!InitGlobalTemp<PT_IntAP>(S, OpPC, V0, V1))
26369 return false;
26370 continue;
26371}
26372case OP_InitGlobalTempIntAPS: {
26373 const auto V0 = ReadArg<uint32_t>(S, PC);
26374 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26375 if (!InitGlobalTemp<PT_IntAPS>(S, OpPC, V0, V1))
26376 return false;
26377 continue;
26378}
26379case OP_InitGlobalTempBool: {
26380 const auto V0 = ReadArg<uint32_t>(S, PC);
26381 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26382 if (!InitGlobalTemp<PT_Bool>(S, OpPC, V0, V1))
26383 return false;
26384 continue;
26385}
26386case OP_InitGlobalTempFixedPoint: {
26387 const auto V0 = ReadArg<uint32_t>(S, PC);
26388 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26389 if (!InitGlobalTemp<PT_FixedPoint>(S, OpPC, V0, V1))
26390 return false;
26391 continue;
26392}
26393case OP_InitGlobalTempPtr: {
26394 const auto V0 = ReadArg<uint32_t>(S, PC);
26395 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26396 if (!InitGlobalTemp<PT_Ptr>(S, OpPC, V0, V1))
26397 return false;
26398 continue;
26399}
26400case OP_InitGlobalTempMemberPtr: {
26401 const auto V0 = ReadArg<uint32_t>(S, PC);
26402 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26403 if (!InitGlobalTemp<PT_MemberPtr>(S, OpPC, V0, V1))
26404 return false;
26405 continue;
26406}
26407case OP_InitGlobalTempFloat: {
26408 const auto V0 = ReadArg<uint32_t>(S, PC);
26409 const auto V1 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26410 if (!InitGlobalTemp<PT_Float>(S, OpPC, V0, V1))
26411 return false;
26412 continue;
26413}
26414#endif
26415#ifdef GET_DISASM
26416case OP_InitGlobalTempSint8:
26417 Text.Op = PrintName("InitGlobalTempSint8");
26418 Text.Args.push_back(printArg<uint32_t>(P, PC));
26419 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26420 break;
26421case OP_InitGlobalTempUint8:
26422 Text.Op = PrintName("InitGlobalTempUint8");
26423 Text.Args.push_back(printArg<uint32_t>(P, PC));
26424 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26425 break;
26426case OP_InitGlobalTempSint16:
26427 Text.Op = PrintName("InitGlobalTempSint16");
26428 Text.Args.push_back(printArg<uint32_t>(P, PC));
26429 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26430 break;
26431case OP_InitGlobalTempUint16:
26432 Text.Op = PrintName("InitGlobalTempUint16");
26433 Text.Args.push_back(printArg<uint32_t>(P, PC));
26434 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26435 break;
26436case OP_InitGlobalTempSint32:
26437 Text.Op = PrintName("InitGlobalTempSint32");
26438 Text.Args.push_back(printArg<uint32_t>(P, PC));
26439 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26440 break;
26441case OP_InitGlobalTempUint32:
26442 Text.Op = PrintName("InitGlobalTempUint32");
26443 Text.Args.push_back(printArg<uint32_t>(P, PC));
26444 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26445 break;
26446case OP_InitGlobalTempSint64:
26447 Text.Op = PrintName("InitGlobalTempSint64");
26448 Text.Args.push_back(printArg<uint32_t>(P, PC));
26449 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26450 break;
26451case OP_InitGlobalTempUint64:
26452 Text.Op = PrintName("InitGlobalTempUint64");
26453 Text.Args.push_back(printArg<uint32_t>(P, PC));
26454 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26455 break;
26456case OP_InitGlobalTempIntAP:
26457 Text.Op = PrintName("InitGlobalTempIntAP");
26458 Text.Args.push_back(printArg<uint32_t>(P, PC));
26459 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26460 break;
26461case OP_InitGlobalTempIntAPS:
26462 Text.Op = PrintName("InitGlobalTempIntAPS");
26463 Text.Args.push_back(printArg<uint32_t>(P, PC));
26464 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26465 break;
26466case OP_InitGlobalTempBool:
26467 Text.Op = PrintName("InitGlobalTempBool");
26468 Text.Args.push_back(printArg<uint32_t>(P, PC));
26469 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26470 break;
26471case OP_InitGlobalTempFixedPoint:
26472 Text.Op = PrintName("InitGlobalTempFixedPoint");
26473 Text.Args.push_back(printArg<uint32_t>(P, PC));
26474 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26475 break;
26476case OP_InitGlobalTempPtr:
26477 Text.Op = PrintName("InitGlobalTempPtr");
26478 Text.Args.push_back(printArg<uint32_t>(P, PC));
26479 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26480 break;
26481case OP_InitGlobalTempMemberPtr:
26482 Text.Op = PrintName("InitGlobalTempMemberPtr");
26483 Text.Args.push_back(printArg<uint32_t>(P, PC));
26484 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26485 break;
26486case OP_InitGlobalTempFloat:
26487 Text.Op = PrintName("InitGlobalTempFloat");
26488 Text.Args.push_back(printArg<uint32_t>(P, PC));
26489 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26490 break;
26491#endif
26492#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26493bool emitInitGlobalTempSint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26494bool emitInitGlobalTempUint8( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26495bool emitInitGlobalTempSint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26496bool emitInitGlobalTempUint16( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26497bool emitInitGlobalTempSint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26498bool emitInitGlobalTempUint32( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26499bool emitInitGlobalTempSint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26500bool emitInitGlobalTempUint64( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26501bool emitInitGlobalTempIntAP( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26502bool emitInitGlobalTempIntAPS( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26503bool emitInitGlobalTempBool( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26504bool emitInitGlobalTempFixedPoint( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26505bool emitInitGlobalTempPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26506bool emitInitGlobalTempMemberPtr( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26507bool emitInitGlobalTempFloat( uint32_t , const LifetimeExtendedTemporaryDecl * , SourceInfo);
26508#endif
26509#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26510[[nodiscard]] bool emitInitGlobalTemp(PrimType, uint32_t, const LifetimeExtendedTemporaryDecl *, SourceInfo I);
26511#endif
26512#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26513bool
26514#if defined(GET_EVAL_IMPL)
26515EvalEmitter
26516#else
26517ByteCodeEmitter
26518#endif
26519::emitInitGlobalTemp(PrimType T0, uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo I) {
26520 switch (T0) {
26521 case PT_Sint8:
26522 return emitInitGlobalTempSint8(A0, A1, I);
26523 case PT_Uint8:
26524 return emitInitGlobalTempUint8(A0, A1, I);
26525 case PT_Sint16:
26526 return emitInitGlobalTempSint16(A0, A1, I);
26527 case PT_Uint16:
26528 return emitInitGlobalTempUint16(A0, A1, I);
26529 case PT_Sint32:
26530 return emitInitGlobalTempSint32(A0, A1, I);
26531 case PT_Uint32:
26532 return emitInitGlobalTempUint32(A0, A1, I);
26533 case PT_Sint64:
26534 return emitInitGlobalTempSint64(A0, A1, I);
26535 case PT_Uint64:
26536 return emitInitGlobalTempUint64(A0, A1, I);
26537 case PT_IntAP:
26538 return emitInitGlobalTempIntAP(A0, A1, I);
26539 case PT_IntAPS:
26540 return emitInitGlobalTempIntAPS(A0, A1, I);
26541 case PT_Bool:
26542 return emitInitGlobalTempBool(A0, A1, I);
26543 case PT_FixedPoint:
26544 return emitInitGlobalTempFixedPoint(A0, A1, I);
26545 case PT_Ptr:
26546 return emitInitGlobalTempPtr(A0, A1, I);
26547 case PT_MemberPtr:
26548 return emitInitGlobalTempMemberPtr(A0, A1, I);
26549 case PT_Float:
26550 return emitInitGlobalTempFloat(A0, A1, I);
26551 }
26552 llvm_unreachable("invalid enum value");
26553}
26554#endif
26555#ifdef GET_LINK_IMPL
26556bool ByteCodeEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26557 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint8, A0, A1, L);
26558}
26559bool ByteCodeEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26560 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint8, A0, A1, L);
26561}
26562bool ByteCodeEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26563 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint16, A0, A1, L);
26564}
26565bool ByteCodeEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26566 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint16, A0, A1, L);
26567}
26568bool ByteCodeEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26569 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint32, A0, A1, L);
26570}
26571bool ByteCodeEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26572 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint32, A0, A1, L);
26573}
26574bool ByteCodeEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26575 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempSint64, A0, A1, L);
26576}
26577bool ByteCodeEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26578 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempUint64, A0, A1, L);
26579}
26580bool ByteCodeEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26581 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAP, A0, A1, L);
26582}
26583bool ByteCodeEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26584 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempIntAPS, A0, A1, L);
26585}
26586bool ByteCodeEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26587 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempBool, A0, A1, L);
26588}
26589bool ByteCodeEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26590 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFixedPoint, A0, A1, L);
26591}
26592bool ByteCodeEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26593 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempPtr, A0, A1, L);
26594}
26595bool ByteCodeEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26596 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempMemberPtr, A0, A1, L);
26597}
26598bool ByteCodeEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26599 return emitOp<uint32_t, const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempFloat, A0, A1, L);
26600}
26601#endif
26602#ifdef GET_EVAL_IMPL
26603bool EvalEmitter::emitInitGlobalTempSint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26604 if (!isActive()) return true;
26605 CurrentSource = L;
26606 return InitGlobalTemp<PT_Sint8>(S, OpPC, A0, A1);
26607}
26608bool EvalEmitter::emitInitGlobalTempUint8( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26609 if (!isActive()) return true;
26610 CurrentSource = L;
26611 return InitGlobalTemp<PT_Uint8>(S, OpPC, A0, A1);
26612}
26613bool EvalEmitter::emitInitGlobalTempSint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26614 if (!isActive()) return true;
26615 CurrentSource = L;
26616 return InitGlobalTemp<PT_Sint16>(S, OpPC, A0, A1);
26617}
26618bool EvalEmitter::emitInitGlobalTempUint16( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26619 if (!isActive()) return true;
26620 CurrentSource = L;
26621 return InitGlobalTemp<PT_Uint16>(S, OpPC, A0, A1);
26622}
26623bool EvalEmitter::emitInitGlobalTempSint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26624 if (!isActive()) return true;
26625 CurrentSource = L;
26626 return InitGlobalTemp<PT_Sint32>(S, OpPC, A0, A1);
26627}
26628bool EvalEmitter::emitInitGlobalTempUint32( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26629 if (!isActive()) return true;
26630 CurrentSource = L;
26631 return InitGlobalTemp<PT_Uint32>(S, OpPC, A0, A1);
26632}
26633bool EvalEmitter::emitInitGlobalTempSint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26634 if (!isActive()) return true;
26635 CurrentSource = L;
26636 return InitGlobalTemp<PT_Sint64>(S, OpPC, A0, A1);
26637}
26638bool EvalEmitter::emitInitGlobalTempUint64( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26639 if (!isActive()) return true;
26640 CurrentSource = L;
26641 return InitGlobalTemp<PT_Uint64>(S, OpPC, A0, A1);
26642}
26643bool EvalEmitter::emitInitGlobalTempIntAP( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26644 if (!isActive()) return true;
26645 CurrentSource = L;
26646 return InitGlobalTemp<PT_IntAP>(S, OpPC, A0, A1);
26647}
26648bool EvalEmitter::emitInitGlobalTempIntAPS( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26649 if (!isActive()) return true;
26650 CurrentSource = L;
26651 return InitGlobalTemp<PT_IntAPS>(S, OpPC, A0, A1);
26652}
26653bool EvalEmitter::emitInitGlobalTempBool( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26654 if (!isActive()) return true;
26655 CurrentSource = L;
26656 return InitGlobalTemp<PT_Bool>(S, OpPC, A0, A1);
26657}
26658bool EvalEmitter::emitInitGlobalTempFixedPoint( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26659 if (!isActive()) return true;
26660 CurrentSource = L;
26661 return InitGlobalTemp<PT_FixedPoint>(S, OpPC, A0, A1);
26662}
26663bool EvalEmitter::emitInitGlobalTempPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26664 if (!isActive()) return true;
26665 CurrentSource = L;
26666 return InitGlobalTemp<PT_Ptr>(S, OpPC, A0, A1);
26667}
26668bool EvalEmitter::emitInitGlobalTempMemberPtr( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26669 if (!isActive()) return true;
26670 CurrentSource = L;
26671 return InitGlobalTemp<PT_MemberPtr>(S, OpPC, A0, A1);
26672}
26673bool EvalEmitter::emitInitGlobalTempFloat( uint32_t A0, const LifetimeExtendedTemporaryDecl * A1, SourceInfo L) {
26674 if (!isActive()) return true;
26675 CurrentSource = L;
26676 return InitGlobalTemp<PT_Float>(S, OpPC, A0, A1);
26677}
26678#endif
26679#ifdef GET_OPCODE_NAMES
26680OP_InitGlobalTempComp,
26681#endif
26682#ifdef GET_INTERP
26683case OP_InitGlobalTempComp: {
26684 const auto V0 = ReadArg<const LifetimeExtendedTemporaryDecl *>(S, PC);
26685 if (!InitGlobalTempComp(S, OpPC, V0))
26686 return false;
26687 continue;
26688}
26689#endif
26690#ifdef GET_DISASM
26691case OP_InitGlobalTempComp:
26692 Text.Op = PrintName("InitGlobalTempComp");
26693 Text.Args.push_back(printArg<const LifetimeExtendedTemporaryDecl *>(P, PC));
26694 break;
26695#endif
26696#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26697bool emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * , SourceInfo);
26698#endif
26699#ifdef GET_LINK_IMPL
26700bool ByteCodeEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
26701 return emitOp<const LifetimeExtendedTemporaryDecl *>(OP_InitGlobalTempComp, A0, L);
26702}
26703#endif
26704#ifdef GET_EVAL_IMPL
26705bool EvalEmitter::emitInitGlobalTempComp( const LifetimeExtendedTemporaryDecl * A0, SourceInfo L) {
26706 if (!isActive()) return true;
26707 CurrentSource = L;
26708 return InitGlobalTempComp(S, OpPC, A0);
26709}
26710#endif
26711#ifdef GET_OPCODE_NAMES
26712OP_InitPopSint8,
26713OP_InitPopUint8,
26714OP_InitPopSint16,
26715OP_InitPopUint16,
26716OP_InitPopSint32,
26717OP_InitPopUint32,
26718OP_InitPopSint64,
26719OP_InitPopUint64,
26720OP_InitPopIntAP,
26721OP_InitPopIntAPS,
26722OP_InitPopBool,
26723OP_InitPopFixedPoint,
26724OP_InitPopPtr,
26725OP_InitPopMemberPtr,
26726OP_InitPopFloat,
26727#endif
26728#ifdef GET_INTERP
26729case OP_InitPopSint8: {
26730 if (!InitPop<PT_Sint8>(S, OpPC))
26731 return false;
26732 continue;
26733}
26734case OP_InitPopUint8: {
26735 if (!InitPop<PT_Uint8>(S, OpPC))
26736 return false;
26737 continue;
26738}
26739case OP_InitPopSint16: {
26740 if (!InitPop<PT_Sint16>(S, OpPC))
26741 return false;
26742 continue;
26743}
26744case OP_InitPopUint16: {
26745 if (!InitPop<PT_Uint16>(S, OpPC))
26746 return false;
26747 continue;
26748}
26749case OP_InitPopSint32: {
26750 if (!InitPop<PT_Sint32>(S, OpPC))
26751 return false;
26752 continue;
26753}
26754case OP_InitPopUint32: {
26755 if (!InitPop<PT_Uint32>(S, OpPC))
26756 return false;
26757 continue;
26758}
26759case OP_InitPopSint64: {
26760 if (!InitPop<PT_Sint64>(S, OpPC))
26761 return false;
26762 continue;
26763}
26764case OP_InitPopUint64: {
26765 if (!InitPop<PT_Uint64>(S, OpPC))
26766 return false;
26767 continue;
26768}
26769case OP_InitPopIntAP: {
26770 if (!InitPop<PT_IntAP>(S, OpPC))
26771 return false;
26772 continue;
26773}
26774case OP_InitPopIntAPS: {
26775 if (!InitPop<PT_IntAPS>(S, OpPC))
26776 return false;
26777 continue;
26778}
26779case OP_InitPopBool: {
26780 if (!InitPop<PT_Bool>(S, OpPC))
26781 return false;
26782 continue;
26783}
26784case OP_InitPopFixedPoint: {
26785 if (!InitPop<PT_FixedPoint>(S, OpPC))
26786 return false;
26787 continue;
26788}
26789case OP_InitPopPtr: {
26790 if (!InitPop<PT_Ptr>(S, OpPC))
26791 return false;
26792 continue;
26793}
26794case OP_InitPopMemberPtr: {
26795 if (!InitPop<PT_MemberPtr>(S, OpPC))
26796 return false;
26797 continue;
26798}
26799case OP_InitPopFloat: {
26800 if (!InitPop<PT_Float>(S, OpPC))
26801 return false;
26802 continue;
26803}
26804#endif
26805#ifdef GET_DISASM
26806case OP_InitPopSint8:
26807 Text.Op = PrintName("InitPopSint8");
26808 break;
26809case OP_InitPopUint8:
26810 Text.Op = PrintName("InitPopUint8");
26811 break;
26812case OP_InitPopSint16:
26813 Text.Op = PrintName("InitPopSint16");
26814 break;
26815case OP_InitPopUint16:
26816 Text.Op = PrintName("InitPopUint16");
26817 break;
26818case OP_InitPopSint32:
26819 Text.Op = PrintName("InitPopSint32");
26820 break;
26821case OP_InitPopUint32:
26822 Text.Op = PrintName("InitPopUint32");
26823 break;
26824case OP_InitPopSint64:
26825 Text.Op = PrintName("InitPopSint64");
26826 break;
26827case OP_InitPopUint64:
26828 Text.Op = PrintName("InitPopUint64");
26829 break;
26830case OP_InitPopIntAP:
26831 Text.Op = PrintName("InitPopIntAP");
26832 break;
26833case OP_InitPopIntAPS:
26834 Text.Op = PrintName("InitPopIntAPS");
26835 break;
26836case OP_InitPopBool:
26837 Text.Op = PrintName("InitPopBool");
26838 break;
26839case OP_InitPopFixedPoint:
26840 Text.Op = PrintName("InitPopFixedPoint");
26841 break;
26842case OP_InitPopPtr:
26843 Text.Op = PrintName("InitPopPtr");
26844 break;
26845case OP_InitPopMemberPtr:
26846 Text.Op = PrintName("InitPopMemberPtr");
26847 break;
26848case OP_InitPopFloat:
26849 Text.Op = PrintName("InitPopFloat");
26850 break;
26851#endif
26852#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26853bool emitInitPopSint8(SourceInfo);
26854bool emitInitPopUint8(SourceInfo);
26855bool emitInitPopSint16(SourceInfo);
26856bool emitInitPopUint16(SourceInfo);
26857bool emitInitPopSint32(SourceInfo);
26858bool emitInitPopUint32(SourceInfo);
26859bool emitInitPopSint64(SourceInfo);
26860bool emitInitPopUint64(SourceInfo);
26861bool emitInitPopIntAP(SourceInfo);
26862bool emitInitPopIntAPS(SourceInfo);
26863bool emitInitPopBool(SourceInfo);
26864bool emitInitPopFixedPoint(SourceInfo);
26865bool emitInitPopPtr(SourceInfo);
26866bool emitInitPopMemberPtr(SourceInfo);
26867bool emitInitPopFloat(SourceInfo);
26868#endif
26869#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
26870[[nodiscard]] bool emitInitPop(PrimType, SourceInfo I);
26871#endif
26872#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
26873bool
26874#if defined(GET_EVAL_IMPL)
26875EvalEmitter
26876#else
26877ByteCodeEmitter
26878#endif
26879::emitInitPop(PrimType T0, SourceInfo I) {
26880 switch (T0) {
26881 case PT_Sint8:
26882 return emitInitPopSint8(I);
26883 case PT_Uint8:
26884 return emitInitPopUint8(I);
26885 case PT_Sint16:
26886 return emitInitPopSint16(I);
26887 case PT_Uint16:
26888 return emitInitPopUint16(I);
26889 case PT_Sint32:
26890 return emitInitPopSint32(I);
26891 case PT_Uint32:
26892 return emitInitPopUint32(I);
26893 case PT_Sint64:
26894 return emitInitPopSint64(I);
26895 case PT_Uint64:
26896 return emitInitPopUint64(I);
26897 case PT_IntAP:
26898 return emitInitPopIntAP(I);
26899 case PT_IntAPS:
26900 return emitInitPopIntAPS(I);
26901 case PT_Bool:
26902 return emitInitPopBool(I);
26903 case PT_FixedPoint:
26904 return emitInitPopFixedPoint(I);
26905 case PT_Ptr:
26906 return emitInitPopPtr(I);
26907 case PT_MemberPtr:
26908 return emitInitPopMemberPtr(I);
26909 case PT_Float:
26910 return emitInitPopFloat(I);
26911 }
26912 llvm_unreachable("invalid enum value");
26913}
26914#endif
26915#ifdef GET_LINK_IMPL
26916bool ByteCodeEmitter::emitInitPopSint8(SourceInfo L) {
26917 return emitOp<>(OP_InitPopSint8, L);
26918}
26919bool ByteCodeEmitter::emitInitPopUint8(SourceInfo L) {
26920 return emitOp<>(OP_InitPopUint8, L);
26921}
26922bool ByteCodeEmitter::emitInitPopSint16(SourceInfo L) {
26923 return emitOp<>(OP_InitPopSint16, L);
26924}
26925bool ByteCodeEmitter::emitInitPopUint16(SourceInfo L) {
26926 return emitOp<>(OP_InitPopUint16, L);
26927}
26928bool ByteCodeEmitter::emitInitPopSint32(SourceInfo L) {
26929 return emitOp<>(OP_InitPopSint32, L);
26930}
26931bool ByteCodeEmitter::emitInitPopUint32(SourceInfo L) {
26932 return emitOp<>(OP_InitPopUint32, L);
26933}
26934bool ByteCodeEmitter::emitInitPopSint64(SourceInfo L) {
26935 return emitOp<>(OP_InitPopSint64, L);
26936}
26937bool ByteCodeEmitter::emitInitPopUint64(SourceInfo L) {
26938 return emitOp<>(OP_InitPopUint64, L);
26939}
26940bool ByteCodeEmitter::emitInitPopIntAP(SourceInfo L) {
26941 return emitOp<>(OP_InitPopIntAP, L);
26942}
26943bool ByteCodeEmitter::emitInitPopIntAPS(SourceInfo L) {
26944 return emitOp<>(OP_InitPopIntAPS, L);
26945}
26946bool ByteCodeEmitter::emitInitPopBool(SourceInfo L) {
26947 return emitOp<>(OP_InitPopBool, L);
26948}
26949bool ByteCodeEmitter::emitInitPopFixedPoint(SourceInfo L) {
26950 return emitOp<>(OP_InitPopFixedPoint, L);
26951}
26952bool ByteCodeEmitter::emitInitPopPtr(SourceInfo L) {
26953 return emitOp<>(OP_InitPopPtr, L);
26954}
26955bool ByteCodeEmitter::emitInitPopMemberPtr(SourceInfo L) {
26956 return emitOp<>(OP_InitPopMemberPtr, L);
26957}
26958bool ByteCodeEmitter::emitInitPopFloat(SourceInfo L) {
26959 return emitOp<>(OP_InitPopFloat, L);
26960}
26961#endif
26962#ifdef GET_EVAL_IMPL
26963bool EvalEmitter::emitInitPopSint8(SourceInfo L) {
26964 if (!isActive()) return true;
26965 CurrentSource = L;
26966 return InitPop<PT_Sint8>(S, OpPC);
26967}
26968bool EvalEmitter::emitInitPopUint8(SourceInfo L) {
26969 if (!isActive()) return true;
26970 CurrentSource = L;
26971 return InitPop<PT_Uint8>(S, OpPC);
26972}
26973bool EvalEmitter::emitInitPopSint16(SourceInfo L) {
26974 if (!isActive()) return true;
26975 CurrentSource = L;
26976 return InitPop<PT_Sint16>(S, OpPC);
26977}
26978bool EvalEmitter::emitInitPopUint16(SourceInfo L) {
26979 if (!isActive()) return true;
26980 CurrentSource = L;
26981 return InitPop<PT_Uint16>(S, OpPC);
26982}
26983bool EvalEmitter::emitInitPopSint32(SourceInfo L) {
26984 if (!isActive()) return true;
26985 CurrentSource = L;
26986 return InitPop<PT_Sint32>(S, OpPC);
26987}
26988bool EvalEmitter::emitInitPopUint32(SourceInfo L) {
26989 if (!isActive()) return true;
26990 CurrentSource = L;
26991 return InitPop<PT_Uint32>(S, OpPC);
26992}
26993bool EvalEmitter::emitInitPopSint64(SourceInfo L) {
26994 if (!isActive()) return true;
26995 CurrentSource = L;
26996 return InitPop<PT_Sint64>(S, OpPC);
26997}
26998bool EvalEmitter::emitInitPopUint64(SourceInfo L) {
26999 if (!isActive()) return true;
27000 CurrentSource = L;
27001 return InitPop<PT_Uint64>(S, OpPC);
27002}
27003bool EvalEmitter::emitInitPopIntAP(SourceInfo L) {
27004 if (!isActive()) return true;
27005 CurrentSource = L;
27006 return InitPop<PT_IntAP>(S, OpPC);
27007}
27008bool EvalEmitter::emitInitPopIntAPS(SourceInfo L) {
27009 if (!isActive()) return true;
27010 CurrentSource = L;
27011 return InitPop<PT_IntAPS>(S, OpPC);
27012}
27013bool EvalEmitter::emitInitPopBool(SourceInfo L) {
27014 if (!isActive()) return true;
27015 CurrentSource = L;
27016 return InitPop<PT_Bool>(S, OpPC);
27017}
27018bool EvalEmitter::emitInitPopFixedPoint(SourceInfo L) {
27019 if (!isActive()) return true;
27020 CurrentSource = L;
27021 return InitPop<PT_FixedPoint>(S, OpPC);
27022}
27023bool EvalEmitter::emitInitPopPtr(SourceInfo L) {
27024 if (!isActive()) return true;
27025 CurrentSource = L;
27026 return InitPop<PT_Ptr>(S, OpPC);
27027}
27028bool EvalEmitter::emitInitPopMemberPtr(SourceInfo L) {
27029 if (!isActive()) return true;
27030 CurrentSource = L;
27031 return InitPop<PT_MemberPtr>(S, OpPC);
27032}
27033bool EvalEmitter::emitInitPopFloat(SourceInfo L) {
27034 if (!isActive()) return true;
27035 CurrentSource = L;
27036 return InitPop<PT_Float>(S, OpPC);
27037}
27038#endif
27039#ifdef GET_OPCODE_NAMES
27040OP_InitScope,
27041#endif
27042#ifdef GET_INTERP
27043case OP_InitScope: {
27044 const auto V0 = ReadArg<uint32_t>(S, PC);
27045 if (!InitScope(S, OpPC, V0))
27046 return false;
27047 continue;
27048}
27049#endif
27050#ifdef GET_DISASM
27051case OP_InitScope:
27052 Text.Op = PrintName("InitScope");
27053 Text.Args.push_back(printArg<uint32_t>(P, PC));
27054 break;
27055#endif
27056#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27057bool emitInitScope( uint32_t , SourceInfo);
27058#endif
27059#ifdef GET_LINK_IMPL
27060bool ByteCodeEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
27061 return emitOp<uint32_t>(OP_InitScope, A0, L);
27062}
27063#endif
27064#ifdef GET_EVAL_IMPL
27065bool EvalEmitter::emitInitScope( uint32_t A0, SourceInfo L) {
27066 if (!isActive()) return true;
27067 CurrentSource = L;
27068 return InitScope(S, OpPC, A0);
27069}
27070#endif
27071#ifdef GET_OPCODE_NAMES
27072OP_InitThisBitFieldSint8,
27073OP_InitThisBitFieldUint8,
27074OP_InitThisBitFieldSint16,
27075OP_InitThisBitFieldUint16,
27076OP_InitThisBitFieldSint32,
27077OP_InitThisBitFieldUint32,
27078OP_InitThisBitFieldSint64,
27079OP_InitThisBitFieldUint64,
27080OP_InitThisBitFieldIntAP,
27081OP_InitThisBitFieldIntAPS,
27082OP_InitThisBitFieldBool,
27083OP_InitThisBitFieldFixedPoint,
27084#endif
27085#ifdef GET_INTERP
27086case OP_InitThisBitFieldSint8: {
27087 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27088 const auto V1 = ReadArg<uint32_t>(S, PC);
27089 if (!InitThisBitField<PT_Sint8>(S, OpPC, V0, V1))
27090 return false;
27091 continue;
27092}
27093case OP_InitThisBitFieldUint8: {
27094 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27095 const auto V1 = ReadArg<uint32_t>(S, PC);
27096 if (!InitThisBitField<PT_Uint8>(S, OpPC, V0, V1))
27097 return false;
27098 continue;
27099}
27100case OP_InitThisBitFieldSint16: {
27101 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27102 const auto V1 = ReadArg<uint32_t>(S, PC);
27103 if (!InitThisBitField<PT_Sint16>(S, OpPC, V0, V1))
27104 return false;
27105 continue;
27106}
27107case OP_InitThisBitFieldUint16: {
27108 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27109 const auto V1 = ReadArg<uint32_t>(S, PC);
27110 if (!InitThisBitField<PT_Uint16>(S, OpPC, V0, V1))
27111 return false;
27112 continue;
27113}
27114case OP_InitThisBitFieldSint32: {
27115 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27116 const auto V1 = ReadArg<uint32_t>(S, PC);
27117 if (!InitThisBitField<PT_Sint32>(S, OpPC, V0, V1))
27118 return false;
27119 continue;
27120}
27121case OP_InitThisBitFieldUint32: {
27122 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27123 const auto V1 = ReadArg<uint32_t>(S, PC);
27124 if (!InitThisBitField<PT_Uint32>(S, OpPC, V0, V1))
27125 return false;
27126 continue;
27127}
27128case OP_InitThisBitFieldSint64: {
27129 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27130 const auto V1 = ReadArg<uint32_t>(S, PC);
27131 if (!InitThisBitField<PT_Sint64>(S, OpPC, V0, V1))
27132 return false;
27133 continue;
27134}
27135case OP_InitThisBitFieldUint64: {
27136 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27137 const auto V1 = ReadArg<uint32_t>(S, PC);
27138 if (!InitThisBitField<PT_Uint64>(S, OpPC, V0, V1))
27139 return false;
27140 continue;
27141}
27142case OP_InitThisBitFieldIntAP: {
27143 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27144 const auto V1 = ReadArg<uint32_t>(S, PC);
27145 if (!InitThisBitField<PT_IntAP>(S, OpPC, V0, V1))
27146 return false;
27147 continue;
27148}
27149case OP_InitThisBitFieldIntAPS: {
27150 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27151 const auto V1 = ReadArg<uint32_t>(S, PC);
27152 if (!InitThisBitField<PT_IntAPS>(S, OpPC, V0, V1))
27153 return false;
27154 continue;
27155}
27156case OP_InitThisBitFieldBool: {
27157 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27158 const auto V1 = ReadArg<uint32_t>(S, PC);
27159 if (!InitThisBitField<PT_Bool>(S, OpPC, V0, V1))
27160 return false;
27161 continue;
27162}
27163case OP_InitThisBitFieldFixedPoint: {
27164 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27165 const auto V1 = ReadArg<uint32_t>(S, PC);
27166 if (!InitThisBitField<PT_FixedPoint>(S, OpPC, V0, V1))
27167 return false;
27168 continue;
27169}
27170#endif
27171#ifdef GET_DISASM
27172case OP_InitThisBitFieldSint8:
27173 Text.Op = PrintName("InitThisBitFieldSint8");
27174 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27175 Text.Args.push_back(printArg<uint32_t>(P, PC));
27176 break;
27177case OP_InitThisBitFieldUint8:
27178 Text.Op = PrintName("InitThisBitFieldUint8");
27179 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27180 Text.Args.push_back(printArg<uint32_t>(P, PC));
27181 break;
27182case OP_InitThisBitFieldSint16:
27183 Text.Op = PrintName("InitThisBitFieldSint16");
27184 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27185 Text.Args.push_back(printArg<uint32_t>(P, PC));
27186 break;
27187case OP_InitThisBitFieldUint16:
27188 Text.Op = PrintName("InitThisBitFieldUint16");
27189 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27190 Text.Args.push_back(printArg<uint32_t>(P, PC));
27191 break;
27192case OP_InitThisBitFieldSint32:
27193 Text.Op = PrintName("InitThisBitFieldSint32");
27194 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27195 Text.Args.push_back(printArg<uint32_t>(P, PC));
27196 break;
27197case OP_InitThisBitFieldUint32:
27198 Text.Op = PrintName("InitThisBitFieldUint32");
27199 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27200 Text.Args.push_back(printArg<uint32_t>(P, PC));
27201 break;
27202case OP_InitThisBitFieldSint64:
27203 Text.Op = PrintName("InitThisBitFieldSint64");
27204 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27205 Text.Args.push_back(printArg<uint32_t>(P, PC));
27206 break;
27207case OP_InitThisBitFieldUint64:
27208 Text.Op = PrintName("InitThisBitFieldUint64");
27209 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27210 Text.Args.push_back(printArg<uint32_t>(P, PC));
27211 break;
27212case OP_InitThisBitFieldIntAP:
27213 Text.Op = PrintName("InitThisBitFieldIntAP");
27214 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27215 Text.Args.push_back(printArg<uint32_t>(P, PC));
27216 break;
27217case OP_InitThisBitFieldIntAPS:
27218 Text.Op = PrintName("InitThisBitFieldIntAPS");
27219 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27220 Text.Args.push_back(printArg<uint32_t>(P, PC));
27221 break;
27222case OP_InitThisBitFieldBool:
27223 Text.Op = PrintName("InitThisBitFieldBool");
27224 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27225 Text.Args.push_back(printArg<uint32_t>(P, PC));
27226 break;
27227case OP_InitThisBitFieldFixedPoint:
27228 Text.Op = PrintName("InitThisBitFieldFixedPoint");
27229 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27230 Text.Args.push_back(printArg<uint32_t>(P, PC));
27231 break;
27232#endif
27233#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27234bool emitInitThisBitFieldSint8( const Record::Field * , uint32_t , SourceInfo);
27235bool emitInitThisBitFieldUint8( const Record::Field * , uint32_t , SourceInfo);
27236bool emitInitThisBitFieldSint16( const Record::Field * , uint32_t , SourceInfo);
27237bool emitInitThisBitFieldUint16( const Record::Field * , uint32_t , SourceInfo);
27238bool emitInitThisBitFieldSint32( const Record::Field * , uint32_t , SourceInfo);
27239bool emitInitThisBitFieldUint32( const Record::Field * , uint32_t , SourceInfo);
27240bool emitInitThisBitFieldSint64( const Record::Field * , uint32_t , SourceInfo);
27241bool emitInitThisBitFieldUint64( const Record::Field * , uint32_t , SourceInfo);
27242bool emitInitThisBitFieldIntAP( const Record::Field * , uint32_t , SourceInfo);
27243bool emitInitThisBitFieldIntAPS( const Record::Field * , uint32_t , SourceInfo);
27244bool emitInitThisBitFieldBool( const Record::Field * , uint32_t , SourceInfo);
27245bool emitInitThisBitFieldFixedPoint( const Record::Field * , uint32_t , SourceInfo);
27246#endif
27247#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27248[[nodiscard]] bool emitInitThisBitField(PrimType, const Record::Field *, uint32_t, SourceInfo I);
27249#endif
27250#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27251bool
27252#if defined(GET_EVAL_IMPL)
27253EvalEmitter
27254#else
27255ByteCodeEmitter
27256#endif
27257::emitInitThisBitField(PrimType T0, const Record::Field * A0, uint32_t A1, SourceInfo I) {
27258 switch (T0) {
27259 case PT_Sint8:
27260 return emitInitThisBitFieldSint8(A0, A1, I);
27261 case PT_Uint8:
27262 return emitInitThisBitFieldUint8(A0, A1, I);
27263 case PT_Sint16:
27264 return emitInitThisBitFieldSint16(A0, A1, I);
27265 case PT_Uint16:
27266 return emitInitThisBitFieldUint16(A0, A1, I);
27267 case PT_Sint32:
27268 return emitInitThisBitFieldSint32(A0, A1, I);
27269 case PT_Uint32:
27270 return emitInitThisBitFieldUint32(A0, A1, I);
27271 case PT_Sint64:
27272 return emitInitThisBitFieldSint64(A0, A1, I);
27273 case PT_Uint64:
27274 return emitInitThisBitFieldUint64(A0, A1, I);
27275 case PT_IntAP:
27276 return emitInitThisBitFieldIntAP(A0, A1, I);
27277 case PT_IntAPS:
27278 return emitInitThisBitFieldIntAPS(A0, A1, I);
27279 case PT_Bool:
27280 return emitInitThisBitFieldBool(A0, A1, I);
27281 case PT_FixedPoint:
27282 return emitInitThisBitFieldFixedPoint(A0, A1, I);
27283 default: llvm_unreachable("invalid type: emitInitThisBitField");
27284 }
27285 llvm_unreachable("invalid enum value");
27286}
27287#endif
27288#ifdef GET_LINK_IMPL
27289bool ByteCodeEmitter::emitInitThisBitFieldSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27290 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint8, A0, A1, L);
27291}
27292bool ByteCodeEmitter::emitInitThisBitFieldUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27293 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint8, A0, A1, L);
27294}
27295bool ByteCodeEmitter::emitInitThisBitFieldSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27296 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint16, A0, A1, L);
27297}
27298bool ByteCodeEmitter::emitInitThisBitFieldUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27299 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint16, A0, A1, L);
27300}
27301bool ByteCodeEmitter::emitInitThisBitFieldSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27302 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint32, A0, A1, L);
27303}
27304bool ByteCodeEmitter::emitInitThisBitFieldUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27305 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint32, A0, A1, L);
27306}
27307bool ByteCodeEmitter::emitInitThisBitFieldSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27308 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldSint64, A0, A1, L);
27309}
27310bool ByteCodeEmitter::emitInitThisBitFieldUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27311 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldUint64, A0, A1, L);
27312}
27313bool ByteCodeEmitter::emitInitThisBitFieldIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27314 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldIntAP, A0, A1, L);
27315}
27316bool ByteCodeEmitter::emitInitThisBitFieldIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27317 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldIntAPS, A0, A1, L);
27318}
27319bool ByteCodeEmitter::emitInitThisBitFieldBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27320 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldBool, A0, A1, L);
27321}
27322bool ByteCodeEmitter::emitInitThisBitFieldFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27323 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldFixedPoint, A0, A1, L);
27324}
27325#endif
27326#ifdef GET_EVAL_IMPL
27327bool EvalEmitter::emitInitThisBitFieldSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27328 if (!isActive()) return true;
27329 CurrentSource = L;
27330 return InitThisBitField<PT_Sint8>(S, OpPC, A0, A1);
27331}
27332bool EvalEmitter::emitInitThisBitFieldUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27333 if (!isActive()) return true;
27334 CurrentSource = L;
27335 return InitThisBitField<PT_Uint8>(S, OpPC, A0, A1);
27336}
27337bool EvalEmitter::emitInitThisBitFieldSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27338 if (!isActive()) return true;
27339 CurrentSource = L;
27340 return InitThisBitField<PT_Sint16>(S, OpPC, A0, A1);
27341}
27342bool EvalEmitter::emitInitThisBitFieldUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27343 if (!isActive()) return true;
27344 CurrentSource = L;
27345 return InitThisBitField<PT_Uint16>(S, OpPC, A0, A1);
27346}
27347bool EvalEmitter::emitInitThisBitFieldSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27348 if (!isActive()) return true;
27349 CurrentSource = L;
27350 return InitThisBitField<PT_Sint32>(S, OpPC, A0, A1);
27351}
27352bool EvalEmitter::emitInitThisBitFieldUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27353 if (!isActive()) return true;
27354 CurrentSource = L;
27355 return InitThisBitField<PT_Uint32>(S, OpPC, A0, A1);
27356}
27357bool EvalEmitter::emitInitThisBitFieldSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27358 if (!isActive()) return true;
27359 CurrentSource = L;
27360 return InitThisBitField<PT_Sint64>(S, OpPC, A0, A1);
27361}
27362bool EvalEmitter::emitInitThisBitFieldUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27363 if (!isActive()) return true;
27364 CurrentSource = L;
27365 return InitThisBitField<PT_Uint64>(S, OpPC, A0, A1);
27366}
27367bool EvalEmitter::emitInitThisBitFieldIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27368 if (!isActive()) return true;
27369 CurrentSource = L;
27370 return InitThisBitField<PT_IntAP>(S, OpPC, A0, A1);
27371}
27372bool EvalEmitter::emitInitThisBitFieldIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27373 if (!isActive()) return true;
27374 CurrentSource = L;
27375 return InitThisBitField<PT_IntAPS>(S, OpPC, A0, A1);
27376}
27377bool EvalEmitter::emitInitThisBitFieldBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27378 if (!isActive()) return true;
27379 CurrentSource = L;
27380 return InitThisBitField<PT_Bool>(S, OpPC, A0, A1);
27381}
27382bool EvalEmitter::emitInitThisBitFieldFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27383 if (!isActive()) return true;
27384 CurrentSource = L;
27385 return InitThisBitField<PT_FixedPoint>(S, OpPC, A0, A1);
27386}
27387#endif
27388#ifdef GET_OPCODE_NAMES
27389OP_InitThisBitFieldActivateSint8,
27390OP_InitThisBitFieldActivateUint8,
27391OP_InitThisBitFieldActivateSint16,
27392OP_InitThisBitFieldActivateUint16,
27393OP_InitThisBitFieldActivateSint32,
27394OP_InitThisBitFieldActivateUint32,
27395OP_InitThisBitFieldActivateSint64,
27396OP_InitThisBitFieldActivateUint64,
27397OP_InitThisBitFieldActivateIntAP,
27398OP_InitThisBitFieldActivateIntAPS,
27399OP_InitThisBitFieldActivateBool,
27400OP_InitThisBitFieldActivateFixedPoint,
27401#endif
27402#ifdef GET_INTERP
27403case OP_InitThisBitFieldActivateSint8: {
27404 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27405 const auto V1 = ReadArg<uint32_t>(S, PC);
27406 if (!InitThisBitFieldActivate<PT_Sint8>(S, OpPC, V0, V1))
27407 return false;
27408 continue;
27409}
27410case OP_InitThisBitFieldActivateUint8: {
27411 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27412 const auto V1 = ReadArg<uint32_t>(S, PC);
27413 if (!InitThisBitFieldActivate<PT_Uint8>(S, OpPC, V0, V1))
27414 return false;
27415 continue;
27416}
27417case OP_InitThisBitFieldActivateSint16: {
27418 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27419 const auto V1 = ReadArg<uint32_t>(S, PC);
27420 if (!InitThisBitFieldActivate<PT_Sint16>(S, OpPC, V0, V1))
27421 return false;
27422 continue;
27423}
27424case OP_InitThisBitFieldActivateUint16: {
27425 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27426 const auto V1 = ReadArg<uint32_t>(S, PC);
27427 if (!InitThisBitFieldActivate<PT_Uint16>(S, OpPC, V0, V1))
27428 return false;
27429 continue;
27430}
27431case OP_InitThisBitFieldActivateSint32: {
27432 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27433 const auto V1 = ReadArg<uint32_t>(S, PC);
27434 if (!InitThisBitFieldActivate<PT_Sint32>(S, OpPC, V0, V1))
27435 return false;
27436 continue;
27437}
27438case OP_InitThisBitFieldActivateUint32: {
27439 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27440 const auto V1 = ReadArg<uint32_t>(S, PC);
27441 if (!InitThisBitFieldActivate<PT_Uint32>(S, OpPC, V0, V1))
27442 return false;
27443 continue;
27444}
27445case OP_InitThisBitFieldActivateSint64: {
27446 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27447 const auto V1 = ReadArg<uint32_t>(S, PC);
27448 if (!InitThisBitFieldActivate<PT_Sint64>(S, OpPC, V0, V1))
27449 return false;
27450 continue;
27451}
27452case OP_InitThisBitFieldActivateUint64: {
27453 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27454 const auto V1 = ReadArg<uint32_t>(S, PC);
27455 if (!InitThisBitFieldActivate<PT_Uint64>(S, OpPC, V0, V1))
27456 return false;
27457 continue;
27458}
27459case OP_InitThisBitFieldActivateIntAP: {
27460 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27461 const auto V1 = ReadArg<uint32_t>(S, PC);
27462 if (!InitThisBitFieldActivate<PT_IntAP>(S, OpPC, V0, V1))
27463 return false;
27464 continue;
27465}
27466case OP_InitThisBitFieldActivateIntAPS: {
27467 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27468 const auto V1 = ReadArg<uint32_t>(S, PC);
27469 if (!InitThisBitFieldActivate<PT_IntAPS>(S, OpPC, V0, V1))
27470 return false;
27471 continue;
27472}
27473case OP_InitThisBitFieldActivateBool: {
27474 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27475 const auto V1 = ReadArg<uint32_t>(S, PC);
27476 if (!InitThisBitFieldActivate<PT_Bool>(S, OpPC, V0, V1))
27477 return false;
27478 continue;
27479}
27480case OP_InitThisBitFieldActivateFixedPoint: {
27481 const auto V0 = ReadArg<const Record::Field *>(S, PC);
27482 const auto V1 = ReadArg<uint32_t>(S, PC);
27483 if (!InitThisBitFieldActivate<PT_FixedPoint>(S, OpPC, V0, V1))
27484 return false;
27485 continue;
27486}
27487#endif
27488#ifdef GET_DISASM
27489case OP_InitThisBitFieldActivateSint8:
27490 Text.Op = PrintName("InitThisBitFieldActivateSint8");
27491 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27492 Text.Args.push_back(printArg<uint32_t>(P, PC));
27493 break;
27494case OP_InitThisBitFieldActivateUint8:
27495 Text.Op = PrintName("InitThisBitFieldActivateUint8");
27496 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27497 Text.Args.push_back(printArg<uint32_t>(P, PC));
27498 break;
27499case OP_InitThisBitFieldActivateSint16:
27500 Text.Op = PrintName("InitThisBitFieldActivateSint16");
27501 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27502 Text.Args.push_back(printArg<uint32_t>(P, PC));
27503 break;
27504case OP_InitThisBitFieldActivateUint16:
27505 Text.Op = PrintName("InitThisBitFieldActivateUint16");
27506 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27507 Text.Args.push_back(printArg<uint32_t>(P, PC));
27508 break;
27509case OP_InitThisBitFieldActivateSint32:
27510 Text.Op = PrintName("InitThisBitFieldActivateSint32");
27511 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27512 Text.Args.push_back(printArg<uint32_t>(P, PC));
27513 break;
27514case OP_InitThisBitFieldActivateUint32:
27515 Text.Op = PrintName("InitThisBitFieldActivateUint32");
27516 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27517 Text.Args.push_back(printArg<uint32_t>(P, PC));
27518 break;
27519case OP_InitThisBitFieldActivateSint64:
27520 Text.Op = PrintName("InitThisBitFieldActivateSint64");
27521 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27522 Text.Args.push_back(printArg<uint32_t>(P, PC));
27523 break;
27524case OP_InitThisBitFieldActivateUint64:
27525 Text.Op = PrintName("InitThisBitFieldActivateUint64");
27526 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27527 Text.Args.push_back(printArg<uint32_t>(P, PC));
27528 break;
27529case OP_InitThisBitFieldActivateIntAP:
27530 Text.Op = PrintName("InitThisBitFieldActivateIntAP");
27531 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27532 Text.Args.push_back(printArg<uint32_t>(P, PC));
27533 break;
27534case OP_InitThisBitFieldActivateIntAPS:
27535 Text.Op = PrintName("InitThisBitFieldActivateIntAPS");
27536 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27537 Text.Args.push_back(printArg<uint32_t>(P, PC));
27538 break;
27539case OP_InitThisBitFieldActivateBool:
27540 Text.Op = PrintName("InitThisBitFieldActivateBool");
27541 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27542 Text.Args.push_back(printArg<uint32_t>(P, PC));
27543 break;
27544case OP_InitThisBitFieldActivateFixedPoint:
27545 Text.Op = PrintName("InitThisBitFieldActivateFixedPoint");
27546 Text.Args.push_back(printArg<const Record::Field *>(P, PC));
27547 Text.Args.push_back(printArg<uint32_t>(P, PC));
27548 break;
27549#endif
27550#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27551bool emitInitThisBitFieldActivateSint8( const Record::Field * , uint32_t , SourceInfo);
27552bool emitInitThisBitFieldActivateUint8( const Record::Field * , uint32_t , SourceInfo);
27553bool emitInitThisBitFieldActivateSint16( const Record::Field * , uint32_t , SourceInfo);
27554bool emitInitThisBitFieldActivateUint16( const Record::Field * , uint32_t , SourceInfo);
27555bool emitInitThisBitFieldActivateSint32( const Record::Field * , uint32_t , SourceInfo);
27556bool emitInitThisBitFieldActivateUint32( const Record::Field * , uint32_t , SourceInfo);
27557bool emitInitThisBitFieldActivateSint64( const Record::Field * , uint32_t , SourceInfo);
27558bool emitInitThisBitFieldActivateUint64( const Record::Field * , uint32_t , SourceInfo);
27559bool emitInitThisBitFieldActivateIntAP( const Record::Field * , uint32_t , SourceInfo);
27560bool emitInitThisBitFieldActivateIntAPS( const Record::Field * , uint32_t , SourceInfo);
27561bool emitInitThisBitFieldActivateBool( const Record::Field * , uint32_t , SourceInfo);
27562bool emitInitThisBitFieldActivateFixedPoint( const Record::Field * , uint32_t , SourceInfo);
27563#endif
27564#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27565[[nodiscard]] bool emitInitThisBitFieldActivate(PrimType, const Record::Field *, uint32_t, SourceInfo I);
27566#endif
27567#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27568bool
27569#if defined(GET_EVAL_IMPL)
27570EvalEmitter
27571#else
27572ByteCodeEmitter
27573#endif
27574::emitInitThisBitFieldActivate(PrimType T0, const Record::Field * A0, uint32_t A1, SourceInfo I) {
27575 switch (T0) {
27576 case PT_Sint8:
27577 return emitInitThisBitFieldActivateSint8(A0, A1, I);
27578 case PT_Uint8:
27579 return emitInitThisBitFieldActivateUint8(A0, A1, I);
27580 case PT_Sint16:
27581 return emitInitThisBitFieldActivateSint16(A0, A1, I);
27582 case PT_Uint16:
27583 return emitInitThisBitFieldActivateUint16(A0, A1, I);
27584 case PT_Sint32:
27585 return emitInitThisBitFieldActivateSint32(A0, A1, I);
27586 case PT_Uint32:
27587 return emitInitThisBitFieldActivateUint32(A0, A1, I);
27588 case PT_Sint64:
27589 return emitInitThisBitFieldActivateSint64(A0, A1, I);
27590 case PT_Uint64:
27591 return emitInitThisBitFieldActivateUint64(A0, A1, I);
27592 case PT_IntAP:
27593 return emitInitThisBitFieldActivateIntAP(A0, A1, I);
27594 case PT_IntAPS:
27595 return emitInitThisBitFieldActivateIntAPS(A0, A1, I);
27596 case PT_Bool:
27597 return emitInitThisBitFieldActivateBool(A0, A1, I);
27598 case PT_FixedPoint:
27599 return emitInitThisBitFieldActivateFixedPoint(A0, A1, I);
27600 default: llvm_unreachable("invalid type: emitInitThisBitFieldActivate");
27601 }
27602 llvm_unreachable("invalid enum value");
27603}
27604#endif
27605#ifdef GET_LINK_IMPL
27606bool ByteCodeEmitter::emitInitThisBitFieldActivateSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27607 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint8, A0, A1, L);
27608}
27609bool ByteCodeEmitter::emitInitThisBitFieldActivateUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27610 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint8, A0, A1, L);
27611}
27612bool ByteCodeEmitter::emitInitThisBitFieldActivateSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27613 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint16, A0, A1, L);
27614}
27615bool ByteCodeEmitter::emitInitThisBitFieldActivateUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27616 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint16, A0, A1, L);
27617}
27618bool ByteCodeEmitter::emitInitThisBitFieldActivateSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27619 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint32, A0, A1, L);
27620}
27621bool ByteCodeEmitter::emitInitThisBitFieldActivateUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27622 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint32, A0, A1, L);
27623}
27624bool ByteCodeEmitter::emitInitThisBitFieldActivateSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27625 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateSint64, A0, A1, L);
27626}
27627bool ByteCodeEmitter::emitInitThisBitFieldActivateUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27628 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateUint64, A0, A1, L);
27629}
27630bool ByteCodeEmitter::emitInitThisBitFieldActivateIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27631 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateIntAP, A0, A1, L);
27632}
27633bool ByteCodeEmitter::emitInitThisBitFieldActivateIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27634 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateIntAPS, A0, A1, L);
27635}
27636bool ByteCodeEmitter::emitInitThisBitFieldActivateBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27637 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateBool, A0, A1, L);
27638}
27639bool ByteCodeEmitter::emitInitThisBitFieldActivateFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27640 return emitOp<const Record::Field *, uint32_t>(OP_InitThisBitFieldActivateFixedPoint, A0, A1, L);
27641}
27642#endif
27643#ifdef GET_EVAL_IMPL
27644bool EvalEmitter::emitInitThisBitFieldActivateSint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27645 if (!isActive()) return true;
27646 CurrentSource = L;
27647 return InitThisBitFieldActivate<PT_Sint8>(S, OpPC, A0, A1);
27648}
27649bool EvalEmitter::emitInitThisBitFieldActivateUint8( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27650 if (!isActive()) return true;
27651 CurrentSource = L;
27652 return InitThisBitFieldActivate<PT_Uint8>(S, OpPC, A0, A1);
27653}
27654bool EvalEmitter::emitInitThisBitFieldActivateSint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27655 if (!isActive()) return true;
27656 CurrentSource = L;
27657 return InitThisBitFieldActivate<PT_Sint16>(S, OpPC, A0, A1);
27658}
27659bool EvalEmitter::emitInitThisBitFieldActivateUint16( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27660 if (!isActive()) return true;
27661 CurrentSource = L;
27662 return InitThisBitFieldActivate<PT_Uint16>(S, OpPC, A0, A1);
27663}
27664bool EvalEmitter::emitInitThisBitFieldActivateSint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27665 if (!isActive()) return true;
27666 CurrentSource = L;
27667 return InitThisBitFieldActivate<PT_Sint32>(S, OpPC, A0, A1);
27668}
27669bool EvalEmitter::emitInitThisBitFieldActivateUint32( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27670 if (!isActive()) return true;
27671 CurrentSource = L;
27672 return InitThisBitFieldActivate<PT_Uint32>(S, OpPC, A0, A1);
27673}
27674bool EvalEmitter::emitInitThisBitFieldActivateSint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27675 if (!isActive()) return true;
27676 CurrentSource = L;
27677 return InitThisBitFieldActivate<PT_Sint64>(S, OpPC, A0, A1);
27678}
27679bool EvalEmitter::emitInitThisBitFieldActivateUint64( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27680 if (!isActive()) return true;
27681 CurrentSource = L;
27682 return InitThisBitFieldActivate<PT_Uint64>(S, OpPC, A0, A1);
27683}
27684bool EvalEmitter::emitInitThisBitFieldActivateIntAP( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27685 if (!isActive()) return true;
27686 CurrentSource = L;
27687 return InitThisBitFieldActivate<PT_IntAP>(S, OpPC, A0, A1);
27688}
27689bool EvalEmitter::emitInitThisBitFieldActivateIntAPS( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27690 if (!isActive()) return true;
27691 CurrentSource = L;
27692 return InitThisBitFieldActivate<PT_IntAPS>(S, OpPC, A0, A1);
27693}
27694bool EvalEmitter::emitInitThisBitFieldActivateBool( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27695 if (!isActive()) return true;
27696 CurrentSource = L;
27697 return InitThisBitFieldActivate<PT_Bool>(S, OpPC, A0, A1);
27698}
27699bool EvalEmitter::emitInitThisBitFieldActivateFixedPoint( const Record::Field * A0, uint32_t A1, SourceInfo L) {
27700 if (!isActive()) return true;
27701 CurrentSource = L;
27702 return InitThisBitFieldActivate<PT_FixedPoint>(S, OpPC, A0, A1);
27703}
27704#endif
27705#ifdef GET_OPCODE_NAMES
27706OP_InitThisFieldSint8,
27707OP_InitThisFieldUint8,
27708OP_InitThisFieldSint16,
27709OP_InitThisFieldUint16,
27710OP_InitThisFieldSint32,
27711OP_InitThisFieldUint32,
27712OP_InitThisFieldSint64,
27713OP_InitThisFieldUint64,
27714OP_InitThisFieldIntAP,
27715OP_InitThisFieldIntAPS,
27716OP_InitThisFieldBool,
27717OP_InitThisFieldFixedPoint,
27718OP_InitThisFieldPtr,
27719OP_InitThisFieldMemberPtr,
27720OP_InitThisFieldFloat,
27721#endif
27722#ifdef GET_INTERP
27723case OP_InitThisFieldSint8: {
27724 const auto V0 = ReadArg<uint32_t>(S, PC);
27725 if (!InitThisField<PT_Sint8>(S, OpPC, V0))
27726 return false;
27727 continue;
27728}
27729case OP_InitThisFieldUint8: {
27730 const auto V0 = ReadArg<uint32_t>(S, PC);
27731 if (!InitThisField<PT_Uint8>(S, OpPC, V0))
27732 return false;
27733 continue;
27734}
27735case OP_InitThisFieldSint16: {
27736 const auto V0 = ReadArg<uint32_t>(S, PC);
27737 if (!InitThisField<PT_Sint16>(S, OpPC, V0))
27738 return false;
27739 continue;
27740}
27741case OP_InitThisFieldUint16: {
27742 const auto V0 = ReadArg<uint32_t>(S, PC);
27743 if (!InitThisField<PT_Uint16>(S, OpPC, V0))
27744 return false;
27745 continue;
27746}
27747case OP_InitThisFieldSint32: {
27748 const auto V0 = ReadArg<uint32_t>(S, PC);
27749 if (!InitThisField<PT_Sint32>(S, OpPC, V0))
27750 return false;
27751 continue;
27752}
27753case OP_InitThisFieldUint32: {
27754 const auto V0 = ReadArg<uint32_t>(S, PC);
27755 if (!InitThisField<PT_Uint32>(S, OpPC, V0))
27756 return false;
27757 continue;
27758}
27759case OP_InitThisFieldSint64: {
27760 const auto V0 = ReadArg<uint32_t>(S, PC);
27761 if (!InitThisField<PT_Sint64>(S, OpPC, V0))
27762 return false;
27763 continue;
27764}
27765case OP_InitThisFieldUint64: {
27766 const auto V0 = ReadArg<uint32_t>(S, PC);
27767 if (!InitThisField<PT_Uint64>(S, OpPC, V0))
27768 return false;
27769 continue;
27770}
27771case OP_InitThisFieldIntAP: {
27772 const auto V0 = ReadArg<uint32_t>(S, PC);
27773 if (!InitThisField<PT_IntAP>(S, OpPC, V0))
27774 return false;
27775 continue;
27776}
27777case OP_InitThisFieldIntAPS: {
27778 const auto V0 = ReadArg<uint32_t>(S, PC);
27779 if (!InitThisField<PT_IntAPS>(S, OpPC, V0))
27780 return false;
27781 continue;
27782}
27783case OP_InitThisFieldBool: {
27784 const auto V0 = ReadArg<uint32_t>(S, PC);
27785 if (!InitThisField<PT_Bool>(S, OpPC, V0))
27786 return false;
27787 continue;
27788}
27789case OP_InitThisFieldFixedPoint: {
27790 const auto V0 = ReadArg<uint32_t>(S, PC);
27791 if (!InitThisField<PT_FixedPoint>(S, OpPC, V0))
27792 return false;
27793 continue;
27794}
27795case OP_InitThisFieldPtr: {
27796 const auto V0 = ReadArg<uint32_t>(S, PC);
27797 if (!InitThisField<PT_Ptr>(S, OpPC, V0))
27798 return false;
27799 continue;
27800}
27801case OP_InitThisFieldMemberPtr: {
27802 const auto V0 = ReadArg<uint32_t>(S, PC);
27803 if (!InitThisField<PT_MemberPtr>(S, OpPC, V0))
27804 return false;
27805 continue;
27806}
27807case OP_InitThisFieldFloat: {
27808 const auto V0 = ReadArg<uint32_t>(S, PC);
27809 if (!InitThisField<PT_Float>(S, OpPC, V0))
27810 return false;
27811 continue;
27812}
27813#endif
27814#ifdef GET_DISASM
27815case OP_InitThisFieldSint8:
27816 Text.Op = PrintName("InitThisFieldSint8");
27817 Text.Args.push_back(printArg<uint32_t>(P, PC));
27818 break;
27819case OP_InitThisFieldUint8:
27820 Text.Op = PrintName("InitThisFieldUint8");
27821 Text.Args.push_back(printArg<uint32_t>(P, PC));
27822 break;
27823case OP_InitThisFieldSint16:
27824 Text.Op = PrintName("InitThisFieldSint16");
27825 Text.Args.push_back(printArg<uint32_t>(P, PC));
27826 break;
27827case OP_InitThisFieldUint16:
27828 Text.Op = PrintName("InitThisFieldUint16");
27829 Text.Args.push_back(printArg<uint32_t>(P, PC));
27830 break;
27831case OP_InitThisFieldSint32:
27832 Text.Op = PrintName("InitThisFieldSint32");
27833 Text.Args.push_back(printArg<uint32_t>(P, PC));
27834 break;
27835case OP_InitThisFieldUint32:
27836 Text.Op = PrintName("InitThisFieldUint32");
27837 Text.Args.push_back(printArg<uint32_t>(P, PC));
27838 break;
27839case OP_InitThisFieldSint64:
27840 Text.Op = PrintName("InitThisFieldSint64");
27841 Text.Args.push_back(printArg<uint32_t>(P, PC));
27842 break;
27843case OP_InitThisFieldUint64:
27844 Text.Op = PrintName("InitThisFieldUint64");
27845 Text.Args.push_back(printArg<uint32_t>(P, PC));
27846 break;
27847case OP_InitThisFieldIntAP:
27848 Text.Op = PrintName("InitThisFieldIntAP");
27849 Text.Args.push_back(printArg<uint32_t>(P, PC));
27850 break;
27851case OP_InitThisFieldIntAPS:
27852 Text.Op = PrintName("InitThisFieldIntAPS");
27853 Text.Args.push_back(printArg<uint32_t>(P, PC));
27854 break;
27855case OP_InitThisFieldBool:
27856 Text.Op = PrintName("InitThisFieldBool");
27857 Text.Args.push_back(printArg<uint32_t>(P, PC));
27858 break;
27859case OP_InitThisFieldFixedPoint:
27860 Text.Op = PrintName("InitThisFieldFixedPoint");
27861 Text.Args.push_back(printArg<uint32_t>(P, PC));
27862 break;
27863case OP_InitThisFieldPtr:
27864 Text.Op = PrintName("InitThisFieldPtr");
27865 Text.Args.push_back(printArg<uint32_t>(P, PC));
27866 break;
27867case OP_InitThisFieldMemberPtr:
27868 Text.Op = PrintName("InitThisFieldMemberPtr");
27869 Text.Args.push_back(printArg<uint32_t>(P, PC));
27870 break;
27871case OP_InitThisFieldFloat:
27872 Text.Op = PrintName("InitThisFieldFloat");
27873 Text.Args.push_back(printArg<uint32_t>(P, PC));
27874 break;
27875#endif
27876#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27877bool emitInitThisFieldSint8( uint32_t , SourceInfo);
27878bool emitInitThisFieldUint8( uint32_t , SourceInfo);
27879bool emitInitThisFieldSint16( uint32_t , SourceInfo);
27880bool emitInitThisFieldUint16( uint32_t , SourceInfo);
27881bool emitInitThisFieldSint32( uint32_t , SourceInfo);
27882bool emitInitThisFieldUint32( uint32_t , SourceInfo);
27883bool emitInitThisFieldSint64( uint32_t , SourceInfo);
27884bool emitInitThisFieldUint64( uint32_t , SourceInfo);
27885bool emitInitThisFieldIntAP( uint32_t , SourceInfo);
27886bool emitInitThisFieldIntAPS( uint32_t , SourceInfo);
27887bool emitInitThisFieldBool( uint32_t , SourceInfo);
27888bool emitInitThisFieldFixedPoint( uint32_t , SourceInfo);
27889bool emitInitThisFieldPtr( uint32_t , SourceInfo);
27890bool emitInitThisFieldMemberPtr( uint32_t , SourceInfo);
27891bool emitInitThisFieldFloat( uint32_t , SourceInfo);
27892#endif
27893#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
27894[[nodiscard]] bool emitInitThisField(PrimType, uint32_t, SourceInfo I);
27895#endif
27896#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
27897bool
27898#if defined(GET_EVAL_IMPL)
27899EvalEmitter
27900#else
27901ByteCodeEmitter
27902#endif
27903::emitInitThisField(PrimType T0, uint32_t A0, SourceInfo I) {
27904 switch (T0) {
27905 case PT_Sint8:
27906 return emitInitThisFieldSint8(A0, I);
27907 case PT_Uint8:
27908 return emitInitThisFieldUint8(A0, I);
27909 case PT_Sint16:
27910 return emitInitThisFieldSint16(A0, I);
27911 case PT_Uint16:
27912 return emitInitThisFieldUint16(A0, I);
27913 case PT_Sint32:
27914 return emitInitThisFieldSint32(A0, I);
27915 case PT_Uint32:
27916 return emitInitThisFieldUint32(A0, I);
27917 case PT_Sint64:
27918 return emitInitThisFieldSint64(A0, I);
27919 case PT_Uint64:
27920 return emitInitThisFieldUint64(A0, I);
27921 case PT_IntAP:
27922 return emitInitThisFieldIntAP(A0, I);
27923 case PT_IntAPS:
27924 return emitInitThisFieldIntAPS(A0, I);
27925 case PT_Bool:
27926 return emitInitThisFieldBool(A0, I);
27927 case PT_FixedPoint:
27928 return emitInitThisFieldFixedPoint(A0, I);
27929 case PT_Ptr:
27930 return emitInitThisFieldPtr(A0, I);
27931 case PT_MemberPtr:
27932 return emitInitThisFieldMemberPtr(A0, I);
27933 case PT_Float:
27934 return emitInitThisFieldFloat(A0, I);
27935 }
27936 llvm_unreachable("invalid enum value");
27937}
27938#endif
27939#ifdef GET_LINK_IMPL
27940bool ByteCodeEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
27941 return emitOp<uint32_t>(OP_InitThisFieldSint8, A0, L);
27942}
27943bool ByteCodeEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
27944 return emitOp<uint32_t>(OP_InitThisFieldUint8, A0, L);
27945}
27946bool ByteCodeEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
27947 return emitOp<uint32_t>(OP_InitThisFieldSint16, A0, L);
27948}
27949bool ByteCodeEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
27950 return emitOp<uint32_t>(OP_InitThisFieldUint16, A0, L);
27951}
27952bool ByteCodeEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
27953 return emitOp<uint32_t>(OP_InitThisFieldSint32, A0, L);
27954}
27955bool ByteCodeEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
27956 return emitOp<uint32_t>(OP_InitThisFieldUint32, A0, L);
27957}
27958bool ByteCodeEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
27959 return emitOp<uint32_t>(OP_InitThisFieldSint64, A0, L);
27960}
27961bool ByteCodeEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
27962 return emitOp<uint32_t>(OP_InitThisFieldUint64, A0, L);
27963}
27964bool ByteCodeEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
27965 return emitOp<uint32_t>(OP_InitThisFieldIntAP, A0, L);
27966}
27967bool ByteCodeEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
27968 return emitOp<uint32_t>(OP_InitThisFieldIntAPS, A0, L);
27969}
27970bool ByteCodeEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
27971 return emitOp<uint32_t>(OP_InitThisFieldBool, A0, L);
27972}
27973bool ByteCodeEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
27974 return emitOp<uint32_t>(OP_InitThisFieldFixedPoint, A0, L);
27975}
27976bool ByteCodeEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
27977 return emitOp<uint32_t>(OP_InitThisFieldPtr, A0, L);
27978}
27979bool ByteCodeEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
27980 return emitOp<uint32_t>(OP_InitThisFieldMemberPtr, A0, L);
27981}
27982bool ByteCodeEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
27983 return emitOp<uint32_t>(OP_InitThisFieldFloat, A0, L);
27984}
27985#endif
27986#ifdef GET_EVAL_IMPL
27987bool EvalEmitter::emitInitThisFieldSint8( uint32_t A0, SourceInfo L) {
27988 if (!isActive()) return true;
27989 CurrentSource = L;
27990 return InitThisField<PT_Sint8>(S, OpPC, A0);
27991}
27992bool EvalEmitter::emitInitThisFieldUint8( uint32_t A0, SourceInfo L) {
27993 if (!isActive()) return true;
27994 CurrentSource = L;
27995 return InitThisField<PT_Uint8>(S, OpPC, A0);
27996}
27997bool EvalEmitter::emitInitThisFieldSint16( uint32_t A0, SourceInfo L) {
27998 if (!isActive()) return true;
27999 CurrentSource = L;
28000 return InitThisField<PT_Sint16>(S, OpPC, A0);
28001}
28002bool EvalEmitter::emitInitThisFieldUint16( uint32_t A0, SourceInfo L) {
28003 if (!isActive()) return true;
28004 CurrentSource = L;
28005 return InitThisField<PT_Uint16>(S, OpPC, A0);
28006}
28007bool EvalEmitter::emitInitThisFieldSint32( uint32_t A0, SourceInfo L) {
28008 if (!isActive()) return true;
28009 CurrentSource = L;
28010 return InitThisField<PT_Sint32>(S, OpPC, A0);
28011}
28012bool EvalEmitter::emitInitThisFieldUint32( uint32_t A0, SourceInfo L) {
28013 if (!isActive()) return true;
28014 CurrentSource = L;
28015 return InitThisField<PT_Uint32>(S, OpPC, A0);
28016}
28017bool EvalEmitter::emitInitThisFieldSint64( uint32_t A0, SourceInfo L) {
28018 if (!isActive()) return true;
28019 CurrentSource = L;
28020 return InitThisField<PT_Sint64>(S, OpPC, A0);
28021}
28022bool EvalEmitter::emitInitThisFieldUint64( uint32_t A0, SourceInfo L) {
28023 if (!isActive()) return true;
28024 CurrentSource = L;
28025 return InitThisField<PT_Uint64>(S, OpPC, A0);
28026}
28027bool EvalEmitter::emitInitThisFieldIntAP( uint32_t A0, SourceInfo L) {
28028 if (!isActive()) return true;
28029 CurrentSource = L;
28030 return InitThisField<PT_IntAP>(S, OpPC, A0);
28031}
28032bool EvalEmitter::emitInitThisFieldIntAPS( uint32_t A0, SourceInfo L) {
28033 if (!isActive()) return true;
28034 CurrentSource = L;
28035 return InitThisField<PT_IntAPS>(S, OpPC, A0);
28036}
28037bool EvalEmitter::emitInitThisFieldBool( uint32_t A0, SourceInfo L) {
28038 if (!isActive()) return true;
28039 CurrentSource = L;
28040 return InitThisField<PT_Bool>(S, OpPC, A0);
28041}
28042bool EvalEmitter::emitInitThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
28043 if (!isActive()) return true;
28044 CurrentSource = L;
28045 return InitThisField<PT_FixedPoint>(S, OpPC, A0);
28046}
28047bool EvalEmitter::emitInitThisFieldPtr( uint32_t A0, SourceInfo L) {
28048 if (!isActive()) return true;
28049 CurrentSource = L;
28050 return InitThisField<PT_Ptr>(S, OpPC, A0);
28051}
28052bool EvalEmitter::emitInitThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
28053 if (!isActive()) return true;
28054 CurrentSource = L;
28055 return InitThisField<PT_MemberPtr>(S, OpPC, A0);
28056}
28057bool EvalEmitter::emitInitThisFieldFloat( uint32_t A0, SourceInfo L) {
28058 if (!isActive()) return true;
28059 CurrentSource = L;
28060 return InitThisField<PT_Float>(S, OpPC, A0);
28061}
28062#endif
28063#ifdef GET_OPCODE_NAMES
28064OP_InitThisFieldActivateSint8,
28065OP_InitThisFieldActivateUint8,
28066OP_InitThisFieldActivateSint16,
28067OP_InitThisFieldActivateUint16,
28068OP_InitThisFieldActivateSint32,
28069OP_InitThisFieldActivateUint32,
28070OP_InitThisFieldActivateSint64,
28071OP_InitThisFieldActivateUint64,
28072OP_InitThisFieldActivateIntAP,
28073OP_InitThisFieldActivateIntAPS,
28074OP_InitThisFieldActivateBool,
28075OP_InitThisFieldActivateFixedPoint,
28076OP_InitThisFieldActivatePtr,
28077OP_InitThisFieldActivateMemberPtr,
28078OP_InitThisFieldActivateFloat,
28079#endif
28080#ifdef GET_INTERP
28081case OP_InitThisFieldActivateSint8: {
28082 const auto V0 = ReadArg<uint32_t>(S, PC);
28083 if (!InitThisFieldActivate<PT_Sint8>(S, OpPC, V0))
28084 return false;
28085 continue;
28086}
28087case OP_InitThisFieldActivateUint8: {
28088 const auto V0 = ReadArg<uint32_t>(S, PC);
28089 if (!InitThisFieldActivate<PT_Uint8>(S, OpPC, V0))
28090 return false;
28091 continue;
28092}
28093case OP_InitThisFieldActivateSint16: {
28094 const auto V0 = ReadArg<uint32_t>(S, PC);
28095 if (!InitThisFieldActivate<PT_Sint16>(S, OpPC, V0))
28096 return false;
28097 continue;
28098}
28099case OP_InitThisFieldActivateUint16: {
28100 const auto V0 = ReadArg<uint32_t>(S, PC);
28101 if (!InitThisFieldActivate<PT_Uint16>(S, OpPC, V0))
28102 return false;
28103 continue;
28104}
28105case OP_InitThisFieldActivateSint32: {
28106 const auto V0 = ReadArg<uint32_t>(S, PC);
28107 if (!InitThisFieldActivate<PT_Sint32>(S, OpPC, V0))
28108 return false;
28109 continue;
28110}
28111case OP_InitThisFieldActivateUint32: {
28112 const auto V0 = ReadArg<uint32_t>(S, PC);
28113 if (!InitThisFieldActivate<PT_Uint32>(S, OpPC, V0))
28114 return false;
28115 continue;
28116}
28117case OP_InitThisFieldActivateSint64: {
28118 const auto V0 = ReadArg<uint32_t>(S, PC);
28119 if (!InitThisFieldActivate<PT_Sint64>(S, OpPC, V0))
28120 return false;
28121 continue;
28122}
28123case OP_InitThisFieldActivateUint64: {
28124 const auto V0 = ReadArg<uint32_t>(S, PC);
28125 if (!InitThisFieldActivate<PT_Uint64>(S, OpPC, V0))
28126 return false;
28127 continue;
28128}
28129case OP_InitThisFieldActivateIntAP: {
28130 const auto V0 = ReadArg<uint32_t>(S, PC);
28131 if (!InitThisFieldActivate<PT_IntAP>(S, OpPC, V0))
28132 return false;
28133 continue;
28134}
28135case OP_InitThisFieldActivateIntAPS: {
28136 const auto V0 = ReadArg<uint32_t>(S, PC);
28137 if (!InitThisFieldActivate<PT_IntAPS>(S, OpPC, V0))
28138 return false;
28139 continue;
28140}
28141case OP_InitThisFieldActivateBool: {
28142 const auto V0 = ReadArg<uint32_t>(S, PC);
28143 if (!InitThisFieldActivate<PT_Bool>(S, OpPC, V0))
28144 return false;
28145 continue;
28146}
28147case OP_InitThisFieldActivateFixedPoint: {
28148 const auto V0 = ReadArg<uint32_t>(S, PC);
28149 if (!InitThisFieldActivate<PT_FixedPoint>(S, OpPC, V0))
28150 return false;
28151 continue;
28152}
28153case OP_InitThisFieldActivatePtr: {
28154 const auto V0 = ReadArg<uint32_t>(S, PC);
28155 if (!InitThisFieldActivate<PT_Ptr>(S, OpPC, V0))
28156 return false;
28157 continue;
28158}
28159case OP_InitThisFieldActivateMemberPtr: {
28160 const auto V0 = ReadArg<uint32_t>(S, PC);
28161 if (!InitThisFieldActivate<PT_MemberPtr>(S, OpPC, V0))
28162 return false;
28163 continue;
28164}
28165case OP_InitThisFieldActivateFloat: {
28166 const auto V0 = ReadArg<uint32_t>(S, PC);
28167 if (!InitThisFieldActivate<PT_Float>(S, OpPC, V0))
28168 return false;
28169 continue;
28170}
28171#endif
28172#ifdef GET_DISASM
28173case OP_InitThisFieldActivateSint8:
28174 Text.Op = PrintName("InitThisFieldActivateSint8");
28175 Text.Args.push_back(printArg<uint32_t>(P, PC));
28176 break;
28177case OP_InitThisFieldActivateUint8:
28178 Text.Op = PrintName("InitThisFieldActivateUint8");
28179 Text.Args.push_back(printArg<uint32_t>(P, PC));
28180 break;
28181case OP_InitThisFieldActivateSint16:
28182 Text.Op = PrintName("InitThisFieldActivateSint16");
28183 Text.Args.push_back(printArg<uint32_t>(P, PC));
28184 break;
28185case OP_InitThisFieldActivateUint16:
28186 Text.Op = PrintName("InitThisFieldActivateUint16");
28187 Text.Args.push_back(printArg<uint32_t>(P, PC));
28188 break;
28189case OP_InitThisFieldActivateSint32:
28190 Text.Op = PrintName("InitThisFieldActivateSint32");
28191 Text.Args.push_back(printArg<uint32_t>(P, PC));
28192 break;
28193case OP_InitThisFieldActivateUint32:
28194 Text.Op = PrintName("InitThisFieldActivateUint32");
28195 Text.Args.push_back(printArg<uint32_t>(P, PC));
28196 break;
28197case OP_InitThisFieldActivateSint64:
28198 Text.Op = PrintName("InitThisFieldActivateSint64");
28199 Text.Args.push_back(printArg<uint32_t>(P, PC));
28200 break;
28201case OP_InitThisFieldActivateUint64:
28202 Text.Op = PrintName("InitThisFieldActivateUint64");
28203 Text.Args.push_back(printArg<uint32_t>(P, PC));
28204 break;
28205case OP_InitThisFieldActivateIntAP:
28206 Text.Op = PrintName("InitThisFieldActivateIntAP");
28207 Text.Args.push_back(printArg<uint32_t>(P, PC));
28208 break;
28209case OP_InitThisFieldActivateIntAPS:
28210 Text.Op = PrintName("InitThisFieldActivateIntAPS");
28211 Text.Args.push_back(printArg<uint32_t>(P, PC));
28212 break;
28213case OP_InitThisFieldActivateBool:
28214 Text.Op = PrintName("InitThisFieldActivateBool");
28215 Text.Args.push_back(printArg<uint32_t>(P, PC));
28216 break;
28217case OP_InitThisFieldActivateFixedPoint:
28218 Text.Op = PrintName("InitThisFieldActivateFixedPoint");
28219 Text.Args.push_back(printArg<uint32_t>(P, PC));
28220 break;
28221case OP_InitThisFieldActivatePtr:
28222 Text.Op = PrintName("InitThisFieldActivatePtr");
28223 Text.Args.push_back(printArg<uint32_t>(P, PC));
28224 break;
28225case OP_InitThisFieldActivateMemberPtr:
28226 Text.Op = PrintName("InitThisFieldActivateMemberPtr");
28227 Text.Args.push_back(printArg<uint32_t>(P, PC));
28228 break;
28229case OP_InitThisFieldActivateFloat:
28230 Text.Op = PrintName("InitThisFieldActivateFloat");
28231 Text.Args.push_back(printArg<uint32_t>(P, PC));
28232 break;
28233#endif
28234#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28235bool emitInitThisFieldActivateSint8( uint32_t , SourceInfo);
28236bool emitInitThisFieldActivateUint8( uint32_t , SourceInfo);
28237bool emitInitThisFieldActivateSint16( uint32_t , SourceInfo);
28238bool emitInitThisFieldActivateUint16( uint32_t , SourceInfo);
28239bool emitInitThisFieldActivateSint32( uint32_t , SourceInfo);
28240bool emitInitThisFieldActivateUint32( uint32_t , SourceInfo);
28241bool emitInitThisFieldActivateSint64( uint32_t , SourceInfo);
28242bool emitInitThisFieldActivateUint64( uint32_t , SourceInfo);
28243bool emitInitThisFieldActivateIntAP( uint32_t , SourceInfo);
28244bool emitInitThisFieldActivateIntAPS( uint32_t , SourceInfo);
28245bool emitInitThisFieldActivateBool( uint32_t , SourceInfo);
28246bool emitInitThisFieldActivateFixedPoint( uint32_t , SourceInfo);
28247bool emitInitThisFieldActivatePtr( uint32_t , SourceInfo);
28248bool emitInitThisFieldActivateMemberPtr( uint32_t , SourceInfo);
28249bool emitInitThisFieldActivateFloat( uint32_t , SourceInfo);
28250#endif
28251#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28252[[nodiscard]] bool emitInitThisFieldActivate(PrimType, uint32_t, SourceInfo I);
28253#endif
28254#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28255bool
28256#if defined(GET_EVAL_IMPL)
28257EvalEmitter
28258#else
28259ByteCodeEmitter
28260#endif
28261::emitInitThisFieldActivate(PrimType T0, uint32_t A0, SourceInfo I) {
28262 switch (T0) {
28263 case PT_Sint8:
28264 return emitInitThisFieldActivateSint8(A0, I);
28265 case PT_Uint8:
28266 return emitInitThisFieldActivateUint8(A0, I);
28267 case PT_Sint16:
28268 return emitInitThisFieldActivateSint16(A0, I);
28269 case PT_Uint16:
28270 return emitInitThisFieldActivateUint16(A0, I);
28271 case PT_Sint32:
28272 return emitInitThisFieldActivateSint32(A0, I);
28273 case PT_Uint32:
28274 return emitInitThisFieldActivateUint32(A0, I);
28275 case PT_Sint64:
28276 return emitInitThisFieldActivateSint64(A0, I);
28277 case PT_Uint64:
28278 return emitInitThisFieldActivateUint64(A0, I);
28279 case PT_IntAP:
28280 return emitInitThisFieldActivateIntAP(A0, I);
28281 case PT_IntAPS:
28282 return emitInitThisFieldActivateIntAPS(A0, I);
28283 case PT_Bool:
28284 return emitInitThisFieldActivateBool(A0, I);
28285 case PT_FixedPoint:
28286 return emitInitThisFieldActivateFixedPoint(A0, I);
28287 case PT_Ptr:
28288 return emitInitThisFieldActivatePtr(A0, I);
28289 case PT_MemberPtr:
28290 return emitInitThisFieldActivateMemberPtr(A0, I);
28291 case PT_Float:
28292 return emitInitThisFieldActivateFloat(A0, I);
28293 }
28294 llvm_unreachable("invalid enum value");
28295}
28296#endif
28297#ifdef GET_LINK_IMPL
28298bool ByteCodeEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
28299 return emitOp<uint32_t>(OP_InitThisFieldActivateSint8, A0, L);
28300}
28301bool ByteCodeEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
28302 return emitOp<uint32_t>(OP_InitThisFieldActivateUint8, A0, L);
28303}
28304bool ByteCodeEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
28305 return emitOp<uint32_t>(OP_InitThisFieldActivateSint16, A0, L);
28306}
28307bool ByteCodeEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
28308 return emitOp<uint32_t>(OP_InitThisFieldActivateUint16, A0, L);
28309}
28310bool ByteCodeEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
28311 return emitOp<uint32_t>(OP_InitThisFieldActivateSint32, A0, L);
28312}
28313bool ByteCodeEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
28314 return emitOp<uint32_t>(OP_InitThisFieldActivateUint32, A0, L);
28315}
28316bool ByteCodeEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
28317 return emitOp<uint32_t>(OP_InitThisFieldActivateSint64, A0, L);
28318}
28319bool ByteCodeEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
28320 return emitOp<uint32_t>(OP_InitThisFieldActivateUint64, A0, L);
28321}
28322bool ByteCodeEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
28323 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAP, A0, L);
28324}
28325bool ByteCodeEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
28326 return emitOp<uint32_t>(OP_InitThisFieldActivateIntAPS, A0, L);
28327}
28328bool ByteCodeEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
28329 return emitOp<uint32_t>(OP_InitThisFieldActivateBool, A0, L);
28330}
28331bool ByteCodeEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
28332 return emitOp<uint32_t>(OP_InitThisFieldActivateFixedPoint, A0, L);
28333}
28334bool ByteCodeEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
28335 return emitOp<uint32_t>(OP_InitThisFieldActivatePtr, A0, L);
28336}
28337bool ByteCodeEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
28338 return emitOp<uint32_t>(OP_InitThisFieldActivateMemberPtr, A0, L);
28339}
28340bool ByteCodeEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
28341 return emitOp<uint32_t>(OP_InitThisFieldActivateFloat, A0, L);
28342}
28343#endif
28344#ifdef GET_EVAL_IMPL
28345bool EvalEmitter::emitInitThisFieldActivateSint8( uint32_t A0, SourceInfo L) {
28346 if (!isActive()) return true;
28347 CurrentSource = L;
28348 return InitThisFieldActivate<PT_Sint8>(S, OpPC, A0);
28349}
28350bool EvalEmitter::emitInitThisFieldActivateUint8( uint32_t A0, SourceInfo L) {
28351 if (!isActive()) return true;
28352 CurrentSource = L;
28353 return InitThisFieldActivate<PT_Uint8>(S, OpPC, A0);
28354}
28355bool EvalEmitter::emitInitThisFieldActivateSint16( uint32_t A0, SourceInfo L) {
28356 if (!isActive()) return true;
28357 CurrentSource = L;
28358 return InitThisFieldActivate<PT_Sint16>(S, OpPC, A0);
28359}
28360bool EvalEmitter::emitInitThisFieldActivateUint16( uint32_t A0, SourceInfo L) {
28361 if (!isActive()) return true;
28362 CurrentSource = L;
28363 return InitThisFieldActivate<PT_Uint16>(S, OpPC, A0);
28364}
28365bool EvalEmitter::emitInitThisFieldActivateSint32( uint32_t A0, SourceInfo L) {
28366 if (!isActive()) return true;
28367 CurrentSource = L;
28368 return InitThisFieldActivate<PT_Sint32>(S, OpPC, A0);
28369}
28370bool EvalEmitter::emitInitThisFieldActivateUint32( uint32_t A0, SourceInfo L) {
28371 if (!isActive()) return true;
28372 CurrentSource = L;
28373 return InitThisFieldActivate<PT_Uint32>(S, OpPC, A0);
28374}
28375bool EvalEmitter::emitInitThisFieldActivateSint64( uint32_t A0, SourceInfo L) {
28376 if (!isActive()) return true;
28377 CurrentSource = L;
28378 return InitThisFieldActivate<PT_Sint64>(S, OpPC, A0);
28379}
28380bool EvalEmitter::emitInitThisFieldActivateUint64( uint32_t A0, SourceInfo L) {
28381 if (!isActive()) return true;
28382 CurrentSource = L;
28383 return InitThisFieldActivate<PT_Uint64>(S, OpPC, A0);
28384}
28385bool EvalEmitter::emitInitThisFieldActivateIntAP( uint32_t A0, SourceInfo L) {
28386 if (!isActive()) return true;
28387 CurrentSource = L;
28388 return InitThisFieldActivate<PT_IntAP>(S, OpPC, A0);
28389}
28390bool EvalEmitter::emitInitThisFieldActivateIntAPS( uint32_t A0, SourceInfo L) {
28391 if (!isActive()) return true;
28392 CurrentSource = L;
28393 return InitThisFieldActivate<PT_IntAPS>(S, OpPC, A0);
28394}
28395bool EvalEmitter::emitInitThisFieldActivateBool( uint32_t A0, SourceInfo L) {
28396 if (!isActive()) return true;
28397 CurrentSource = L;
28398 return InitThisFieldActivate<PT_Bool>(S, OpPC, A0);
28399}
28400bool EvalEmitter::emitInitThisFieldActivateFixedPoint( uint32_t A0, SourceInfo L) {
28401 if (!isActive()) return true;
28402 CurrentSource = L;
28403 return InitThisFieldActivate<PT_FixedPoint>(S, OpPC, A0);
28404}
28405bool EvalEmitter::emitInitThisFieldActivatePtr( uint32_t A0, SourceInfo L) {
28406 if (!isActive()) return true;
28407 CurrentSource = L;
28408 return InitThisFieldActivate<PT_Ptr>(S, OpPC, A0);
28409}
28410bool EvalEmitter::emitInitThisFieldActivateMemberPtr( uint32_t A0, SourceInfo L) {
28411 if (!isActive()) return true;
28412 CurrentSource = L;
28413 return InitThisFieldActivate<PT_MemberPtr>(S, OpPC, A0);
28414}
28415bool EvalEmitter::emitInitThisFieldActivateFloat( uint32_t A0, SourceInfo L) {
28416 if (!isActive()) return true;
28417 CurrentSource = L;
28418 return InitThisFieldActivate<PT_Float>(S, OpPC, A0);
28419}
28420#endif
28421#ifdef GET_OPCODE_NAMES
28422OP_Inv,
28423#endif
28424#ifdef GET_INTERP
28425case OP_Inv: {
28426 if (!Inv(S, OpPC))
28427 return false;
28428 continue;
28429}
28430#endif
28431#ifdef GET_DISASM
28432case OP_Inv:
28433 Text.Op = PrintName("Inv");
28434 break;
28435#endif
28436#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28437bool emitInv(SourceInfo);
28438#endif
28439#ifdef GET_LINK_IMPL
28440bool ByteCodeEmitter::emitInv(SourceInfo L) {
28441 return emitOp<>(OP_Inv, L);
28442}
28443#endif
28444#ifdef GET_EVAL_IMPL
28445bool EvalEmitter::emitInv(SourceInfo L) {
28446 if (!isActive()) return true;
28447 CurrentSource = L;
28448 return Inv(S, OpPC);
28449}
28450#endif
28451#ifdef GET_OPCODE_NAMES
28452OP_Invalid,
28453#endif
28454#ifdef GET_INTERP
28455case OP_Invalid: {
28456 if (!Invalid(S, OpPC))
28457 return false;
28458 continue;
28459}
28460#endif
28461#ifdef GET_DISASM
28462case OP_Invalid:
28463 Text.Op = PrintName("Invalid");
28464 break;
28465#endif
28466#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28467bool emitInvalid(SourceInfo);
28468#endif
28469#ifdef GET_LINK_IMPL
28470bool ByteCodeEmitter::emitInvalid(SourceInfo L) {
28471 return emitOp<>(OP_Invalid, L);
28472}
28473#endif
28474#ifdef GET_EVAL_IMPL
28475bool EvalEmitter::emitInvalid(SourceInfo L) {
28476 if (!isActive()) return true;
28477 CurrentSource = L;
28478 return Invalid(S, OpPC);
28479}
28480#endif
28481#ifdef GET_OPCODE_NAMES
28482OP_InvalidCast,
28483#endif
28484#ifdef GET_INTERP
28485case OP_InvalidCast: {
28486 const auto V0 = ReadArg<interp::CastKind>(S, PC);
28487 const auto V1 = ReadArg<bool>(S, PC);
28488 if (!InvalidCast(S, OpPC, V0, V1))
28489 return false;
28490 continue;
28491}
28492#endif
28493#ifdef GET_DISASM
28494case OP_InvalidCast:
28495 Text.Op = PrintName("InvalidCast");
28496 Text.Args.push_back(printArg<interp::CastKind>(P, PC));
28497 Text.Args.push_back(printArg<bool>(P, PC));
28498 break;
28499#endif
28500#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28501bool emitInvalidCast( interp::CastKind , bool , SourceInfo);
28502#endif
28503#ifdef GET_LINK_IMPL
28504bool ByteCodeEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
28505 return emitOp<interp::CastKind, bool>(OP_InvalidCast, A0, A1, L);
28506}
28507#endif
28508#ifdef GET_EVAL_IMPL
28509bool EvalEmitter::emitInvalidCast( interp::CastKind A0, bool A1, SourceInfo L) {
28510 if (!isActive()) return true;
28511 CurrentSource = L;
28512 return InvalidCast(S, OpPC, A0, A1);
28513}
28514#endif
28515#ifdef GET_OPCODE_NAMES
28516OP_InvalidDeclRef,
28517#endif
28518#ifdef GET_INTERP
28519case OP_InvalidDeclRef: {
28520 const auto V0 = ReadArg<const DeclRefExpr *>(S, PC);
28521 const auto V1 = ReadArg<bool>(S, PC);
28522 if (!InvalidDeclRef(S, OpPC, V0, V1))
28523 return false;
28524 continue;
28525}
28526#endif
28527#ifdef GET_DISASM
28528case OP_InvalidDeclRef:
28529 Text.Op = PrintName("InvalidDeclRef");
28530 Text.Args.push_back(printArg<const DeclRefExpr *>(P, PC));
28531 Text.Args.push_back(printArg<bool>(P, PC));
28532 break;
28533#endif
28534#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28535bool emitInvalidDeclRef( const DeclRefExpr * , bool , SourceInfo);
28536#endif
28537#ifdef GET_LINK_IMPL
28538bool ByteCodeEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
28539 return emitOp<const DeclRefExpr *, bool>(OP_InvalidDeclRef, A0, A1, L);
28540}
28541#endif
28542#ifdef GET_EVAL_IMPL
28543bool EvalEmitter::emitInvalidDeclRef( const DeclRefExpr * A0, bool A1, SourceInfo L) {
28544 if (!isActive()) return true;
28545 CurrentSource = L;
28546 return InvalidDeclRef(S, OpPC, A0, A1);
28547}
28548#endif
28549#ifdef GET_OPCODE_NAMES
28550OP_InvalidNewDeleteExpr,
28551#endif
28552#ifdef GET_INTERP
28553case OP_InvalidNewDeleteExpr: {
28554 const auto V0 = ReadArg<const Expr *>(S, PC);
28555 if (!InvalidNewDeleteExpr(S, OpPC, V0))
28556 return false;
28557 continue;
28558}
28559#endif
28560#ifdef GET_DISASM
28561case OP_InvalidNewDeleteExpr:
28562 Text.Op = PrintName("InvalidNewDeleteExpr");
28563 Text.Args.push_back(printArg<const Expr *>(P, PC));
28564 break;
28565#endif
28566#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28567bool emitInvalidNewDeleteExpr( const Expr * , SourceInfo);
28568#endif
28569#ifdef GET_LINK_IMPL
28570bool ByteCodeEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
28571 return emitOp<const Expr *>(OP_InvalidNewDeleteExpr, A0, L);
28572}
28573#endif
28574#ifdef GET_EVAL_IMPL
28575bool EvalEmitter::emitInvalidNewDeleteExpr( const Expr * A0, SourceInfo L) {
28576 if (!isActive()) return true;
28577 CurrentSource = L;
28578 return InvalidNewDeleteExpr(S, OpPC, A0);
28579}
28580#endif
28581#ifdef GET_OPCODE_NAMES
28582OP_InvalidShuffleVectorIndex,
28583#endif
28584#ifdef GET_INTERP
28585case OP_InvalidShuffleVectorIndex: {
28586 const auto V0 = ReadArg<uint32_t>(S, PC);
28587 if (!InvalidShuffleVectorIndex(S, OpPC, V0))
28588 return false;
28589 continue;
28590}
28591#endif
28592#ifdef GET_DISASM
28593case OP_InvalidShuffleVectorIndex:
28594 Text.Op = PrintName("InvalidShuffleVectorIndex");
28595 Text.Args.push_back(printArg<uint32_t>(P, PC));
28596 break;
28597#endif
28598#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28599bool emitInvalidShuffleVectorIndex( uint32_t , SourceInfo);
28600#endif
28601#ifdef GET_LINK_IMPL
28602bool ByteCodeEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
28603 return emitOp<uint32_t>(OP_InvalidShuffleVectorIndex, A0, L);
28604}
28605#endif
28606#ifdef GET_EVAL_IMPL
28607bool EvalEmitter::emitInvalidShuffleVectorIndex( uint32_t A0, SourceInfo L) {
28608 if (!isActive()) return true;
28609 CurrentSource = L;
28610 return InvalidShuffleVectorIndex(S, OpPC, A0);
28611}
28612#endif
28613#ifdef GET_OPCODE_NAMES
28614OP_InvalidStore,
28615#endif
28616#ifdef GET_INTERP
28617case OP_InvalidStore: {
28618 const auto V0 = ReadArg<const Type *>(S, PC);
28619 if (!InvalidStore(S, OpPC, V0))
28620 return false;
28621 continue;
28622}
28623#endif
28624#ifdef GET_DISASM
28625case OP_InvalidStore:
28626 Text.Op = PrintName("InvalidStore");
28627 Text.Args.push_back(printArg<const Type *>(P, PC));
28628 break;
28629#endif
28630#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28631bool emitInvalidStore( const Type * , SourceInfo);
28632#endif
28633#ifdef GET_LINK_IMPL
28634bool ByteCodeEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
28635 return emitOp<const Type *>(OP_InvalidStore, A0, L);
28636}
28637#endif
28638#ifdef GET_EVAL_IMPL
28639bool EvalEmitter::emitInvalidStore( const Type * A0, SourceInfo L) {
28640 if (!isActive()) return true;
28641 CurrentSource = L;
28642 return InvalidStore(S, OpPC, A0);
28643}
28644#endif
28645#ifdef GET_OPCODE_NAMES
28646OP_IsConstantContext,
28647#endif
28648#ifdef GET_INTERP
28649case OP_IsConstantContext: {
28650 if (!IsConstantContext(S, OpPC))
28651 return false;
28652 continue;
28653}
28654#endif
28655#ifdef GET_DISASM
28656case OP_IsConstantContext:
28657 Text.Op = PrintName("IsConstantContext");
28658 break;
28659#endif
28660#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28661bool emitIsConstantContext(SourceInfo);
28662#endif
28663#ifdef GET_LINK_IMPL
28664bool ByteCodeEmitter::emitIsConstantContext(SourceInfo L) {
28665 return emitOp<>(OP_IsConstantContext, L);
28666}
28667#endif
28668#ifdef GET_EVAL_IMPL
28669bool EvalEmitter::emitIsConstantContext(SourceInfo L) {
28670 if (!isActive()) return true;
28671 CurrentSource = L;
28672 return IsConstantContext(S, OpPC);
28673}
28674#endif
28675#ifdef GET_OPCODE_NAMES
28676OP_IsNonNullPtr,
28677OP_IsNonNullMemberPtr,
28678#endif
28679#ifdef GET_INTERP
28680case OP_IsNonNullPtr: {
28681 if (!IsNonNull<PT_Ptr>(S, OpPC))
28682 return false;
28683 continue;
28684}
28685case OP_IsNonNullMemberPtr: {
28686 if (!IsNonNull<PT_MemberPtr>(S, OpPC))
28687 return false;
28688 continue;
28689}
28690#endif
28691#ifdef GET_DISASM
28692case OP_IsNonNullPtr:
28693 Text.Op = PrintName("IsNonNullPtr");
28694 break;
28695case OP_IsNonNullMemberPtr:
28696 Text.Op = PrintName("IsNonNullMemberPtr");
28697 break;
28698#endif
28699#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28700bool emitIsNonNullPtr(SourceInfo);
28701bool emitIsNonNullMemberPtr(SourceInfo);
28702#endif
28703#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28704[[nodiscard]] bool emitIsNonNull(PrimType, SourceInfo I);
28705#endif
28706#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28707bool
28708#if defined(GET_EVAL_IMPL)
28709EvalEmitter
28710#else
28711ByteCodeEmitter
28712#endif
28713::emitIsNonNull(PrimType T0, SourceInfo I) {
28714 switch (T0) {
28715 case PT_Ptr:
28716 return emitIsNonNullPtr(I);
28717 case PT_MemberPtr:
28718 return emitIsNonNullMemberPtr(I);
28719 default: llvm_unreachable("invalid type: emitIsNonNull");
28720 }
28721 llvm_unreachable("invalid enum value");
28722}
28723#endif
28724#ifdef GET_LINK_IMPL
28725bool ByteCodeEmitter::emitIsNonNullPtr(SourceInfo L) {
28726 return emitOp<>(OP_IsNonNullPtr, L);
28727}
28728bool ByteCodeEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
28729 return emitOp<>(OP_IsNonNullMemberPtr, L);
28730}
28731#endif
28732#ifdef GET_EVAL_IMPL
28733bool EvalEmitter::emitIsNonNullPtr(SourceInfo L) {
28734 if (!isActive()) return true;
28735 CurrentSource = L;
28736 return IsNonNull<PT_Ptr>(S, OpPC);
28737}
28738bool EvalEmitter::emitIsNonNullMemberPtr(SourceInfo L) {
28739 if (!isActive()) return true;
28740 CurrentSource = L;
28741 return IsNonNull<PT_MemberPtr>(S, OpPC);
28742}
28743#endif
28744#ifdef GET_OPCODE_NAMES
28745OP_Jf,
28746#endif
28747#ifdef GET_INTERP
28748case OP_Jf: {
28749 const auto V0 = ReadArg<int32_t>(S, PC);
28750 if (!Jf(S, PC, V0))
28751 return false;
28752 continue;
28753}
28754#endif
28755#ifdef GET_DISASM
28756case OP_Jf:
28757 Text.Op = PrintName("Jf");
28758 Text.Args.push_back(printArg<int32_t>(P, PC));
28759 break;
28760#endif
28761#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28762bool emitJf( int32_t , SourceInfo);
28763#endif
28764#ifdef GET_LINK_IMPL
28765bool ByteCodeEmitter::emitJf( int32_t A0, SourceInfo L) {
28766 return emitOp<int32_t>(OP_Jf, A0, L);
28767}
28768#endif
28769#ifdef GET_OPCODE_NAMES
28770OP_Jmp,
28771#endif
28772#ifdef GET_INTERP
28773case OP_Jmp: {
28774 const auto V0 = ReadArg<int32_t>(S, PC);
28775 if (!Jmp(S, PC, V0))
28776 return false;
28777 continue;
28778}
28779#endif
28780#ifdef GET_DISASM
28781case OP_Jmp:
28782 Text.Op = PrintName("Jmp");
28783 Text.Args.push_back(printArg<int32_t>(P, PC));
28784 break;
28785#endif
28786#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28787bool emitJmp( int32_t , SourceInfo);
28788#endif
28789#ifdef GET_LINK_IMPL
28790bool ByteCodeEmitter::emitJmp( int32_t A0, SourceInfo L) {
28791 return emitOp<int32_t>(OP_Jmp, A0, L);
28792}
28793#endif
28794#ifdef GET_OPCODE_NAMES
28795OP_Jt,
28796#endif
28797#ifdef GET_INTERP
28798case OP_Jt: {
28799 const auto V0 = ReadArg<int32_t>(S, PC);
28800 if (!Jt(S, PC, V0))
28801 return false;
28802 continue;
28803}
28804#endif
28805#ifdef GET_DISASM
28806case OP_Jt:
28807 Text.Op = PrintName("Jt");
28808 Text.Args.push_back(printArg<int32_t>(P, PC));
28809 break;
28810#endif
28811#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28812bool emitJt( int32_t , SourceInfo);
28813#endif
28814#ifdef GET_LINK_IMPL
28815bool ByteCodeEmitter::emitJt( int32_t A0, SourceInfo L) {
28816 return emitOp<int32_t>(OP_Jt, A0, L);
28817}
28818#endif
28819#ifdef GET_OPCODE_NAMES
28820OP_LESint8,
28821OP_LEUint8,
28822OP_LESint16,
28823OP_LEUint16,
28824OP_LESint32,
28825OP_LEUint32,
28826OP_LESint64,
28827OP_LEUint64,
28828OP_LEIntAP,
28829OP_LEIntAPS,
28830OP_LEBool,
28831OP_LEFixedPoint,
28832OP_LEPtr,
28833OP_LEFloat,
28834#endif
28835#ifdef GET_INTERP
28836case OP_LESint8: {
28837 if (!LE<PT_Sint8>(S, OpPC))
28838 return false;
28839 continue;
28840}
28841case OP_LEUint8: {
28842 if (!LE<PT_Uint8>(S, OpPC))
28843 return false;
28844 continue;
28845}
28846case OP_LESint16: {
28847 if (!LE<PT_Sint16>(S, OpPC))
28848 return false;
28849 continue;
28850}
28851case OP_LEUint16: {
28852 if (!LE<PT_Uint16>(S, OpPC))
28853 return false;
28854 continue;
28855}
28856case OP_LESint32: {
28857 if (!LE<PT_Sint32>(S, OpPC))
28858 return false;
28859 continue;
28860}
28861case OP_LEUint32: {
28862 if (!LE<PT_Uint32>(S, OpPC))
28863 return false;
28864 continue;
28865}
28866case OP_LESint64: {
28867 if (!LE<PT_Sint64>(S, OpPC))
28868 return false;
28869 continue;
28870}
28871case OP_LEUint64: {
28872 if (!LE<PT_Uint64>(S, OpPC))
28873 return false;
28874 continue;
28875}
28876case OP_LEIntAP: {
28877 if (!LE<PT_IntAP>(S, OpPC))
28878 return false;
28879 continue;
28880}
28881case OP_LEIntAPS: {
28882 if (!LE<PT_IntAPS>(S, OpPC))
28883 return false;
28884 continue;
28885}
28886case OP_LEBool: {
28887 if (!LE<PT_Bool>(S, OpPC))
28888 return false;
28889 continue;
28890}
28891case OP_LEFixedPoint: {
28892 if (!LE<PT_FixedPoint>(S, OpPC))
28893 return false;
28894 continue;
28895}
28896case OP_LEPtr: {
28897 if (!LE<PT_Ptr>(S, OpPC))
28898 return false;
28899 continue;
28900}
28901case OP_LEFloat: {
28902 if (!LE<PT_Float>(S, OpPC))
28903 return false;
28904 continue;
28905}
28906#endif
28907#ifdef GET_DISASM
28908case OP_LESint8:
28909 Text.Op = PrintName("LESint8");
28910 break;
28911case OP_LEUint8:
28912 Text.Op = PrintName("LEUint8");
28913 break;
28914case OP_LESint16:
28915 Text.Op = PrintName("LESint16");
28916 break;
28917case OP_LEUint16:
28918 Text.Op = PrintName("LEUint16");
28919 break;
28920case OP_LESint32:
28921 Text.Op = PrintName("LESint32");
28922 break;
28923case OP_LEUint32:
28924 Text.Op = PrintName("LEUint32");
28925 break;
28926case OP_LESint64:
28927 Text.Op = PrintName("LESint64");
28928 break;
28929case OP_LEUint64:
28930 Text.Op = PrintName("LEUint64");
28931 break;
28932case OP_LEIntAP:
28933 Text.Op = PrintName("LEIntAP");
28934 break;
28935case OP_LEIntAPS:
28936 Text.Op = PrintName("LEIntAPS");
28937 break;
28938case OP_LEBool:
28939 Text.Op = PrintName("LEBool");
28940 break;
28941case OP_LEFixedPoint:
28942 Text.Op = PrintName("LEFixedPoint");
28943 break;
28944case OP_LEPtr:
28945 Text.Op = PrintName("LEPtr");
28946 break;
28947case OP_LEFloat:
28948 Text.Op = PrintName("LEFloat");
28949 break;
28950#endif
28951#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28952bool emitLESint8(SourceInfo);
28953bool emitLEUint8(SourceInfo);
28954bool emitLESint16(SourceInfo);
28955bool emitLEUint16(SourceInfo);
28956bool emitLESint32(SourceInfo);
28957bool emitLEUint32(SourceInfo);
28958bool emitLESint64(SourceInfo);
28959bool emitLEUint64(SourceInfo);
28960bool emitLEIntAP(SourceInfo);
28961bool emitLEIntAPS(SourceInfo);
28962bool emitLEBool(SourceInfo);
28963bool emitLEFixedPoint(SourceInfo);
28964bool emitLEPtr(SourceInfo);
28965bool emitLEFloat(SourceInfo);
28966#endif
28967#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
28968[[nodiscard]] bool emitLE(PrimType, SourceInfo I);
28969#endif
28970#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
28971bool
28972#if defined(GET_EVAL_IMPL)
28973EvalEmitter
28974#else
28975ByteCodeEmitter
28976#endif
28977::emitLE(PrimType T0, SourceInfo I) {
28978 switch (T0) {
28979 case PT_Sint8:
28980 return emitLESint8(I);
28981 case PT_Uint8:
28982 return emitLEUint8(I);
28983 case PT_Sint16:
28984 return emitLESint16(I);
28985 case PT_Uint16:
28986 return emitLEUint16(I);
28987 case PT_Sint32:
28988 return emitLESint32(I);
28989 case PT_Uint32:
28990 return emitLEUint32(I);
28991 case PT_Sint64:
28992 return emitLESint64(I);
28993 case PT_Uint64:
28994 return emitLEUint64(I);
28995 case PT_IntAP:
28996 return emitLEIntAP(I);
28997 case PT_IntAPS:
28998 return emitLEIntAPS(I);
28999 case PT_Bool:
29000 return emitLEBool(I);
29001 case PT_FixedPoint:
29002 return emitLEFixedPoint(I);
29003 case PT_Ptr:
29004 return emitLEPtr(I);
29005 case PT_Float:
29006 return emitLEFloat(I);
29007 default: llvm_unreachable("invalid type: emitLE");
29008 }
29009 llvm_unreachable("invalid enum value");
29010}
29011#endif
29012#ifdef GET_LINK_IMPL
29013bool ByteCodeEmitter::emitLESint8(SourceInfo L) {
29014 return emitOp<>(OP_LESint8, L);
29015}
29016bool ByteCodeEmitter::emitLEUint8(SourceInfo L) {
29017 return emitOp<>(OP_LEUint8, L);
29018}
29019bool ByteCodeEmitter::emitLESint16(SourceInfo L) {
29020 return emitOp<>(OP_LESint16, L);
29021}
29022bool ByteCodeEmitter::emitLEUint16(SourceInfo L) {
29023 return emitOp<>(OP_LEUint16, L);
29024}
29025bool ByteCodeEmitter::emitLESint32(SourceInfo L) {
29026 return emitOp<>(OP_LESint32, L);
29027}
29028bool ByteCodeEmitter::emitLEUint32(SourceInfo L) {
29029 return emitOp<>(OP_LEUint32, L);
29030}
29031bool ByteCodeEmitter::emitLESint64(SourceInfo L) {
29032 return emitOp<>(OP_LESint64, L);
29033}
29034bool ByteCodeEmitter::emitLEUint64(SourceInfo L) {
29035 return emitOp<>(OP_LEUint64, L);
29036}
29037bool ByteCodeEmitter::emitLEIntAP(SourceInfo L) {
29038 return emitOp<>(OP_LEIntAP, L);
29039}
29040bool ByteCodeEmitter::emitLEIntAPS(SourceInfo L) {
29041 return emitOp<>(OP_LEIntAPS, L);
29042}
29043bool ByteCodeEmitter::emitLEBool(SourceInfo L) {
29044 return emitOp<>(OP_LEBool, L);
29045}
29046bool ByteCodeEmitter::emitLEFixedPoint(SourceInfo L) {
29047 return emitOp<>(OP_LEFixedPoint, L);
29048}
29049bool ByteCodeEmitter::emitLEPtr(SourceInfo L) {
29050 return emitOp<>(OP_LEPtr, L);
29051}
29052bool ByteCodeEmitter::emitLEFloat(SourceInfo L) {
29053 return emitOp<>(OP_LEFloat, L);
29054}
29055#endif
29056#ifdef GET_EVAL_IMPL
29057bool EvalEmitter::emitLESint8(SourceInfo L) {
29058 if (!isActive()) return true;
29059 CurrentSource = L;
29060 return LE<PT_Sint8>(S, OpPC);
29061}
29062bool EvalEmitter::emitLEUint8(SourceInfo L) {
29063 if (!isActive()) return true;
29064 CurrentSource = L;
29065 return LE<PT_Uint8>(S, OpPC);
29066}
29067bool EvalEmitter::emitLESint16(SourceInfo L) {
29068 if (!isActive()) return true;
29069 CurrentSource = L;
29070 return LE<PT_Sint16>(S, OpPC);
29071}
29072bool EvalEmitter::emitLEUint16(SourceInfo L) {
29073 if (!isActive()) return true;
29074 CurrentSource = L;
29075 return LE<PT_Uint16>(S, OpPC);
29076}
29077bool EvalEmitter::emitLESint32(SourceInfo L) {
29078 if (!isActive()) return true;
29079 CurrentSource = L;
29080 return LE<PT_Sint32>(S, OpPC);
29081}
29082bool EvalEmitter::emitLEUint32(SourceInfo L) {
29083 if (!isActive()) return true;
29084 CurrentSource = L;
29085 return LE<PT_Uint32>(S, OpPC);
29086}
29087bool EvalEmitter::emitLESint64(SourceInfo L) {
29088 if (!isActive()) return true;
29089 CurrentSource = L;
29090 return LE<PT_Sint64>(S, OpPC);
29091}
29092bool EvalEmitter::emitLEUint64(SourceInfo L) {
29093 if (!isActive()) return true;
29094 CurrentSource = L;
29095 return LE<PT_Uint64>(S, OpPC);
29096}
29097bool EvalEmitter::emitLEIntAP(SourceInfo L) {
29098 if (!isActive()) return true;
29099 CurrentSource = L;
29100 return LE<PT_IntAP>(S, OpPC);
29101}
29102bool EvalEmitter::emitLEIntAPS(SourceInfo L) {
29103 if (!isActive()) return true;
29104 CurrentSource = L;
29105 return LE<PT_IntAPS>(S, OpPC);
29106}
29107bool EvalEmitter::emitLEBool(SourceInfo L) {
29108 if (!isActive()) return true;
29109 CurrentSource = L;
29110 return LE<PT_Bool>(S, OpPC);
29111}
29112bool EvalEmitter::emitLEFixedPoint(SourceInfo L) {
29113 if (!isActive()) return true;
29114 CurrentSource = L;
29115 return LE<PT_FixedPoint>(S, OpPC);
29116}
29117bool EvalEmitter::emitLEPtr(SourceInfo L) {
29118 if (!isActive()) return true;
29119 CurrentSource = L;
29120 return LE<PT_Ptr>(S, OpPC);
29121}
29122bool EvalEmitter::emitLEFloat(SourceInfo L) {
29123 if (!isActive()) return true;
29124 CurrentSource = L;
29125 return LE<PT_Float>(S, OpPC);
29126}
29127#endif
29128#ifdef GET_OPCODE_NAMES
29129OP_LTSint8,
29130OP_LTUint8,
29131OP_LTSint16,
29132OP_LTUint16,
29133OP_LTSint32,
29134OP_LTUint32,
29135OP_LTSint64,
29136OP_LTUint64,
29137OP_LTIntAP,
29138OP_LTIntAPS,
29139OP_LTBool,
29140OP_LTFixedPoint,
29141OP_LTPtr,
29142OP_LTFloat,
29143#endif
29144#ifdef GET_INTERP
29145case OP_LTSint8: {
29146 if (!LT<PT_Sint8>(S, OpPC))
29147 return false;
29148 continue;
29149}
29150case OP_LTUint8: {
29151 if (!LT<PT_Uint8>(S, OpPC))
29152 return false;
29153 continue;
29154}
29155case OP_LTSint16: {
29156 if (!LT<PT_Sint16>(S, OpPC))
29157 return false;
29158 continue;
29159}
29160case OP_LTUint16: {
29161 if (!LT<PT_Uint16>(S, OpPC))
29162 return false;
29163 continue;
29164}
29165case OP_LTSint32: {
29166 if (!LT<PT_Sint32>(S, OpPC))
29167 return false;
29168 continue;
29169}
29170case OP_LTUint32: {
29171 if (!LT<PT_Uint32>(S, OpPC))
29172 return false;
29173 continue;
29174}
29175case OP_LTSint64: {
29176 if (!LT<PT_Sint64>(S, OpPC))
29177 return false;
29178 continue;
29179}
29180case OP_LTUint64: {
29181 if (!LT<PT_Uint64>(S, OpPC))
29182 return false;
29183 continue;
29184}
29185case OP_LTIntAP: {
29186 if (!LT<PT_IntAP>(S, OpPC))
29187 return false;
29188 continue;
29189}
29190case OP_LTIntAPS: {
29191 if (!LT<PT_IntAPS>(S, OpPC))
29192 return false;
29193 continue;
29194}
29195case OP_LTBool: {
29196 if (!LT<PT_Bool>(S, OpPC))
29197 return false;
29198 continue;
29199}
29200case OP_LTFixedPoint: {
29201 if (!LT<PT_FixedPoint>(S, OpPC))
29202 return false;
29203 continue;
29204}
29205case OP_LTPtr: {
29206 if (!LT<PT_Ptr>(S, OpPC))
29207 return false;
29208 continue;
29209}
29210case OP_LTFloat: {
29211 if (!LT<PT_Float>(S, OpPC))
29212 return false;
29213 continue;
29214}
29215#endif
29216#ifdef GET_DISASM
29217case OP_LTSint8:
29218 Text.Op = PrintName("LTSint8");
29219 break;
29220case OP_LTUint8:
29221 Text.Op = PrintName("LTUint8");
29222 break;
29223case OP_LTSint16:
29224 Text.Op = PrintName("LTSint16");
29225 break;
29226case OP_LTUint16:
29227 Text.Op = PrintName("LTUint16");
29228 break;
29229case OP_LTSint32:
29230 Text.Op = PrintName("LTSint32");
29231 break;
29232case OP_LTUint32:
29233 Text.Op = PrintName("LTUint32");
29234 break;
29235case OP_LTSint64:
29236 Text.Op = PrintName("LTSint64");
29237 break;
29238case OP_LTUint64:
29239 Text.Op = PrintName("LTUint64");
29240 break;
29241case OP_LTIntAP:
29242 Text.Op = PrintName("LTIntAP");
29243 break;
29244case OP_LTIntAPS:
29245 Text.Op = PrintName("LTIntAPS");
29246 break;
29247case OP_LTBool:
29248 Text.Op = PrintName("LTBool");
29249 break;
29250case OP_LTFixedPoint:
29251 Text.Op = PrintName("LTFixedPoint");
29252 break;
29253case OP_LTPtr:
29254 Text.Op = PrintName("LTPtr");
29255 break;
29256case OP_LTFloat:
29257 Text.Op = PrintName("LTFloat");
29258 break;
29259#endif
29260#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29261bool emitLTSint8(SourceInfo);
29262bool emitLTUint8(SourceInfo);
29263bool emitLTSint16(SourceInfo);
29264bool emitLTUint16(SourceInfo);
29265bool emitLTSint32(SourceInfo);
29266bool emitLTUint32(SourceInfo);
29267bool emitLTSint64(SourceInfo);
29268bool emitLTUint64(SourceInfo);
29269bool emitLTIntAP(SourceInfo);
29270bool emitLTIntAPS(SourceInfo);
29271bool emitLTBool(SourceInfo);
29272bool emitLTFixedPoint(SourceInfo);
29273bool emitLTPtr(SourceInfo);
29274bool emitLTFloat(SourceInfo);
29275#endif
29276#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29277[[nodiscard]] bool emitLT(PrimType, SourceInfo I);
29278#endif
29279#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29280bool
29281#if defined(GET_EVAL_IMPL)
29282EvalEmitter
29283#else
29284ByteCodeEmitter
29285#endif
29286::emitLT(PrimType T0, SourceInfo I) {
29287 switch (T0) {
29288 case PT_Sint8:
29289 return emitLTSint8(I);
29290 case PT_Uint8:
29291 return emitLTUint8(I);
29292 case PT_Sint16:
29293 return emitLTSint16(I);
29294 case PT_Uint16:
29295 return emitLTUint16(I);
29296 case PT_Sint32:
29297 return emitLTSint32(I);
29298 case PT_Uint32:
29299 return emitLTUint32(I);
29300 case PT_Sint64:
29301 return emitLTSint64(I);
29302 case PT_Uint64:
29303 return emitLTUint64(I);
29304 case PT_IntAP:
29305 return emitLTIntAP(I);
29306 case PT_IntAPS:
29307 return emitLTIntAPS(I);
29308 case PT_Bool:
29309 return emitLTBool(I);
29310 case PT_FixedPoint:
29311 return emitLTFixedPoint(I);
29312 case PT_Ptr:
29313 return emitLTPtr(I);
29314 case PT_Float:
29315 return emitLTFloat(I);
29316 default: llvm_unreachable("invalid type: emitLT");
29317 }
29318 llvm_unreachable("invalid enum value");
29319}
29320#endif
29321#ifdef GET_LINK_IMPL
29322bool ByteCodeEmitter::emitLTSint8(SourceInfo L) {
29323 return emitOp<>(OP_LTSint8, L);
29324}
29325bool ByteCodeEmitter::emitLTUint8(SourceInfo L) {
29326 return emitOp<>(OP_LTUint8, L);
29327}
29328bool ByteCodeEmitter::emitLTSint16(SourceInfo L) {
29329 return emitOp<>(OP_LTSint16, L);
29330}
29331bool ByteCodeEmitter::emitLTUint16(SourceInfo L) {
29332 return emitOp<>(OP_LTUint16, L);
29333}
29334bool ByteCodeEmitter::emitLTSint32(SourceInfo L) {
29335 return emitOp<>(OP_LTSint32, L);
29336}
29337bool ByteCodeEmitter::emitLTUint32(SourceInfo L) {
29338 return emitOp<>(OP_LTUint32, L);
29339}
29340bool ByteCodeEmitter::emitLTSint64(SourceInfo L) {
29341 return emitOp<>(OP_LTSint64, L);
29342}
29343bool ByteCodeEmitter::emitLTUint64(SourceInfo L) {
29344 return emitOp<>(OP_LTUint64, L);
29345}
29346bool ByteCodeEmitter::emitLTIntAP(SourceInfo L) {
29347 return emitOp<>(OP_LTIntAP, L);
29348}
29349bool ByteCodeEmitter::emitLTIntAPS(SourceInfo L) {
29350 return emitOp<>(OP_LTIntAPS, L);
29351}
29352bool ByteCodeEmitter::emitLTBool(SourceInfo L) {
29353 return emitOp<>(OP_LTBool, L);
29354}
29355bool ByteCodeEmitter::emitLTFixedPoint(SourceInfo L) {
29356 return emitOp<>(OP_LTFixedPoint, L);
29357}
29358bool ByteCodeEmitter::emitLTPtr(SourceInfo L) {
29359 return emitOp<>(OP_LTPtr, L);
29360}
29361bool ByteCodeEmitter::emitLTFloat(SourceInfo L) {
29362 return emitOp<>(OP_LTFloat, L);
29363}
29364#endif
29365#ifdef GET_EVAL_IMPL
29366bool EvalEmitter::emitLTSint8(SourceInfo L) {
29367 if (!isActive()) return true;
29368 CurrentSource = L;
29369 return LT<PT_Sint8>(S, OpPC);
29370}
29371bool EvalEmitter::emitLTUint8(SourceInfo L) {
29372 if (!isActive()) return true;
29373 CurrentSource = L;
29374 return LT<PT_Uint8>(S, OpPC);
29375}
29376bool EvalEmitter::emitLTSint16(SourceInfo L) {
29377 if (!isActive()) return true;
29378 CurrentSource = L;
29379 return LT<PT_Sint16>(S, OpPC);
29380}
29381bool EvalEmitter::emitLTUint16(SourceInfo L) {
29382 if (!isActive()) return true;
29383 CurrentSource = L;
29384 return LT<PT_Uint16>(S, OpPC);
29385}
29386bool EvalEmitter::emitLTSint32(SourceInfo L) {
29387 if (!isActive()) return true;
29388 CurrentSource = L;
29389 return LT<PT_Sint32>(S, OpPC);
29390}
29391bool EvalEmitter::emitLTUint32(SourceInfo L) {
29392 if (!isActive()) return true;
29393 CurrentSource = L;
29394 return LT<PT_Uint32>(S, OpPC);
29395}
29396bool EvalEmitter::emitLTSint64(SourceInfo L) {
29397 if (!isActive()) return true;
29398 CurrentSource = L;
29399 return LT<PT_Sint64>(S, OpPC);
29400}
29401bool EvalEmitter::emitLTUint64(SourceInfo L) {
29402 if (!isActive()) return true;
29403 CurrentSource = L;
29404 return LT<PT_Uint64>(S, OpPC);
29405}
29406bool EvalEmitter::emitLTIntAP(SourceInfo L) {
29407 if (!isActive()) return true;
29408 CurrentSource = L;
29409 return LT<PT_IntAP>(S, OpPC);
29410}
29411bool EvalEmitter::emitLTIntAPS(SourceInfo L) {
29412 if (!isActive()) return true;
29413 CurrentSource = L;
29414 return LT<PT_IntAPS>(S, OpPC);
29415}
29416bool EvalEmitter::emitLTBool(SourceInfo L) {
29417 if (!isActive()) return true;
29418 CurrentSource = L;
29419 return LT<PT_Bool>(S, OpPC);
29420}
29421bool EvalEmitter::emitLTFixedPoint(SourceInfo L) {
29422 if (!isActive()) return true;
29423 CurrentSource = L;
29424 return LT<PT_FixedPoint>(S, OpPC);
29425}
29426bool EvalEmitter::emitLTPtr(SourceInfo L) {
29427 if (!isActive()) return true;
29428 CurrentSource = L;
29429 return LT<PT_Ptr>(S, OpPC);
29430}
29431bool EvalEmitter::emitLTFloat(SourceInfo L) {
29432 if (!isActive()) return true;
29433 CurrentSource = L;
29434 return LT<PT_Float>(S, OpPC);
29435}
29436#endif
29437#ifdef GET_OPCODE_NAMES
29438OP_LoadSint8,
29439OP_LoadUint8,
29440OP_LoadSint16,
29441OP_LoadUint16,
29442OP_LoadSint32,
29443OP_LoadUint32,
29444OP_LoadSint64,
29445OP_LoadUint64,
29446OP_LoadIntAP,
29447OP_LoadIntAPS,
29448OP_LoadBool,
29449OP_LoadFixedPoint,
29450OP_LoadPtr,
29451OP_LoadMemberPtr,
29452OP_LoadFloat,
29453#endif
29454#ifdef GET_INTERP
29455case OP_LoadSint8: {
29456 if (!Load<PT_Sint8>(S, OpPC))
29457 return false;
29458 continue;
29459}
29460case OP_LoadUint8: {
29461 if (!Load<PT_Uint8>(S, OpPC))
29462 return false;
29463 continue;
29464}
29465case OP_LoadSint16: {
29466 if (!Load<PT_Sint16>(S, OpPC))
29467 return false;
29468 continue;
29469}
29470case OP_LoadUint16: {
29471 if (!Load<PT_Uint16>(S, OpPC))
29472 return false;
29473 continue;
29474}
29475case OP_LoadSint32: {
29476 if (!Load<PT_Sint32>(S, OpPC))
29477 return false;
29478 continue;
29479}
29480case OP_LoadUint32: {
29481 if (!Load<PT_Uint32>(S, OpPC))
29482 return false;
29483 continue;
29484}
29485case OP_LoadSint64: {
29486 if (!Load<PT_Sint64>(S, OpPC))
29487 return false;
29488 continue;
29489}
29490case OP_LoadUint64: {
29491 if (!Load<PT_Uint64>(S, OpPC))
29492 return false;
29493 continue;
29494}
29495case OP_LoadIntAP: {
29496 if (!Load<PT_IntAP>(S, OpPC))
29497 return false;
29498 continue;
29499}
29500case OP_LoadIntAPS: {
29501 if (!Load<PT_IntAPS>(S, OpPC))
29502 return false;
29503 continue;
29504}
29505case OP_LoadBool: {
29506 if (!Load<PT_Bool>(S, OpPC))
29507 return false;
29508 continue;
29509}
29510case OP_LoadFixedPoint: {
29511 if (!Load<PT_FixedPoint>(S, OpPC))
29512 return false;
29513 continue;
29514}
29515case OP_LoadPtr: {
29516 if (!Load<PT_Ptr>(S, OpPC))
29517 return false;
29518 continue;
29519}
29520case OP_LoadMemberPtr: {
29521 if (!Load<PT_MemberPtr>(S, OpPC))
29522 return false;
29523 continue;
29524}
29525case OP_LoadFloat: {
29526 if (!Load<PT_Float>(S, OpPC))
29527 return false;
29528 continue;
29529}
29530#endif
29531#ifdef GET_DISASM
29532case OP_LoadSint8:
29533 Text.Op = PrintName("LoadSint8");
29534 break;
29535case OP_LoadUint8:
29536 Text.Op = PrintName("LoadUint8");
29537 break;
29538case OP_LoadSint16:
29539 Text.Op = PrintName("LoadSint16");
29540 break;
29541case OP_LoadUint16:
29542 Text.Op = PrintName("LoadUint16");
29543 break;
29544case OP_LoadSint32:
29545 Text.Op = PrintName("LoadSint32");
29546 break;
29547case OP_LoadUint32:
29548 Text.Op = PrintName("LoadUint32");
29549 break;
29550case OP_LoadSint64:
29551 Text.Op = PrintName("LoadSint64");
29552 break;
29553case OP_LoadUint64:
29554 Text.Op = PrintName("LoadUint64");
29555 break;
29556case OP_LoadIntAP:
29557 Text.Op = PrintName("LoadIntAP");
29558 break;
29559case OP_LoadIntAPS:
29560 Text.Op = PrintName("LoadIntAPS");
29561 break;
29562case OP_LoadBool:
29563 Text.Op = PrintName("LoadBool");
29564 break;
29565case OP_LoadFixedPoint:
29566 Text.Op = PrintName("LoadFixedPoint");
29567 break;
29568case OP_LoadPtr:
29569 Text.Op = PrintName("LoadPtr");
29570 break;
29571case OP_LoadMemberPtr:
29572 Text.Op = PrintName("LoadMemberPtr");
29573 break;
29574case OP_LoadFloat:
29575 Text.Op = PrintName("LoadFloat");
29576 break;
29577#endif
29578#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29579bool emitLoadSint8(SourceInfo);
29580bool emitLoadUint8(SourceInfo);
29581bool emitLoadSint16(SourceInfo);
29582bool emitLoadUint16(SourceInfo);
29583bool emitLoadSint32(SourceInfo);
29584bool emitLoadUint32(SourceInfo);
29585bool emitLoadSint64(SourceInfo);
29586bool emitLoadUint64(SourceInfo);
29587bool emitLoadIntAP(SourceInfo);
29588bool emitLoadIntAPS(SourceInfo);
29589bool emitLoadBool(SourceInfo);
29590bool emitLoadFixedPoint(SourceInfo);
29591bool emitLoadPtr(SourceInfo);
29592bool emitLoadMemberPtr(SourceInfo);
29593bool emitLoadFloat(SourceInfo);
29594#endif
29595#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29596[[nodiscard]] bool emitLoad(PrimType, SourceInfo I);
29597#endif
29598#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29599bool
29600#if defined(GET_EVAL_IMPL)
29601EvalEmitter
29602#else
29603ByteCodeEmitter
29604#endif
29605::emitLoad(PrimType T0, SourceInfo I) {
29606 switch (T0) {
29607 case PT_Sint8:
29608 return emitLoadSint8(I);
29609 case PT_Uint8:
29610 return emitLoadUint8(I);
29611 case PT_Sint16:
29612 return emitLoadSint16(I);
29613 case PT_Uint16:
29614 return emitLoadUint16(I);
29615 case PT_Sint32:
29616 return emitLoadSint32(I);
29617 case PT_Uint32:
29618 return emitLoadUint32(I);
29619 case PT_Sint64:
29620 return emitLoadSint64(I);
29621 case PT_Uint64:
29622 return emitLoadUint64(I);
29623 case PT_IntAP:
29624 return emitLoadIntAP(I);
29625 case PT_IntAPS:
29626 return emitLoadIntAPS(I);
29627 case PT_Bool:
29628 return emitLoadBool(I);
29629 case PT_FixedPoint:
29630 return emitLoadFixedPoint(I);
29631 case PT_Ptr:
29632 return emitLoadPtr(I);
29633 case PT_MemberPtr:
29634 return emitLoadMemberPtr(I);
29635 case PT_Float:
29636 return emitLoadFloat(I);
29637 }
29638 llvm_unreachable("invalid enum value");
29639}
29640#endif
29641#ifdef GET_LINK_IMPL
29642bool ByteCodeEmitter::emitLoadSint8(SourceInfo L) {
29643 return emitOp<>(OP_LoadSint8, L);
29644}
29645bool ByteCodeEmitter::emitLoadUint8(SourceInfo L) {
29646 return emitOp<>(OP_LoadUint8, L);
29647}
29648bool ByteCodeEmitter::emitLoadSint16(SourceInfo L) {
29649 return emitOp<>(OP_LoadSint16, L);
29650}
29651bool ByteCodeEmitter::emitLoadUint16(SourceInfo L) {
29652 return emitOp<>(OP_LoadUint16, L);
29653}
29654bool ByteCodeEmitter::emitLoadSint32(SourceInfo L) {
29655 return emitOp<>(OP_LoadSint32, L);
29656}
29657bool ByteCodeEmitter::emitLoadUint32(SourceInfo L) {
29658 return emitOp<>(OP_LoadUint32, L);
29659}
29660bool ByteCodeEmitter::emitLoadSint64(SourceInfo L) {
29661 return emitOp<>(OP_LoadSint64, L);
29662}
29663bool ByteCodeEmitter::emitLoadUint64(SourceInfo L) {
29664 return emitOp<>(OP_LoadUint64, L);
29665}
29666bool ByteCodeEmitter::emitLoadIntAP(SourceInfo L) {
29667 return emitOp<>(OP_LoadIntAP, L);
29668}
29669bool ByteCodeEmitter::emitLoadIntAPS(SourceInfo L) {
29670 return emitOp<>(OP_LoadIntAPS, L);
29671}
29672bool ByteCodeEmitter::emitLoadBool(SourceInfo L) {
29673 return emitOp<>(OP_LoadBool, L);
29674}
29675bool ByteCodeEmitter::emitLoadFixedPoint(SourceInfo L) {
29676 return emitOp<>(OP_LoadFixedPoint, L);
29677}
29678bool ByteCodeEmitter::emitLoadPtr(SourceInfo L) {
29679 return emitOp<>(OP_LoadPtr, L);
29680}
29681bool ByteCodeEmitter::emitLoadMemberPtr(SourceInfo L) {
29682 return emitOp<>(OP_LoadMemberPtr, L);
29683}
29684bool ByteCodeEmitter::emitLoadFloat(SourceInfo L) {
29685 return emitOp<>(OP_LoadFloat, L);
29686}
29687#endif
29688#ifdef GET_EVAL_IMPL
29689bool EvalEmitter::emitLoadSint8(SourceInfo L) {
29690 if (!isActive()) return true;
29691 CurrentSource = L;
29692 return Load<PT_Sint8>(S, OpPC);
29693}
29694bool EvalEmitter::emitLoadUint8(SourceInfo L) {
29695 if (!isActive()) return true;
29696 CurrentSource = L;
29697 return Load<PT_Uint8>(S, OpPC);
29698}
29699bool EvalEmitter::emitLoadSint16(SourceInfo L) {
29700 if (!isActive()) return true;
29701 CurrentSource = L;
29702 return Load<PT_Sint16>(S, OpPC);
29703}
29704bool EvalEmitter::emitLoadUint16(SourceInfo L) {
29705 if (!isActive()) return true;
29706 CurrentSource = L;
29707 return Load<PT_Uint16>(S, OpPC);
29708}
29709bool EvalEmitter::emitLoadSint32(SourceInfo L) {
29710 if (!isActive()) return true;
29711 CurrentSource = L;
29712 return Load<PT_Sint32>(S, OpPC);
29713}
29714bool EvalEmitter::emitLoadUint32(SourceInfo L) {
29715 if (!isActive()) return true;
29716 CurrentSource = L;
29717 return Load<PT_Uint32>(S, OpPC);
29718}
29719bool EvalEmitter::emitLoadSint64(SourceInfo L) {
29720 if (!isActive()) return true;
29721 CurrentSource = L;
29722 return Load<PT_Sint64>(S, OpPC);
29723}
29724bool EvalEmitter::emitLoadUint64(SourceInfo L) {
29725 if (!isActive()) return true;
29726 CurrentSource = L;
29727 return Load<PT_Uint64>(S, OpPC);
29728}
29729bool EvalEmitter::emitLoadIntAP(SourceInfo L) {
29730 if (!isActive()) return true;
29731 CurrentSource = L;
29732 return Load<PT_IntAP>(S, OpPC);
29733}
29734bool EvalEmitter::emitLoadIntAPS(SourceInfo L) {
29735 if (!isActive()) return true;
29736 CurrentSource = L;
29737 return Load<PT_IntAPS>(S, OpPC);
29738}
29739bool EvalEmitter::emitLoadBool(SourceInfo L) {
29740 if (!isActive()) return true;
29741 CurrentSource = L;
29742 return Load<PT_Bool>(S, OpPC);
29743}
29744bool EvalEmitter::emitLoadFixedPoint(SourceInfo L) {
29745 if (!isActive()) return true;
29746 CurrentSource = L;
29747 return Load<PT_FixedPoint>(S, OpPC);
29748}
29749bool EvalEmitter::emitLoadPtr(SourceInfo L) {
29750 if (!isActive()) return true;
29751 CurrentSource = L;
29752 return Load<PT_Ptr>(S, OpPC);
29753}
29754bool EvalEmitter::emitLoadMemberPtr(SourceInfo L) {
29755 if (!isActive()) return true;
29756 CurrentSource = L;
29757 return Load<PT_MemberPtr>(S, OpPC);
29758}
29759bool EvalEmitter::emitLoadFloat(SourceInfo L) {
29760 if (!isActive()) return true;
29761 CurrentSource = L;
29762 return Load<PT_Float>(S, OpPC);
29763}
29764#endif
29765#ifdef GET_OPCODE_NAMES
29766OP_LoadPopSint8,
29767OP_LoadPopUint8,
29768OP_LoadPopSint16,
29769OP_LoadPopUint16,
29770OP_LoadPopSint32,
29771OP_LoadPopUint32,
29772OP_LoadPopSint64,
29773OP_LoadPopUint64,
29774OP_LoadPopIntAP,
29775OP_LoadPopIntAPS,
29776OP_LoadPopBool,
29777OP_LoadPopFixedPoint,
29778OP_LoadPopPtr,
29779OP_LoadPopMemberPtr,
29780OP_LoadPopFloat,
29781#endif
29782#ifdef GET_INTERP
29783case OP_LoadPopSint8: {
29784 if (!LoadPop<PT_Sint8>(S, OpPC))
29785 return false;
29786 continue;
29787}
29788case OP_LoadPopUint8: {
29789 if (!LoadPop<PT_Uint8>(S, OpPC))
29790 return false;
29791 continue;
29792}
29793case OP_LoadPopSint16: {
29794 if (!LoadPop<PT_Sint16>(S, OpPC))
29795 return false;
29796 continue;
29797}
29798case OP_LoadPopUint16: {
29799 if (!LoadPop<PT_Uint16>(S, OpPC))
29800 return false;
29801 continue;
29802}
29803case OP_LoadPopSint32: {
29804 if (!LoadPop<PT_Sint32>(S, OpPC))
29805 return false;
29806 continue;
29807}
29808case OP_LoadPopUint32: {
29809 if (!LoadPop<PT_Uint32>(S, OpPC))
29810 return false;
29811 continue;
29812}
29813case OP_LoadPopSint64: {
29814 if (!LoadPop<PT_Sint64>(S, OpPC))
29815 return false;
29816 continue;
29817}
29818case OP_LoadPopUint64: {
29819 if (!LoadPop<PT_Uint64>(S, OpPC))
29820 return false;
29821 continue;
29822}
29823case OP_LoadPopIntAP: {
29824 if (!LoadPop<PT_IntAP>(S, OpPC))
29825 return false;
29826 continue;
29827}
29828case OP_LoadPopIntAPS: {
29829 if (!LoadPop<PT_IntAPS>(S, OpPC))
29830 return false;
29831 continue;
29832}
29833case OP_LoadPopBool: {
29834 if (!LoadPop<PT_Bool>(S, OpPC))
29835 return false;
29836 continue;
29837}
29838case OP_LoadPopFixedPoint: {
29839 if (!LoadPop<PT_FixedPoint>(S, OpPC))
29840 return false;
29841 continue;
29842}
29843case OP_LoadPopPtr: {
29844 if (!LoadPop<PT_Ptr>(S, OpPC))
29845 return false;
29846 continue;
29847}
29848case OP_LoadPopMemberPtr: {
29849 if (!LoadPop<PT_MemberPtr>(S, OpPC))
29850 return false;
29851 continue;
29852}
29853case OP_LoadPopFloat: {
29854 if (!LoadPop<PT_Float>(S, OpPC))
29855 return false;
29856 continue;
29857}
29858#endif
29859#ifdef GET_DISASM
29860case OP_LoadPopSint8:
29861 Text.Op = PrintName("LoadPopSint8");
29862 break;
29863case OP_LoadPopUint8:
29864 Text.Op = PrintName("LoadPopUint8");
29865 break;
29866case OP_LoadPopSint16:
29867 Text.Op = PrintName("LoadPopSint16");
29868 break;
29869case OP_LoadPopUint16:
29870 Text.Op = PrintName("LoadPopUint16");
29871 break;
29872case OP_LoadPopSint32:
29873 Text.Op = PrintName("LoadPopSint32");
29874 break;
29875case OP_LoadPopUint32:
29876 Text.Op = PrintName("LoadPopUint32");
29877 break;
29878case OP_LoadPopSint64:
29879 Text.Op = PrintName("LoadPopSint64");
29880 break;
29881case OP_LoadPopUint64:
29882 Text.Op = PrintName("LoadPopUint64");
29883 break;
29884case OP_LoadPopIntAP:
29885 Text.Op = PrintName("LoadPopIntAP");
29886 break;
29887case OP_LoadPopIntAPS:
29888 Text.Op = PrintName("LoadPopIntAPS");
29889 break;
29890case OP_LoadPopBool:
29891 Text.Op = PrintName("LoadPopBool");
29892 break;
29893case OP_LoadPopFixedPoint:
29894 Text.Op = PrintName("LoadPopFixedPoint");
29895 break;
29896case OP_LoadPopPtr:
29897 Text.Op = PrintName("LoadPopPtr");
29898 break;
29899case OP_LoadPopMemberPtr:
29900 Text.Op = PrintName("LoadPopMemberPtr");
29901 break;
29902case OP_LoadPopFloat:
29903 Text.Op = PrintName("LoadPopFloat");
29904 break;
29905#endif
29906#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29907bool emitLoadPopSint8(SourceInfo);
29908bool emitLoadPopUint8(SourceInfo);
29909bool emitLoadPopSint16(SourceInfo);
29910bool emitLoadPopUint16(SourceInfo);
29911bool emitLoadPopSint32(SourceInfo);
29912bool emitLoadPopUint32(SourceInfo);
29913bool emitLoadPopSint64(SourceInfo);
29914bool emitLoadPopUint64(SourceInfo);
29915bool emitLoadPopIntAP(SourceInfo);
29916bool emitLoadPopIntAPS(SourceInfo);
29917bool emitLoadPopBool(SourceInfo);
29918bool emitLoadPopFixedPoint(SourceInfo);
29919bool emitLoadPopPtr(SourceInfo);
29920bool emitLoadPopMemberPtr(SourceInfo);
29921bool emitLoadPopFloat(SourceInfo);
29922#endif
29923#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
29924[[nodiscard]] bool emitLoadPop(PrimType, SourceInfo I);
29925#endif
29926#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
29927bool
29928#if defined(GET_EVAL_IMPL)
29929EvalEmitter
29930#else
29931ByteCodeEmitter
29932#endif
29933::emitLoadPop(PrimType T0, SourceInfo I) {
29934 switch (T0) {
29935 case PT_Sint8:
29936 return emitLoadPopSint8(I);
29937 case PT_Uint8:
29938 return emitLoadPopUint8(I);
29939 case PT_Sint16:
29940 return emitLoadPopSint16(I);
29941 case PT_Uint16:
29942 return emitLoadPopUint16(I);
29943 case PT_Sint32:
29944 return emitLoadPopSint32(I);
29945 case PT_Uint32:
29946 return emitLoadPopUint32(I);
29947 case PT_Sint64:
29948 return emitLoadPopSint64(I);
29949 case PT_Uint64:
29950 return emitLoadPopUint64(I);
29951 case PT_IntAP:
29952 return emitLoadPopIntAP(I);
29953 case PT_IntAPS:
29954 return emitLoadPopIntAPS(I);
29955 case PT_Bool:
29956 return emitLoadPopBool(I);
29957 case PT_FixedPoint:
29958 return emitLoadPopFixedPoint(I);
29959 case PT_Ptr:
29960 return emitLoadPopPtr(I);
29961 case PT_MemberPtr:
29962 return emitLoadPopMemberPtr(I);
29963 case PT_Float:
29964 return emitLoadPopFloat(I);
29965 }
29966 llvm_unreachable("invalid enum value");
29967}
29968#endif
29969#ifdef GET_LINK_IMPL
29970bool ByteCodeEmitter::emitLoadPopSint8(SourceInfo L) {
29971 return emitOp<>(OP_LoadPopSint8, L);
29972}
29973bool ByteCodeEmitter::emitLoadPopUint8(SourceInfo L) {
29974 return emitOp<>(OP_LoadPopUint8, L);
29975}
29976bool ByteCodeEmitter::emitLoadPopSint16(SourceInfo L) {
29977 return emitOp<>(OP_LoadPopSint16, L);
29978}
29979bool ByteCodeEmitter::emitLoadPopUint16(SourceInfo L) {
29980 return emitOp<>(OP_LoadPopUint16, L);
29981}
29982bool ByteCodeEmitter::emitLoadPopSint32(SourceInfo L) {
29983 return emitOp<>(OP_LoadPopSint32, L);
29984}
29985bool ByteCodeEmitter::emitLoadPopUint32(SourceInfo L) {
29986 return emitOp<>(OP_LoadPopUint32, L);
29987}
29988bool ByteCodeEmitter::emitLoadPopSint64(SourceInfo L) {
29989 return emitOp<>(OP_LoadPopSint64, L);
29990}
29991bool ByteCodeEmitter::emitLoadPopUint64(SourceInfo L) {
29992 return emitOp<>(OP_LoadPopUint64, L);
29993}
29994bool ByteCodeEmitter::emitLoadPopIntAP(SourceInfo L) {
29995 return emitOp<>(OP_LoadPopIntAP, L);
29996}
29997bool ByteCodeEmitter::emitLoadPopIntAPS(SourceInfo L) {
29998 return emitOp<>(OP_LoadPopIntAPS, L);
29999}
30000bool ByteCodeEmitter::emitLoadPopBool(SourceInfo L) {
30001 return emitOp<>(OP_LoadPopBool, L);
30002}
30003bool ByteCodeEmitter::emitLoadPopFixedPoint(SourceInfo L) {
30004 return emitOp<>(OP_LoadPopFixedPoint, L);
30005}
30006bool ByteCodeEmitter::emitLoadPopPtr(SourceInfo L) {
30007 return emitOp<>(OP_LoadPopPtr, L);
30008}
30009bool ByteCodeEmitter::emitLoadPopMemberPtr(SourceInfo L) {
30010 return emitOp<>(OP_LoadPopMemberPtr, L);
30011}
30012bool ByteCodeEmitter::emitLoadPopFloat(SourceInfo L) {
30013 return emitOp<>(OP_LoadPopFloat, L);
30014}
30015#endif
30016#ifdef GET_EVAL_IMPL
30017bool EvalEmitter::emitLoadPopSint8(SourceInfo L) {
30018 if (!isActive()) return true;
30019 CurrentSource = L;
30020 return LoadPop<PT_Sint8>(S, OpPC);
30021}
30022bool EvalEmitter::emitLoadPopUint8(SourceInfo L) {
30023 if (!isActive()) return true;
30024 CurrentSource = L;
30025 return LoadPop<PT_Uint8>(S, OpPC);
30026}
30027bool EvalEmitter::emitLoadPopSint16(SourceInfo L) {
30028 if (!isActive()) return true;
30029 CurrentSource = L;
30030 return LoadPop<PT_Sint16>(S, OpPC);
30031}
30032bool EvalEmitter::emitLoadPopUint16(SourceInfo L) {
30033 if (!isActive()) return true;
30034 CurrentSource = L;
30035 return LoadPop<PT_Uint16>(S, OpPC);
30036}
30037bool EvalEmitter::emitLoadPopSint32(SourceInfo L) {
30038 if (!isActive()) return true;
30039 CurrentSource = L;
30040 return LoadPop<PT_Sint32>(S, OpPC);
30041}
30042bool EvalEmitter::emitLoadPopUint32(SourceInfo L) {
30043 if (!isActive()) return true;
30044 CurrentSource = L;
30045 return LoadPop<PT_Uint32>(S, OpPC);
30046}
30047bool EvalEmitter::emitLoadPopSint64(SourceInfo L) {
30048 if (!isActive()) return true;
30049 CurrentSource = L;
30050 return LoadPop<PT_Sint64>(S, OpPC);
30051}
30052bool EvalEmitter::emitLoadPopUint64(SourceInfo L) {
30053 if (!isActive()) return true;
30054 CurrentSource = L;
30055 return LoadPop<PT_Uint64>(S, OpPC);
30056}
30057bool EvalEmitter::emitLoadPopIntAP(SourceInfo L) {
30058 if (!isActive()) return true;
30059 CurrentSource = L;
30060 return LoadPop<PT_IntAP>(S, OpPC);
30061}
30062bool EvalEmitter::emitLoadPopIntAPS(SourceInfo L) {
30063 if (!isActive()) return true;
30064 CurrentSource = L;
30065 return LoadPop<PT_IntAPS>(S, OpPC);
30066}
30067bool EvalEmitter::emitLoadPopBool(SourceInfo L) {
30068 if (!isActive()) return true;
30069 CurrentSource = L;
30070 return LoadPop<PT_Bool>(S, OpPC);
30071}
30072bool EvalEmitter::emitLoadPopFixedPoint(SourceInfo L) {
30073 if (!isActive()) return true;
30074 CurrentSource = L;
30075 return LoadPop<PT_FixedPoint>(S, OpPC);
30076}
30077bool EvalEmitter::emitLoadPopPtr(SourceInfo L) {
30078 if (!isActive()) return true;
30079 CurrentSource = L;
30080 return LoadPop<PT_Ptr>(S, OpPC);
30081}
30082bool EvalEmitter::emitLoadPopMemberPtr(SourceInfo L) {
30083 if (!isActive()) return true;
30084 CurrentSource = L;
30085 return LoadPop<PT_MemberPtr>(S, OpPC);
30086}
30087bool EvalEmitter::emitLoadPopFloat(SourceInfo L) {
30088 if (!isActive()) return true;
30089 CurrentSource = L;
30090 return LoadPop<PT_Float>(S, OpPC);
30091}
30092#endif
30093#ifdef GET_OPCODE_NAMES
30094OP_Memcpy,
30095#endif
30096#ifdef GET_INTERP
30097case OP_Memcpy: {
30098 if (!Memcpy(S, OpPC))
30099 return false;
30100 continue;
30101}
30102#endif
30103#ifdef GET_DISASM
30104case OP_Memcpy:
30105 Text.Op = PrintName("Memcpy");
30106 break;
30107#endif
30108#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30109bool emitMemcpy(SourceInfo);
30110#endif
30111#ifdef GET_LINK_IMPL
30112bool ByteCodeEmitter::emitMemcpy(SourceInfo L) {
30113 return emitOp<>(OP_Memcpy, L);
30114}
30115#endif
30116#ifdef GET_EVAL_IMPL
30117bool EvalEmitter::emitMemcpy(SourceInfo L) {
30118 if (!isActive()) return true;
30119 CurrentSource = L;
30120 return Memcpy(S, OpPC);
30121}
30122#endif
30123#ifdef GET_OPCODE_NAMES
30124OP_MulSint8,
30125OP_MulUint8,
30126OP_MulSint16,
30127OP_MulUint16,
30128OP_MulSint32,
30129OP_MulUint32,
30130OP_MulSint64,
30131OP_MulUint64,
30132OP_MulIntAP,
30133OP_MulIntAPS,
30134OP_MulBool,
30135OP_MulFixedPoint,
30136#endif
30137#ifdef GET_INTERP
30138case OP_MulSint8: {
30139 if (!Mul<PT_Sint8>(S, OpPC))
30140 return false;
30141 continue;
30142}
30143case OP_MulUint8: {
30144 if (!Mul<PT_Uint8>(S, OpPC))
30145 return false;
30146 continue;
30147}
30148case OP_MulSint16: {
30149 if (!Mul<PT_Sint16>(S, OpPC))
30150 return false;
30151 continue;
30152}
30153case OP_MulUint16: {
30154 if (!Mul<PT_Uint16>(S, OpPC))
30155 return false;
30156 continue;
30157}
30158case OP_MulSint32: {
30159 if (!Mul<PT_Sint32>(S, OpPC))
30160 return false;
30161 continue;
30162}
30163case OP_MulUint32: {
30164 if (!Mul<PT_Uint32>(S, OpPC))
30165 return false;
30166 continue;
30167}
30168case OP_MulSint64: {
30169 if (!Mul<PT_Sint64>(S, OpPC))
30170 return false;
30171 continue;
30172}
30173case OP_MulUint64: {
30174 if (!Mul<PT_Uint64>(S, OpPC))
30175 return false;
30176 continue;
30177}
30178case OP_MulIntAP: {
30179 if (!Mul<PT_IntAP>(S, OpPC))
30180 return false;
30181 continue;
30182}
30183case OP_MulIntAPS: {
30184 if (!Mul<PT_IntAPS>(S, OpPC))
30185 return false;
30186 continue;
30187}
30188case OP_MulBool: {
30189 if (!Mul<PT_Bool>(S, OpPC))
30190 return false;
30191 continue;
30192}
30193case OP_MulFixedPoint: {
30194 if (!Mul<PT_FixedPoint>(S, OpPC))
30195 return false;
30196 continue;
30197}
30198#endif
30199#ifdef GET_DISASM
30200case OP_MulSint8:
30201 Text.Op = PrintName("MulSint8");
30202 break;
30203case OP_MulUint8:
30204 Text.Op = PrintName("MulUint8");
30205 break;
30206case OP_MulSint16:
30207 Text.Op = PrintName("MulSint16");
30208 break;
30209case OP_MulUint16:
30210 Text.Op = PrintName("MulUint16");
30211 break;
30212case OP_MulSint32:
30213 Text.Op = PrintName("MulSint32");
30214 break;
30215case OP_MulUint32:
30216 Text.Op = PrintName("MulUint32");
30217 break;
30218case OP_MulSint64:
30219 Text.Op = PrintName("MulSint64");
30220 break;
30221case OP_MulUint64:
30222 Text.Op = PrintName("MulUint64");
30223 break;
30224case OP_MulIntAP:
30225 Text.Op = PrintName("MulIntAP");
30226 break;
30227case OP_MulIntAPS:
30228 Text.Op = PrintName("MulIntAPS");
30229 break;
30230case OP_MulBool:
30231 Text.Op = PrintName("MulBool");
30232 break;
30233case OP_MulFixedPoint:
30234 Text.Op = PrintName("MulFixedPoint");
30235 break;
30236#endif
30237#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30238bool emitMulSint8(SourceInfo);
30239bool emitMulUint8(SourceInfo);
30240bool emitMulSint16(SourceInfo);
30241bool emitMulUint16(SourceInfo);
30242bool emitMulSint32(SourceInfo);
30243bool emitMulUint32(SourceInfo);
30244bool emitMulSint64(SourceInfo);
30245bool emitMulUint64(SourceInfo);
30246bool emitMulIntAP(SourceInfo);
30247bool emitMulIntAPS(SourceInfo);
30248bool emitMulBool(SourceInfo);
30249bool emitMulFixedPoint(SourceInfo);
30250#endif
30251#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30252[[nodiscard]] bool emitMul(PrimType, SourceInfo I);
30253#endif
30254#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30255bool
30256#if defined(GET_EVAL_IMPL)
30257EvalEmitter
30258#else
30259ByteCodeEmitter
30260#endif
30261::emitMul(PrimType T0, SourceInfo I) {
30262 switch (T0) {
30263 case PT_Sint8:
30264 return emitMulSint8(I);
30265 case PT_Uint8:
30266 return emitMulUint8(I);
30267 case PT_Sint16:
30268 return emitMulSint16(I);
30269 case PT_Uint16:
30270 return emitMulUint16(I);
30271 case PT_Sint32:
30272 return emitMulSint32(I);
30273 case PT_Uint32:
30274 return emitMulUint32(I);
30275 case PT_Sint64:
30276 return emitMulSint64(I);
30277 case PT_Uint64:
30278 return emitMulUint64(I);
30279 case PT_IntAP:
30280 return emitMulIntAP(I);
30281 case PT_IntAPS:
30282 return emitMulIntAPS(I);
30283 case PT_Bool:
30284 return emitMulBool(I);
30285 case PT_FixedPoint:
30286 return emitMulFixedPoint(I);
30287 default: llvm_unreachable("invalid type: emitMul");
30288 }
30289 llvm_unreachable("invalid enum value");
30290}
30291#endif
30292#ifdef GET_LINK_IMPL
30293bool ByteCodeEmitter::emitMulSint8(SourceInfo L) {
30294 return emitOp<>(OP_MulSint8, L);
30295}
30296bool ByteCodeEmitter::emitMulUint8(SourceInfo L) {
30297 return emitOp<>(OP_MulUint8, L);
30298}
30299bool ByteCodeEmitter::emitMulSint16(SourceInfo L) {
30300 return emitOp<>(OP_MulSint16, L);
30301}
30302bool ByteCodeEmitter::emitMulUint16(SourceInfo L) {
30303 return emitOp<>(OP_MulUint16, L);
30304}
30305bool ByteCodeEmitter::emitMulSint32(SourceInfo L) {
30306 return emitOp<>(OP_MulSint32, L);
30307}
30308bool ByteCodeEmitter::emitMulUint32(SourceInfo L) {
30309 return emitOp<>(OP_MulUint32, L);
30310}
30311bool ByteCodeEmitter::emitMulSint64(SourceInfo L) {
30312 return emitOp<>(OP_MulSint64, L);
30313}
30314bool ByteCodeEmitter::emitMulUint64(SourceInfo L) {
30315 return emitOp<>(OP_MulUint64, L);
30316}
30317bool ByteCodeEmitter::emitMulIntAP(SourceInfo L) {
30318 return emitOp<>(OP_MulIntAP, L);
30319}
30320bool ByteCodeEmitter::emitMulIntAPS(SourceInfo L) {
30321 return emitOp<>(OP_MulIntAPS, L);
30322}
30323bool ByteCodeEmitter::emitMulBool(SourceInfo L) {
30324 return emitOp<>(OP_MulBool, L);
30325}
30326bool ByteCodeEmitter::emitMulFixedPoint(SourceInfo L) {
30327 return emitOp<>(OP_MulFixedPoint, L);
30328}
30329#endif
30330#ifdef GET_EVAL_IMPL
30331bool EvalEmitter::emitMulSint8(SourceInfo L) {
30332 if (!isActive()) return true;
30333 CurrentSource = L;
30334 return Mul<PT_Sint8>(S, OpPC);
30335}
30336bool EvalEmitter::emitMulUint8(SourceInfo L) {
30337 if (!isActive()) return true;
30338 CurrentSource = L;
30339 return Mul<PT_Uint8>(S, OpPC);
30340}
30341bool EvalEmitter::emitMulSint16(SourceInfo L) {
30342 if (!isActive()) return true;
30343 CurrentSource = L;
30344 return Mul<PT_Sint16>(S, OpPC);
30345}
30346bool EvalEmitter::emitMulUint16(SourceInfo L) {
30347 if (!isActive()) return true;
30348 CurrentSource = L;
30349 return Mul<PT_Uint16>(S, OpPC);
30350}
30351bool EvalEmitter::emitMulSint32(SourceInfo L) {
30352 if (!isActive()) return true;
30353 CurrentSource = L;
30354 return Mul<PT_Sint32>(S, OpPC);
30355}
30356bool EvalEmitter::emitMulUint32(SourceInfo L) {
30357 if (!isActive()) return true;
30358 CurrentSource = L;
30359 return Mul<PT_Uint32>(S, OpPC);
30360}
30361bool EvalEmitter::emitMulSint64(SourceInfo L) {
30362 if (!isActive()) return true;
30363 CurrentSource = L;
30364 return Mul<PT_Sint64>(S, OpPC);
30365}
30366bool EvalEmitter::emitMulUint64(SourceInfo L) {
30367 if (!isActive()) return true;
30368 CurrentSource = L;
30369 return Mul<PT_Uint64>(S, OpPC);
30370}
30371bool EvalEmitter::emitMulIntAP(SourceInfo L) {
30372 if (!isActive()) return true;
30373 CurrentSource = L;
30374 return Mul<PT_IntAP>(S, OpPC);
30375}
30376bool EvalEmitter::emitMulIntAPS(SourceInfo L) {
30377 if (!isActive()) return true;
30378 CurrentSource = L;
30379 return Mul<PT_IntAPS>(S, OpPC);
30380}
30381bool EvalEmitter::emitMulBool(SourceInfo L) {
30382 if (!isActive()) return true;
30383 CurrentSource = L;
30384 return Mul<PT_Bool>(S, OpPC);
30385}
30386bool EvalEmitter::emitMulFixedPoint(SourceInfo L) {
30387 if (!isActive()) return true;
30388 CurrentSource = L;
30389 return Mul<PT_FixedPoint>(S, OpPC);
30390}
30391#endif
30392#ifdef GET_OPCODE_NAMES
30393OP_MulcSint8,
30394OP_MulcUint8,
30395OP_MulcSint16,
30396OP_MulcUint16,
30397OP_MulcSint32,
30398OP_MulcUint32,
30399OP_MulcSint64,
30400OP_MulcUint64,
30401OP_MulcIntAP,
30402OP_MulcIntAPS,
30403OP_MulcFloat,
30404#endif
30405#ifdef GET_INTERP
30406case OP_MulcSint8: {
30407 if (!Mulc<PT_Sint8>(S, OpPC))
30408 return false;
30409 continue;
30410}
30411case OP_MulcUint8: {
30412 if (!Mulc<PT_Uint8>(S, OpPC))
30413 return false;
30414 continue;
30415}
30416case OP_MulcSint16: {
30417 if (!Mulc<PT_Sint16>(S, OpPC))
30418 return false;
30419 continue;
30420}
30421case OP_MulcUint16: {
30422 if (!Mulc<PT_Uint16>(S, OpPC))
30423 return false;
30424 continue;
30425}
30426case OP_MulcSint32: {
30427 if (!Mulc<PT_Sint32>(S, OpPC))
30428 return false;
30429 continue;
30430}
30431case OP_MulcUint32: {
30432 if (!Mulc<PT_Uint32>(S, OpPC))
30433 return false;
30434 continue;
30435}
30436case OP_MulcSint64: {
30437 if (!Mulc<PT_Sint64>(S, OpPC))
30438 return false;
30439 continue;
30440}
30441case OP_MulcUint64: {
30442 if (!Mulc<PT_Uint64>(S, OpPC))
30443 return false;
30444 continue;
30445}
30446case OP_MulcIntAP: {
30447 if (!Mulc<PT_IntAP>(S, OpPC))
30448 return false;
30449 continue;
30450}
30451case OP_MulcIntAPS: {
30452 if (!Mulc<PT_IntAPS>(S, OpPC))
30453 return false;
30454 continue;
30455}
30456case OP_MulcFloat: {
30457 if (!Mulc<PT_Float>(S, OpPC))
30458 return false;
30459 continue;
30460}
30461#endif
30462#ifdef GET_DISASM
30463case OP_MulcSint8:
30464 Text.Op = PrintName("MulcSint8");
30465 break;
30466case OP_MulcUint8:
30467 Text.Op = PrintName("MulcUint8");
30468 break;
30469case OP_MulcSint16:
30470 Text.Op = PrintName("MulcSint16");
30471 break;
30472case OP_MulcUint16:
30473 Text.Op = PrintName("MulcUint16");
30474 break;
30475case OP_MulcSint32:
30476 Text.Op = PrintName("MulcSint32");
30477 break;
30478case OP_MulcUint32:
30479 Text.Op = PrintName("MulcUint32");
30480 break;
30481case OP_MulcSint64:
30482 Text.Op = PrintName("MulcSint64");
30483 break;
30484case OP_MulcUint64:
30485 Text.Op = PrintName("MulcUint64");
30486 break;
30487case OP_MulcIntAP:
30488 Text.Op = PrintName("MulcIntAP");
30489 break;
30490case OP_MulcIntAPS:
30491 Text.Op = PrintName("MulcIntAPS");
30492 break;
30493case OP_MulcFloat:
30494 Text.Op = PrintName("MulcFloat");
30495 break;
30496#endif
30497#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30498bool emitMulcSint8(SourceInfo);
30499bool emitMulcUint8(SourceInfo);
30500bool emitMulcSint16(SourceInfo);
30501bool emitMulcUint16(SourceInfo);
30502bool emitMulcSint32(SourceInfo);
30503bool emitMulcUint32(SourceInfo);
30504bool emitMulcSint64(SourceInfo);
30505bool emitMulcUint64(SourceInfo);
30506bool emitMulcIntAP(SourceInfo);
30507bool emitMulcIntAPS(SourceInfo);
30508bool emitMulcFloat(SourceInfo);
30509#endif
30510#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30511[[nodiscard]] bool emitMulc(PrimType, SourceInfo I);
30512#endif
30513#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30514bool
30515#if defined(GET_EVAL_IMPL)
30516EvalEmitter
30517#else
30518ByteCodeEmitter
30519#endif
30520::emitMulc(PrimType T0, SourceInfo I) {
30521 switch (T0) {
30522 case PT_Sint8:
30523 return emitMulcSint8(I);
30524 case PT_Uint8:
30525 return emitMulcUint8(I);
30526 case PT_Sint16:
30527 return emitMulcSint16(I);
30528 case PT_Uint16:
30529 return emitMulcUint16(I);
30530 case PT_Sint32:
30531 return emitMulcSint32(I);
30532 case PT_Uint32:
30533 return emitMulcUint32(I);
30534 case PT_Sint64:
30535 return emitMulcSint64(I);
30536 case PT_Uint64:
30537 return emitMulcUint64(I);
30538 case PT_IntAP:
30539 return emitMulcIntAP(I);
30540 case PT_IntAPS:
30541 return emitMulcIntAPS(I);
30542 case PT_Float:
30543 return emitMulcFloat(I);
30544 default: llvm_unreachable("invalid type: emitMulc");
30545 }
30546 llvm_unreachable("invalid enum value");
30547}
30548#endif
30549#ifdef GET_LINK_IMPL
30550bool ByteCodeEmitter::emitMulcSint8(SourceInfo L) {
30551 return emitOp<>(OP_MulcSint8, L);
30552}
30553bool ByteCodeEmitter::emitMulcUint8(SourceInfo L) {
30554 return emitOp<>(OP_MulcUint8, L);
30555}
30556bool ByteCodeEmitter::emitMulcSint16(SourceInfo L) {
30557 return emitOp<>(OP_MulcSint16, L);
30558}
30559bool ByteCodeEmitter::emitMulcUint16(SourceInfo L) {
30560 return emitOp<>(OP_MulcUint16, L);
30561}
30562bool ByteCodeEmitter::emitMulcSint32(SourceInfo L) {
30563 return emitOp<>(OP_MulcSint32, L);
30564}
30565bool ByteCodeEmitter::emitMulcUint32(SourceInfo L) {
30566 return emitOp<>(OP_MulcUint32, L);
30567}
30568bool ByteCodeEmitter::emitMulcSint64(SourceInfo L) {
30569 return emitOp<>(OP_MulcSint64, L);
30570}
30571bool ByteCodeEmitter::emitMulcUint64(SourceInfo L) {
30572 return emitOp<>(OP_MulcUint64, L);
30573}
30574bool ByteCodeEmitter::emitMulcIntAP(SourceInfo L) {
30575 return emitOp<>(OP_MulcIntAP, L);
30576}
30577bool ByteCodeEmitter::emitMulcIntAPS(SourceInfo L) {
30578 return emitOp<>(OP_MulcIntAPS, L);
30579}
30580bool ByteCodeEmitter::emitMulcFloat(SourceInfo L) {
30581 return emitOp<>(OP_MulcFloat, L);
30582}
30583#endif
30584#ifdef GET_EVAL_IMPL
30585bool EvalEmitter::emitMulcSint8(SourceInfo L) {
30586 if (!isActive()) return true;
30587 CurrentSource = L;
30588 return Mulc<PT_Sint8>(S, OpPC);
30589}
30590bool EvalEmitter::emitMulcUint8(SourceInfo L) {
30591 if (!isActive()) return true;
30592 CurrentSource = L;
30593 return Mulc<PT_Uint8>(S, OpPC);
30594}
30595bool EvalEmitter::emitMulcSint16(SourceInfo L) {
30596 if (!isActive()) return true;
30597 CurrentSource = L;
30598 return Mulc<PT_Sint16>(S, OpPC);
30599}
30600bool EvalEmitter::emitMulcUint16(SourceInfo L) {
30601 if (!isActive()) return true;
30602 CurrentSource = L;
30603 return Mulc<PT_Uint16>(S, OpPC);
30604}
30605bool EvalEmitter::emitMulcSint32(SourceInfo L) {
30606 if (!isActive()) return true;
30607 CurrentSource = L;
30608 return Mulc<PT_Sint32>(S, OpPC);
30609}
30610bool EvalEmitter::emitMulcUint32(SourceInfo L) {
30611 if (!isActive()) return true;
30612 CurrentSource = L;
30613 return Mulc<PT_Uint32>(S, OpPC);
30614}
30615bool EvalEmitter::emitMulcSint64(SourceInfo L) {
30616 if (!isActive()) return true;
30617 CurrentSource = L;
30618 return Mulc<PT_Sint64>(S, OpPC);
30619}
30620bool EvalEmitter::emitMulcUint64(SourceInfo L) {
30621 if (!isActive()) return true;
30622 CurrentSource = L;
30623 return Mulc<PT_Uint64>(S, OpPC);
30624}
30625bool EvalEmitter::emitMulcIntAP(SourceInfo L) {
30626 if (!isActive()) return true;
30627 CurrentSource = L;
30628 return Mulc<PT_IntAP>(S, OpPC);
30629}
30630bool EvalEmitter::emitMulcIntAPS(SourceInfo L) {
30631 if (!isActive()) return true;
30632 CurrentSource = L;
30633 return Mulc<PT_IntAPS>(S, OpPC);
30634}
30635bool EvalEmitter::emitMulcFloat(SourceInfo L) {
30636 if (!isActive()) return true;
30637 CurrentSource = L;
30638 return Mulc<PT_Float>(S, OpPC);
30639}
30640#endif
30641#ifdef GET_OPCODE_NAMES
30642OP_Mulf,
30643#endif
30644#ifdef GET_INTERP
30645case OP_Mulf: {
30646 const auto V0 = ReadArg<uint32_t>(S, PC);
30647 if (!Mulf(S, OpPC, V0))
30648 return false;
30649 continue;
30650}
30651#endif
30652#ifdef GET_DISASM
30653case OP_Mulf:
30654 Text.Op = PrintName("Mulf");
30655 Text.Args.push_back(printArg<uint32_t>(P, PC));
30656 break;
30657#endif
30658#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30659bool emitMulf( uint32_t , SourceInfo);
30660#endif
30661#ifdef GET_LINK_IMPL
30662bool ByteCodeEmitter::emitMulf( uint32_t A0, SourceInfo L) {
30663 return emitOp<uint32_t>(OP_Mulf, A0, L);
30664}
30665#endif
30666#ifdef GET_EVAL_IMPL
30667bool EvalEmitter::emitMulf( uint32_t A0, SourceInfo L) {
30668 if (!isActive()) return true;
30669 CurrentSource = L;
30670 return Mulf(S, OpPC, A0);
30671}
30672#endif
30673#ifdef GET_OPCODE_NAMES
30674OP_NESint8,
30675OP_NEUint8,
30676OP_NESint16,
30677OP_NEUint16,
30678OP_NESint32,
30679OP_NEUint32,
30680OP_NESint64,
30681OP_NEUint64,
30682OP_NEIntAP,
30683OP_NEIntAPS,
30684OP_NEBool,
30685OP_NEFixedPoint,
30686OP_NEPtr,
30687OP_NEMemberPtr,
30688OP_NEFloat,
30689#endif
30690#ifdef GET_INTERP
30691case OP_NESint8: {
30692 if (!NE<PT_Sint8>(S, OpPC))
30693 return false;
30694 continue;
30695}
30696case OP_NEUint8: {
30697 if (!NE<PT_Uint8>(S, OpPC))
30698 return false;
30699 continue;
30700}
30701case OP_NESint16: {
30702 if (!NE<PT_Sint16>(S, OpPC))
30703 return false;
30704 continue;
30705}
30706case OP_NEUint16: {
30707 if (!NE<PT_Uint16>(S, OpPC))
30708 return false;
30709 continue;
30710}
30711case OP_NESint32: {
30712 if (!NE<PT_Sint32>(S, OpPC))
30713 return false;
30714 continue;
30715}
30716case OP_NEUint32: {
30717 if (!NE<PT_Uint32>(S, OpPC))
30718 return false;
30719 continue;
30720}
30721case OP_NESint64: {
30722 if (!NE<PT_Sint64>(S, OpPC))
30723 return false;
30724 continue;
30725}
30726case OP_NEUint64: {
30727 if (!NE<PT_Uint64>(S, OpPC))
30728 return false;
30729 continue;
30730}
30731case OP_NEIntAP: {
30732 if (!NE<PT_IntAP>(S, OpPC))
30733 return false;
30734 continue;
30735}
30736case OP_NEIntAPS: {
30737 if (!NE<PT_IntAPS>(S, OpPC))
30738 return false;
30739 continue;
30740}
30741case OP_NEBool: {
30742 if (!NE<PT_Bool>(S, OpPC))
30743 return false;
30744 continue;
30745}
30746case OP_NEFixedPoint: {
30747 if (!NE<PT_FixedPoint>(S, OpPC))
30748 return false;
30749 continue;
30750}
30751case OP_NEPtr: {
30752 if (!NE<PT_Ptr>(S, OpPC))
30753 return false;
30754 continue;
30755}
30756case OP_NEMemberPtr: {
30757 if (!NE<PT_MemberPtr>(S, OpPC))
30758 return false;
30759 continue;
30760}
30761case OP_NEFloat: {
30762 if (!NE<PT_Float>(S, OpPC))
30763 return false;
30764 continue;
30765}
30766#endif
30767#ifdef GET_DISASM
30768case OP_NESint8:
30769 Text.Op = PrintName("NESint8");
30770 break;
30771case OP_NEUint8:
30772 Text.Op = PrintName("NEUint8");
30773 break;
30774case OP_NESint16:
30775 Text.Op = PrintName("NESint16");
30776 break;
30777case OP_NEUint16:
30778 Text.Op = PrintName("NEUint16");
30779 break;
30780case OP_NESint32:
30781 Text.Op = PrintName("NESint32");
30782 break;
30783case OP_NEUint32:
30784 Text.Op = PrintName("NEUint32");
30785 break;
30786case OP_NESint64:
30787 Text.Op = PrintName("NESint64");
30788 break;
30789case OP_NEUint64:
30790 Text.Op = PrintName("NEUint64");
30791 break;
30792case OP_NEIntAP:
30793 Text.Op = PrintName("NEIntAP");
30794 break;
30795case OP_NEIntAPS:
30796 Text.Op = PrintName("NEIntAPS");
30797 break;
30798case OP_NEBool:
30799 Text.Op = PrintName("NEBool");
30800 break;
30801case OP_NEFixedPoint:
30802 Text.Op = PrintName("NEFixedPoint");
30803 break;
30804case OP_NEPtr:
30805 Text.Op = PrintName("NEPtr");
30806 break;
30807case OP_NEMemberPtr:
30808 Text.Op = PrintName("NEMemberPtr");
30809 break;
30810case OP_NEFloat:
30811 Text.Op = PrintName("NEFloat");
30812 break;
30813#endif
30814#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30815bool emitNESint8(SourceInfo);
30816bool emitNEUint8(SourceInfo);
30817bool emitNESint16(SourceInfo);
30818bool emitNEUint16(SourceInfo);
30819bool emitNESint32(SourceInfo);
30820bool emitNEUint32(SourceInfo);
30821bool emitNESint64(SourceInfo);
30822bool emitNEUint64(SourceInfo);
30823bool emitNEIntAP(SourceInfo);
30824bool emitNEIntAPS(SourceInfo);
30825bool emitNEBool(SourceInfo);
30826bool emitNEFixedPoint(SourceInfo);
30827bool emitNEPtr(SourceInfo);
30828bool emitNEMemberPtr(SourceInfo);
30829bool emitNEFloat(SourceInfo);
30830#endif
30831#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
30832[[nodiscard]] bool emitNE(PrimType, SourceInfo I);
30833#endif
30834#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
30835bool
30836#if defined(GET_EVAL_IMPL)
30837EvalEmitter
30838#else
30839ByteCodeEmitter
30840#endif
30841::emitNE(PrimType T0, SourceInfo I) {
30842 switch (T0) {
30843 case PT_Sint8:
30844 return emitNESint8(I);
30845 case PT_Uint8:
30846 return emitNEUint8(I);
30847 case PT_Sint16:
30848 return emitNESint16(I);
30849 case PT_Uint16:
30850 return emitNEUint16(I);
30851 case PT_Sint32:
30852 return emitNESint32(I);
30853 case PT_Uint32:
30854 return emitNEUint32(I);
30855 case PT_Sint64:
30856 return emitNESint64(I);
30857 case PT_Uint64:
30858 return emitNEUint64(I);
30859 case PT_IntAP:
30860 return emitNEIntAP(I);
30861 case PT_IntAPS:
30862 return emitNEIntAPS(I);
30863 case PT_Bool:
30864 return emitNEBool(I);
30865 case PT_FixedPoint:
30866 return emitNEFixedPoint(I);
30867 case PT_Ptr:
30868 return emitNEPtr(I);
30869 case PT_MemberPtr:
30870 return emitNEMemberPtr(I);
30871 case PT_Float:
30872 return emitNEFloat(I);
30873 }
30874 llvm_unreachable("invalid enum value");
30875}
30876#endif
30877#ifdef GET_LINK_IMPL
30878bool ByteCodeEmitter::emitNESint8(SourceInfo L) {
30879 return emitOp<>(OP_NESint8, L);
30880}
30881bool ByteCodeEmitter::emitNEUint8(SourceInfo L) {
30882 return emitOp<>(OP_NEUint8, L);
30883}
30884bool ByteCodeEmitter::emitNESint16(SourceInfo L) {
30885 return emitOp<>(OP_NESint16, L);
30886}
30887bool ByteCodeEmitter::emitNEUint16(SourceInfo L) {
30888 return emitOp<>(OP_NEUint16, L);
30889}
30890bool ByteCodeEmitter::emitNESint32(SourceInfo L) {
30891 return emitOp<>(OP_NESint32, L);
30892}
30893bool ByteCodeEmitter::emitNEUint32(SourceInfo L) {
30894 return emitOp<>(OP_NEUint32, L);
30895}
30896bool ByteCodeEmitter::emitNESint64(SourceInfo L) {
30897 return emitOp<>(OP_NESint64, L);
30898}
30899bool ByteCodeEmitter::emitNEUint64(SourceInfo L) {
30900 return emitOp<>(OP_NEUint64, L);
30901}
30902bool ByteCodeEmitter::emitNEIntAP(SourceInfo L) {
30903 return emitOp<>(OP_NEIntAP, L);
30904}
30905bool ByteCodeEmitter::emitNEIntAPS(SourceInfo L) {
30906 return emitOp<>(OP_NEIntAPS, L);
30907}
30908bool ByteCodeEmitter::emitNEBool(SourceInfo L) {
30909 return emitOp<>(OP_NEBool, L);
30910}
30911bool ByteCodeEmitter::emitNEFixedPoint(SourceInfo L) {
30912 return emitOp<>(OP_NEFixedPoint, L);
30913}
30914bool ByteCodeEmitter::emitNEPtr(SourceInfo L) {
30915 return emitOp<>(OP_NEPtr, L);
30916}
30917bool ByteCodeEmitter::emitNEMemberPtr(SourceInfo L) {
30918 return emitOp<>(OP_NEMemberPtr, L);
30919}
30920bool ByteCodeEmitter::emitNEFloat(SourceInfo L) {
30921 return emitOp<>(OP_NEFloat, L);
30922}
30923#endif
30924#ifdef GET_EVAL_IMPL
30925bool EvalEmitter::emitNESint8(SourceInfo L) {
30926 if (!isActive()) return true;
30927 CurrentSource = L;
30928 return NE<PT_Sint8>(S, OpPC);
30929}
30930bool EvalEmitter::emitNEUint8(SourceInfo L) {
30931 if (!isActive()) return true;
30932 CurrentSource = L;
30933 return NE<PT_Uint8>(S, OpPC);
30934}
30935bool EvalEmitter::emitNESint16(SourceInfo L) {
30936 if (!isActive()) return true;
30937 CurrentSource = L;
30938 return NE<PT_Sint16>(S, OpPC);
30939}
30940bool EvalEmitter::emitNEUint16(SourceInfo L) {
30941 if (!isActive()) return true;
30942 CurrentSource = L;
30943 return NE<PT_Uint16>(S, OpPC);
30944}
30945bool EvalEmitter::emitNESint32(SourceInfo L) {
30946 if (!isActive()) return true;
30947 CurrentSource = L;
30948 return NE<PT_Sint32>(S, OpPC);
30949}
30950bool EvalEmitter::emitNEUint32(SourceInfo L) {
30951 if (!isActive()) return true;
30952 CurrentSource = L;
30953 return NE<PT_Uint32>(S, OpPC);
30954}
30955bool EvalEmitter::emitNESint64(SourceInfo L) {
30956 if (!isActive()) return true;
30957 CurrentSource = L;
30958 return NE<PT_Sint64>(S, OpPC);
30959}
30960bool EvalEmitter::emitNEUint64(SourceInfo L) {
30961 if (!isActive()) return true;
30962 CurrentSource = L;
30963 return NE<PT_Uint64>(S, OpPC);
30964}
30965bool EvalEmitter::emitNEIntAP(SourceInfo L) {
30966 if (!isActive()) return true;
30967 CurrentSource = L;
30968 return NE<PT_IntAP>(S, OpPC);
30969}
30970bool EvalEmitter::emitNEIntAPS(SourceInfo L) {
30971 if (!isActive()) return true;
30972 CurrentSource = L;
30973 return NE<PT_IntAPS>(S, OpPC);
30974}
30975bool EvalEmitter::emitNEBool(SourceInfo L) {
30976 if (!isActive()) return true;
30977 CurrentSource = L;
30978 return NE<PT_Bool>(S, OpPC);
30979}
30980bool EvalEmitter::emitNEFixedPoint(SourceInfo L) {
30981 if (!isActive()) return true;
30982 CurrentSource = L;
30983 return NE<PT_FixedPoint>(S, OpPC);
30984}
30985bool EvalEmitter::emitNEPtr(SourceInfo L) {
30986 if (!isActive()) return true;
30987 CurrentSource = L;
30988 return NE<PT_Ptr>(S, OpPC);
30989}
30990bool EvalEmitter::emitNEMemberPtr(SourceInfo L) {
30991 if (!isActive()) return true;
30992 CurrentSource = L;
30993 return NE<PT_MemberPtr>(S, OpPC);
30994}
30995bool EvalEmitter::emitNEFloat(SourceInfo L) {
30996 if (!isActive()) return true;
30997 CurrentSource = L;
30998 return NE<PT_Float>(S, OpPC);
30999}
31000#endif
31001#ifdef GET_OPCODE_NAMES
31002OP_NarrowPtr,
31003#endif
31004#ifdef GET_INTERP
31005case OP_NarrowPtr: {
31006 if (!NarrowPtr(S, OpPC))
31007 return false;
31008 continue;
31009}
31010#endif
31011#ifdef GET_DISASM
31012case OP_NarrowPtr:
31013 Text.Op = PrintName("NarrowPtr");
31014 break;
31015#endif
31016#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31017bool emitNarrowPtr(SourceInfo);
31018#endif
31019#ifdef GET_LINK_IMPL
31020bool ByteCodeEmitter::emitNarrowPtr(SourceInfo L) {
31021 return emitOp<>(OP_NarrowPtr, L);
31022}
31023#endif
31024#ifdef GET_EVAL_IMPL
31025bool EvalEmitter::emitNarrowPtr(SourceInfo L) {
31026 if (!isActive()) return true;
31027 CurrentSource = L;
31028 return NarrowPtr(S, OpPC);
31029}
31030#endif
31031#ifdef GET_OPCODE_NAMES
31032OP_NegSint8,
31033OP_NegUint8,
31034OP_NegSint16,
31035OP_NegUint16,
31036OP_NegSint32,
31037OP_NegUint32,
31038OP_NegSint64,
31039OP_NegUint64,
31040OP_NegIntAP,
31041OP_NegIntAPS,
31042OP_NegBool,
31043OP_NegFloat,
31044OP_NegFixedPoint,
31045#endif
31046#ifdef GET_INTERP
31047case OP_NegSint8: {
31048 if (!Neg<PT_Sint8>(S, OpPC))
31049 return false;
31050 continue;
31051}
31052case OP_NegUint8: {
31053 if (!Neg<PT_Uint8>(S, OpPC))
31054 return false;
31055 continue;
31056}
31057case OP_NegSint16: {
31058 if (!Neg<PT_Sint16>(S, OpPC))
31059 return false;
31060 continue;
31061}
31062case OP_NegUint16: {
31063 if (!Neg<PT_Uint16>(S, OpPC))
31064 return false;
31065 continue;
31066}
31067case OP_NegSint32: {
31068 if (!Neg<PT_Sint32>(S, OpPC))
31069 return false;
31070 continue;
31071}
31072case OP_NegUint32: {
31073 if (!Neg<PT_Uint32>(S, OpPC))
31074 return false;
31075 continue;
31076}
31077case OP_NegSint64: {
31078 if (!Neg<PT_Sint64>(S, OpPC))
31079 return false;
31080 continue;
31081}
31082case OP_NegUint64: {
31083 if (!Neg<PT_Uint64>(S, OpPC))
31084 return false;
31085 continue;
31086}
31087case OP_NegIntAP: {
31088 if (!Neg<PT_IntAP>(S, OpPC))
31089 return false;
31090 continue;
31091}
31092case OP_NegIntAPS: {
31093 if (!Neg<PT_IntAPS>(S, OpPC))
31094 return false;
31095 continue;
31096}
31097case OP_NegBool: {
31098 if (!Neg<PT_Bool>(S, OpPC))
31099 return false;
31100 continue;
31101}
31102case OP_NegFloat: {
31103 if (!Neg<PT_Float>(S, OpPC))
31104 return false;
31105 continue;
31106}
31107case OP_NegFixedPoint: {
31108 if (!Neg<PT_FixedPoint>(S, OpPC))
31109 return false;
31110 continue;
31111}
31112#endif
31113#ifdef GET_DISASM
31114case OP_NegSint8:
31115 Text.Op = PrintName("NegSint8");
31116 break;
31117case OP_NegUint8:
31118 Text.Op = PrintName("NegUint8");
31119 break;
31120case OP_NegSint16:
31121 Text.Op = PrintName("NegSint16");
31122 break;
31123case OP_NegUint16:
31124 Text.Op = PrintName("NegUint16");
31125 break;
31126case OP_NegSint32:
31127 Text.Op = PrintName("NegSint32");
31128 break;
31129case OP_NegUint32:
31130 Text.Op = PrintName("NegUint32");
31131 break;
31132case OP_NegSint64:
31133 Text.Op = PrintName("NegSint64");
31134 break;
31135case OP_NegUint64:
31136 Text.Op = PrintName("NegUint64");
31137 break;
31138case OP_NegIntAP:
31139 Text.Op = PrintName("NegIntAP");
31140 break;
31141case OP_NegIntAPS:
31142 Text.Op = PrintName("NegIntAPS");
31143 break;
31144case OP_NegBool:
31145 Text.Op = PrintName("NegBool");
31146 break;
31147case OP_NegFloat:
31148 Text.Op = PrintName("NegFloat");
31149 break;
31150case OP_NegFixedPoint:
31151 Text.Op = PrintName("NegFixedPoint");
31152 break;
31153#endif
31154#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31155bool emitNegSint8(SourceInfo);
31156bool emitNegUint8(SourceInfo);
31157bool emitNegSint16(SourceInfo);
31158bool emitNegUint16(SourceInfo);
31159bool emitNegSint32(SourceInfo);
31160bool emitNegUint32(SourceInfo);
31161bool emitNegSint64(SourceInfo);
31162bool emitNegUint64(SourceInfo);
31163bool emitNegIntAP(SourceInfo);
31164bool emitNegIntAPS(SourceInfo);
31165bool emitNegBool(SourceInfo);
31166bool emitNegFloat(SourceInfo);
31167bool emitNegFixedPoint(SourceInfo);
31168#endif
31169#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31170[[nodiscard]] bool emitNeg(PrimType, SourceInfo I);
31171#endif
31172#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31173bool
31174#if defined(GET_EVAL_IMPL)
31175EvalEmitter
31176#else
31177ByteCodeEmitter
31178#endif
31179::emitNeg(PrimType T0, SourceInfo I) {
31180 switch (T0) {
31181 case PT_Sint8:
31182 return emitNegSint8(I);
31183 case PT_Uint8:
31184 return emitNegUint8(I);
31185 case PT_Sint16:
31186 return emitNegSint16(I);
31187 case PT_Uint16:
31188 return emitNegUint16(I);
31189 case PT_Sint32:
31190 return emitNegSint32(I);
31191 case PT_Uint32:
31192 return emitNegUint32(I);
31193 case PT_Sint64:
31194 return emitNegSint64(I);
31195 case PT_Uint64:
31196 return emitNegUint64(I);
31197 case PT_IntAP:
31198 return emitNegIntAP(I);
31199 case PT_IntAPS:
31200 return emitNegIntAPS(I);
31201 case PT_Bool:
31202 return emitNegBool(I);
31203 case PT_Float:
31204 return emitNegFloat(I);
31205 case PT_FixedPoint:
31206 return emitNegFixedPoint(I);
31207 default: llvm_unreachable("invalid type: emitNeg");
31208 }
31209 llvm_unreachable("invalid enum value");
31210}
31211#endif
31212#ifdef GET_LINK_IMPL
31213bool ByteCodeEmitter::emitNegSint8(SourceInfo L) {
31214 return emitOp<>(OP_NegSint8, L);
31215}
31216bool ByteCodeEmitter::emitNegUint8(SourceInfo L) {
31217 return emitOp<>(OP_NegUint8, L);
31218}
31219bool ByteCodeEmitter::emitNegSint16(SourceInfo L) {
31220 return emitOp<>(OP_NegSint16, L);
31221}
31222bool ByteCodeEmitter::emitNegUint16(SourceInfo L) {
31223 return emitOp<>(OP_NegUint16, L);
31224}
31225bool ByteCodeEmitter::emitNegSint32(SourceInfo L) {
31226 return emitOp<>(OP_NegSint32, L);
31227}
31228bool ByteCodeEmitter::emitNegUint32(SourceInfo L) {
31229 return emitOp<>(OP_NegUint32, L);
31230}
31231bool ByteCodeEmitter::emitNegSint64(SourceInfo L) {
31232 return emitOp<>(OP_NegSint64, L);
31233}
31234bool ByteCodeEmitter::emitNegUint64(SourceInfo L) {
31235 return emitOp<>(OP_NegUint64, L);
31236}
31237bool ByteCodeEmitter::emitNegIntAP(SourceInfo L) {
31238 return emitOp<>(OP_NegIntAP, L);
31239}
31240bool ByteCodeEmitter::emitNegIntAPS(SourceInfo L) {
31241 return emitOp<>(OP_NegIntAPS, L);
31242}
31243bool ByteCodeEmitter::emitNegBool(SourceInfo L) {
31244 return emitOp<>(OP_NegBool, L);
31245}
31246bool ByteCodeEmitter::emitNegFloat(SourceInfo L) {
31247 return emitOp<>(OP_NegFloat, L);
31248}
31249bool ByteCodeEmitter::emitNegFixedPoint(SourceInfo L) {
31250 return emitOp<>(OP_NegFixedPoint, L);
31251}
31252#endif
31253#ifdef GET_EVAL_IMPL
31254bool EvalEmitter::emitNegSint8(SourceInfo L) {
31255 if (!isActive()) return true;
31256 CurrentSource = L;
31257 return Neg<PT_Sint8>(S, OpPC);
31258}
31259bool EvalEmitter::emitNegUint8(SourceInfo L) {
31260 if (!isActive()) return true;
31261 CurrentSource = L;
31262 return Neg<PT_Uint8>(S, OpPC);
31263}
31264bool EvalEmitter::emitNegSint16(SourceInfo L) {
31265 if (!isActive()) return true;
31266 CurrentSource = L;
31267 return Neg<PT_Sint16>(S, OpPC);
31268}
31269bool EvalEmitter::emitNegUint16(SourceInfo L) {
31270 if (!isActive()) return true;
31271 CurrentSource = L;
31272 return Neg<PT_Uint16>(S, OpPC);
31273}
31274bool EvalEmitter::emitNegSint32(SourceInfo L) {
31275 if (!isActive()) return true;
31276 CurrentSource = L;
31277 return Neg<PT_Sint32>(S, OpPC);
31278}
31279bool EvalEmitter::emitNegUint32(SourceInfo L) {
31280 if (!isActive()) return true;
31281 CurrentSource = L;
31282 return Neg<PT_Uint32>(S, OpPC);
31283}
31284bool EvalEmitter::emitNegSint64(SourceInfo L) {
31285 if (!isActive()) return true;
31286 CurrentSource = L;
31287 return Neg<PT_Sint64>(S, OpPC);
31288}
31289bool EvalEmitter::emitNegUint64(SourceInfo L) {
31290 if (!isActive()) return true;
31291 CurrentSource = L;
31292 return Neg<PT_Uint64>(S, OpPC);
31293}
31294bool EvalEmitter::emitNegIntAP(SourceInfo L) {
31295 if (!isActive()) return true;
31296 CurrentSource = L;
31297 return Neg<PT_IntAP>(S, OpPC);
31298}
31299bool EvalEmitter::emitNegIntAPS(SourceInfo L) {
31300 if (!isActive()) return true;
31301 CurrentSource = L;
31302 return Neg<PT_IntAPS>(S, OpPC);
31303}
31304bool EvalEmitter::emitNegBool(SourceInfo L) {
31305 if (!isActive()) return true;
31306 CurrentSource = L;
31307 return Neg<PT_Bool>(S, OpPC);
31308}
31309bool EvalEmitter::emitNegFloat(SourceInfo L) {
31310 if (!isActive()) return true;
31311 CurrentSource = L;
31312 return Neg<PT_Float>(S, OpPC);
31313}
31314bool EvalEmitter::emitNegFixedPoint(SourceInfo L) {
31315 if (!isActive()) return true;
31316 CurrentSource = L;
31317 return Neg<PT_FixedPoint>(S, OpPC);
31318}
31319#endif
31320#ifdef GET_OPCODE_NAMES
31321OP_NoRet,
31322#endif
31323#ifdef GET_INTERP
31324case OP_NoRet: {
31325 if (!NoRet(S, OpPC))
31326 return false;
31327 continue;
31328}
31329#endif
31330#ifdef GET_DISASM
31331case OP_NoRet:
31332 Text.Op = PrintName("NoRet");
31333 break;
31334#endif
31335#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31336bool emitNoRet(SourceInfo);
31337#endif
31338#ifdef GET_LINK_IMPL
31339bool ByteCodeEmitter::emitNoRet(SourceInfo L) {
31340 return emitOp<>(OP_NoRet, L);
31341}
31342#endif
31343#ifdef GET_EVAL_IMPL
31344bool EvalEmitter::emitNoRet(SourceInfo L) {
31345 if (!isActive()) return true;
31346 CurrentSource = L;
31347 return NoRet(S, OpPC);
31348}
31349#endif
31350#ifdef GET_OPCODE_NAMES
31351OP_NullPtr,
31352OP_NullMemberPtr,
31353#endif
31354#ifdef GET_INTERP
31355case OP_NullPtr: {
31356 const auto V0 = ReadArg<uint64_t>(S, PC);
31357 const auto V1 = ReadArg<const Descriptor *>(S, PC);
31358 if (!Null<PT_Ptr>(S, OpPC, V0, V1))
31359 return false;
31360 continue;
31361}
31362case OP_NullMemberPtr: {
31363 const auto V0 = ReadArg<uint64_t>(S, PC);
31364 const auto V1 = ReadArg<const Descriptor *>(S, PC);
31365 if (!Null<PT_MemberPtr>(S, OpPC, V0, V1))
31366 return false;
31367 continue;
31368}
31369#endif
31370#ifdef GET_DISASM
31371case OP_NullPtr:
31372 Text.Op = PrintName("NullPtr");
31373 Text.Args.push_back(printArg<uint64_t>(P, PC));
31374 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
31375 break;
31376case OP_NullMemberPtr:
31377 Text.Op = PrintName("NullMemberPtr");
31378 Text.Args.push_back(printArg<uint64_t>(P, PC));
31379 Text.Args.push_back(printArg<const Descriptor *>(P, PC));
31380 break;
31381#endif
31382#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31383bool emitNullPtr( uint64_t , const Descriptor * , SourceInfo);
31384bool emitNullMemberPtr( uint64_t , const Descriptor * , SourceInfo);
31385#endif
31386#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31387[[nodiscard]] bool emitNull(PrimType, uint64_t, const Descriptor *, SourceInfo I);
31388#endif
31389#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31390bool
31391#if defined(GET_EVAL_IMPL)
31392EvalEmitter
31393#else
31394ByteCodeEmitter
31395#endif
31396::emitNull(PrimType T0, uint64_t A0, const Descriptor * A1, SourceInfo I) {
31397 switch (T0) {
31398 case PT_Ptr:
31399 return emitNullPtr(A0, A1, I);
31400 case PT_MemberPtr:
31401 return emitNullMemberPtr(A0, A1, I);
31402 default: llvm_unreachable("invalid type: emitNull");
31403 }
31404 llvm_unreachable("invalid enum value");
31405}
31406#endif
31407#ifdef GET_LINK_IMPL
31408bool ByteCodeEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31409 return emitOp<uint64_t, const Descriptor *>(OP_NullPtr, A0, A1, L);
31410}
31411bool ByteCodeEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31412 return emitOp<uint64_t, const Descriptor *>(OP_NullMemberPtr, A0, A1, L);
31413}
31414#endif
31415#ifdef GET_EVAL_IMPL
31416bool EvalEmitter::emitNullPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31417 if (!isActive()) return true;
31418 CurrentSource = L;
31419 return Null<PT_Ptr>(S, OpPC, A0, A1);
31420}
31421bool EvalEmitter::emitNullMemberPtr( uint64_t A0, const Descriptor * A1, SourceInfo L) {
31422 if (!isActive()) return true;
31423 CurrentSource = L;
31424 return Null<PT_MemberPtr>(S, OpPC, A0, A1);
31425}
31426#endif
31427#ifdef GET_OPCODE_NAMES
31428OP_OffsetOfSint8,
31429OP_OffsetOfUint8,
31430OP_OffsetOfSint16,
31431OP_OffsetOfUint16,
31432OP_OffsetOfSint32,
31433OP_OffsetOfUint32,
31434OP_OffsetOfSint64,
31435OP_OffsetOfUint64,
31436OP_OffsetOfIntAP,
31437OP_OffsetOfIntAPS,
31438#endif
31439#ifdef GET_INTERP
31440case OP_OffsetOfSint8: {
31441 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31442 if (!OffsetOf<PT_Sint8>(S, OpPC, V0))
31443 return false;
31444 continue;
31445}
31446case OP_OffsetOfUint8: {
31447 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31448 if (!OffsetOf<PT_Uint8>(S, OpPC, V0))
31449 return false;
31450 continue;
31451}
31452case OP_OffsetOfSint16: {
31453 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31454 if (!OffsetOf<PT_Sint16>(S, OpPC, V0))
31455 return false;
31456 continue;
31457}
31458case OP_OffsetOfUint16: {
31459 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31460 if (!OffsetOf<PT_Uint16>(S, OpPC, V0))
31461 return false;
31462 continue;
31463}
31464case OP_OffsetOfSint32: {
31465 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31466 if (!OffsetOf<PT_Sint32>(S, OpPC, V0))
31467 return false;
31468 continue;
31469}
31470case OP_OffsetOfUint32: {
31471 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31472 if (!OffsetOf<PT_Uint32>(S, OpPC, V0))
31473 return false;
31474 continue;
31475}
31476case OP_OffsetOfSint64: {
31477 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31478 if (!OffsetOf<PT_Sint64>(S, OpPC, V0))
31479 return false;
31480 continue;
31481}
31482case OP_OffsetOfUint64: {
31483 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31484 if (!OffsetOf<PT_Uint64>(S, OpPC, V0))
31485 return false;
31486 continue;
31487}
31488case OP_OffsetOfIntAP: {
31489 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31490 if (!OffsetOf<PT_IntAP>(S, OpPC, V0))
31491 return false;
31492 continue;
31493}
31494case OP_OffsetOfIntAPS: {
31495 const auto V0 = ReadArg<const OffsetOfExpr *>(S, PC);
31496 if (!OffsetOf<PT_IntAPS>(S, OpPC, V0))
31497 return false;
31498 continue;
31499}
31500#endif
31501#ifdef GET_DISASM
31502case OP_OffsetOfSint8:
31503 Text.Op = PrintName("OffsetOfSint8");
31504 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31505 break;
31506case OP_OffsetOfUint8:
31507 Text.Op = PrintName("OffsetOfUint8");
31508 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31509 break;
31510case OP_OffsetOfSint16:
31511 Text.Op = PrintName("OffsetOfSint16");
31512 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31513 break;
31514case OP_OffsetOfUint16:
31515 Text.Op = PrintName("OffsetOfUint16");
31516 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31517 break;
31518case OP_OffsetOfSint32:
31519 Text.Op = PrintName("OffsetOfSint32");
31520 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31521 break;
31522case OP_OffsetOfUint32:
31523 Text.Op = PrintName("OffsetOfUint32");
31524 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31525 break;
31526case OP_OffsetOfSint64:
31527 Text.Op = PrintName("OffsetOfSint64");
31528 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31529 break;
31530case OP_OffsetOfUint64:
31531 Text.Op = PrintName("OffsetOfUint64");
31532 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31533 break;
31534case OP_OffsetOfIntAP:
31535 Text.Op = PrintName("OffsetOfIntAP");
31536 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31537 break;
31538case OP_OffsetOfIntAPS:
31539 Text.Op = PrintName("OffsetOfIntAPS");
31540 Text.Args.push_back(printArg<const OffsetOfExpr *>(P, PC));
31541 break;
31542#endif
31543#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31544bool emitOffsetOfSint8( const OffsetOfExpr * , SourceInfo);
31545bool emitOffsetOfUint8( const OffsetOfExpr * , SourceInfo);
31546bool emitOffsetOfSint16( const OffsetOfExpr * , SourceInfo);
31547bool emitOffsetOfUint16( const OffsetOfExpr * , SourceInfo);
31548bool emitOffsetOfSint32( const OffsetOfExpr * , SourceInfo);
31549bool emitOffsetOfUint32( const OffsetOfExpr * , SourceInfo);
31550bool emitOffsetOfSint64( const OffsetOfExpr * , SourceInfo);
31551bool emitOffsetOfUint64( const OffsetOfExpr * , SourceInfo);
31552bool emitOffsetOfIntAP( const OffsetOfExpr * , SourceInfo);
31553bool emitOffsetOfIntAPS( const OffsetOfExpr * , SourceInfo);
31554#endif
31555#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31556[[nodiscard]] bool emitOffsetOf(PrimType, const OffsetOfExpr *, SourceInfo I);
31557#endif
31558#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31559bool
31560#if defined(GET_EVAL_IMPL)
31561EvalEmitter
31562#else
31563ByteCodeEmitter
31564#endif
31565::emitOffsetOf(PrimType T0, const OffsetOfExpr * A0, SourceInfo I) {
31566 switch (T0) {
31567 case PT_Sint8:
31568 return emitOffsetOfSint8(A0, I);
31569 case PT_Uint8:
31570 return emitOffsetOfUint8(A0, I);
31571 case PT_Sint16:
31572 return emitOffsetOfSint16(A0, I);
31573 case PT_Uint16:
31574 return emitOffsetOfUint16(A0, I);
31575 case PT_Sint32:
31576 return emitOffsetOfSint32(A0, I);
31577 case PT_Uint32:
31578 return emitOffsetOfUint32(A0, I);
31579 case PT_Sint64:
31580 return emitOffsetOfSint64(A0, I);
31581 case PT_Uint64:
31582 return emitOffsetOfUint64(A0, I);
31583 case PT_IntAP:
31584 return emitOffsetOfIntAP(A0, I);
31585 case PT_IntAPS:
31586 return emitOffsetOfIntAPS(A0, I);
31587 default: llvm_unreachable("invalid type: emitOffsetOf");
31588 }
31589 llvm_unreachable("invalid enum value");
31590}
31591#endif
31592#ifdef GET_LINK_IMPL
31593bool ByteCodeEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
31594 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint8, A0, L);
31595}
31596bool ByteCodeEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
31597 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint8, A0, L);
31598}
31599bool ByteCodeEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
31600 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint16, A0, L);
31601}
31602bool ByteCodeEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
31603 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint16, A0, L);
31604}
31605bool ByteCodeEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
31606 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint32, A0, L);
31607}
31608bool ByteCodeEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
31609 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint32, A0, L);
31610}
31611bool ByteCodeEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
31612 return emitOp<const OffsetOfExpr *>(OP_OffsetOfSint64, A0, L);
31613}
31614bool ByteCodeEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
31615 return emitOp<const OffsetOfExpr *>(OP_OffsetOfUint64, A0, L);
31616}
31617bool ByteCodeEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
31618 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAP, A0, L);
31619}
31620bool ByteCodeEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
31621 return emitOp<const OffsetOfExpr *>(OP_OffsetOfIntAPS, A0, L);
31622}
31623#endif
31624#ifdef GET_EVAL_IMPL
31625bool EvalEmitter::emitOffsetOfSint8( const OffsetOfExpr * A0, SourceInfo L) {
31626 if (!isActive()) return true;
31627 CurrentSource = L;
31628 return OffsetOf<PT_Sint8>(S, OpPC, A0);
31629}
31630bool EvalEmitter::emitOffsetOfUint8( const OffsetOfExpr * A0, SourceInfo L) {
31631 if (!isActive()) return true;
31632 CurrentSource = L;
31633 return OffsetOf<PT_Uint8>(S, OpPC, A0);
31634}
31635bool EvalEmitter::emitOffsetOfSint16( const OffsetOfExpr * A0, SourceInfo L) {
31636 if (!isActive()) return true;
31637 CurrentSource = L;
31638 return OffsetOf<PT_Sint16>(S, OpPC, A0);
31639}
31640bool EvalEmitter::emitOffsetOfUint16( const OffsetOfExpr * A0, SourceInfo L) {
31641 if (!isActive()) return true;
31642 CurrentSource = L;
31643 return OffsetOf<PT_Uint16>(S, OpPC, A0);
31644}
31645bool EvalEmitter::emitOffsetOfSint32( const OffsetOfExpr * A0, SourceInfo L) {
31646 if (!isActive()) return true;
31647 CurrentSource = L;
31648 return OffsetOf<PT_Sint32>(S, OpPC, A0);
31649}
31650bool EvalEmitter::emitOffsetOfUint32( const OffsetOfExpr * A0, SourceInfo L) {
31651 if (!isActive()) return true;
31652 CurrentSource = L;
31653 return OffsetOf<PT_Uint32>(S, OpPC, A0);
31654}
31655bool EvalEmitter::emitOffsetOfSint64( const OffsetOfExpr * A0, SourceInfo L) {
31656 if (!isActive()) return true;
31657 CurrentSource = L;
31658 return OffsetOf<PT_Sint64>(S, OpPC, A0);
31659}
31660bool EvalEmitter::emitOffsetOfUint64( const OffsetOfExpr * A0, SourceInfo L) {
31661 if (!isActive()) return true;
31662 CurrentSource = L;
31663 return OffsetOf<PT_Uint64>(S, OpPC, A0);
31664}
31665bool EvalEmitter::emitOffsetOfIntAP( const OffsetOfExpr * A0, SourceInfo L) {
31666 if (!isActive()) return true;
31667 CurrentSource = L;
31668 return OffsetOf<PT_IntAP>(S, OpPC, A0);
31669}
31670bool EvalEmitter::emitOffsetOfIntAPS( const OffsetOfExpr * A0, SourceInfo L) {
31671 if (!isActive()) return true;
31672 CurrentSource = L;
31673 return OffsetOf<PT_IntAPS>(S, OpPC, A0);
31674}
31675#endif
31676#ifdef GET_OPCODE_NAMES
31677OP_PopSint8,
31678OP_PopUint8,
31679OP_PopSint16,
31680OP_PopUint16,
31681OP_PopSint32,
31682OP_PopUint32,
31683OP_PopSint64,
31684OP_PopUint64,
31685OP_PopIntAP,
31686OP_PopIntAPS,
31687OP_PopBool,
31688OP_PopFixedPoint,
31689OP_PopPtr,
31690OP_PopMemberPtr,
31691OP_PopFloat,
31692#endif
31693#ifdef GET_INTERP
31694case OP_PopSint8: {
31695 if (!Pop<PT_Sint8>(S, OpPC))
31696 return false;
31697 continue;
31698}
31699case OP_PopUint8: {
31700 if (!Pop<PT_Uint8>(S, OpPC))
31701 return false;
31702 continue;
31703}
31704case OP_PopSint16: {
31705 if (!Pop<PT_Sint16>(S, OpPC))
31706 return false;
31707 continue;
31708}
31709case OP_PopUint16: {
31710 if (!Pop<PT_Uint16>(S, OpPC))
31711 return false;
31712 continue;
31713}
31714case OP_PopSint32: {
31715 if (!Pop<PT_Sint32>(S, OpPC))
31716 return false;
31717 continue;
31718}
31719case OP_PopUint32: {
31720 if (!Pop<PT_Uint32>(S, OpPC))
31721 return false;
31722 continue;
31723}
31724case OP_PopSint64: {
31725 if (!Pop<PT_Sint64>(S, OpPC))
31726 return false;
31727 continue;
31728}
31729case OP_PopUint64: {
31730 if (!Pop<PT_Uint64>(S, OpPC))
31731 return false;
31732 continue;
31733}
31734case OP_PopIntAP: {
31735 if (!Pop<PT_IntAP>(S, OpPC))
31736 return false;
31737 continue;
31738}
31739case OP_PopIntAPS: {
31740 if (!Pop<PT_IntAPS>(S, OpPC))
31741 return false;
31742 continue;
31743}
31744case OP_PopBool: {
31745 if (!Pop<PT_Bool>(S, OpPC))
31746 return false;
31747 continue;
31748}
31749case OP_PopFixedPoint: {
31750 if (!Pop<PT_FixedPoint>(S, OpPC))
31751 return false;
31752 continue;
31753}
31754case OP_PopPtr: {
31755 if (!Pop<PT_Ptr>(S, OpPC))
31756 return false;
31757 continue;
31758}
31759case OP_PopMemberPtr: {
31760 if (!Pop<PT_MemberPtr>(S, OpPC))
31761 return false;
31762 continue;
31763}
31764case OP_PopFloat: {
31765 if (!Pop<PT_Float>(S, OpPC))
31766 return false;
31767 continue;
31768}
31769#endif
31770#ifdef GET_DISASM
31771case OP_PopSint8:
31772 Text.Op = PrintName("PopSint8");
31773 break;
31774case OP_PopUint8:
31775 Text.Op = PrintName("PopUint8");
31776 break;
31777case OP_PopSint16:
31778 Text.Op = PrintName("PopSint16");
31779 break;
31780case OP_PopUint16:
31781 Text.Op = PrintName("PopUint16");
31782 break;
31783case OP_PopSint32:
31784 Text.Op = PrintName("PopSint32");
31785 break;
31786case OP_PopUint32:
31787 Text.Op = PrintName("PopUint32");
31788 break;
31789case OP_PopSint64:
31790 Text.Op = PrintName("PopSint64");
31791 break;
31792case OP_PopUint64:
31793 Text.Op = PrintName("PopUint64");
31794 break;
31795case OP_PopIntAP:
31796 Text.Op = PrintName("PopIntAP");
31797 break;
31798case OP_PopIntAPS:
31799 Text.Op = PrintName("PopIntAPS");
31800 break;
31801case OP_PopBool:
31802 Text.Op = PrintName("PopBool");
31803 break;
31804case OP_PopFixedPoint:
31805 Text.Op = PrintName("PopFixedPoint");
31806 break;
31807case OP_PopPtr:
31808 Text.Op = PrintName("PopPtr");
31809 break;
31810case OP_PopMemberPtr:
31811 Text.Op = PrintName("PopMemberPtr");
31812 break;
31813case OP_PopFloat:
31814 Text.Op = PrintName("PopFloat");
31815 break;
31816#endif
31817#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31818bool emitPopSint8(SourceInfo);
31819bool emitPopUint8(SourceInfo);
31820bool emitPopSint16(SourceInfo);
31821bool emitPopUint16(SourceInfo);
31822bool emitPopSint32(SourceInfo);
31823bool emitPopUint32(SourceInfo);
31824bool emitPopSint64(SourceInfo);
31825bool emitPopUint64(SourceInfo);
31826bool emitPopIntAP(SourceInfo);
31827bool emitPopIntAPS(SourceInfo);
31828bool emitPopBool(SourceInfo);
31829bool emitPopFixedPoint(SourceInfo);
31830bool emitPopPtr(SourceInfo);
31831bool emitPopMemberPtr(SourceInfo);
31832bool emitPopFloat(SourceInfo);
31833#endif
31834#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
31835[[nodiscard]] bool emitPop(PrimType, SourceInfo I);
31836#endif
31837#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
31838bool
31839#if defined(GET_EVAL_IMPL)
31840EvalEmitter
31841#else
31842ByteCodeEmitter
31843#endif
31844::emitPop(PrimType T0, SourceInfo I) {
31845 switch (T0) {
31846 case PT_Sint8:
31847 return emitPopSint8(I);
31848 case PT_Uint8:
31849 return emitPopUint8(I);
31850 case PT_Sint16:
31851 return emitPopSint16(I);
31852 case PT_Uint16:
31853 return emitPopUint16(I);
31854 case PT_Sint32:
31855 return emitPopSint32(I);
31856 case PT_Uint32:
31857 return emitPopUint32(I);
31858 case PT_Sint64:
31859 return emitPopSint64(I);
31860 case PT_Uint64:
31861 return emitPopUint64(I);
31862 case PT_IntAP:
31863 return emitPopIntAP(I);
31864 case PT_IntAPS:
31865 return emitPopIntAPS(I);
31866 case PT_Bool:
31867 return emitPopBool(I);
31868 case PT_FixedPoint:
31869 return emitPopFixedPoint(I);
31870 case PT_Ptr:
31871 return emitPopPtr(I);
31872 case PT_MemberPtr:
31873 return emitPopMemberPtr(I);
31874 case PT_Float:
31875 return emitPopFloat(I);
31876 }
31877 llvm_unreachable("invalid enum value");
31878}
31879#endif
31880#ifdef GET_LINK_IMPL
31881bool ByteCodeEmitter::emitPopSint8(SourceInfo L) {
31882 return emitOp<>(OP_PopSint8, L);
31883}
31884bool ByteCodeEmitter::emitPopUint8(SourceInfo L) {
31885 return emitOp<>(OP_PopUint8, L);
31886}
31887bool ByteCodeEmitter::emitPopSint16(SourceInfo L) {
31888 return emitOp<>(OP_PopSint16, L);
31889}
31890bool ByteCodeEmitter::emitPopUint16(SourceInfo L) {
31891 return emitOp<>(OP_PopUint16, L);
31892}
31893bool ByteCodeEmitter::emitPopSint32(SourceInfo L) {
31894 return emitOp<>(OP_PopSint32, L);
31895}
31896bool ByteCodeEmitter::emitPopUint32(SourceInfo L) {
31897 return emitOp<>(OP_PopUint32, L);
31898}
31899bool ByteCodeEmitter::emitPopSint64(SourceInfo L) {
31900 return emitOp<>(OP_PopSint64, L);
31901}
31902bool ByteCodeEmitter::emitPopUint64(SourceInfo L) {
31903 return emitOp<>(OP_PopUint64, L);
31904}
31905bool ByteCodeEmitter::emitPopIntAP(SourceInfo L) {
31906 return emitOp<>(OP_PopIntAP, L);
31907}
31908bool ByteCodeEmitter::emitPopIntAPS(SourceInfo L) {
31909 return emitOp<>(OP_PopIntAPS, L);
31910}
31911bool ByteCodeEmitter::emitPopBool(SourceInfo L) {
31912 return emitOp<>(OP_PopBool, L);
31913}
31914bool ByteCodeEmitter::emitPopFixedPoint(SourceInfo L) {
31915 return emitOp<>(OP_PopFixedPoint, L);
31916}
31917bool ByteCodeEmitter::emitPopPtr(SourceInfo L) {
31918 return emitOp<>(OP_PopPtr, L);
31919}
31920bool ByteCodeEmitter::emitPopMemberPtr(SourceInfo L) {
31921 return emitOp<>(OP_PopMemberPtr, L);
31922}
31923bool ByteCodeEmitter::emitPopFloat(SourceInfo L) {
31924 return emitOp<>(OP_PopFloat, L);
31925}
31926#endif
31927#ifdef GET_EVAL_IMPL
31928bool EvalEmitter::emitPopSint8(SourceInfo L) {
31929 if (!isActive()) return true;
31930 CurrentSource = L;
31931 return Pop<PT_Sint8>(S, OpPC);
31932}
31933bool EvalEmitter::emitPopUint8(SourceInfo L) {
31934 if (!isActive()) return true;
31935 CurrentSource = L;
31936 return Pop<PT_Uint8>(S, OpPC);
31937}
31938bool EvalEmitter::emitPopSint16(SourceInfo L) {
31939 if (!isActive()) return true;
31940 CurrentSource = L;
31941 return Pop<PT_Sint16>(S, OpPC);
31942}
31943bool EvalEmitter::emitPopUint16(SourceInfo L) {
31944 if (!isActive()) return true;
31945 CurrentSource = L;
31946 return Pop<PT_Uint16>(S, OpPC);
31947}
31948bool EvalEmitter::emitPopSint32(SourceInfo L) {
31949 if (!isActive()) return true;
31950 CurrentSource = L;
31951 return Pop<PT_Sint32>(S, OpPC);
31952}
31953bool EvalEmitter::emitPopUint32(SourceInfo L) {
31954 if (!isActive()) return true;
31955 CurrentSource = L;
31956 return Pop<PT_Uint32>(S, OpPC);
31957}
31958bool EvalEmitter::emitPopSint64(SourceInfo L) {
31959 if (!isActive()) return true;
31960 CurrentSource = L;
31961 return Pop<PT_Sint64>(S, OpPC);
31962}
31963bool EvalEmitter::emitPopUint64(SourceInfo L) {
31964 if (!isActive()) return true;
31965 CurrentSource = L;
31966 return Pop<PT_Uint64>(S, OpPC);
31967}
31968bool EvalEmitter::emitPopIntAP(SourceInfo L) {
31969 if (!isActive()) return true;
31970 CurrentSource = L;
31971 return Pop<PT_IntAP>(S, OpPC);
31972}
31973bool EvalEmitter::emitPopIntAPS(SourceInfo L) {
31974 if (!isActive()) return true;
31975 CurrentSource = L;
31976 return Pop<PT_IntAPS>(S, OpPC);
31977}
31978bool EvalEmitter::emitPopBool(SourceInfo L) {
31979 if (!isActive()) return true;
31980 CurrentSource = L;
31981 return Pop<PT_Bool>(S, OpPC);
31982}
31983bool EvalEmitter::emitPopFixedPoint(SourceInfo L) {
31984 if (!isActive()) return true;
31985 CurrentSource = L;
31986 return Pop<PT_FixedPoint>(S, OpPC);
31987}
31988bool EvalEmitter::emitPopPtr(SourceInfo L) {
31989 if (!isActive()) return true;
31990 CurrentSource = L;
31991 return Pop<PT_Ptr>(S, OpPC);
31992}
31993bool EvalEmitter::emitPopMemberPtr(SourceInfo L) {
31994 if (!isActive()) return true;
31995 CurrentSource = L;
31996 return Pop<PT_MemberPtr>(S, OpPC);
31997}
31998bool EvalEmitter::emitPopFloat(SourceInfo L) {
31999 if (!isActive()) return true;
32000 CurrentSource = L;
32001 return Pop<PT_Float>(S, OpPC);
32002}
32003#endif
32004#ifdef GET_OPCODE_NAMES
32005OP_PopCC,
32006#endif
32007#ifdef GET_INTERP
32008case OP_PopCC: {
32009 if (!PopCC(S, OpPC))
32010 return false;
32011 continue;
32012}
32013#endif
32014#ifdef GET_DISASM
32015case OP_PopCC:
32016 Text.Op = PrintName("PopCC");
32017 break;
32018#endif
32019#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32020bool emitPopCC(SourceInfo);
32021#endif
32022#ifdef GET_LINK_IMPL
32023bool ByteCodeEmitter::emitPopCC(SourceInfo L) {
32024 return emitOp<>(OP_PopCC, L);
32025}
32026#endif
32027#ifdef GET_EVAL_IMPL
32028bool EvalEmitter::emitPopCC(SourceInfo L) {
32029 if (!isActive()) return true;
32030 CurrentSource = L;
32031 return PopCC(S, OpPC);
32032}
32033#endif
32034#ifdef GET_OPCODE_NAMES
32035OP_PopMSVCCE,
32036#endif
32037#ifdef GET_INTERP
32038case OP_PopMSVCCE: {
32039 if (!PopMSVCCE(S, OpPC))
32040 return false;
32041 continue;
32042}
32043#endif
32044#ifdef GET_DISASM
32045case OP_PopMSVCCE:
32046 Text.Op = PrintName("PopMSVCCE");
32047 break;
32048#endif
32049#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32050bool emitPopMSVCCE(SourceInfo);
32051#endif
32052#ifdef GET_LINK_IMPL
32053bool ByteCodeEmitter::emitPopMSVCCE(SourceInfo L) {
32054 return emitOp<>(OP_PopMSVCCE, L);
32055}
32056#endif
32057#ifdef GET_EVAL_IMPL
32058bool EvalEmitter::emitPopMSVCCE(SourceInfo L) {
32059 if (!isActive()) return true;
32060 CurrentSource = L;
32061 return PopMSVCCE(S, OpPC);
32062}
32063#endif
32064#ifdef GET_OPCODE_NAMES
32065OP_PreDecSint8,
32066OP_PreDecUint8,
32067OP_PreDecSint16,
32068OP_PreDecUint16,
32069OP_PreDecSint32,
32070OP_PreDecUint32,
32071OP_PreDecSint64,
32072OP_PreDecUint64,
32073OP_PreDecIntAP,
32074OP_PreDecIntAPS,
32075OP_PreDecBool,
32076OP_PreDecFixedPoint,
32077#endif
32078#ifdef GET_INTERP
32079case OP_PreDecSint8: {
32080 const auto V0 = ReadArg<bool>(S, PC);
32081 if (!PreDec<PT_Sint8>(S, OpPC, V0))
32082 return false;
32083 continue;
32084}
32085case OP_PreDecUint8: {
32086 const auto V0 = ReadArg<bool>(S, PC);
32087 if (!PreDec<PT_Uint8>(S, OpPC, V0))
32088 return false;
32089 continue;
32090}
32091case OP_PreDecSint16: {
32092 const auto V0 = ReadArg<bool>(S, PC);
32093 if (!PreDec<PT_Sint16>(S, OpPC, V0))
32094 return false;
32095 continue;
32096}
32097case OP_PreDecUint16: {
32098 const auto V0 = ReadArg<bool>(S, PC);
32099 if (!PreDec<PT_Uint16>(S, OpPC, V0))
32100 return false;
32101 continue;
32102}
32103case OP_PreDecSint32: {
32104 const auto V0 = ReadArg<bool>(S, PC);
32105 if (!PreDec<PT_Sint32>(S, OpPC, V0))
32106 return false;
32107 continue;
32108}
32109case OP_PreDecUint32: {
32110 const auto V0 = ReadArg<bool>(S, PC);
32111 if (!PreDec<PT_Uint32>(S, OpPC, V0))
32112 return false;
32113 continue;
32114}
32115case OP_PreDecSint64: {
32116 const auto V0 = ReadArg<bool>(S, PC);
32117 if (!PreDec<PT_Sint64>(S, OpPC, V0))
32118 return false;
32119 continue;
32120}
32121case OP_PreDecUint64: {
32122 const auto V0 = ReadArg<bool>(S, PC);
32123 if (!PreDec<PT_Uint64>(S, OpPC, V0))
32124 return false;
32125 continue;
32126}
32127case OP_PreDecIntAP: {
32128 const auto V0 = ReadArg<bool>(S, PC);
32129 if (!PreDec<PT_IntAP>(S, OpPC, V0))
32130 return false;
32131 continue;
32132}
32133case OP_PreDecIntAPS: {
32134 const auto V0 = ReadArg<bool>(S, PC);
32135 if (!PreDec<PT_IntAPS>(S, OpPC, V0))
32136 return false;
32137 continue;
32138}
32139case OP_PreDecBool: {
32140 const auto V0 = ReadArg<bool>(S, PC);
32141 if (!PreDec<PT_Bool>(S, OpPC, V0))
32142 return false;
32143 continue;
32144}
32145case OP_PreDecFixedPoint: {
32146 const auto V0 = ReadArg<bool>(S, PC);
32147 if (!PreDec<PT_FixedPoint>(S, OpPC, V0))
32148 return false;
32149 continue;
32150}
32151#endif
32152#ifdef GET_DISASM
32153case OP_PreDecSint8:
32154 Text.Op = PrintName("PreDecSint8");
32155 Text.Args.push_back(printArg<bool>(P, PC));
32156 break;
32157case OP_PreDecUint8:
32158 Text.Op = PrintName("PreDecUint8");
32159 Text.Args.push_back(printArg<bool>(P, PC));
32160 break;
32161case OP_PreDecSint16:
32162 Text.Op = PrintName("PreDecSint16");
32163 Text.Args.push_back(printArg<bool>(P, PC));
32164 break;
32165case OP_PreDecUint16:
32166 Text.Op = PrintName("PreDecUint16");
32167 Text.Args.push_back(printArg<bool>(P, PC));
32168 break;
32169case OP_PreDecSint32:
32170 Text.Op = PrintName("PreDecSint32");
32171 Text.Args.push_back(printArg<bool>(P, PC));
32172 break;
32173case OP_PreDecUint32:
32174 Text.Op = PrintName("PreDecUint32");
32175 Text.Args.push_back(printArg<bool>(P, PC));
32176 break;
32177case OP_PreDecSint64:
32178 Text.Op = PrintName("PreDecSint64");
32179 Text.Args.push_back(printArg<bool>(P, PC));
32180 break;
32181case OP_PreDecUint64:
32182 Text.Op = PrintName("PreDecUint64");
32183 Text.Args.push_back(printArg<bool>(P, PC));
32184 break;
32185case OP_PreDecIntAP:
32186 Text.Op = PrintName("PreDecIntAP");
32187 Text.Args.push_back(printArg<bool>(P, PC));
32188 break;
32189case OP_PreDecIntAPS:
32190 Text.Op = PrintName("PreDecIntAPS");
32191 Text.Args.push_back(printArg<bool>(P, PC));
32192 break;
32193case OP_PreDecBool:
32194 Text.Op = PrintName("PreDecBool");
32195 Text.Args.push_back(printArg<bool>(P, PC));
32196 break;
32197case OP_PreDecFixedPoint:
32198 Text.Op = PrintName("PreDecFixedPoint");
32199 Text.Args.push_back(printArg<bool>(P, PC));
32200 break;
32201#endif
32202#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32203bool emitPreDecSint8( bool , SourceInfo);
32204bool emitPreDecUint8( bool , SourceInfo);
32205bool emitPreDecSint16( bool , SourceInfo);
32206bool emitPreDecUint16( bool , SourceInfo);
32207bool emitPreDecSint32( bool , SourceInfo);
32208bool emitPreDecUint32( bool , SourceInfo);
32209bool emitPreDecSint64( bool , SourceInfo);
32210bool emitPreDecUint64( bool , SourceInfo);
32211bool emitPreDecIntAP( bool , SourceInfo);
32212bool emitPreDecIntAPS( bool , SourceInfo);
32213bool emitPreDecBool( bool , SourceInfo);
32214bool emitPreDecFixedPoint( bool , SourceInfo);
32215#endif
32216#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32217[[nodiscard]] bool emitPreDec(PrimType, bool, SourceInfo I);
32218#endif
32219#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32220bool
32221#if defined(GET_EVAL_IMPL)
32222EvalEmitter
32223#else
32224ByteCodeEmitter
32225#endif
32226::emitPreDec(PrimType T0, bool A0, SourceInfo I) {
32227 switch (T0) {
32228 case PT_Sint8:
32229 return emitPreDecSint8(A0, I);
32230 case PT_Uint8:
32231 return emitPreDecUint8(A0, I);
32232 case PT_Sint16:
32233 return emitPreDecSint16(A0, I);
32234 case PT_Uint16:
32235 return emitPreDecUint16(A0, I);
32236 case PT_Sint32:
32237 return emitPreDecSint32(A0, I);
32238 case PT_Uint32:
32239 return emitPreDecUint32(A0, I);
32240 case PT_Sint64:
32241 return emitPreDecSint64(A0, I);
32242 case PT_Uint64:
32243 return emitPreDecUint64(A0, I);
32244 case PT_IntAP:
32245 return emitPreDecIntAP(A0, I);
32246 case PT_IntAPS:
32247 return emitPreDecIntAPS(A0, I);
32248 case PT_Bool:
32249 return emitPreDecBool(A0, I);
32250 case PT_FixedPoint:
32251 return emitPreDecFixedPoint(A0, I);
32252 default: llvm_unreachable("invalid type: emitPreDec");
32253 }
32254 llvm_unreachable("invalid enum value");
32255}
32256#endif
32257#ifdef GET_LINK_IMPL
32258bool ByteCodeEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
32259 return emitOp<bool>(OP_PreDecSint8, A0, L);
32260}
32261bool ByteCodeEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
32262 return emitOp<bool>(OP_PreDecUint8, A0, L);
32263}
32264bool ByteCodeEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
32265 return emitOp<bool>(OP_PreDecSint16, A0, L);
32266}
32267bool ByteCodeEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
32268 return emitOp<bool>(OP_PreDecUint16, A0, L);
32269}
32270bool ByteCodeEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
32271 return emitOp<bool>(OP_PreDecSint32, A0, L);
32272}
32273bool ByteCodeEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
32274 return emitOp<bool>(OP_PreDecUint32, A0, L);
32275}
32276bool ByteCodeEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
32277 return emitOp<bool>(OP_PreDecSint64, A0, L);
32278}
32279bool ByteCodeEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
32280 return emitOp<bool>(OP_PreDecUint64, A0, L);
32281}
32282bool ByteCodeEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
32283 return emitOp<bool>(OP_PreDecIntAP, A0, L);
32284}
32285bool ByteCodeEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
32286 return emitOp<bool>(OP_PreDecIntAPS, A0, L);
32287}
32288bool ByteCodeEmitter::emitPreDecBool( bool A0, SourceInfo L) {
32289 return emitOp<bool>(OP_PreDecBool, A0, L);
32290}
32291bool ByteCodeEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
32292 return emitOp<bool>(OP_PreDecFixedPoint, A0, L);
32293}
32294#endif
32295#ifdef GET_EVAL_IMPL
32296bool EvalEmitter::emitPreDecSint8( bool A0, SourceInfo L) {
32297 if (!isActive()) return true;
32298 CurrentSource = L;
32299 return PreDec<PT_Sint8>(S, OpPC, A0);
32300}
32301bool EvalEmitter::emitPreDecUint8( bool A0, SourceInfo L) {
32302 if (!isActive()) return true;
32303 CurrentSource = L;
32304 return PreDec<PT_Uint8>(S, OpPC, A0);
32305}
32306bool EvalEmitter::emitPreDecSint16( bool A0, SourceInfo L) {
32307 if (!isActive()) return true;
32308 CurrentSource = L;
32309 return PreDec<PT_Sint16>(S, OpPC, A0);
32310}
32311bool EvalEmitter::emitPreDecUint16( bool A0, SourceInfo L) {
32312 if (!isActive()) return true;
32313 CurrentSource = L;
32314 return PreDec<PT_Uint16>(S, OpPC, A0);
32315}
32316bool EvalEmitter::emitPreDecSint32( bool A0, SourceInfo L) {
32317 if (!isActive()) return true;
32318 CurrentSource = L;
32319 return PreDec<PT_Sint32>(S, OpPC, A0);
32320}
32321bool EvalEmitter::emitPreDecUint32( bool A0, SourceInfo L) {
32322 if (!isActive()) return true;
32323 CurrentSource = L;
32324 return PreDec<PT_Uint32>(S, OpPC, A0);
32325}
32326bool EvalEmitter::emitPreDecSint64( bool A0, SourceInfo L) {
32327 if (!isActive()) return true;
32328 CurrentSource = L;
32329 return PreDec<PT_Sint64>(S, OpPC, A0);
32330}
32331bool EvalEmitter::emitPreDecUint64( bool A0, SourceInfo L) {
32332 if (!isActive()) return true;
32333 CurrentSource = L;
32334 return PreDec<PT_Uint64>(S, OpPC, A0);
32335}
32336bool EvalEmitter::emitPreDecIntAP( bool A0, SourceInfo L) {
32337 if (!isActive()) return true;
32338 CurrentSource = L;
32339 return PreDec<PT_IntAP>(S, OpPC, A0);
32340}
32341bool EvalEmitter::emitPreDecIntAPS( bool A0, SourceInfo L) {
32342 if (!isActive()) return true;
32343 CurrentSource = L;
32344 return PreDec<PT_IntAPS>(S, OpPC, A0);
32345}
32346bool EvalEmitter::emitPreDecBool( bool A0, SourceInfo L) {
32347 if (!isActive()) return true;
32348 CurrentSource = L;
32349 return PreDec<PT_Bool>(S, OpPC, A0);
32350}
32351bool EvalEmitter::emitPreDecFixedPoint( bool A0, SourceInfo L) {
32352 if (!isActive()) return true;
32353 CurrentSource = L;
32354 return PreDec<PT_FixedPoint>(S, OpPC, A0);
32355}
32356#endif
32357#ifdef GET_OPCODE_NAMES
32358OP_PreDecBitfieldSint8,
32359OP_PreDecBitfieldUint8,
32360OP_PreDecBitfieldSint16,
32361OP_PreDecBitfieldUint16,
32362OP_PreDecBitfieldSint32,
32363OP_PreDecBitfieldUint32,
32364OP_PreDecBitfieldSint64,
32365OP_PreDecBitfieldUint64,
32366OP_PreDecBitfieldIntAP,
32367OP_PreDecBitfieldIntAPS,
32368OP_PreDecBitfieldBool,
32369OP_PreDecBitfieldFixedPoint,
32370#endif
32371#ifdef GET_INTERP
32372case OP_PreDecBitfieldSint8: {
32373 const auto V0 = ReadArg<bool>(S, PC);
32374 const auto V1 = ReadArg<uint32_t>(S, PC);
32375 if (!PreDecBitfield<PT_Sint8>(S, OpPC, V0, V1))
32376 return false;
32377 continue;
32378}
32379case OP_PreDecBitfieldUint8: {
32380 const auto V0 = ReadArg<bool>(S, PC);
32381 const auto V1 = ReadArg<uint32_t>(S, PC);
32382 if (!PreDecBitfield<PT_Uint8>(S, OpPC, V0, V1))
32383 return false;
32384 continue;
32385}
32386case OP_PreDecBitfieldSint16: {
32387 const auto V0 = ReadArg<bool>(S, PC);
32388 const auto V1 = ReadArg<uint32_t>(S, PC);
32389 if (!PreDecBitfield<PT_Sint16>(S, OpPC, V0, V1))
32390 return false;
32391 continue;
32392}
32393case OP_PreDecBitfieldUint16: {
32394 const auto V0 = ReadArg<bool>(S, PC);
32395 const auto V1 = ReadArg<uint32_t>(S, PC);
32396 if (!PreDecBitfield<PT_Uint16>(S, OpPC, V0, V1))
32397 return false;
32398 continue;
32399}
32400case OP_PreDecBitfieldSint32: {
32401 const auto V0 = ReadArg<bool>(S, PC);
32402 const auto V1 = ReadArg<uint32_t>(S, PC);
32403 if (!PreDecBitfield<PT_Sint32>(S, OpPC, V0, V1))
32404 return false;
32405 continue;
32406}
32407case OP_PreDecBitfieldUint32: {
32408 const auto V0 = ReadArg<bool>(S, PC);
32409 const auto V1 = ReadArg<uint32_t>(S, PC);
32410 if (!PreDecBitfield<PT_Uint32>(S, OpPC, V0, V1))
32411 return false;
32412 continue;
32413}
32414case OP_PreDecBitfieldSint64: {
32415 const auto V0 = ReadArg<bool>(S, PC);
32416 const auto V1 = ReadArg<uint32_t>(S, PC);
32417 if (!PreDecBitfield<PT_Sint64>(S, OpPC, V0, V1))
32418 return false;
32419 continue;
32420}
32421case OP_PreDecBitfieldUint64: {
32422 const auto V0 = ReadArg<bool>(S, PC);
32423 const auto V1 = ReadArg<uint32_t>(S, PC);
32424 if (!PreDecBitfield<PT_Uint64>(S, OpPC, V0, V1))
32425 return false;
32426 continue;
32427}
32428case OP_PreDecBitfieldIntAP: {
32429 const auto V0 = ReadArg<bool>(S, PC);
32430 const auto V1 = ReadArg<uint32_t>(S, PC);
32431 if (!PreDecBitfield<PT_IntAP>(S, OpPC, V0, V1))
32432 return false;
32433 continue;
32434}
32435case OP_PreDecBitfieldIntAPS: {
32436 const auto V0 = ReadArg<bool>(S, PC);
32437 const auto V1 = ReadArg<uint32_t>(S, PC);
32438 if (!PreDecBitfield<PT_IntAPS>(S, OpPC, V0, V1))
32439 return false;
32440 continue;
32441}
32442case OP_PreDecBitfieldBool: {
32443 const auto V0 = ReadArg<bool>(S, PC);
32444 const auto V1 = ReadArg<uint32_t>(S, PC);
32445 if (!PreDecBitfield<PT_Bool>(S, OpPC, V0, V1))
32446 return false;
32447 continue;
32448}
32449case OP_PreDecBitfieldFixedPoint: {
32450 const auto V0 = ReadArg<bool>(S, PC);
32451 const auto V1 = ReadArg<uint32_t>(S, PC);
32452 if (!PreDecBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
32453 return false;
32454 continue;
32455}
32456#endif
32457#ifdef GET_DISASM
32458case OP_PreDecBitfieldSint8:
32459 Text.Op = PrintName("PreDecBitfieldSint8");
32460 Text.Args.push_back(printArg<bool>(P, PC));
32461 Text.Args.push_back(printArg<uint32_t>(P, PC));
32462 break;
32463case OP_PreDecBitfieldUint8:
32464 Text.Op = PrintName("PreDecBitfieldUint8");
32465 Text.Args.push_back(printArg<bool>(P, PC));
32466 Text.Args.push_back(printArg<uint32_t>(P, PC));
32467 break;
32468case OP_PreDecBitfieldSint16:
32469 Text.Op = PrintName("PreDecBitfieldSint16");
32470 Text.Args.push_back(printArg<bool>(P, PC));
32471 Text.Args.push_back(printArg<uint32_t>(P, PC));
32472 break;
32473case OP_PreDecBitfieldUint16:
32474 Text.Op = PrintName("PreDecBitfieldUint16");
32475 Text.Args.push_back(printArg<bool>(P, PC));
32476 Text.Args.push_back(printArg<uint32_t>(P, PC));
32477 break;
32478case OP_PreDecBitfieldSint32:
32479 Text.Op = PrintName("PreDecBitfieldSint32");
32480 Text.Args.push_back(printArg<bool>(P, PC));
32481 Text.Args.push_back(printArg<uint32_t>(P, PC));
32482 break;
32483case OP_PreDecBitfieldUint32:
32484 Text.Op = PrintName("PreDecBitfieldUint32");
32485 Text.Args.push_back(printArg<bool>(P, PC));
32486 Text.Args.push_back(printArg<uint32_t>(P, PC));
32487 break;
32488case OP_PreDecBitfieldSint64:
32489 Text.Op = PrintName("PreDecBitfieldSint64");
32490 Text.Args.push_back(printArg<bool>(P, PC));
32491 Text.Args.push_back(printArg<uint32_t>(P, PC));
32492 break;
32493case OP_PreDecBitfieldUint64:
32494 Text.Op = PrintName("PreDecBitfieldUint64");
32495 Text.Args.push_back(printArg<bool>(P, PC));
32496 Text.Args.push_back(printArg<uint32_t>(P, PC));
32497 break;
32498case OP_PreDecBitfieldIntAP:
32499 Text.Op = PrintName("PreDecBitfieldIntAP");
32500 Text.Args.push_back(printArg<bool>(P, PC));
32501 Text.Args.push_back(printArg<uint32_t>(P, PC));
32502 break;
32503case OP_PreDecBitfieldIntAPS:
32504 Text.Op = PrintName("PreDecBitfieldIntAPS");
32505 Text.Args.push_back(printArg<bool>(P, PC));
32506 Text.Args.push_back(printArg<uint32_t>(P, PC));
32507 break;
32508case OP_PreDecBitfieldBool:
32509 Text.Op = PrintName("PreDecBitfieldBool");
32510 Text.Args.push_back(printArg<bool>(P, PC));
32511 Text.Args.push_back(printArg<uint32_t>(P, PC));
32512 break;
32513case OP_PreDecBitfieldFixedPoint:
32514 Text.Op = PrintName("PreDecBitfieldFixedPoint");
32515 Text.Args.push_back(printArg<bool>(P, PC));
32516 Text.Args.push_back(printArg<uint32_t>(P, PC));
32517 break;
32518#endif
32519#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32520bool emitPreDecBitfieldSint8( bool , uint32_t , SourceInfo);
32521bool emitPreDecBitfieldUint8( bool , uint32_t , SourceInfo);
32522bool emitPreDecBitfieldSint16( bool , uint32_t , SourceInfo);
32523bool emitPreDecBitfieldUint16( bool , uint32_t , SourceInfo);
32524bool emitPreDecBitfieldSint32( bool , uint32_t , SourceInfo);
32525bool emitPreDecBitfieldUint32( bool , uint32_t , SourceInfo);
32526bool emitPreDecBitfieldSint64( bool , uint32_t , SourceInfo);
32527bool emitPreDecBitfieldUint64( bool , uint32_t , SourceInfo);
32528bool emitPreDecBitfieldIntAP( bool , uint32_t , SourceInfo);
32529bool emitPreDecBitfieldIntAPS( bool , uint32_t , SourceInfo);
32530bool emitPreDecBitfieldBool( bool , uint32_t , SourceInfo);
32531bool emitPreDecBitfieldFixedPoint( bool , uint32_t , SourceInfo);
32532#endif
32533#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32534[[nodiscard]] bool emitPreDecBitfield(PrimType, bool, uint32_t, SourceInfo I);
32535#endif
32536#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32537bool
32538#if defined(GET_EVAL_IMPL)
32539EvalEmitter
32540#else
32541ByteCodeEmitter
32542#endif
32543::emitPreDecBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
32544 switch (T0) {
32545 case PT_Sint8:
32546 return emitPreDecBitfieldSint8(A0, A1, I);
32547 case PT_Uint8:
32548 return emitPreDecBitfieldUint8(A0, A1, I);
32549 case PT_Sint16:
32550 return emitPreDecBitfieldSint16(A0, A1, I);
32551 case PT_Uint16:
32552 return emitPreDecBitfieldUint16(A0, A1, I);
32553 case PT_Sint32:
32554 return emitPreDecBitfieldSint32(A0, A1, I);
32555 case PT_Uint32:
32556 return emitPreDecBitfieldUint32(A0, A1, I);
32557 case PT_Sint64:
32558 return emitPreDecBitfieldSint64(A0, A1, I);
32559 case PT_Uint64:
32560 return emitPreDecBitfieldUint64(A0, A1, I);
32561 case PT_IntAP:
32562 return emitPreDecBitfieldIntAP(A0, A1, I);
32563 case PT_IntAPS:
32564 return emitPreDecBitfieldIntAPS(A0, A1, I);
32565 case PT_Bool:
32566 return emitPreDecBitfieldBool(A0, A1, I);
32567 case PT_FixedPoint:
32568 return emitPreDecBitfieldFixedPoint(A0, A1, I);
32569 default: llvm_unreachable("invalid type: emitPreDecBitfield");
32570 }
32571 llvm_unreachable("invalid enum value");
32572}
32573#endif
32574#ifdef GET_LINK_IMPL
32575bool ByteCodeEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
32576 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint8, A0, A1, L);
32577}
32578bool ByteCodeEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
32579 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint8, A0, A1, L);
32580}
32581bool ByteCodeEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
32582 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint16, A0, A1, L);
32583}
32584bool ByteCodeEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
32585 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint16, A0, A1, L);
32586}
32587bool ByteCodeEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
32588 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint32, A0, A1, L);
32589}
32590bool ByteCodeEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
32591 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint32, A0, A1, L);
32592}
32593bool ByteCodeEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
32594 return emitOp<bool, uint32_t>(OP_PreDecBitfieldSint64, A0, A1, L);
32595}
32596bool ByteCodeEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
32597 return emitOp<bool, uint32_t>(OP_PreDecBitfieldUint64, A0, A1, L);
32598}
32599bool ByteCodeEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
32600 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAP, A0, A1, L);
32601}
32602bool ByteCodeEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
32603 return emitOp<bool, uint32_t>(OP_PreDecBitfieldIntAPS, A0, A1, L);
32604}
32605bool ByteCodeEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
32606 return emitOp<bool, uint32_t>(OP_PreDecBitfieldBool, A0, A1, L);
32607}
32608bool ByteCodeEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
32609 return emitOp<bool, uint32_t>(OP_PreDecBitfieldFixedPoint, A0, A1, L);
32610}
32611#endif
32612#ifdef GET_EVAL_IMPL
32613bool EvalEmitter::emitPreDecBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
32614 if (!isActive()) return true;
32615 CurrentSource = L;
32616 return PreDecBitfield<PT_Sint8>(S, OpPC, A0, A1);
32617}
32618bool EvalEmitter::emitPreDecBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
32619 if (!isActive()) return true;
32620 CurrentSource = L;
32621 return PreDecBitfield<PT_Uint8>(S, OpPC, A0, A1);
32622}
32623bool EvalEmitter::emitPreDecBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
32624 if (!isActive()) return true;
32625 CurrentSource = L;
32626 return PreDecBitfield<PT_Sint16>(S, OpPC, A0, A1);
32627}
32628bool EvalEmitter::emitPreDecBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
32629 if (!isActive()) return true;
32630 CurrentSource = L;
32631 return PreDecBitfield<PT_Uint16>(S, OpPC, A0, A1);
32632}
32633bool EvalEmitter::emitPreDecBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
32634 if (!isActive()) return true;
32635 CurrentSource = L;
32636 return PreDecBitfield<PT_Sint32>(S, OpPC, A0, A1);
32637}
32638bool EvalEmitter::emitPreDecBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
32639 if (!isActive()) return true;
32640 CurrentSource = L;
32641 return PreDecBitfield<PT_Uint32>(S, OpPC, A0, A1);
32642}
32643bool EvalEmitter::emitPreDecBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
32644 if (!isActive()) return true;
32645 CurrentSource = L;
32646 return PreDecBitfield<PT_Sint64>(S, OpPC, A0, A1);
32647}
32648bool EvalEmitter::emitPreDecBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
32649 if (!isActive()) return true;
32650 CurrentSource = L;
32651 return PreDecBitfield<PT_Uint64>(S, OpPC, A0, A1);
32652}
32653bool EvalEmitter::emitPreDecBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
32654 if (!isActive()) return true;
32655 CurrentSource = L;
32656 return PreDecBitfield<PT_IntAP>(S, OpPC, A0, A1);
32657}
32658bool EvalEmitter::emitPreDecBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
32659 if (!isActive()) return true;
32660 CurrentSource = L;
32661 return PreDecBitfield<PT_IntAPS>(S, OpPC, A0, A1);
32662}
32663bool EvalEmitter::emitPreDecBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
32664 if (!isActive()) return true;
32665 CurrentSource = L;
32666 return PreDecBitfield<PT_Bool>(S, OpPC, A0, A1);
32667}
32668bool EvalEmitter::emitPreDecBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
32669 if (!isActive()) return true;
32670 CurrentSource = L;
32671 return PreDecBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
32672}
32673#endif
32674#ifdef GET_OPCODE_NAMES
32675OP_PreIncSint8,
32676OP_PreIncUint8,
32677OP_PreIncSint16,
32678OP_PreIncUint16,
32679OP_PreIncSint32,
32680OP_PreIncUint32,
32681OP_PreIncSint64,
32682OP_PreIncUint64,
32683OP_PreIncIntAP,
32684OP_PreIncIntAPS,
32685OP_PreIncBool,
32686OP_PreIncFixedPoint,
32687#endif
32688#ifdef GET_INTERP
32689case OP_PreIncSint8: {
32690 const auto V0 = ReadArg<bool>(S, PC);
32691 if (!PreInc<PT_Sint8>(S, OpPC, V0))
32692 return false;
32693 continue;
32694}
32695case OP_PreIncUint8: {
32696 const auto V0 = ReadArg<bool>(S, PC);
32697 if (!PreInc<PT_Uint8>(S, OpPC, V0))
32698 return false;
32699 continue;
32700}
32701case OP_PreIncSint16: {
32702 const auto V0 = ReadArg<bool>(S, PC);
32703 if (!PreInc<PT_Sint16>(S, OpPC, V0))
32704 return false;
32705 continue;
32706}
32707case OP_PreIncUint16: {
32708 const auto V0 = ReadArg<bool>(S, PC);
32709 if (!PreInc<PT_Uint16>(S, OpPC, V0))
32710 return false;
32711 continue;
32712}
32713case OP_PreIncSint32: {
32714 const auto V0 = ReadArg<bool>(S, PC);
32715 if (!PreInc<PT_Sint32>(S, OpPC, V0))
32716 return false;
32717 continue;
32718}
32719case OP_PreIncUint32: {
32720 const auto V0 = ReadArg<bool>(S, PC);
32721 if (!PreInc<PT_Uint32>(S, OpPC, V0))
32722 return false;
32723 continue;
32724}
32725case OP_PreIncSint64: {
32726 const auto V0 = ReadArg<bool>(S, PC);
32727 if (!PreInc<PT_Sint64>(S, OpPC, V0))
32728 return false;
32729 continue;
32730}
32731case OP_PreIncUint64: {
32732 const auto V0 = ReadArg<bool>(S, PC);
32733 if (!PreInc<PT_Uint64>(S, OpPC, V0))
32734 return false;
32735 continue;
32736}
32737case OP_PreIncIntAP: {
32738 const auto V0 = ReadArg<bool>(S, PC);
32739 if (!PreInc<PT_IntAP>(S, OpPC, V0))
32740 return false;
32741 continue;
32742}
32743case OP_PreIncIntAPS: {
32744 const auto V0 = ReadArg<bool>(S, PC);
32745 if (!PreInc<PT_IntAPS>(S, OpPC, V0))
32746 return false;
32747 continue;
32748}
32749case OP_PreIncBool: {
32750 const auto V0 = ReadArg<bool>(S, PC);
32751 if (!PreInc<PT_Bool>(S, OpPC, V0))
32752 return false;
32753 continue;
32754}
32755case OP_PreIncFixedPoint: {
32756 const auto V0 = ReadArg<bool>(S, PC);
32757 if (!PreInc<PT_FixedPoint>(S, OpPC, V0))
32758 return false;
32759 continue;
32760}
32761#endif
32762#ifdef GET_DISASM
32763case OP_PreIncSint8:
32764 Text.Op = PrintName("PreIncSint8");
32765 Text.Args.push_back(printArg<bool>(P, PC));
32766 break;
32767case OP_PreIncUint8:
32768 Text.Op = PrintName("PreIncUint8");
32769 Text.Args.push_back(printArg<bool>(P, PC));
32770 break;
32771case OP_PreIncSint16:
32772 Text.Op = PrintName("PreIncSint16");
32773 Text.Args.push_back(printArg<bool>(P, PC));
32774 break;
32775case OP_PreIncUint16:
32776 Text.Op = PrintName("PreIncUint16");
32777 Text.Args.push_back(printArg<bool>(P, PC));
32778 break;
32779case OP_PreIncSint32:
32780 Text.Op = PrintName("PreIncSint32");
32781 Text.Args.push_back(printArg<bool>(P, PC));
32782 break;
32783case OP_PreIncUint32:
32784 Text.Op = PrintName("PreIncUint32");
32785 Text.Args.push_back(printArg<bool>(P, PC));
32786 break;
32787case OP_PreIncSint64:
32788 Text.Op = PrintName("PreIncSint64");
32789 Text.Args.push_back(printArg<bool>(P, PC));
32790 break;
32791case OP_PreIncUint64:
32792 Text.Op = PrintName("PreIncUint64");
32793 Text.Args.push_back(printArg<bool>(P, PC));
32794 break;
32795case OP_PreIncIntAP:
32796 Text.Op = PrintName("PreIncIntAP");
32797 Text.Args.push_back(printArg<bool>(P, PC));
32798 break;
32799case OP_PreIncIntAPS:
32800 Text.Op = PrintName("PreIncIntAPS");
32801 Text.Args.push_back(printArg<bool>(P, PC));
32802 break;
32803case OP_PreIncBool:
32804 Text.Op = PrintName("PreIncBool");
32805 Text.Args.push_back(printArg<bool>(P, PC));
32806 break;
32807case OP_PreIncFixedPoint:
32808 Text.Op = PrintName("PreIncFixedPoint");
32809 Text.Args.push_back(printArg<bool>(P, PC));
32810 break;
32811#endif
32812#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32813bool emitPreIncSint8( bool , SourceInfo);
32814bool emitPreIncUint8( bool , SourceInfo);
32815bool emitPreIncSint16( bool , SourceInfo);
32816bool emitPreIncUint16( bool , SourceInfo);
32817bool emitPreIncSint32( bool , SourceInfo);
32818bool emitPreIncUint32( bool , SourceInfo);
32819bool emitPreIncSint64( bool , SourceInfo);
32820bool emitPreIncUint64( bool , SourceInfo);
32821bool emitPreIncIntAP( bool , SourceInfo);
32822bool emitPreIncIntAPS( bool , SourceInfo);
32823bool emitPreIncBool( bool , SourceInfo);
32824bool emitPreIncFixedPoint( bool , SourceInfo);
32825#endif
32826#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
32827[[nodiscard]] bool emitPreInc(PrimType, bool, SourceInfo I);
32828#endif
32829#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
32830bool
32831#if defined(GET_EVAL_IMPL)
32832EvalEmitter
32833#else
32834ByteCodeEmitter
32835#endif
32836::emitPreInc(PrimType T0, bool A0, SourceInfo I) {
32837 switch (T0) {
32838 case PT_Sint8:
32839 return emitPreIncSint8(A0, I);
32840 case PT_Uint8:
32841 return emitPreIncUint8(A0, I);
32842 case PT_Sint16:
32843 return emitPreIncSint16(A0, I);
32844 case PT_Uint16:
32845 return emitPreIncUint16(A0, I);
32846 case PT_Sint32:
32847 return emitPreIncSint32(A0, I);
32848 case PT_Uint32:
32849 return emitPreIncUint32(A0, I);
32850 case PT_Sint64:
32851 return emitPreIncSint64(A0, I);
32852 case PT_Uint64:
32853 return emitPreIncUint64(A0, I);
32854 case PT_IntAP:
32855 return emitPreIncIntAP(A0, I);
32856 case PT_IntAPS:
32857 return emitPreIncIntAPS(A0, I);
32858 case PT_Bool:
32859 return emitPreIncBool(A0, I);
32860 case PT_FixedPoint:
32861 return emitPreIncFixedPoint(A0, I);
32862 default: llvm_unreachable("invalid type: emitPreInc");
32863 }
32864 llvm_unreachable("invalid enum value");
32865}
32866#endif
32867#ifdef GET_LINK_IMPL
32868bool ByteCodeEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
32869 return emitOp<bool>(OP_PreIncSint8, A0, L);
32870}
32871bool ByteCodeEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
32872 return emitOp<bool>(OP_PreIncUint8, A0, L);
32873}
32874bool ByteCodeEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
32875 return emitOp<bool>(OP_PreIncSint16, A0, L);
32876}
32877bool ByteCodeEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
32878 return emitOp<bool>(OP_PreIncUint16, A0, L);
32879}
32880bool ByteCodeEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
32881 return emitOp<bool>(OP_PreIncSint32, A0, L);
32882}
32883bool ByteCodeEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
32884 return emitOp<bool>(OP_PreIncUint32, A0, L);
32885}
32886bool ByteCodeEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
32887 return emitOp<bool>(OP_PreIncSint64, A0, L);
32888}
32889bool ByteCodeEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
32890 return emitOp<bool>(OP_PreIncUint64, A0, L);
32891}
32892bool ByteCodeEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
32893 return emitOp<bool>(OP_PreIncIntAP, A0, L);
32894}
32895bool ByteCodeEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
32896 return emitOp<bool>(OP_PreIncIntAPS, A0, L);
32897}
32898bool ByteCodeEmitter::emitPreIncBool( bool A0, SourceInfo L) {
32899 return emitOp<bool>(OP_PreIncBool, A0, L);
32900}
32901bool ByteCodeEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
32902 return emitOp<bool>(OP_PreIncFixedPoint, A0, L);
32903}
32904#endif
32905#ifdef GET_EVAL_IMPL
32906bool EvalEmitter::emitPreIncSint8( bool A0, SourceInfo L) {
32907 if (!isActive()) return true;
32908 CurrentSource = L;
32909 return PreInc<PT_Sint8>(S, OpPC, A0);
32910}
32911bool EvalEmitter::emitPreIncUint8( bool A0, SourceInfo L) {
32912 if (!isActive()) return true;
32913 CurrentSource = L;
32914 return PreInc<PT_Uint8>(S, OpPC, A0);
32915}
32916bool EvalEmitter::emitPreIncSint16( bool A0, SourceInfo L) {
32917 if (!isActive()) return true;
32918 CurrentSource = L;
32919 return PreInc<PT_Sint16>(S, OpPC, A0);
32920}
32921bool EvalEmitter::emitPreIncUint16( bool A0, SourceInfo L) {
32922 if (!isActive()) return true;
32923 CurrentSource = L;
32924 return PreInc<PT_Uint16>(S, OpPC, A0);
32925}
32926bool EvalEmitter::emitPreIncSint32( bool A0, SourceInfo L) {
32927 if (!isActive()) return true;
32928 CurrentSource = L;
32929 return PreInc<PT_Sint32>(S, OpPC, A0);
32930}
32931bool EvalEmitter::emitPreIncUint32( bool A0, SourceInfo L) {
32932 if (!isActive()) return true;
32933 CurrentSource = L;
32934 return PreInc<PT_Uint32>(S, OpPC, A0);
32935}
32936bool EvalEmitter::emitPreIncSint64( bool A0, SourceInfo L) {
32937 if (!isActive()) return true;
32938 CurrentSource = L;
32939 return PreInc<PT_Sint64>(S, OpPC, A0);
32940}
32941bool EvalEmitter::emitPreIncUint64( bool A0, SourceInfo L) {
32942 if (!isActive()) return true;
32943 CurrentSource = L;
32944 return PreInc<PT_Uint64>(S, OpPC, A0);
32945}
32946bool EvalEmitter::emitPreIncIntAP( bool A0, SourceInfo L) {
32947 if (!isActive()) return true;
32948 CurrentSource = L;
32949 return PreInc<PT_IntAP>(S, OpPC, A0);
32950}
32951bool EvalEmitter::emitPreIncIntAPS( bool A0, SourceInfo L) {
32952 if (!isActive()) return true;
32953 CurrentSource = L;
32954 return PreInc<PT_IntAPS>(S, OpPC, A0);
32955}
32956bool EvalEmitter::emitPreIncBool( bool A0, SourceInfo L) {
32957 if (!isActive()) return true;
32958 CurrentSource = L;
32959 return PreInc<PT_Bool>(S, OpPC, A0);
32960}
32961bool EvalEmitter::emitPreIncFixedPoint( bool A0, SourceInfo L) {
32962 if (!isActive()) return true;
32963 CurrentSource = L;
32964 return PreInc<PT_FixedPoint>(S, OpPC, A0);
32965}
32966#endif
32967#ifdef GET_OPCODE_NAMES
32968OP_PreIncBitfieldSint8,
32969OP_PreIncBitfieldUint8,
32970OP_PreIncBitfieldSint16,
32971OP_PreIncBitfieldUint16,
32972OP_PreIncBitfieldSint32,
32973OP_PreIncBitfieldUint32,
32974OP_PreIncBitfieldSint64,
32975OP_PreIncBitfieldUint64,
32976OP_PreIncBitfieldIntAP,
32977OP_PreIncBitfieldIntAPS,
32978OP_PreIncBitfieldBool,
32979OP_PreIncBitfieldFixedPoint,
32980#endif
32981#ifdef GET_INTERP
32982case OP_PreIncBitfieldSint8: {
32983 const auto V0 = ReadArg<bool>(S, PC);
32984 const auto V1 = ReadArg<uint32_t>(S, PC);
32985 if (!PreIncBitfield<PT_Sint8>(S, OpPC, V0, V1))
32986 return false;
32987 continue;
32988}
32989case OP_PreIncBitfieldUint8: {
32990 const auto V0 = ReadArg<bool>(S, PC);
32991 const auto V1 = ReadArg<uint32_t>(S, PC);
32992 if (!PreIncBitfield<PT_Uint8>(S, OpPC, V0, V1))
32993 return false;
32994 continue;
32995}
32996case OP_PreIncBitfieldSint16: {
32997 const auto V0 = ReadArg<bool>(S, PC);
32998 const auto V1 = ReadArg<uint32_t>(S, PC);
32999 if (!PreIncBitfield<PT_Sint16>(S, OpPC, V0, V1))
33000 return false;
33001 continue;
33002}
33003case OP_PreIncBitfieldUint16: {
33004 const auto V0 = ReadArg<bool>(S, PC);
33005 const auto V1 = ReadArg<uint32_t>(S, PC);
33006 if (!PreIncBitfield<PT_Uint16>(S, OpPC, V0, V1))
33007 return false;
33008 continue;
33009}
33010case OP_PreIncBitfieldSint32: {
33011 const auto V0 = ReadArg<bool>(S, PC);
33012 const auto V1 = ReadArg<uint32_t>(S, PC);
33013 if (!PreIncBitfield<PT_Sint32>(S, OpPC, V0, V1))
33014 return false;
33015 continue;
33016}
33017case OP_PreIncBitfieldUint32: {
33018 const auto V0 = ReadArg<bool>(S, PC);
33019 const auto V1 = ReadArg<uint32_t>(S, PC);
33020 if (!PreIncBitfield<PT_Uint32>(S, OpPC, V0, V1))
33021 return false;
33022 continue;
33023}
33024case OP_PreIncBitfieldSint64: {
33025 const auto V0 = ReadArg<bool>(S, PC);
33026 const auto V1 = ReadArg<uint32_t>(S, PC);
33027 if (!PreIncBitfield<PT_Sint64>(S, OpPC, V0, V1))
33028 return false;
33029 continue;
33030}
33031case OP_PreIncBitfieldUint64: {
33032 const auto V0 = ReadArg<bool>(S, PC);
33033 const auto V1 = ReadArg<uint32_t>(S, PC);
33034 if (!PreIncBitfield<PT_Uint64>(S, OpPC, V0, V1))
33035 return false;
33036 continue;
33037}
33038case OP_PreIncBitfieldIntAP: {
33039 const auto V0 = ReadArg<bool>(S, PC);
33040 const auto V1 = ReadArg<uint32_t>(S, PC);
33041 if (!PreIncBitfield<PT_IntAP>(S, OpPC, V0, V1))
33042 return false;
33043 continue;
33044}
33045case OP_PreIncBitfieldIntAPS: {
33046 const auto V0 = ReadArg<bool>(S, PC);
33047 const auto V1 = ReadArg<uint32_t>(S, PC);
33048 if (!PreIncBitfield<PT_IntAPS>(S, OpPC, V0, V1))
33049 return false;
33050 continue;
33051}
33052case OP_PreIncBitfieldBool: {
33053 const auto V0 = ReadArg<bool>(S, PC);
33054 const auto V1 = ReadArg<uint32_t>(S, PC);
33055 if (!PreIncBitfield<PT_Bool>(S, OpPC, V0, V1))
33056 return false;
33057 continue;
33058}
33059case OP_PreIncBitfieldFixedPoint: {
33060 const auto V0 = ReadArg<bool>(S, PC);
33061 const auto V1 = ReadArg<uint32_t>(S, PC);
33062 if (!PreIncBitfield<PT_FixedPoint>(S, OpPC, V0, V1))
33063 return false;
33064 continue;
33065}
33066#endif
33067#ifdef GET_DISASM
33068case OP_PreIncBitfieldSint8:
33069 Text.Op = PrintName("PreIncBitfieldSint8");
33070 Text.Args.push_back(printArg<bool>(P, PC));
33071 Text.Args.push_back(printArg<uint32_t>(P, PC));
33072 break;
33073case OP_PreIncBitfieldUint8:
33074 Text.Op = PrintName("PreIncBitfieldUint8");
33075 Text.Args.push_back(printArg<bool>(P, PC));
33076 Text.Args.push_back(printArg<uint32_t>(P, PC));
33077 break;
33078case OP_PreIncBitfieldSint16:
33079 Text.Op = PrintName("PreIncBitfieldSint16");
33080 Text.Args.push_back(printArg<bool>(P, PC));
33081 Text.Args.push_back(printArg<uint32_t>(P, PC));
33082 break;
33083case OP_PreIncBitfieldUint16:
33084 Text.Op = PrintName("PreIncBitfieldUint16");
33085 Text.Args.push_back(printArg<bool>(P, PC));
33086 Text.Args.push_back(printArg<uint32_t>(P, PC));
33087 break;
33088case OP_PreIncBitfieldSint32:
33089 Text.Op = PrintName("PreIncBitfieldSint32");
33090 Text.Args.push_back(printArg<bool>(P, PC));
33091 Text.Args.push_back(printArg<uint32_t>(P, PC));
33092 break;
33093case OP_PreIncBitfieldUint32:
33094 Text.Op = PrintName("PreIncBitfieldUint32");
33095 Text.Args.push_back(printArg<bool>(P, PC));
33096 Text.Args.push_back(printArg<uint32_t>(P, PC));
33097 break;
33098case OP_PreIncBitfieldSint64:
33099 Text.Op = PrintName("PreIncBitfieldSint64");
33100 Text.Args.push_back(printArg<bool>(P, PC));
33101 Text.Args.push_back(printArg<uint32_t>(P, PC));
33102 break;
33103case OP_PreIncBitfieldUint64:
33104 Text.Op = PrintName("PreIncBitfieldUint64");
33105 Text.Args.push_back(printArg<bool>(P, PC));
33106 Text.Args.push_back(printArg<uint32_t>(P, PC));
33107 break;
33108case OP_PreIncBitfieldIntAP:
33109 Text.Op = PrintName("PreIncBitfieldIntAP");
33110 Text.Args.push_back(printArg<bool>(P, PC));
33111 Text.Args.push_back(printArg<uint32_t>(P, PC));
33112 break;
33113case OP_PreIncBitfieldIntAPS:
33114 Text.Op = PrintName("PreIncBitfieldIntAPS");
33115 Text.Args.push_back(printArg<bool>(P, PC));
33116 Text.Args.push_back(printArg<uint32_t>(P, PC));
33117 break;
33118case OP_PreIncBitfieldBool:
33119 Text.Op = PrintName("PreIncBitfieldBool");
33120 Text.Args.push_back(printArg<bool>(P, PC));
33121 Text.Args.push_back(printArg<uint32_t>(P, PC));
33122 break;
33123case OP_PreIncBitfieldFixedPoint:
33124 Text.Op = PrintName("PreIncBitfieldFixedPoint");
33125 Text.Args.push_back(printArg<bool>(P, PC));
33126 Text.Args.push_back(printArg<uint32_t>(P, PC));
33127 break;
33128#endif
33129#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33130bool emitPreIncBitfieldSint8( bool , uint32_t , SourceInfo);
33131bool emitPreIncBitfieldUint8( bool , uint32_t , SourceInfo);
33132bool emitPreIncBitfieldSint16( bool , uint32_t , SourceInfo);
33133bool emitPreIncBitfieldUint16( bool , uint32_t , SourceInfo);
33134bool emitPreIncBitfieldSint32( bool , uint32_t , SourceInfo);
33135bool emitPreIncBitfieldUint32( bool , uint32_t , SourceInfo);
33136bool emitPreIncBitfieldSint64( bool , uint32_t , SourceInfo);
33137bool emitPreIncBitfieldUint64( bool , uint32_t , SourceInfo);
33138bool emitPreIncBitfieldIntAP( bool , uint32_t , SourceInfo);
33139bool emitPreIncBitfieldIntAPS( bool , uint32_t , SourceInfo);
33140bool emitPreIncBitfieldBool( bool , uint32_t , SourceInfo);
33141bool emitPreIncBitfieldFixedPoint( bool , uint32_t , SourceInfo);
33142#endif
33143#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33144[[nodiscard]] bool emitPreIncBitfield(PrimType, bool, uint32_t, SourceInfo I);
33145#endif
33146#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33147bool
33148#if defined(GET_EVAL_IMPL)
33149EvalEmitter
33150#else
33151ByteCodeEmitter
33152#endif
33153::emitPreIncBitfield(PrimType T0, bool A0, uint32_t A1, SourceInfo I) {
33154 switch (T0) {
33155 case PT_Sint8:
33156 return emitPreIncBitfieldSint8(A0, A1, I);
33157 case PT_Uint8:
33158 return emitPreIncBitfieldUint8(A0, A1, I);
33159 case PT_Sint16:
33160 return emitPreIncBitfieldSint16(A0, A1, I);
33161 case PT_Uint16:
33162 return emitPreIncBitfieldUint16(A0, A1, I);
33163 case PT_Sint32:
33164 return emitPreIncBitfieldSint32(A0, A1, I);
33165 case PT_Uint32:
33166 return emitPreIncBitfieldUint32(A0, A1, I);
33167 case PT_Sint64:
33168 return emitPreIncBitfieldSint64(A0, A1, I);
33169 case PT_Uint64:
33170 return emitPreIncBitfieldUint64(A0, A1, I);
33171 case PT_IntAP:
33172 return emitPreIncBitfieldIntAP(A0, A1, I);
33173 case PT_IntAPS:
33174 return emitPreIncBitfieldIntAPS(A0, A1, I);
33175 case PT_Bool:
33176 return emitPreIncBitfieldBool(A0, A1, I);
33177 case PT_FixedPoint:
33178 return emitPreIncBitfieldFixedPoint(A0, A1, I);
33179 default: llvm_unreachable("invalid type: emitPreIncBitfield");
33180 }
33181 llvm_unreachable("invalid enum value");
33182}
33183#endif
33184#ifdef GET_LINK_IMPL
33185bool ByteCodeEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
33186 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint8, A0, A1, L);
33187}
33188bool ByteCodeEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
33189 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint8, A0, A1, L);
33190}
33191bool ByteCodeEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
33192 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint16, A0, A1, L);
33193}
33194bool ByteCodeEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
33195 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint16, A0, A1, L);
33196}
33197bool ByteCodeEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
33198 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint32, A0, A1, L);
33199}
33200bool ByteCodeEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
33201 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint32, A0, A1, L);
33202}
33203bool ByteCodeEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
33204 return emitOp<bool, uint32_t>(OP_PreIncBitfieldSint64, A0, A1, L);
33205}
33206bool ByteCodeEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
33207 return emitOp<bool, uint32_t>(OP_PreIncBitfieldUint64, A0, A1, L);
33208}
33209bool ByteCodeEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
33210 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAP, A0, A1, L);
33211}
33212bool ByteCodeEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
33213 return emitOp<bool, uint32_t>(OP_PreIncBitfieldIntAPS, A0, A1, L);
33214}
33215bool ByteCodeEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
33216 return emitOp<bool, uint32_t>(OP_PreIncBitfieldBool, A0, A1, L);
33217}
33218bool ByteCodeEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
33219 return emitOp<bool, uint32_t>(OP_PreIncBitfieldFixedPoint, A0, A1, L);
33220}
33221#endif
33222#ifdef GET_EVAL_IMPL
33223bool EvalEmitter::emitPreIncBitfieldSint8( bool A0, uint32_t A1, SourceInfo L) {
33224 if (!isActive()) return true;
33225 CurrentSource = L;
33226 return PreIncBitfield<PT_Sint8>(S, OpPC, A0, A1);
33227}
33228bool EvalEmitter::emitPreIncBitfieldUint8( bool A0, uint32_t A1, SourceInfo L) {
33229 if (!isActive()) return true;
33230 CurrentSource = L;
33231 return PreIncBitfield<PT_Uint8>(S, OpPC, A0, A1);
33232}
33233bool EvalEmitter::emitPreIncBitfieldSint16( bool A0, uint32_t A1, SourceInfo L) {
33234 if (!isActive()) return true;
33235 CurrentSource = L;
33236 return PreIncBitfield<PT_Sint16>(S, OpPC, A0, A1);
33237}
33238bool EvalEmitter::emitPreIncBitfieldUint16( bool A0, uint32_t A1, SourceInfo L) {
33239 if (!isActive()) return true;
33240 CurrentSource = L;
33241 return PreIncBitfield<PT_Uint16>(S, OpPC, A0, A1);
33242}
33243bool EvalEmitter::emitPreIncBitfieldSint32( bool A0, uint32_t A1, SourceInfo L) {
33244 if (!isActive()) return true;
33245 CurrentSource = L;
33246 return PreIncBitfield<PT_Sint32>(S, OpPC, A0, A1);
33247}
33248bool EvalEmitter::emitPreIncBitfieldUint32( bool A0, uint32_t A1, SourceInfo L) {
33249 if (!isActive()) return true;
33250 CurrentSource = L;
33251 return PreIncBitfield<PT_Uint32>(S, OpPC, A0, A1);
33252}
33253bool EvalEmitter::emitPreIncBitfieldSint64( bool A0, uint32_t A1, SourceInfo L) {
33254 if (!isActive()) return true;
33255 CurrentSource = L;
33256 return PreIncBitfield<PT_Sint64>(S, OpPC, A0, A1);
33257}
33258bool EvalEmitter::emitPreIncBitfieldUint64( bool A0, uint32_t A1, SourceInfo L) {
33259 if (!isActive()) return true;
33260 CurrentSource = L;
33261 return PreIncBitfield<PT_Uint64>(S, OpPC, A0, A1);
33262}
33263bool EvalEmitter::emitPreIncBitfieldIntAP( bool A0, uint32_t A1, SourceInfo L) {
33264 if (!isActive()) return true;
33265 CurrentSource = L;
33266 return PreIncBitfield<PT_IntAP>(S, OpPC, A0, A1);
33267}
33268bool EvalEmitter::emitPreIncBitfieldIntAPS( bool A0, uint32_t A1, SourceInfo L) {
33269 if (!isActive()) return true;
33270 CurrentSource = L;
33271 return PreIncBitfield<PT_IntAPS>(S, OpPC, A0, A1);
33272}
33273bool EvalEmitter::emitPreIncBitfieldBool( bool A0, uint32_t A1, SourceInfo L) {
33274 if (!isActive()) return true;
33275 CurrentSource = L;
33276 return PreIncBitfield<PT_Bool>(S, OpPC, A0, A1);
33277}
33278bool EvalEmitter::emitPreIncBitfieldFixedPoint( bool A0, uint32_t A1, SourceInfo L) {
33279 if (!isActive()) return true;
33280 CurrentSource = L;
33281 return PreIncBitfield<PT_FixedPoint>(S, OpPC, A0, A1);
33282}
33283#endif
33284#ifdef GET_OPCODE_NAMES
33285OP_PtrPtrCast,
33286#endif
33287#ifdef GET_INTERP
33288case OP_PtrPtrCast: {
33289 const auto V0 = ReadArg<bool>(S, PC);
33290 if (!PtrPtrCast(S, OpPC, V0))
33291 return false;
33292 continue;
33293}
33294#endif
33295#ifdef GET_DISASM
33296case OP_PtrPtrCast:
33297 Text.Op = PrintName("PtrPtrCast");
33298 Text.Args.push_back(printArg<bool>(P, PC));
33299 break;
33300#endif
33301#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33302bool emitPtrPtrCast( bool , SourceInfo);
33303#endif
33304#ifdef GET_LINK_IMPL
33305bool ByteCodeEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
33306 return emitOp<bool>(OP_PtrPtrCast, A0, L);
33307}
33308#endif
33309#ifdef GET_EVAL_IMPL
33310bool EvalEmitter::emitPtrPtrCast( bool A0, SourceInfo L) {
33311 if (!isActive()) return true;
33312 CurrentSource = L;
33313 return PtrPtrCast(S, OpPC, A0);
33314}
33315#endif
33316#ifdef GET_OPCODE_NAMES
33317OP_PushCC,
33318#endif
33319#ifdef GET_INTERP
33320case OP_PushCC: {
33321 const auto V0 = ReadArg<bool>(S, PC);
33322 if (!PushCC(S, OpPC, V0))
33323 return false;
33324 continue;
33325}
33326#endif
33327#ifdef GET_DISASM
33328case OP_PushCC:
33329 Text.Op = PrintName("PushCC");
33330 Text.Args.push_back(printArg<bool>(P, PC));
33331 break;
33332#endif
33333#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33334bool emitPushCC( bool , SourceInfo);
33335#endif
33336#ifdef GET_LINK_IMPL
33337bool ByteCodeEmitter::emitPushCC( bool A0, SourceInfo L) {
33338 return emitOp<bool>(OP_PushCC, A0, L);
33339}
33340#endif
33341#ifdef GET_EVAL_IMPL
33342bool EvalEmitter::emitPushCC( bool A0, SourceInfo L) {
33343 if (!isActive()) return true;
33344 CurrentSource = L;
33345 return PushCC(S, OpPC, A0);
33346}
33347#endif
33348#ifdef GET_OPCODE_NAMES
33349OP_PushMSVCCE,
33350#endif
33351#ifdef GET_INTERP
33352case OP_PushMSVCCE: {
33353 if (!PushMSVCCE(S, OpPC))
33354 return false;
33355 continue;
33356}
33357#endif
33358#ifdef GET_DISASM
33359case OP_PushMSVCCE:
33360 Text.Op = PrintName("PushMSVCCE");
33361 break;
33362#endif
33363#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33364bool emitPushMSVCCE(SourceInfo);
33365#endif
33366#ifdef GET_LINK_IMPL
33367bool ByteCodeEmitter::emitPushMSVCCE(SourceInfo L) {
33368 return emitOp<>(OP_PushMSVCCE, L);
33369}
33370#endif
33371#ifdef GET_EVAL_IMPL
33372bool EvalEmitter::emitPushMSVCCE(SourceInfo L) {
33373 if (!isActive()) return true;
33374 CurrentSource = L;
33375 return PushMSVCCE(S, OpPC);
33376}
33377#endif
33378#ifdef GET_OPCODE_NAMES
33379OP_RVOPtr,
33380#endif
33381#ifdef GET_INTERP
33382case OP_RVOPtr: {
33383 if (!RVOPtr(S, OpPC))
33384 return false;
33385 continue;
33386}
33387#endif
33388#ifdef GET_DISASM
33389case OP_RVOPtr:
33390 Text.Op = PrintName("RVOPtr");
33391 break;
33392#endif
33393#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33394bool emitRVOPtr(SourceInfo);
33395#endif
33396#ifdef GET_LINK_IMPL
33397bool ByteCodeEmitter::emitRVOPtr(SourceInfo L) {
33398 return emitOp<>(OP_RVOPtr, L);
33399}
33400#endif
33401#ifdef GET_EVAL_IMPL
33402bool EvalEmitter::emitRVOPtr(SourceInfo L) {
33403 if (!isActive()) return true;
33404 CurrentSource = L;
33405 return RVOPtr(S, OpPC);
33406}
33407#endif
33408#ifdef GET_OPCODE_NAMES
33409OP_RemSint8,
33410OP_RemUint8,
33411OP_RemSint16,
33412OP_RemUint16,
33413OP_RemSint32,
33414OP_RemUint32,
33415OP_RemSint64,
33416OP_RemUint64,
33417OP_RemIntAP,
33418OP_RemIntAPS,
33419OP_RemFixedPoint,
33420#endif
33421#ifdef GET_INTERP
33422case OP_RemSint8: {
33423 if (!Rem<PT_Sint8>(S, OpPC))
33424 return false;
33425 continue;
33426}
33427case OP_RemUint8: {
33428 if (!Rem<PT_Uint8>(S, OpPC))
33429 return false;
33430 continue;
33431}
33432case OP_RemSint16: {
33433 if (!Rem<PT_Sint16>(S, OpPC))
33434 return false;
33435 continue;
33436}
33437case OP_RemUint16: {
33438 if (!Rem<PT_Uint16>(S, OpPC))
33439 return false;
33440 continue;
33441}
33442case OP_RemSint32: {
33443 if (!Rem<PT_Sint32>(S, OpPC))
33444 return false;
33445 continue;
33446}
33447case OP_RemUint32: {
33448 if (!Rem<PT_Uint32>(S, OpPC))
33449 return false;
33450 continue;
33451}
33452case OP_RemSint64: {
33453 if (!Rem<PT_Sint64>(S, OpPC))
33454 return false;
33455 continue;
33456}
33457case OP_RemUint64: {
33458 if (!Rem<PT_Uint64>(S, OpPC))
33459 return false;
33460 continue;
33461}
33462case OP_RemIntAP: {
33463 if (!Rem<PT_IntAP>(S, OpPC))
33464 return false;
33465 continue;
33466}
33467case OP_RemIntAPS: {
33468 if (!Rem<PT_IntAPS>(S, OpPC))
33469 return false;
33470 continue;
33471}
33472case OP_RemFixedPoint: {
33473 if (!Rem<PT_FixedPoint>(S, OpPC))
33474 return false;
33475 continue;
33476}
33477#endif
33478#ifdef GET_DISASM
33479case OP_RemSint8:
33480 Text.Op = PrintName("RemSint8");
33481 break;
33482case OP_RemUint8:
33483 Text.Op = PrintName("RemUint8");
33484 break;
33485case OP_RemSint16:
33486 Text.Op = PrintName("RemSint16");
33487 break;
33488case OP_RemUint16:
33489 Text.Op = PrintName("RemUint16");
33490 break;
33491case OP_RemSint32:
33492 Text.Op = PrintName("RemSint32");
33493 break;
33494case OP_RemUint32:
33495 Text.Op = PrintName("RemUint32");
33496 break;
33497case OP_RemSint64:
33498 Text.Op = PrintName("RemSint64");
33499 break;
33500case OP_RemUint64:
33501 Text.Op = PrintName("RemUint64");
33502 break;
33503case OP_RemIntAP:
33504 Text.Op = PrintName("RemIntAP");
33505 break;
33506case OP_RemIntAPS:
33507 Text.Op = PrintName("RemIntAPS");
33508 break;
33509case OP_RemFixedPoint:
33510 Text.Op = PrintName("RemFixedPoint");
33511 break;
33512#endif
33513#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33514bool emitRemSint8(SourceInfo);
33515bool emitRemUint8(SourceInfo);
33516bool emitRemSint16(SourceInfo);
33517bool emitRemUint16(SourceInfo);
33518bool emitRemSint32(SourceInfo);
33519bool emitRemUint32(SourceInfo);
33520bool emitRemSint64(SourceInfo);
33521bool emitRemUint64(SourceInfo);
33522bool emitRemIntAP(SourceInfo);
33523bool emitRemIntAPS(SourceInfo);
33524bool emitRemFixedPoint(SourceInfo);
33525#endif
33526#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33527[[nodiscard]] bool emitRem(PrimType, SourceInfo I);
33528#endif
33529#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33530bool
33531#if defined(GET_EVAL_IMPL)
33532EvalEmitter
33533#else
33534ByteCodeEmitter
33535#endif
33536::emitRem(PrimType T0, SourceInfo I) {
33537 switch (T0) {
33538 case PT_Sint8:
33539 return emitRemSint8(I);
33540 case PT_Uint8:
33541 return emitRemUint8(I);
33542 case PT_Sint16:
33543 return emitRemSint16(I);
33544 case PT_Uint16:
33545 return emitRemUint16(I);
33546 case PT_Sint32:
33547 return emitRemSint32(I);
33548 case PT_Uint32:
33549 return emitRemUint32(I);
33550 case PT_Sint64:
33551 return emitRemSint64(I);
33552 case PT_Uint64:
33553 return emitRemUint64(I);
33554 case PT_IntAP:
33555 return emitRemIntAP(I);
33556 case PT_IntAPS:
33557 return emitRemIntAPS(I);
33558 case PT_FixedPoint:
33559 return emitRemFixedPoint(I);
33560 default: llvm_unreachable("invalid type: emitRem");
33561 }
33562 llvm_unreachable("invalid enum value");
33563}
33564#endif
33565#ifdef GET_LINK_IMPL
33566bool ByteCodeEmitter::emitRemSint8(SourceInfo L) {
33567 return emitOp<>(OP_RemSint8, L);
33568}
33569bool ByteCodeEmitter::emitRemUint8(SourceInfo L) {
33570 return emitOp<>(OP_RemUint8, L);
33571}
33572bool ByteCodeEmitter::emitRemSint16(SourceInfo L) {
33573 return emitOp<>(OP_RemSint16, L);
33574}
33575bool ByteCodeEmitter::emitRemUint16(SourceInfo L) {
33576 return emitOp<>(OP_RemUint16, L);
33577}
33578bool ByteCodeEmitter::emitRemSint32(SourceInfo L) {
33579 return emitOp<>(OP_RemSint32, L);
33580}
33581bool ByteCodeEmitter::emitRemUint32(SourceInfo L) {
33582 return emitOp<>(OP_RemUint32, L);
33583}
33584bool ByteCodeEmitter::emitRemSint64(SourceInfo L) {
33585 return emitOp<>(OP_RemSint64, L);
33586}
33587bool ByteCodeEmitter::emitRemUint64(SourceInfo L) {
33588 return emitOp<>(OP_RemUint64, L);
33589}
33590bool ByteCodeEmitter::emitRemIntAP(SourceInfo L) {
33591 return emitOp<>(OP_RemIntAP, L);
33592}
33593bool ByteCodeEmitter::emitRemIntAPS(SourceInfo L) {
33594 return emitOp<>(OP_RemIntAPS, L);
33595}
33596bool ByteCodeEmitter::emitRemFixedPoint(SourceInfo L) {
33597 return emitOp<>(OP_RemFixedPoint, L);
33598}
33599#endif
33600#ifdef GET_EVAL_IMPL
33601bool EvalEmitter::emitRemSint8(SourceInfo L) {
33602 if (!isActive()) return true;
33603 CurrentSource = L;
33604 return Rem<PT_Sint8>(S, OpPC);
33605}
33606bool EvalEmitter::emitRemUint8(SourceInfo L) {
33607 if (!isActive()) return true;
33608 CurrentSource = L;
33609 return Rem<PT_Uint8>(S, OpPC);
33610}
33611bool EvalEmitter::emitRemSint16(SourceInfo L) {
33612 if (!isActive()) return true;
33613 CurrentSource = L;
33614 return Rem<PT_Sint16>(S, OpPC);
33615}
33616bool EvalEmitter::emitRemUint16(SourceInfo L) {
33617 if (!isActive()) return true;
33618 CurrentSource = L;
33619 return Rem<PT_Uint16>(S, OpPC);
33620}
33621bool EvalEmitter::emitRemSint32(SourceInfo L) {
33622 if (!isActive()) return true;
33623 CurrentSource = L;
33624 return Rem<PT_Sint32>(S, OpPC);
33625}
33626bool EvalEmitter::emitRemUint32(SourceInfo L) {
33627 if (!isActive()) return true;
33628 CurrentSource = L;
33629 return Rem<PT_Uint32>(S, OpPC);
33630}
33631bool EvalEmitter::emitRemSint64(SourceInfo L) {
33632 if (!isActive()) return true;
33633 CurrentSource = L;
33634 return Rem<PT_Sint64>(S, OpPC);
33635}
33636bool EvalEmitter::emitRemUint64(SourceInfo L) {
33637 if (!isActive()) return true;
33638 CurrentSource = L;
33639 return Rem<PT_Uint64>(S, OpPC);
33640}
33641bool EvalEmitter::emitRemIntAP(SourceInfo L) {
33642 if (!isActive()) return true;
33643 CurrentSource = L;
33644 return Rem<PT_IntAP>(S, OpPC);
33645}
33646bool EvalEmitter::emitRemIntAPS(SourceInfo L) {
33647 if (!isActive()) return true;
33648 CurrentSource = L;
33649 return Rem<PT_IntAPS>(S, OpPC);
33650}
33651bool EvalEmitter::emitRemFixedPoint(SourceInfo L) {
33652 if (!isActive()) return true;
33653 CurrentSource = L;
33654 return Rem<PT_FixedPoint>(S, OpPC);
33655}
33656#endif
33657#ifdef GET_OPCODE_NAMES
33658OP_RetSint8,
33659OP_RetUint8,
33660OP_RetSint16,
33661OP_RetUint16,
33662OP_RetSint32,
33663OP_RetUint32,
33664OP_RetSint64,
33665OP_RetUint64,
33666OP_RetIntAP,
33667OP_RetIntAPS,
33668OP_RetBool,
33669OP_RetFixedPoint,
33670OP_RetPtr,
33671OP_RetMemberPtr,
33672OP_RetFloat,
33673#endif
33674#ifdef GET_INTERP
33675case OP_RetSint8: {
33676 bool DoReturn = (S.Current == StartFrame);
33677 if (!Ret<PT_Sint8>(S, PC))
33678 return false;
33679 if (!S.Current || S.Current->isRoot())
33680 return true;
33681 if (DoReturn)
33682 return true;
33683 continue;
33684}
33685case OP_RetUint8: {
33686 bool DoReturn = (S.Current == StartFrame);
33687 if (!Ret<PT_Uint8>(S, PC))
33688 return false;
33689 if (!S.Current || S.Current->isRoot())
33690 return true;
33691 if (DoReturn)
33692 return true;
33693 continue;
33694}
33695case OP_RetSint16: {
33696 bool DoReturn = (S.Current == StartFrame);
33697 if (!Ret<PT_Sint16>(S, PC))
33698 return false;
33699 if (!S.Current || S.Current->isRoot())
33700 return true;
33701 if (DoReturn)
33702 return true;
33703 continue;
33704}
33705case OP_RetUint16: {
33706 bool DoReturn = (S.Current == StartFrame);
33707 if (!Ret<PT_Uint16>(S, PC))
33708 return false;
33709 if (!S.Current || S.Current->isRoot())
33710 return true;
33711 if (DoReturn)
33712 return true;
33713 continue;
33714}
33715case OP_RetSint32: {
33716 bool DoReturn = (S.Current == StartFrame);
33717 if (!Ret<PT_Sint32>(S, PC))
33718 return false;
33719 if (!S.Current || S.Current->isRoot())
33720 return true;
33721 if (DoReturn)
33722 return true;
33723 continue;
33724}
33725case OP_RetUint32: {
33726 bool DoReturn = (S.Current == StartFrame);
33727 if (!Ret<PT_Uint32>(S, PC))
33728 return false;
33729 if (!S.Current || S.Current->isRoot())
33730 return true;
33731 if (DoReturn)
33732 return true;
33733 continue;
33734}
33735case OP_RetSint64: {
33736 bool DoReturn = (S.Current == StartFrame);
33737 if (!Ret<PT_Sint64>(S, PC))
33738 return false;
33739 if (!S.Current || S.Current->isRoot())
33740 return true;
33741 if (DoReturn)
33742 return true;
33743 continue;
33744}
33745case OP_RetUint64: {
33746 bool DoReturn = (S.Current == StartFrame);
33747 if (!Ret<PT_Uint64>(S, PC))
33748 return false;
33749 if (!S.Current || S.Current->isRoot())
33750 return true;
33751 if (DoReturn)
33752 return true;
33753 continue;
33754}
33755case OP_RetIntAP: {
33756 bool DoReturn = (S.Current == StartFrame);
33757 if (!Ret<PT_IntAP>(S, PC))
33758 return false;
33759 if (!S.Current || S.Current->isRoot())
33760 return true;
33761 if (DoReturn)
33762 return true;
33763 continue;
33764}
33765case OP_RetIntAPS: {
33766 bool DoReturn = (S.Current == StartFrame);
33767 if (!Ret<PT_IntAPS>(S, PC))
33768 return false;
33769 if (!S.Current || S.Current->isRoot())
33770 return true;
33771 if (DoReturn)
33772 return true;
33773 continue;
33774}
33775case OP_RetBool: {
33776 bool DoReturn = (S.Current == StartFrame);
33777 if (!Ret<PT_Bool>(S, PC))
33778 return false;
33779 if (!S.Current || S.Current->isRoot())
33780 return true;
33781 if (DoReturn)
33782 return true;
33783 continue;
33784}
33785case OP_RetFixedPoint: {
33786 bool DoReturn = (S.Current == StartFrame);
33787 if (!Ret<PT_FixedPoint>(S, PC))
33788 return false;
33789 if (!S.Current || S.Current->isRoot())
33790 return true;
33791 if (DoReturn)
33792 return true;
33793 continue;
33794}
33795case OP_RetPtr: {
33796 bool DoReturn = (S.Current == StartFrame);
33797 if (!Ret<PT_Ptr>(S, PC))
33798 return false;
33799 if (!S.Current || S.Current->isRoot())
33800 return true;
33801 if (DoReturn)
33802 return true;
33803 continue;
33804}
33805case OP_RetMemberPtr: {
33806 bool DoReturn = (S.Current == StartFrame);
33807 if (!Ret<PT_MemberPtr>(S, PC))
33808 return false;
33809 if (!S.Current || S.Current->isRoot())
33810 return true;
33811 if (DoReturn)
33812 return true;
33813 continue;
33814}
33815case OP_RetFloat: {
33816 bool DoReturn = (S.Current == StartFrame);
33817 if (!Ret<PT_Float>(S, PC))
33818 return false;
33819 if (!S.Current || S.Current->isRoot())
33820 return true;
33821 if (DoReturn)
33822 return true;
33823 continue;
33824}
33825#endif
33826#ifdef GET_DISASM
33827case OP_RetSint8:
33828 Text.Op = PrintName("RetSint8");
33829 break;
33830case OP_RetUint8:
33831 Text.Op = PrintName("RetUint8");
33832 break;
33833case OP_RetSint16:
33834 Text.Op = PrintName("RetSint16");
33835 break;
33836case OP_RetUint16:
33837 Text.Op = PrintName("RetUint16");
33838 break;
33839case OP_RetSint32:
33840 Text.Op = PrintName("RetSint32");
33841 break;
33842case OP_RetUint32:
33843 Text.Op = PrintName("RetUint32");
33844 break;
33845case OP_RetSint64:
33846 Text.Op = PrintName("RetSint64");
33847 break;
33848case OP_RetUint64:
33849 Text.Op = PrintName("RetUint64");
33850 break;
33851case OP_RetIntAP:
33852 Text.Op = PrintName("RetIntAP");
33853 break;
33854case OP_RetIntAPS:
33855 Text.Op = PrintName("RetIntAPS");
33856 break;
33857case OP_RetBool:
33858 Text.Op = PrintName("RetBool");
33859 break;
33860case OP_RetFixedPoint:
33861 Text.Op = PrintName("RetFixedPoint");
33862 break;
33863case OP_RetPtr:
33864 Text.Op = PrintName("RetPtr");
33865 break;
33866case OP_RetMemberPtr:
33867 Text.Op = PrintName("RetMemberPtr");
33868 break;
33869case OP_RetFloat:
33870 Text.Op = PrintName("RetFloat");
33871 break;
33872#endif
33873#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33874bool emitRetSint8(SourceInfo);
33875bool emitRetUint8(SourceInfo);
33876bool emitRetSint16(SourceInfo);
33877bool emitRetUint16(SourceInfo);
33878bool emitRetSint32(SourceInfo);
33879bool emitRetUint32(SourceInfo);
33880bool emitRetSint64(SourceInfo);
33881bool emitRetUint64(SourceInfo);
33882bool emitRetIntAP(SourceInfo);
33883bool emitRetIntAPS(SourceInfo);
33884bool emitRetBool(SourceInfo);
33885bool emitRetFixedPoint(SourceInfo);
33886bool emitRetPtr(SourceInfo);
33887bool emitRetMemberPtr(SourceInfo);
33888bool emitRetFloat(SourceInfo);
33889#if defined(GET_EVAL_PROTO)
33890template<PrimType>
33891bool emitRet(SourceInfo);
33892#endif
33893#endif
33894#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
33895[[nodiscard]] bool emitRet(PrimType, SourceInfo I);
33896#endif
33897#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
33898bool
33899#if defined(GET_EVAL_IMPL)
33900EvalEmitter
33901#else
33902ByteCodeEmitter
33903#endif
33904::emitRet(PrimType T0, SourceInfo I) {
33905 switch (T0) {
33906 case PT_Sint8:
33907#ifdef GET_LINK_IMPL
33908 return emitRetSint8
33909#else
33910 return emitRet<PT_Sint8>
33911#endif
33912 (I);
33913 case PT_Uint8:
33914#ifdef GET_LINK_IMPL
33915 return emitRetUint8
33916#else
33917 return emitRet<PT_Uint8>
33918#endif
33919 (I);
33920 case PT_Sint16:
33921#ifdef GET_LINK_IMPL
33922 return emitRetSint16
33923#else
33924 return emitRet<PT_Sint16>
33925#endif
33926 (I);
33927 case PT_Uint16:
33928#ifdef GET_LINK_IMPL
33929 return emitRetUint16
33930#else
33931 return emitRet<PT_Uint16>
33932#endif
33933 (I);
33934 case PT_Sint32:
33935#ifdef GET_LINK_IMPL
33936 return emitRetSint32
33937#else
33938 return emitRet<PT_Sint32>
33939#endif
33940 (I);
33941 case PT_Uint32:
33942#ifdef GET_LINK_IMPL
33943 return emitRetUint32
33944#else
33945 return emitRet<PT_Uint32>
33946#endif
33947 (I);
33948 case PT_Sint64:
33949#ifdef GET_LINK_IMPL
33950 return emitRetSint64
33951#else
33952 return emitRet<PT_Sint64>
33953#endif
33954 (I);
33955 case PT_Uint64:
33956#ifdef GET_LINK_IMPL
33957 return emitRetUint64
33958#else
33959 return emitRet<PT_Uint64>
33960#endif
33961 (I);
33962 case PT_IntAP:
33963#ifdef GET_LINK_IMPL
33964 return emitRetIntAP
33965#else
33966 return emitRet<PT_IntAP>
33967#endif
33968 (I);
33969 case PT_IntAPS:
33970#ifdef GET_LINK_IMPL
33971 return emitRetIntAPS
33972#else
33973 return emitRet<PT_IntAPS>
33974#endif
33975 (I);
33976 case PT_Bool:
33977#ifdef GET_LINK_IMPL
33978 return emitRetBool
33979#else
33980 return emitRet<PT_Bool>
33981#endif
33982 (I);
33983 case PT_FixedPoint:
33984#ifdef GET_LINK_IMPL
33985 return emitRetFixedPoint
33986#else
33987 return emitRet<PT_FixedPoint>
33988#endif
33989 (I);
33990 case PT_Ptr:
33991#ifdef GET_LINK_IMPL
33992 return emitRetPtr
33993#else
33994 return emitRet<PT_Ptr>
33995#endif
33996 (I);
33997 case PT_MemberPtr:
33998#ifdef GET_LINK_IMPL
33999 return emitRetMemberPtr
34000#else
34001 return emitRet<PT_MemberPtr>
34002#endif
34003 (I);
34004 case PT_Float:
34005#ifdef GET_LINK_IMPL
34006 return emitRetFloat
34007#else
34008 return emitRet<PT_Float>
34009#endif
34010 (I);
34011 }
34012 llvm_unreachable("invalid enum value");
34013}
34014#endif
34015#ifdef GET_LINK_IMPL
34016bool ByteCodeEmitter::emitRetSint8(SourceInfo L) {
34017 return emitOp<>(OP_RetSint8, L);
34018}
34019bool ByteCodeEmitter::emitRetUint8(SourceInfo L) {
34020 return emitOp<>(OP_RetUint8, L);
34021}
34022bool ByteCodeEmitter::emitRetSint16(SourceInfo L) {
34023 return emitOp<>(OP_RetSint16, L);
34024}
34025bool ByteCodeEmitter::emitRetUint16(SourceInfo L) {
34026 return emitOp<>(OP_RetUint16, L);
34027}
34028bool ByteCodeEmitter::emitRetSint32(SourceInfo L) {
34029 return emitOp<>(OP_RetSint32, L);
34030}
34031bool ByteCodeEmitter::emitRetUint32(SourceInfo L) {
34032 return emitOp<>(OP_RetUint32, L);
34033}
34034bool ByteCodeEmitter::emitRetSint64(SourceInfo L) {
34035 return emitOp<>(OP_RetSint64, L);
34036}
34037bool ByteCodeEmitter::emitRetUint64(SourceInfo L) {
34038 return emitOp<>(OP_RetUint64, L);
34039}
34040bool ByteCodeEmitter::emitRetIntAP(SourceInfo L) {
34041 return emitOp<>(OP_RetIntAP, L);
34042}
34043bool ByteCodeEmitter::emitRetIntAPS(SourceInfo L) {
34044 return emitOp<>(OP_RetIntAPS, L);
34045}
34046bool ByteCodeEmitter::emitRetBool(SourceInfo L) {
34047 return emitOp<>(OP_RetBool, L);
34048}
34049bool ByteCodeEmitter::emitRetFixedPoint(SourceInfo L) {
34050 return emitOp<>(OP_RetFixedPoint, L);
34051}
34052bool ByteCodeEmitter::emitRetPtr(SourceInfo L) {
34053 return emitOp<>(OP_RetPtr, L);
34054}
34055bool ByteCodeEmitter::emitRetMemberPtr(SourceInfo L) {
34056 return emitOp<>(OP_RetMemberPtr, L);
34057}
34058bool ByteCodeEmitter::emitRetFloat(SourceInfo L) {
34059 return emitOp<>(OP_RetFloat, L);
34060}
34061#endif
34062#ifdef GET_OPCODE_NAMES
34063OP_RetValue,
34064#endif
34065#ifdef GET_INTERP
34066case OP_RetValue: {
34067 bool DoReturn = (S.Current == StartFrame);
34068 if (!RetValue(S, PC))
34069 return false;
34070 if (!S.Current || S.Current->isRoot())
34071 return true;
34072 if (DoReturn)
34073 return true;
34074 continue;
34075}
34076#endif
34077#ifdef GET_DISASM
34078case OP_RetValue:
34079 Text.Op = PrintName("RetValue");
34080 break;
34081#endif
34082#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34083bool emitRetValue(SourceInfo);
34084#endif
34085#ifdef GET_LINK_IMPL
34086bool ByteCodeEmitter::emitRetValue(SourceInfo L) {
34087 return emitOp<>(OP_RetValue, L);
34088}
34089#endif
34090#ifdef GET_OPCODE_NAMES
34091OP_RetVoid,
34092#endif
34093#ifdef GET_INTERP
34094case OP_RetVoid: {
34095 bool DoReturn = (S.Current == StartFrame);
34096 if (!RetVoid(S, PC))
34097 return false;
34098 if (!S.Current || S.Current->isRoot())
34099 return true;
34100 if (DoReturn)
34101 return true;
34102 continue;
34103}
34104#endif
34105#ifdef GET_DISASM
34106case OP_RetVoid:
34107 Text.Op = PrintName("RetVoid");
34108 break;
34109#endif
34110#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34111bool emitRetVoid(SourceInfo);
34112#endif
34113#ifdef GET_LINK_IMPL
34114bool ByteCodeEmitter::emitRetVoid(SourceInfo L) {
34115 return emitOp<>(OP_RetVoid, L);
34116}
34117#endif
34118#ifdef GET_OPCODE_NAMES
34119OP_SetFieldSint8,
34120OP_SetFieldUint8,
34121OP_SetFieldSint16,
34122OP_SetFieldUint16,
34123OP_SetFieldSint32,
34124OP_SetFieldUint32,
34125OP_SetFieldSint64,
34126OP_SetFieldUint64,
34127OP_SetFieldIntAP,
34128OP_SetFieldIntAPS,
34129OP_SetFieldBool,
34130OP_SetFieldFixedPoint,
34131OP_SetFieldPtr,
34132OP_SetFieldMemberPtr,
34133OP_SetFieldFloat,
34134#endif
34135#ifdef GET_INTERP
34136case OP_SetFieldSint8: {
34137 const auto V0 = ReadArg<uint32_t>(S, PC);
34138 if (!SetField<PT_Sint8>(S, OpPC, V0))
34139 return false;
34140 continue;
34141}
34142case OP_SetFieldUint8: {
34143 const auto V0 = ReadArg<uint32_t>(S, PC);
34144 if (!SetField<PT_Uint8>(S, OpPC, V0))
34145 return false;
34146 continue;
34147}
34148case OP_SetFieldSint16: {
34149 const auto V0 = ReadArg<uint32_t>(S, PC);
34150 if (!SetField<PT_Sint16>(S, OpPC, V0))
34151 return false;
34152 continue;
34153}
34154case OP_SetFieldUint16: {
34155 const auto V0 = ReadArg<uint32_t>(S, PC);
34156 if (!SetField<PT_Uint16>(S, OpPC, V0))
34157 return false;
34158 continue;
34159}
34160case OP_SetFieldSint32: {
34161 const auto V0 = ReadArg<uint32_t>(S, PC);
34162 if (!SetField<PT_Sint32>(S, OpPC, V0))
34163 return false;
34164 continue;
34165}
34166case OP_SetFieldUint32: {
34167 const auto V0 = ReadArg<uint32_t>(S, PC);
34168 if (!SetField<PT_Uint32>(S, OpPC, V0))
34169 return false;
34170 continue;
34171}
34172case OP_SetFieldSint64: {
34173 const auto V0 = ReadArg<uint32_t>(S, PC);
34174 if (!SetField<PT_Sint64>(S, OpPC, V0))
34175 return false;
34176 continue;
34177}
34178case OP_SetFieldUint64: {
34179 const auto V0 = ReadArg<uint32_t>(S, PC);
34180 if (!SetField<PT_Uint64>(S, OpPC, V0))
34181 return false;
34182 continue;
34183}
34184case OP_SetFieldIntAP: {
34185 const auto V0 = ReadArg<uint32_t>(S, PC);
34186 if (!SetField<PT_IntAP>(S, OpPC, V0))
34187 return false;
34188 continue;
34189}
34190case OP_SetFieldIntAPS: {
34191 const auto V0 = ReadArg<uint32_t>(S, PC);
34192 if (!SetField<PT_IntAPS>(S, OpPC, V0))
34193 return false;
34194 continue;
34195}
34196case OP_SetFieldBool: {
34197 const auto V0 = ReadArg<uint32_t>(S, PC);
34198 if (!SetField<PT_Bool>(S, OpPC, V0))
34199 return false;
34200 continue;
34201}
34202case OP_SetFieldFixedPoint: {
34203 const auto V0 = ReadArg<uint32_t>(S, PC);
34204 if (!SetField<PT_FixedPoint>(S, OpPC, V0))
34205 return false;
34206 continue;
34207}
34208case OP_SetFieldPtr: {
34209 const auto V0 = ReadArg<uint32_t>(S, PC);
34210 if (!SetField<PT_Ptr>(S, OpPC, V0))
34211 return false;
34212 continue;
34213}
34214case OP_SetFieldMemberPtr: {
34215 const auto V0 = ReadArg<uint32_t>(S, PC);
34216 if (!SetField<PT_MemberPtr>(S, OpPC, V0))
34217 return false;
34218 continue;
34219}
34220case OP_SetFieldFloat: {
34221 const auto V0 = ReadArg<uint32_t>(S, PC);
34222 if (!SetField<PT_Float>(S, OpPC, V0))
34223 return false;
34224 continue;
34225}
34226#endif
34227#ifdef GET_DISASM
34228case OP_SetFieldSint8:
34229 Text.Op = PrintName("SetFieldSint8");
34230 Text.Args.push_back(printArg<uint32_t>(P, PC));
34231 break;
34232case OP_SetFieldUint8:
34233 Text.Op = PrintName("SetFieldUint8");
34234 Text.Args.push_back(printArg<uint32_t>(P, PC));
34235 break;
34236case OP_SetFieldSint16:
34237 Text.Op = PrintName("SetFieldSint16");
34238 Text.Args.push_back(printArg<uint32_t>(P, PC));
34239 break;
34240case OP_SetFieldUint16:
34241 Text.Op = PrintName("SetFieldUint16");
34242 Text.Args.push_back(printArg<uint32_t>(P, PC));
34243 break;
34244case OP_SetFieldSint32:
34245 Text.Op = PrintName("SetFieldSint32");
34246 Text.Args.push_back(printArg<uint32_t>(P, PC));
34247 break;
34248case OP_SetFieldUint32:
34249 Text.Op = PrintName("SetFieldUint32");
34250 Text.Args.push_back(printArg<uint32_t>(P, PC));
34251 break;
34252case OP_SetFieldSint64:
34253 Text.Op = PrintName("SetFieldSint64");
34254 Text.Args.push_back(printArg<uint32_t>(P, PC));
34255 break;
34256case OP_SetFieldUint64:
34257 Text.Op = PrintName("SetFieldUint64");
34258 Text.Args.push_back(printArg<uint32_t>(P, PC));
34259 break;
34260case OP_SetFieldIntAP:
34261 Text.Op = PrintName("SetFieldIntAP");
34262 Text.Args.push_back(printArg<uint32_t>(P, PC));
34263 break;
34264case OP_SetFieldIntAPS:
34265 Text.Op = PrintName("SetFieldIntAPS");
34266 Text.Args.push_back(printArg<uint32_t>(P, PC));
34267 break;
34268case OP_SetFieldBool:
34269 Text.Op = PrintName("SetFieldBool");
34270 Text.Args.push_back(printArg<uint32_t>(P, PC));
34271 break;
34272case OP_SetFieldFixedPoint:
34273 Text.Op = PrintName("SetFieldFixedPoint");
34274 Text.Args.push_back(printArg<uint32_t>(P, PC));
34275 break;
34276case OP_SetFieldPtr:
34277 Text.Op = PrintName("SetFieldPtr");
34278 Text.Args.push_back(printArg<uint32_t>(P, PC));
34279 break;
34280case OP_SetFieldMemberPtr:
34281 Text.Op = PrintName("SetFieldMemberPtr");
34282 Text.Args.push_back(printArg<uint32_t>(P, PC));
34283 break;
34284case OP_SetFieldFloat:
34285 Text.Op = PrintName("SetFieldFloat");
34286 Text.Args.push_back(printArg<uint32_t>(P, PC));
34287 break;
34288#endif
34289#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34290bool emitSetFieldSint8( uint32_t , SourceInfo);
34291bool emitSetFieldUint8( uint32_t , SourceInfo);
34292bool emitSetFieldSint16( uint32_t , SourceInfo);
34293bool emitSetFieldUint16( uint32_t , SourceInfo);
34294bool emitSetFieldSint32( uint32_t , SourceInfo);
34295bool emitSetFieldUint32( uint32_t , SourceInfo);
34296bool emitSetFieldSint64( uint32_t , SourceInfo);
34297bool emitSetFieldUint64( uint32_t , SourceInfo);
34298bool emitSetFieldIntAP( uint32_t , SourceInfo);
34299bool emitSetFieldIntAPS( uint32_t , SourceInfo);
34300bool emitSetFieldBool( uint32_t , SourceInfo);
34301bool emitSetFieldFixedPoint( uint32_t , SourceInfo);
34302bool emitSetFieldPtr( uint32_t , SourceInfo);
34303bool emitSetFieldMemberPtr( uint32_t , SourceInfo);
34304bool emitSetFieldFloat( uint32_t , SourceInfo);
34305#endif
34306#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34307[[nodiscard]] bool emitSetField(PrimType, uint32_t, SourceInfo I);
34308#endif
34309#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34310bool
34311#if defined(GET_EVAL_IMPL)
34312EvalEmitter
34313#else
34314ByteCodeEmitter
34315#endif
34316::emitSetField(PrimType T0, uint32_t A0, SourceInfo I) {
34317 switch (T0) {
34318 case PT_Sint8:
34319 return emitSetFieldSint8(A0, I);
34320 case PT_Uint8:
34321 return emitSetFieldUint8(A0, I);
34322 case PT_Sint16:
34323 return emitSetFieldSint16(A0, I);
34324 case PT_Uint16:
34325 return emitSetFieldUint16(A0, I);
34326 case PT_Sint32:
34327 return emitSetFieldSint32(A0, I);
34328 case PT_Uint32:
34329 return emitSetFieldUint32(A0, I);
34330 case PT_Sint64:
34331 return emitSetFieldSint64(A0, I);
34332 case PT_Uint64:
34333 return emitSetFieldUint64(A0, I);
34334 case PT_IntAP:
34335 return emitSetFieldIntAP(A0, I);
34336 case PT_IntAPS:
34337 return emitSetFieldIntAPS(A0, I);
34338 case PT_Bool:
34339 return emitSetFieldBool(A0, I);
34340 case PT_FixedPoint:
34341 return emitSetFieldFixedPoint(A0, I);
34342 case PT_Ptr:
34343 return emitSetFieldPtr(A0, I);
34344 case PT_MemberPtr:
34345 return emitSetFieldMemberPtr(A0, I);
34346 case PT_Float:
34347 return emitSetFieldFloat(A0, I);
34348 }
34349 llvm_unreachable("invalid enum value");
34350}
34351#endif
34352#ifdef GET_LINK_IMPL
34353bool ByteCodeEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
34354 return emitOp<uint32_t>(OP_SetFieldSint8, A0, L);
34355}
34356bool ByteCodeEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
34357 return emitOp<uint32_t>(OP_SetFieldUint8, A0, L);
34358}
34359bool ByteCodeEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
34360 return emitOp<uint32_t>(OP_SetFieldSint16, A0, L);
34361}
34362bool ByteCodeEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
34363 return emitOp<uint32_t>(OP_SetFieldUint16, A0, L);
34364}
34365bool ByteCodeEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
34366 return emitOp<uint32_t>(OP_SetFieldSint32, A0, L);
34367}
34368bool ByteCodeEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
34369 return emitOp<uint32_t>(OP_SetFieldUint32, A0, L);
34370}
34371bool ByteCodeEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
34372 return emitOp<uint32_t>(OP_SetFieldSint64, A0, L);
34373}
34374bool ByteCodeEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
34375 return emitOp<uint32_t>(OP_SetFieldUint64, A0, L);
34376}
34377bool ByteCodeEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
34378 return emitOp<uint32_t>(OP_SetFieldIntAP, A0, L);
34379}
34380bool ByteCodeEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
34381 return emitOp<uint32_t>(OP_SetFieldIntAPS, A0, L);
34382}
34383bool ByteCodeEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
34384 return emitOp<uint32_t>(OP_SetFieldBool, A0, L);
34385}
34386bool ByteCodeEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
34387 return emitOp<uint32_t>(OP_SetFieldFixedPoint, A0, L);
34388}
34389bool ByteCodeEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
34390 return emitOp<uint32_t>(OP_SetFieldPtr, A0, L);
34391}
34392bool ByteCodeEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
34393 return emitOp<uint32_t>(OP_SetFieldMemberPtr, A0, L);
34394}
34395bool ByteCodeEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
34396 return emitOp<uint32_t>(OP_SetFieldFloat, A0, L);
34397}
34398#endif
34399#ifdef GET_EVAL_IMPL
34400bool EvalEmitter::emitSetFieldSint8( uint32_t A0, SourceInfo L) {
34401 if (!isActive()) return true;
34402 CurrentSource = L;
34403 return SetField<PT_Sint8>(S, OpPC, A0);
34404}
34405bool EvalEmitter::emitSetFieldUint8( uint32_t A0, SourceInfo L) {
34406 if (!isActive()) return true;
34407 CurrentSource = L;
34408 return SetField<PT_Uint8>(S, OpPC, A0);
34409}
34410bool EvalEmitter::emitSetFieldSint16( uint32_t A0, SourceInfo L) {
34411 if (!isActive()) return true;
34412 CurrentSource = L;
34413 return SetField<PT_Sint16>(S, OpPC, A0);
34414}
34415bool EvalEmitter::emitSetFieldUint16( uint32_t A0, SourceInfo L) {
34416 if (!isActive()) return true;
34417 CurrentSource = L;
34418 return SetField<PT_Uint16>(S, OpPC, A0);
34419}
34420bool EvalEmitter::emitSetFieldSint32( uint32_t A0, SourceInfo L) {
34421 if (!isActive()) return true;
34422 CurrentSource = L;
34423 return SetField<PT_Sint32>(S, OpPC, A0);
34424}
34425bool EvalEmitter::emitSetFieldUint32( uint32_t A0, SourceInfo L) {
34426 if (!isActive()) return true;
34427 CurrentSource = L;
34428 return SetField<PT_Uint32>(S, OpPC, A0);
34429}
34430bool EvalEmitter::emitSetFieldSint64( uint32_t A0, SourceInfo L) {
34431 if (!isActive()) return true;
34432 CurrentSource = L;
34433 return SetField<PT_Sint64>(S, OpPC, A0);
34434}
34435bool EvalEmitter::emitSetFieldUint64( uint32_t A0, SourceInfo L) {
34436 if (!isActive()) return true;
34437 CurrentSource = L;
34438 return SetField<PT_Uint64>(S, OpPC, A0);
34439}
34440bool EvalEmitter::emitSetFieldIntAP( uint32_t A0, SourceInfo L) {
34441 if (!isActive()) return true;
34442 CurrentSource = L;
34443 return SetField<PT_IntAP>(S, OpPC, A0);
34444}
34445bool EvalEmitter::emitSetFieldIntAPS( uint32_t A0, SourceInfo L) {
34446 if (!isActive()) return true;
34447 CurrentSource = L;
34448 return SetField<PT_IntAPS>(S, OpPC, A0);
34449}
34450bool EvalEmitter::emitSetFieldBool( uint32_t A0, SourceInfo L) {
34451 if (!isActive()) return true;
34452 CurrentSource = L;
34453 return SetField<PT_Bool>(S, OpPC, A0);
34454}
34455bool EvalEmitter::emitSetFieldFixedPoint( uint32_t A0, SourceInfo L) {
34456 if (!isActive()) return true;
34457 CurrentSource = L;
34458 return SetField<PT_FixedPoint>(S, OpPC, A0);
34459}
34460bool EvalEmitter::emitSetFieldPtr( uint32_t A0, SourceInfo L) {
34461 if (!isActive()) return true;
34462 CurrentSource = L;
34463 return SetField<PT_Ptr>(S, OpPC, A0);
34464}
34465bool EvalEmitter::emitSetFieldMemberPtr( uint32_t A0, SourceInfo L) {
34466 if (!isActive()) return true;
34467 CurrentSource = L;
34468 return SetField<PT_MemberPtr>(S, OpPC, A0);
34469}
34470bool EvalEmitter::emitSetFieldFloat( uint32_t A0, SourceInfo L) {
34471 if (!isActive()) return true;
34472 CurrentSource = L;
34473 return SetField<PT_Float>(S, OpPC, A0);
34474}
34475#endif
34476#ifdef GET_OPCODE_NAMES
34477OP_SetGlobalSint8,
34478OP_SetGlobalUint8,
34479OP_SetGlobalSint16,
34480OP_SetGlobalUint16,
34481OP_SetGlobalSint32,
34482OP_SetGlobalUint32,
34483OP_SetGlobalSint64,
34484OP_SetGlobalUint64,
34485OP_SetGlobalIntAP,
34486OP_SetGlobalIntAPS,
34487OP_SetGlobalBool,
34488OP_SetGlobalFixedPoint,
34489OP_SetGlobalPtr,
34490OP_SetGlobalMemberPtr,
34491OP_SetGlobalFloat,
34492#endif
34493#ifdef GET_INTERP
34494case OP_SetGlobalSint8: {
34495 const auto V0 = ReadArg<uint32_t>(S, PC);
34496 if (!SetGlobal<PT_Sint8>(S, OpPC, V0))
34497 return false;
34498 continue;
34499}
34500case OP_SetGlobalUint8: {
34501 const auto V0 = ReadArg<uint32_t>(S, PC);
34502 if (!SetGlobal<PT_Uint8>(S, OpPC, V0))
34503 return false;
34504 continue;
34505}
34506case OP_SetGlobalSint16: {
34507 const auto V0 = ReadArg<uint32_t>(S, PC);
34508 if (!SetGlobal<PT_Sint16>(S, OpPC, V0))
34509 return false;
34510 continue;
34511}
34512case OP_SetGlobalUint16: {
34513 const auto V0 = ReadArg<uint32_t>(S, PC);
34514 if (!SetGlobal<PT_Uint16>(S, OpPC, V0))
34515 return false;
34516 continue;
34517}
34518case OP_SetGlobalSint32: {
34519 const auto V0 = ReadArg<uint32_t>(S, PC);
34520 if (!SetGlobal<PT_Sint32>(S, OpPC, V0))
34521 return false;
34522 continue;
34523}
34524case OP_SetGlobalUint32: {
34525 const auto V0 = ReadArg<uint32_t>(S, PC);
34526 if (!SetGlobal<PT_Uint32>(S, OpPC, V0))
34527 return false;
34528 continue;
34529}
34530case OP_SetGlobalSint64: {
34531 const auto V0 = ReadArg<uint32_t>(S, PC);
34532 if (!SetGlobal<PT_Sint64>(S, OpPC, V0))
34533 return false;
34534 continue;
34535}
34536case OP_SetGlobalUint64: {
34537 const auto V0 = ReadArg<uint32_t>(S, PC);
34538 if (!SetGlobal<PT_Uint64>(S, OpPC, V0))
34539 return false;
34540 continue;
34541}
34542case OP_SetGlobalIntAP: {
34543 const auto V0 = ReadArg<uint32_t>(S, PC);
34544 if (!SetGlobal<PT_IntAP>(S, OpPC, V0))
34545 return false;
34546 continue;
34547}
34548case OP_SetGlobalIntAPS: {
34549 const auto V0 = ReadArg<uint32_t>(S, PC);
34550 if (!SetGlobal<PT_IntAPS>(S, OpPC, V0))
34551 return false;
34552 continue;
34553}
34554case OP_SetGlobalBool: {
34555 const auto V0 = ReadArg<uint32_t>(S, PC);
34556 if (!SetGlobal<PT_Bool>(S, OpPC, V0))
34557 return false;
34558 continue;
34559}
34560case OP_SetGlobalFixedPoint: {
34561 const auto V0 = ReadArg<uint32_t>(S, PC);
34562 if (!SetGlobal<PT_FixedPoint>(S, OpPC, V0))
34563 return false;
34564 continue;
34565}
34566case OP_SetGlobalPtr: {
34567 const auto V0 = ReadArg<uint32_t>(S, PC);
34568 if (!SetGlobal<PT_Ptr>(S, OpPC, V0))
34569 return false;
34570 continue;
34571}
34572case OP_SetGlobalMemberPtr: {
34573 const auto V0 = ReadArg<uint32_t>(S, PC);
34574 if (!SetGlobal<PT_MemberPtr>(S, OpPC, V0))
34575 return false;
34576 continue;
34577}
34578case OP_SetGlobalFloat: {
34579 const auto V0 = ReadArg<uint32_t>(S, PC);
34580 if (!SetGlobal<PT_Float>(S, OpPC, V0))
34581 return false;
34582 continue;
34583}
34584#endif
34585#ifdef GET_DISASM
34586case OP_SetGlobalSint8:
34587 Text.Op = PrintName("SetGlobalSint8");
34588 Text.Args.push_back(printArg<uint32_t>(P, PC));
34589 break;
34590case OP_SetGlobalUint8:
34591 Text.Op = PrintName("SetGlobalUint8");
34592 Text.Args.push_back(printArg<uint32_t>(P, PC));
34593 break;
34594case OP_SetGlobalSint16:
34595 Text.Op = PrintName("SetGlobalSint16");
34596 Text.Args.push_back(printArg<uint32_t>(P, PC));
34597 break;
34598case OP_SetGlobalUint16:
34599 Text.Op = PrintName("SetGlobalUint16");
34600 Text.Args.push_back(printArg<uint32_t>(P, PC));
34601 break;
34602case OP_SetGlobalSint32:
34603 Text.Op = PrintName("SetGlobalSint32");
34604 Text.Args.push_back(printArg<uint32_t>(P, PC));
34605 break;
34606case OP_SetGlobalUint32:
34607 Text.Op = PrintName("SetGlobalUint32");
34608 Text.Args.push_back(printArg<uint32_t>(P, PC));
34609 break;
34610case OP_SetGlobalSint64:
34611 Text.Op = PrintName("SetGlobalSint64");
34612 Text.Args.push_back(printArg<uint32_t>(P, PC));
34613 break;
34614case OP_SetGlobalUint64:
34615 Text.Op = PrintName("SetGlobalUint64");
34616 Text.Args.push_back(printArg<uint32_t>(P, PC));
34617 break;
34618case OP_SetGlobalIntAP:
34619 Text.Op = PrintName("SetGlobalIntAP");
34620 Text.Args.push_back(printArg<uint32_t>(P, PC));
34621 break;
34622case OP_SetGlobalIntAPS:
34623 Text.Op = PrintName("SetGlobalIntAPS");
34624 Text.Args.push_back(printArg<uint32_t>(P, PC));
34625 break;
34626case OP_SetGlobalBool:
34627 Text.Op = PrintName("SetGlobalBool");
34628 Text.Args.push_back(printArg<uint32_t>(P, PC));
34629 break;
34630case OP_SetGlobalFixedPoint:
34631 Text.Op = PrintName("SetGlobalFixedPoint");
34632 Text.Args.push_back(printArg<uint32_t>(P, PC));
34633 break;
34634case OP_SetGlobalPtr:
34635 Text.Op = PrintName("SetGlobalPtr");
34636 Text.Args.push_back(printArg<uint32_t>(P, PC));
34637 break;
34638case OP_SetGlobalMemberPtr:
34639 Text.Op = PrintName("SetGlobalMemberPtr");
34640 Text.Args.push_back(printArg<uint32_t>(P, PC));
34641 break;
34642case OP_SetGlobalFloat:
34643 Text.Op = PrintName("SetGlobalFloat");
34644 Text.Args.push_back(printArg<uint32_t>(P, PC));
34645 break;
34646#endif
34647#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34648bool emitSetGlobalSint8( uint32_t , SourceInfo);
34649bool emitSetGlobalUint8( uint32_t , SourceInfo);
34650bool emitSetGlobalSint16( uint32_t , SourceInfo);
34651bool emitSetGlobalUint16( uint32_t , SourceInfo);
34652bool emitSetGlobalSint32( uint32_t , SourceInfo);
34653bool emitSetGlobalUint32( uint32_t , SourceInfo);
34654bool emitSetGlobalSint64( uint32_t , SourceInfo);
34655bool emitSetGlobalUint64( uint32_t , SourceInfo);
34656bool emitSetGlobalIntAP( uint32_t , SourceInfo);
34657bool emitSetGlobalIntAPS( uint32_t , SourceInfo);
34658bool emitSetGlobalBool( uint32_t , SourceInfo);
34659bool emitSetGlobalFixedPoint( uint32_t , SourceInfo);
34660bool emitSetGlobalPtr( uint32_t , SourceInfo);
34661bool emitSetGlobalMemberPtr( uint32_t , SourceInfo);
34662bool emitSetGlobalFloat( uint32_t , SourceInfo);
34663#endif
34664#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
34665[[nodiscard]] bool emitSetGlobal(PrimType, uint32_t, SourceInfo I);
34666#endif
34667#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
34668bool
34669#if defined(GET_EVAL_IMPL)
34670EvalEmitter
34671#else
34672ByteCodeEmitter
34673#endif
34674::emitSetGlobal(PrimType T0, uint32_t A0, SourceInfo I) {
34675 switch (T0) {
34676 case PT_Sint8:
34677 return emitSetGlobalSint8(A0, I);
34678 case PT_Uint8:
34679 return emitSetGlobalUint8(A0, I);
34680 case PT_Sint16:
34681 return emitSetGlobalSint16(A0, I);
34682 case PT_Uint16:
34683 return emitSetGlobalUint16(A0, I);
34684 case PT_Sint32:
34685 return emitSetGlobalSint32(A0, I);
34686 case PT_Uint32:
34687 return emitSetGlobalUint32(A0, I);
34688 case PT_Sint64:
34689 return emitSetGlobalSint64(A0, I);
34690 case PT_Uint64:
34691 return emitSetGlobalUint64(A0, I);
34692 case PT_IntAP:
34693 return emitSetGlobalIntAP(A0, I);
34694 case PT_IntAPS:
34695 return emitSetGlobalIntAPS(A0, I);
34696 case PT_Bool:
34697 return emitSetGlobalBool(A0, I);
34698 case PT_FixedPoint:
34699 return emitSetGlobalFixedPoint(A0, I);
34700 case PT_Ptr:
34701 return emitSetGlobalPtr(A0, I);
34702 case PT_MemberPtr:
34703 return emitSetGlobalMemberPtr(A0, I);
34704 case PT_Float:
34705 return emitSetGlobalFloat(A0, I);
34706 }
34707 llvm_unreachable("invalid enum value");
34708}
34709#endif
34710#ifdef GET_LINK_IMPL
34711bool ByteCodeEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
34712 return emitOp<uint32_t>(OP_SetGlobalSint8, A0, L);
34713}
34714bool ByteCodeEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
34715 return emitOp<uint32_t>(OP_SetGlobalUint8, A0, L);
34716}
34717bool ByteCodeEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
34718 return emitOp<uint32_t>(OP_SetGlobalSint16, A0, L);
34719}
34720bool ByteCodeEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
34721 return emitOp<uint32_t>(OP_SetGlobalUint16, A0, L);
34722}
34723bool ByteCodeEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
34724 return emitOp<uint32_t>(OP_SetGlobalSint32, A0, L);
34725}
34726bool ByteCodeEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
34727 return emitOp<uint32_t>(OP_SetGlobalUint32, A0, L);
34728}
34729bool ByteCodeEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
34730 return emitOp<uint32_t>(OP_SetGlobalSint64, A0, L);
34731}
34732bool ByteCodeEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
34733 return emitOp<uint32_t>(OP_SetGlobalUint64, A0, L);
34734}
34735bool ByteCodeEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
34736 return emitOp<uint32_t>(OP_SetGlobalIntAP, A0, L);
34737}
34738bool ByteCodeEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
34739 return emitOp<uint32_t>(OP_SetGlobalIntAPS, A0, L);
34740}
34741bool ByteCodeEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
34742 return emitOp<uint32_t>(OP_SetGlobalBool, A0, L);
34743}
34744bool ByteCodeEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34745 return emitOp<uint32_t>(OP_SetGlobalFixedPoint, A0, L);
34746}
34747bool ByteCodeEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
34748 return emitOp<uint32_t>(OP_SetGlobalPtr, A0, L);
34749}
34750bool ByteCodeEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34751 return emitOp<uint32_t>(OP_SetGlobalMemberPtr, A0, L);
34752}
34753bool ByteCodeEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
34754 return emitOp<uint32_t>(OP_SetGlobalFloat, A0, L);
34755}
34756#endif
34757#ifdef GET_EVAL_IMPL
34758bool EvalEmitter::emitSetGlobalSint8( uint32_t A0, SourceInfo L) {
34759 if (!isActive()) return true;
34760 CurrentSource = L;
34761 return SetGlobal<PT_Sint8>(S, OpPC, A0);
34762}
34763bool EvalEmitter::emitSetGlobalUint8( uint32_t A0, SourceInfo L) {
34764 if (!isActive()) return true;
34765 CurrentSource = L;
34766 return SetGlobal<PT_Uint8>(S, OpPC, A0);
34767}
34768bool EvalEmitter::emitSetGlobalSint16( uint32_t A0, SourceInfo L) {
34769 if (!isActive()) return true;
34770 CurrentSource = L;
34771 return SetGlobal<PT_Sint16>(S, OpPC, A0);
34772}
34773bool EvalEmitter::emitSetGlobalUint16( uint32_t A0, SourceInfo L) {
34774 if (!isActive()) return true;
34775 CurrentSource = L;
34776 return SetGlobal<PT_Uint16>(S, OpPC, A0);
34777}
34778bool EvalEmitter::emitSetGlobalSint32( uint32_t A0, SourceInfo L) {
34779 if (!isActive()) return true;
34780 CurrentSource = L;
34781 return SetGlobal<PT_Sint32>(S, OpPC, A0);
34782}
34783bool EvalEmitter::emitSetGlobalUint32( uint32_t A0, SourceInfo L) {
34784 if (!isActive()) return true;
34785 CurrentSource = L;
34786 return SetGlobal<PT_Uint32>(S, OpPC, A0);
34787}
34788bool EvalEmitter::emitSetGlobalSint64( uint32_t A0, SourceInfo L) {
34789 if (!isActive()) return true;
34790 CurrentSource = L;
34791 return SetGlobal<PT_Sint64>(S, OpPC, A0);
34792}
34793bool EvalEmitter::emitSetGlobalUint64( uint32_t A0, SourceInfo L) {
34794 if (!isActive()) return true;
34795 CurrentSource = L;
34796 return SetGlobal<PT_Uint64>(S, OpPC, A0);
34797}
34798bool EvalEmitter::emitSetGlobalIntAP( uint32_t A0, SourceInfo L) {
34799 if (!isActive()) return true;
34800 CurrentSource = L;
34801 return SetGlobal<PT_IntAP>(S, OpPC, A0);
34802}
34803bool EvalEmitter::emitSetGlobalIntAPS( uint32_t A0, SourceInfo L) {
34804 if (!isActive()) return true;
34805 CurrentSource = L;
34806 return SetGlobal<PT_IntAPS>(S, OpPC, A0);
34807}
34808bool EvalEmitter::emitSetGlobalBool( uint32_t A0, SourceInfo L) {
34809 if (!isActive()) return true;
34810 CurrentSource = L;
34811 return SetGlobal<PT_Bool>(S, OpPC, A0);
34812}
34813bool EvalEmitter::emitSetGlobalFixedPoint( uint32_t A0, SourceInfo L) {
34814 if (!isActive()) return true;
34815 CurrentSource = L;
34816 return SetGlobal<PT_FixedPoint>(S, OpPC, A0);
34817}
34818bool EvalEmitter::emitSetGlobalPtr( uint32_t A0, SourceInfo L) {
34819 if (!isActive()) return true;
34820 CurrentSource = L;
34821 return SetGlobal<PT_Ptr>(S, OpPC, A0);
34822}
34823bool EvalEmitter::emitSetGlobalMemberPtr( uint32_t A0, SourceInfo L) {
34824 if (!isActive()) return true;
34825 CurrentSource = L;
34826 return SetGlobal<PT_MemberPtr>(S, OpPC, A0);
34827}
34828bool EvalEmitter::emitSetGlobalFloat( uint32_t A0, SourceInfo L) {
34829 if (!isActive()) return true;
34830 CurrentSource = L;
34831 return SetGlobal<PT_Float>(S, OpPC, A0);
34832}
34833#endif
34834#ifdef GET_OPCODE_NAMES
34835OP_SetLocalSint8,
34836OP_SetLocalUint8,
34837OP_SetLocalSint16,
34838OP_SetLocalUint16,
34839OP_SetLocalSint32,
34840OP_SetLocalUint32,
34841OP_SetLocalSint64,
34842OP_SetLocalUint64,
34843OP_SetLocalIntAP,
34844OP_SetLocalIntAPS,
34845OP_SetLocalBool,
34846OP_SetLocalFixedPoint,
34847OP_SetLocalPtr,
34848OP_SetLocalMemberPtr,
34849OP_SetLocalFloat,
34850#endif
34851#ifdef GET_INTERP
34852case OP_SetLocalSint8: {
34853 const auto V0 = ReadArg<uint32_t>(S, PC);
34854 if (!SetLocal<PT_Sint8>(S, OpPC, V0))
34855 return false;
34856 continue;
34857}
34858case OP_SetLocalUint8: {
34859 const auto V0 = ReadArg<uint32_t>(S, PC);
34860 if (!SetLocal<PT_Uint8>(S, OpPC, V0))
34861 return false;
34862 continue;
34863}
34864case OP_SetLocalSint16: {
34865 const auto V0 = ReadArg<uint32_t>(S, PC);
34866 if (!SetLocal<PT_Sint16>(S, OpPC, V0))
34867 return false;
34868 continue;
34869}
34870case OP_SetLocalUint16: {
34871 const auto V0 = ReadArg<uint32_t>(S, PC);
34872 if (!SetLocal<PT_Uint16>(S, OpPC, V0))
34873 return false;
34874 continue;
34875}
34876case OP_SetLocalSint32: {
34877 const auto V0 = ReadArg<uint32_t>(S, PC);
34878 if (!SetLocal<PT_Sint32>(S, OpPC, V0))
34879 return false;
34880 continue;
34881}
34882case OP_SetLocalUint32: {
34883 const auto V0 = ReadArg<uint32_t>(S, PC);
34884 if (!SetLocal<PT_Uint32>(S, OpPC, V0))
34885 return false;
34886 continue;
34887}
34888case OP_SetLocalSint64: {
34889 const auto V0 = ReadArg<uint32_t>(S, PC);
34890 if (!SetLocal<PT_Sint64>(S, OpPC, V0))
34891 return false;
34892 continue;
34893}
34894case OP_SetLocalUint64: {
34895 const auto V0 = ReadArg<uint32_t>(S, PC);
34896 if (!SetLocal<PT_Uint64>(S, OpPC, V0))
34897 return false;
34898 continue;
34899}
34900case OP_SetLocalIntAP: {
34901 const auto V0 = ReadArg<uint32_t>(S, PC);
34902 if (!SetLocal<PT_IntAP>(S, OpPC, V0))
34903 return false;
34904 continue;
34905}
34906case OP_SetLocalIntAPS: {
34907 const auto V0 = ReadArg<uint32_t>(S, PC);
34908 if (!SetLocal<PT_IntAPS>(S, OpPC, V0))
34909 return false;
34910 continue;
34911}
34912case OP_SetLocalBool: {
34913 const auto V0 = ReadArg<uint32_t>(S, PC);
34914 if (!SetLocal<PT_Bool>(S, OpPC, V0))
34915 return false;
34916 continue;
34917}
34918case OP_SetLocalFixedPoint: {
34919 const auto V0 = ReadArg<uint32_t>(S, PC);
34920 if (!SetLocal<PT_FixedPoint>(S, OpPC, V0))
34921 return false;
34922 continue;
34923}
34924case OP_SetLocalPtr: {
34925 const auto V0 = ReadArg<uint32_t>(S, PC);
34926 if (!SetLocal<PT_Ptr>(S, OpPC, V0))
34927 return false;
34928 continue;
34929}
34930case OP_SetLocalMemberPtr: {
34931 const auto V0 = ReadArg<uint32_t>(S, PC);
34932 if (!SetLocal<PT_MemberPtr>(S, OpPC, V0))
34933 return false;
34934 continue;
34935}
34936case OP_SetLocalFloat: {
34937 const auto V0 = ReadArg<uint32_t>(S, PC);
34938 if (!SetLocal<PT_Float>(S, OpPC, V0))
34939 return false;
34940 continue;
34941}
34942#endif
34943#ifdef GET_DISASM
34944case OP_SetLocalSint8:
34945 Text.Op = PrintName("SetLocalSint8");
34946 Text.Args.push_back(printArg<uint32_t>(P, PC));
34947 break;
34948case OP_SetLocalUint8:
34949 Text.Op = PrintName("SetLocalUint8");
34950 Text.Args.push_back(printArg<uint32_t>(P, PC));
34951 break;
34952case OP_SetLocalSint16:
34953 Text.Op = PrintName("SetLocalSint16");
34954 Text.Args.push_back(printArg<uint32_t>(P, PC));
34955 break;
34956case OP_SetLocalUint16:
34957 Text.Op = PrintName("SetLocalUint16");
34958 Text.Args.push_back(printArg<uint32_t>(P, PC));
34959 break;
34960case OP_SetLocalSint32:
34961 Text.Op = PrintName("SetLocalSint32");
34962 Text.Args.push_back(printArg<uint32_t>(P, PC));
34963 break;
34964case OP_SetLocalUint32:
34965 Text.Op = PrintName("SetLocalUint32");
34966 Text.Args.push_back(printArg<uint32_t>(P, PC));
34967 break;
34968case OP_SetLocalSint64:
34969 Text.Op = PrintName("SetLocalSint64");
34970 Text.Args.push_back(printArg<uint32_t>(P, PC));
34971 break;
34972case OP_SetLocalUint64:
34973 Text.Op = PrintName("SetLocalUint64");
34974 Text.Args.push_back(printArg<uint32_t>(P, PC));
34975 break;
34976case OP_SetLocalIntAP:
34977 Text.Op = PrintName("SetLocalIntAP");
34978 Text.Args.push_back(printArg<uint32_t>(P, PC));
34979 break;
34980case OP_SetLocalIntAPS:
34981 Text.Op = PrintName("SetLocalIntAPS");
34982 Text.Args.push_back(printArg<uint32_t>(P, PC));
34983 break;
34984case OP_SetLocalBool:
34985 Text.Op = PrintName("SetLocalBool");
34986 Text.Args.push_back(printArg<uint32_t>(P, PC));
34987 break;
34988case OP_SetLocalFixedPoint:
34989 Text.Op = PrintName("SetLocalFixedPoint");
34990 Text.Args.push_back(printArg<uint32_t>(P, PC));
34991 break;
34992case OP_SetLocalPtr:
34993 Text.Op = PrintName("SetLocalPtr");
34994 Text.Args.push_back(printArg<uint32_t>(P, PC));
34995 break;
34996case OP_SetLocalMemberPtr:
34997 Text.Op = PrintName("SetLocalMemberPtr");
34998 Text.Args.push_back(printArg<uint32_t>(P, PC));
34999 break;
35000case OP_SetLocalFloat:
35001 Text.Op = PrintName("SetLocalFloat");
35002 Text.Args.push_back(printArg<uint32_t>(P, PC));
35003 break;
35004#endif
35005#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35006bool emitSetLocalSint8( uint32_t , SourceInfo);
35007bool emitSetLocalUint8( uint32_t , SourceInfo);
35008bool emitSetLocalSint16( uint32_t , SourceInfo);
35009bool emitSetLocalUint16( uint32_t , SourceInfo);
35010bool emitSetLocalSint32( uint32_t , SourceInfo);
35011bool emitSetLocalUint32( uint32_t , SourceInfo);
35012bool emitSetLocalSint64( uint32_t , SourceInfo);
35013bool emitSetLocalUint64( uint32_t , SourceInfo);
35014bool emitSetLocalIntAP( uint32_t , SourceInfo);
35015bool emitSetLocalIntAPS( uint32_t , SourceInfo);
35016bool emitSetLocalBool( uint32_t , SourceInfo);
35017bool emitSetLocalFixedPoint( uint32_t , SourceInfo);
35018bool emitSetLocalPtr( uint32_t , SourceInfo);
35019bool emitSetLocalMemberPtr( uint32_t , SourceInfo);
35020bool emitSetLocalFloat( uint32_t , SourceInfo);
35021#if defined(GET_EVAL_PROTO)
35022template<PrimType>
35023bool emitSetLocal(uint32_t, SourceInfo);
35024#endif
35025#endif
35026#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35027[[nodiscard]] bool emitSetLocal(PrimType, uint32_t, SourceInfo I);
35028#endif
35029#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35030bool
35031#if defined(GET_EVAL_IMPL)
35032EvalEmitter
35033#else
35034ByteCodeEmitter
35035#endif
35036::emitSetLocal(PrimType T0, uint32_t A0, SourceInfo I) {
35037 switch (T0) {
35038 case PT_Sint8:
35039#ifdef GET_LINK_IMPL
35040 return emitSetLocalSint8
35041#else
35042 return emitSetLocal<PT_Sint8>
35043#endif
35044 (A0, I);
35045 case PT_Uint8:
35046#ifdef GET_LINK_IMPL
35047 return emitSetLocalUint8
35048#else
35049 return emitSetLocal<PT_Uint8>
35050#endif
35051 (A0, I);
35052 case PT_Sint16:
35053#ifdef GET_LINK_IMPL
35054 return emitSetLocalSint16
35055#else
35056 return emitSetLocal<PT_Sint16>
35057#endif
35058 (A0, I);
35059 case PT_Uint16:
35060#ifdef GET_LINK_IMPL
35061 return emitSetLocalUint16
35062#else
35063 return emitSetLocal<PT_Uint16>
35064#endif
35065 (A0, I);
35066 case PT_Sint32:
35067#ifdef GET_LINK_IMPL
35068 return emitSetLocalSint32
35069#else
35070 return emitSetLocal<PT_Sint32>
35071#endif
35072 (A0, I);
35073 case PT_Uint32:
35074#ifdef GET_LINK_IMPL
35075 return emitSetLocalUint32
35076#else
35077 return emitSetLocal<PT_Uint32>
35078#endif
35079 (A0, I);
35080 case PT_Sint64:
35081#ifdef GET_LINK_IMPL
35082 return emitSetLocalSint64
35083#else
35084 return emitSetLocal<PT_Sint64>
35085#endif
35086 (A0, I);
35087 case PT_Uint64:
35088#ifdef GET_LINK_IMPL
35089 return emitSetLocalUint64
35090#else
35091 return emitSetLocal<PT_Uint64>
35092#endif
35093 (A0, I);
35094 case PT_IntAP:
35095#ifdef GET_LINK_IMPL
35096 return emitSetLocalIntAP
35097#else
35098 return emitSetLocal<PT_IntAP>
35099#endif
35100 (A0, I);
35101 case PT_IntAPS:
35102#ifdef GET_LINK_IMPL
35103 return emitSetLocalIntAPS
35104#else
35105 return emitSetLocal<PT_IntAPS>
35106#endif
35107 (A0, I);
35108 case PT_Bool:
35109#ifdef GET_LINK_IMPL
35110 return emitSetLocalBool
35111#else
35112 return emitSetLocal<PT_Bool>
35113#endif
35114 (A0, I);
35115 case PT_FixedPoint:
35116#ifdef GET_LINK_IMPL
35117 return emitSetLocalFixedPoint
35118#else
35119 return emitSetLocal<PT_FixedPoint>
35120#endif
35121 (A0, I);
35122 case PT_Ptr:
35123#ifdef GET_LINK_IMPL
35124 return emitSetLocalPtr
35125#else
35126 return emitSetLocal<PT_Ptr>
35127#endif
35128 (A0, I);
35129 case PT_MemberPtr:
35130#ifdef GET_LINK_IMPL
35131 return emitSetLocalMemberPtr
35132#else
35133 return emitSetLocal<PT_MemberPtr>
35134#endif
35135 (A0, I);
35136 case PT_Float:
35137#ifdef GET_LINK_IMPL
35138 return emitSetLocalFloat
35139#else
35140 return emitSetLocal<PT_Float>
35141#endif
35142 (A0, I);
35143 }
35144 llvm_unreachable("invalid enum value");
35145}
35146#endif
35147#ifdef GET_LINK_IMPL
35148bool ByteCodeEmitter::emitSetLocalSint8( uint32_t A0, SourceInfo L) {
35149 return emitOp<uint32_t>(OP_SetLocalSint8, A0, L);
35150}
35151bool ByteCodeEmitter::emitSetLocalUint8( uint32_t A0, SourceInfo L) {
35152 return emitOp<uint32_t>(OP_SetLocalUint8, A0, L);
35153}
35154bool ByteCodeEmitter::emitSetLocalSint16( uint32_t A0, SourceInfo L) {
35155 return emitOp<uint32_t>(OP_SetLocalSint16, A0, L);
35156}
35157bool ByteCodeEmitter::emitSetLocalUint16( uint32_t A0, SourceInfo L) {
35158 return emitOp<uint32_t>(OP_SetLocalUint16, A0, L);
35159}
35160bool ByteCodeEmitter::emitSetLocalSint32( uint32_t A0, SourceInfo L) {
35161 return emitOp<uint32_t>(OP_SetLocalSint32, A0, L);
35162}
35163bool ByteCodeEmitter::emitSetLocalUint32( uint32_t A0, SourceInfo L) {
35164 return emitOp<uint32_t>(OP_SetLocalUint32, A0, L);
35165}
35166bool ByteCodeEmitter::emitSetLocalSint64( uint32_t A0, SourceInfo L) {
35167 return emitOp<uint32_t>(OP_SetLocalSint64, A0, L);
35168}
35169bool ByteCodeEmitter::emitSetLocalUint64( uint32_t A0, SourceInfo L) {
35170 return emitOp<uint32_t>(OP_SetLocalUint64, A0, L);
35171}
35172bool ByteCodeEmitter::emitSetLocalIntAP( uint32_t A0, SourceInfo L) {
35173 return emitOp<uint32_t>(OP_SetLocalIntAP, A0, L);
35174}
35175bool ByteCodeEmitter::emitSetLocalIntAPS( uint32_t A0, SourceInfo L) {
35176 return emitOp<uint32_t>(OP_SetLocalIntAPS, A0, L);
35177}
35178bool ByteCodeEmitter::emitSetLocalBool( uint32_t A0, SourceInfo L) {
35179 return emitOp<uint32_t>(OP_SetLocalBool, A0, L);
35180}
35181bool ByteCodeEmitter::emitSetLocalFixedPoint( uint32_t A0, SourceInfo L) {
35182 return emitOp<uint32_t>(OP_SetLocalFixedPoint, A0, L);
35183}
35184bool ByteCodeEmitter::emitSetLocalPtr( uint32_t A0, SourceInfo L) {
35185 return emitOp<uint32_t>(OP_SetLocalPtr, A0, L);
35186}
35187bool ByteCodeEmitter::emitSetLocalMemberPtr( uint32_t A0, SourceInfo L) {
35188 return emitOp<uint32_t>(OP_SetLocalMemberPtr, A0, L);
35189}
35190bool ByteCodeEmitter::emitSetLocalFloat( uint32_t A0, SourceInfo L) {
35191 return emitOp<uint32_t>(OP_SetLocalFloat, A0, L);
35192}
35193#endif
35194#ifdef GET_OPCODE_NAMES
35195OP_SetParamSint8,
35196OP_SetParamUint8,
35197OP_SetParamSint16,
35198OP_SetParamUint16,
35199OP_SetParamSint32,
35200OP_SetParamUint32,
35201OP_SetParamSint64,
35202OP_SetParamUint64,
35203OP_SetParamIntAP,
35204OP_SetParamIntAPS,
35205OP_SetParamBool,
35206OP_SetParamFixedPoint,
35207OP_SetParamPtr,
35208OP_SetParamMemberPtr,
35209OP_SetParamFloat,
35210#endif
35211#ifdef GET_INTERP
35212case OP_SetParamSint8: {
35213 const auto V0 = ReadArg<uint32_t>(S, PC);
35214 if (!SetParam<PT_Sint8>(S, OpPC, V0))
35215 return false;
35216 continue;
35217}
35218case OP_SetParamUint8: {
35219 const auto V0 = ReadArg<uint32_t>(S, PC);
35220 if (!SetParam<PT_Uint8>(S, OpPC, V0))
35221 return false;
35222 continue;
35223}
35224case OP_SetParamSint16: {
35225 const auto V0 = ReadArg<uint32_t>(S, PC);
35226 if (!SetParam<PT_Sint16>(S, OpPC, V0))
35227 return false;
35228 continue;
35229}
35230case OP_SetParamUint16: {
35231 const auto V0 = ReadArg<uint32_t>(S, PC);
35232 if (!SetParam<PT_Uint16>(S, OpPC, V0))
35233 return false;
35234 continue;
35235}
35236case OP_SetParamSint32: {
35237 const auto V0 = ReadArg<uint32_t>(S, PC);
35238 if (!SetParam<PT_Sint32>(S, OpPC, V0))
35239 return false;
35240 continue;
35241}
35242case OP_SetParamUint32: {
35243 const auto V0 = ReadArg<uint32_t>(S, PC);
35244 if (!SetParam<PT_Uint32>(S, OpPC, V0))
35245 return false;
35246 continue;
35247}
35248case OP_SetParamSint64: {
35249 const auto V0 = ReadArg<uint32_t>(S, PC);
35250 if (!SetParam<PT_Sint64>(S, OpPC, V0))
35251 return false;
35252 continue;
35253}
35254case OP_SetParamUint64: {
35255 const auto V0 = ReadArg<uint32_t>(S, PC);
35256 if (!SetParam<PT_Uint64>(S, OpPC, V0))
35257 return false;
35258 continue;
35259}
35260case OP_SetParamIntAP: {
35261 const auto V0 = ReadArg<uint32_t>(S, PC);
35262 if (!SetParam<PT_IntAP>(S, OpPC, V0))
35263 return false;
35264 continue;
35265}
35266case OP_SetParamIntAPS: {
35267 const auto V0 = ReadArg<uint32_t>(S, PC);
35268 if (!SetParam<PT_IntAPS>(S, OpPC, V0))
35269 return false;
35270 continue;
35271}
35272case OP_SetParamBool: {
35273 const auto V0 = ReadArg<uint32_t>(S, PC);
35274 if (!SetParam<PT_Bool>(S, OpPC, V0))
35275 return false;
35276 continue;
35277}
35278case OP_SetParamFixedPoint: {
35279 const auto V0 = ReadArg<uint32_t>(S, PC);
35280 if (!SetParam<PT_FixedPoint>(S, OpPC, V0))
35281 return false;
35282 continue;
35283}
35284case OP_SetParamPtr: {
35285 const auto V0 = ReadArg<uint32_t>(S, PC);
35286 if (!SetParam<PT_Ptr>(S, OpPC, V0))
35287 return false;
35288 continue;
35289}
35290case OP_SetParamMemberPtr: {
35291 const auto V0 = ReadArg<uint32_t>(S, PC);
35292 if (!SetParam<PT_MemberPtr>(S, OpPC, V0))
35293 return false;
35294 continue;
35295}
35296case OP_SetParamFloat: {
35297 const auto V0 = ReadArg<uint32_t>(S, PC);
35298 if (!SetParam<PT_Float>(S, OpPC, V0))
35299 return false;
35300 continue;
35301}
35302#endif
35303#ifdef GET_DISASM
35304case OP_SetParamSint8:
35305 Text.Op = PrintName("SetParamSint8");
35306 Text.Args.push_back(printArg<uint32_t>(P, PC));
35307 break;
35308case OP_SetParamUint8:
35309 Text.Op = PrintName("SetParamUint8");
35310 Text.Args.push_back(printArg<uint32_t>(P, PC));
35311 break;
35312case OP_SetParamSint16:
35313 Text.Op = PrintName("SetParamSint16");
35314 Text.Args.push_back(printArg<uint32_t>(P, PC));
35315 break;
35316case OP_SetParamUint16:
35317 Text.Op = PrintName("SetParamUint16");
35318 Text.Args.push_back(printArg<uint32_t>(P, PC));
35319 break;
35320case OP_SetParamSint32:
35321 Text.Op = PrintName("SetParamSint32");
35322 Text.Args.push_back(printArg<uint32_t>(P, PC));
35323 break;
35324case OP_SetParamUint32:
35325 Text.Op = PrintName("SetParamUint32");
35326 Text.Args.push_back(printArg<uint32_t>(P, PC));
35327 break;
35328case OP_SetParamSint64:
35329 Text.Op = PrintName("SetParamSint64");
35330 Text.Args.push_back(printArg<uint32_t>(P, PC));
35331 break;
35332case OP_SetParamUint64:
35333 Text.Op = PrintName("SetParamUint64");
35334 Text.Args.push_back(printArg<uint32_t>(P, PC));
35335 break;
35336case OP_SetParamIntAP:
35337 Text.Op = PrintName("SetParamIntAP");
35338 Text.Args.push_back(printArg<uint32_t>(P, PC));
35339 break;
35340case OP_SetParamIntAPS:
35341 Text.Op = PrintName("SetParamIntAPS");
35342 Text.Args.push_back(printArg<uint32_t>(P, PC));
35343 break;
35344case OP_SetParamBool:
35345 Text.Op = PrintName("SetParamBool");
35346 Text.Args.push_back(printArg<uint32_t>(P, PC));
35347 break;
35348case OP_SetParamFixedPoint:
35349 Text.Op = PrintName("SetParamFixedPoint");
35350 Text.Args.push_back(printArg<uint32_t>(P, PC));
35351 break;
35352case OP_SetParamPtr:
35353 Text.Op = PrintName("SetParamPtr");
35354 Text.Args.push_back(printArg<uint32_t>(P, PC));
35355 break;
35356case OP_SetParamMemberPtr:
35357 Text.Op = PrintName("SetParamMemberPtr");
35358 Text.Args.push_back(printArg<uint32_t>(P, PC));
35359 break;
35360case OP_SetParamFloat:
35361 Text.Op = PrintName("SetParamFloat");
35362 Text.Args.push_back(printArg<uint32_t>(P, PC));
35363 break;
35364#endif
35365#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35366bool emitSetParamSint8( uint32_t , SourceInfo);
35367bool emitSetParamUint8( uint32_t , SourceInfo);
35368bool emitSetParamSint16( uint32_t , SourceInfo);
35369bool emitSetParamUint16( uint32_t , SourceInfo);
35370bool emitSetParamSint32( uint32_t , SourceInfo);
35371bool emitSetParamUint32( uint32_t , SourceInfo);
35372bool emitSetParamSint64( uint32_t , SourceInfo);
35373bool emitSetParamUint64( uint32_t , SourceInfo);
35374bool emitSetParamIntAP( uint32_t , SourceInfo);
35375bool emitSetParamIntAPS( uint32_t , SourceInfo);
35376bool emitSetParamBool( uint32_t , SourceInfo);
35377bool emitSetParamFixedPoint( uint32_t , SourceInfo);
35378bool emitSetParamPtr( uint32_t , SourceInfo);
35379bool emitSetParamMemberPtr( uint32_t , SourceInfo);
35380bool emitSetParamFloat( uint32_t , SourceInfo);
35381#endif
35382#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35383[[nodiscard]] bool emitSetParam(PrimType, uint32_t, SourceInfo I);
35384#endif
35385#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35386bool
35387#if defined(GET_EVAL_IMPL)
35388EvalEmitter
35389#else
35390ByteCodeEmitter
35391#endif
35392::emitSetParam(PrimType T0, uint32_t A0, SourceInfo I) {
35393 switch (T0) {
35394 case PT_Sint8:
35395 return emitSetParamSint8(A0, I);
35396 case PT_Uint8:
35397 return emitSetParamUint8(A0, I);
35398 case PT_Sint16:
35399 return emitSetParamSint16(A0, I);
35400 case PT_Uint16:
35401 return emitSetParamUint16(A0, I);
35402 case PT_Sint32:
35403 return emitSetParamSint32(A0, I);
35404 case PT_Uint32:
35405 return emitSetParamUint32(A0, I);
35406 case PT_Sint64:
35407 return emitSetParamSint64(A0, I);
35408 case PT_Uint64:
35409 return emitSetParamUint64(A0, I);
35410 case PT_IntAP:
35411 return emitSetParamIntAP(A0, I);
35412 case PT_IntAPS:
35413 return emitSetParamIntAPS(A0, I);
35414 case PT_Bool:
35415 return emitSetParamBool(A0, I);
35416 case PT_FixedPoint:
35417 return emitSetParamFixedPoint(A0, I);
35418 case PT_Ptr:
35419 return emitSetParamPtr(A0, I);
35420 case PT_MemberPtr:
35421 return emitSetParamMemberPtr(A0, I);
35422 case PT_Float:
35423 return emitSetParamFloat(A0, I);
35424 }
35425 llvm_unreachable("invalid enum value");
35426}
35427#endif
35428#ifdef GET_LINK_IMPL
35429bool ByteCodeEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
35430 return emitOp<uint32_t>(OP_SetParamSint8, A0, L);
35431}
35432bool ByteCodeEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
35433 return emitOp<uint32_t>(OP_SetParamUint8, A0, L);
35434}
35435bool ByteCodeEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
35436 return emitOp<uint32_t>(OP_SetParamSint16, A0, L);
35437}
35438bool ByteCodeEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
35439 return emitOp<uint32_t>(OP_SetParamUint16, A0, L);
35440}
35441bool ByteCodeEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
35442 return emitOp<uint32_t>(OP_SetParamSint32, A0, L);
35443}
35444bool ByteCodeEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
35445 return emitOp<uint32_t>(OP_SetParamUint32, A0, L);
35446}
35447bool ByteCodeEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
35448 return emitOp<uint32_t>(OP_SetParamSint64, A0, L);
35449}
35450bool ByteCodeEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
35451 return emitOp<uint32_t>(OP_SetParamUint64, A0, L);
35452}
35453bool ByteCodeEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
35454 return emitOp<uint32_t>(OP_SetParamIntAP, A0, L);
35455}
35456bool ByteCodeEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
35457 return emitOp<uint32_t>(OP_SetParamIntAPS, A0, L);
35458}
35459bool ByteCodeEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
35460 return emitOp<uint32_t>(OP_SetParamBool, A0, L);
35461}
35462bool ByteCodeEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
35463 return emitOp<uint32_t>(OP_SetParamFixedPoint, A0, L);
35464}
35465bool ByteCodeEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
35466 return emitOp<uint32_t>(OP_SetParamPtr, A0, L);
35467}
35468bool ByteCodeEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
35469 return emitOp<uint32_t>(OP_SetParamMemberPtr, A0, L);
35470}
35471bool ByteCodeEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
35472 return emitOp<uint32_t>(OP_SetParamFloat, A0, L);
35473}
35474#endif
35475#ifdef GET_EVAL_IMPL
35476bool EvalEmitter::emitSetParamSint8( uint32_t A0, SourceInfo L) {
35477 if (!isActive()) return true;
35478 CurrentSource = L;
35479 return SetParam<PT_Sint8>(S, OpPC, A0);
35480}
35481bool EvalEmitter::emitSetParamUint8( uint32_t A0, SourceInfo L) {
35482 if (!isActive()) return true;
35483 CurrentSource = L;
35484 return SetParam<PT_Uint8>(S, OpPC, A0);
35485}
35486bool EvalEmitter::emitSetParamSint16( uint32_t A0, SourceInfo L) {
35487 if (!isActive()) return true;
35488 CurrentSource = L;
35489 return SetParam<PT_Sint16>(S, OpPC, A0);
35490}
35491bool EvalEmitter::emitSetParamUint16( uint32_t A0, SourceInfo L) {
35492 if (!isActive()) return true;
35493 CurrentSource = L;
35494 return SetParam<PT_Uint16>(S, OpPC, A0);
35495}
35496bool EvalEmitter::emitSetParamSint32( uint32_t A0, SourceInfo L) {
35497 if (!isActive()) return true;
35498 CurrentSource = L;
35499 return SetParam<PT_Sint32>(S, OpPC, A0);
35500}
35501bool EvalEmitter::emitSetParamUint32( uint32_t A0, SourceInfo L) {
35502 if (!isActive()) return true;
35503 CurrentSource = L;
35504 return SetParam<PT_Uint32>(S, OpPC, A0);
35505}
35506bool EvalEmitter::emitSetParamSint64( uint32_t A0, SourceInfo L) {
35507 if (!isActive()) return true;
35508 CurrentSource = L;
35509 return SetParam<PT_Sint64>(S, OpPC, A0);
35510}
35511bool EvalEmitter::emitSetParamUint64( uint32_t A0, SourceInfo L) {
35512 if (!isActive()) return true;
35513 CurrentSource = L;
35514 return SetParam<PT_Uint64>(S, OpPC, A0);
35515}
35516bool EvalEmitter::emitSetParamIntAP( uint32_t A0, SourceInfo L) {
35517 if (!isActive()) return true;
35518 CurrentSource = L;
35519 return SetParam<PT_IntAP>(S, OpPC, A0);
35520}
35521bool EvalEmitter::emitSetParamIntAPS( uint32_t A0, SourceInfo L) {
35522 if (!isActive()) return true;
35523 CurrentSource = L;
35524 return SetParam<PT_IntAPS>(S, OpPC, A0);
35525}
35526bool EvalEmitter::emitSetParamBool( uint32_t A0, SourceInfo L) {
35527 if (!isActive()) return true;
35528 CurrentSource = L;
35529 return SetParam<PT_Bool>(S, OpPC, A0);
35530}
35531bool EvalEmitter::emitSetParamFixedPoint( uint32_t A0, SourceInfo L) {
35532 if (!isActive()) return true;
35533 CurrentSource = L;
35534 return SetParam<PT_FixedPoint>(S, OpPC, A0);
35535}
35536bool EvalEmitter::emitSetParamPtr( uint32_t A0, SourceInfo L) {
35537 if (!isActive()) return true;
35538 CurrentSource = L;
35539 return SetParam<PT_Ptr>(S, OpPC, A0);
35540}
35541bool EvalEmitter::emitSetParamMemberPtr( uint32_t A0, SourceInfo L) {
35542 if (!isActive()) return true;
35543 CurrentSource = L;
35544 return SetParam<PT_MemberPtr>(S, OpPC, A0);
35545}
35546bool EvalEmitter::emitSetParamFloat( uint32_t A0, SourceInfo L) {
35547 if (!isActive()) return true;
35548 CurrentSource = L;
35549 return SetParam<PT_Float>(S, OpPC, A0);
35550}
35551#endif
35552#ifdef GET_OPCODE_NAMES
35553OP_SetThisFieldSint8,
35554OP_SetThisFieldUint8,
35555OP_SetThisFieldSint16,
35556OP_SetThisFieldUint16,
35557OP_SetThisFieldSint32,
35558OP_SetThisFieldUint32,
35559OP_SetThisFieldSint64,
35560OP_SetThisFieldUint64,
35561OP_SetThisFieldIntAP,
35562OP_SetThisFieldIntAPS,
35563OP_SetThisFieldBool,
35564OP_SetThisFieldFixedPoint,
35565OP_SetThisFieldPtr,
35566OP_SetThisFieldMemberPtr,
35567OP_SetThisFieldFloat,
35568#endif
35569#ifdef GET_INTERP
35570case OP_SetThisFieldSint8: {
35571 const auto V0 = ReadArg<uint32_t>(S, PC);
35572 if (!SetThisField<PT_Sint8>(S, OpPC, V0))
35573 return false;
35574 continue;
35575}
35576case OP_SetThisFieldUint8: {
35577 const auto V0 = ReadArg<uint32_t>(S, PC);
35578 if (!SetThisField<PT_Uint8>(S, OpPC, V0))
35579 return false;
35580 continue;
35581}
35582case OP_SetThisFieldSint16: {
35583 const auto V0 = ReadArg<uint32_t>(S, PC);
35584 if (!SetThisField<PT_Sint16>(S, OpPC, V0))
35585 return false;
35586 continue;
35587}
35588case OP_SetThisFieldUint16: {
35589 const auto V0 = ReadArg<uint32_t>(S, PC);
35590 if (!SetThisField<PT_Uint16>(S, OpPC, V0))
35591 return false;
35592 continue;
35593}
35594case OP_SetThisFieldSint32: {
35595 const auto V0 = ReadArg<uint32_t>(S, PC);
35596 if (!SetThisField<PT_Sint32>(S, OpPC, V0))
35597 return false;
35598 continue;
35599}
35600case OP_SetThisFieldUint32: {
35601 const auto V0 = ReadArg<uint32_t>(S, PC);
35602 if (!SetThisField<PT_Uint32>(S, OpPC, V0))
35603 return false;
35604 continue;
35605}
35606case OP_SetThisFieldSint64: {
35607 const auto V0 = ReadArg<uint32_t>(S, PC);
35608 if (!SetThisField<PT_Sint64>(S, OpPC, V0))
35609 return false;
35610 continue;
35611}
35612case OP_SetThisFieldUint64: {
35613 const auto V0 = ReadArg<uint32_t>(S, PC);
35614 if (!SetThisField<PT_Uint64>(S, OpPC, V0))
35615 return false;
35616 continue;
35617}
35618case OP_SetThisFieldIntAP: {
35619 const auto V0 = ReadArg<uint32_t>(S, PC);
35620 if (!SetThisField<PT_IntAP>(S, OpPC, V0))
35621 return false;
35622 continue;
35623}
35624case OP_SetThisFieldIntAPS: {
35625 const auto V0 = ReadArg<uint32_t>(S, PC);
35626 if (!SetThisField<PT_IntAPS>(S, OpPC, V0))
35627 return false;
35628 continue;
35629}
35630case OP_SetThisFieldBool: {
35631 const auto V0 = ReadArg<uint32_t>(S, PC);
35632 if (!SetThisField<PT_Bool>(S, OpPC, V0))
35633 return false;
35634 continue;
35635}
35636case OP_SetThisFieldFixedPoint: {
35637 const auto V0 = ReadArg<uint32_t>(S, PC);
35638 if (!SetThisField<PT_FixedPoint>(S, OpPC, V0))
35639 return false;
35640 continue;
35641}
35642case OP_SetThisFieldPtr: {
35643 const auto V0 = ReadArg<uint32_t>(S, PC);
35644 if (!SetThisField<PT_Ptr>(S, OpPC, V0))
35645 return false;
35646 continue;
35647}
35648case OP_SetThisFieldMemberPtr: {
35649 const auto V0 = ReadArg<uint32_t>(S, PC);
35650 if (!SetThisField<PT_MemberPtr>(S, OpPC, V0))
35651 return false;
35652 continue;
35653}
35654case OP_SetThisFieldFloat: {
35655 const auto V0 = ReadArg<uint32_t>(S, PC);
35656 if (!SetThisField<PT_Float>(S, OpPC, V0))
35657 return false;
35658 continue;
35659}
35660#endif
35661#ifdef GET_DISASM
35662case OP_SetThisFieldSint8:
35663 Text.Op = PrintName("SetThisFieldSint8");
35664 Text.Args.push_back(printArg<uint32_t>(P, PC));
35665 break;
35666case OP_SetThisFieldUint8:
35667 Text.Op = PrintName("SetThisFieldUint8");
35668 Text.Args.push_back(printArg<uint32_t>(P, PC));
35669 break;
35670case OP_SetThisFieldSint16:
35671 Text.Op = PrintName("SetThisFieldSint16");
35672 Text.Args.push_back(printArg<uint32_t>(P, PC));
35673 break;
35674case OP_SetThisFieldUint16:
35675 Text.Op = PrintName("SetThisFieldUint16");
35676 Text.Args.push_back(printArg<uint32_t>(P, PC));
35677 break;
35678case OP_SetThisFieldSint32:
35679 Text.Op = PrintName("SetThisFieldSint32");
35680 Text.Args.push_back(printArg<uint32_t>(P, PC));
35681 break;
35682case OP_SetThisFieldUint32:
35683 Text.Op = PrintName("SetThisFieldUint32");
35684 Text.Args.push_back(printArg<uint32_t>(P, PC));
35685 break;
35686case OP_SetThisFieldSint64:
35687 Text.Op = PrintName("SetThisFieldSint64");
35688 Text.Args.push_back(printArg<uint32_t>(P, PC));
35689 break;
35690case OP_SetThisFieldUint64:
35691 Text.Op = PrintName("SetThisFieldUint64");
35692 Text.Args.push_back(printArg<uint32_t>(P, PC));
35693 break;
35694case OP_SetThisFieldIntAP:
35695 Text.Op = PrintName("SetThisFieldIntAP");
35696 Text.Args.push_back(printArg<uint32_t>(P, PC));
35697 break;
35698case OP_SetThisFieldIntAPS:
35699 Text.Op = PrintName("SetThisFieldIntAPS");
35700 Text.Args.push_back(printArg<uint32_t>(P, PC));
35701 break;
35702case OP_SetThisFieldBool:
35703 Text.Op = PrintName("SetThisFieldBool");
35704 Text.Args.push_back(printArg<uint32_t>(P, PC));
35705 break;
35706case OP_SetThisFieldFixedPoint:
35707 Text.Op = PrintName("SetThisFieldFixedPoint");
35708 Text.Args.push_back(printArg<uint32_t>(P, PC));
35709 break;
35710case OP_SetThisFieldPtr:
35711 Text.Op = PrintName("SetThisFieldPtr");
35712 Text.Args.push_back(printArg<uint32_t>(P, PC));
35713 break;
35714case OP_SetThisFieldMemberPtr:
35715 Text.Op = PrintName("SetThisFieldMemberPtr");
35716 Text.Args.push_back(printArg<uint32_t>(P, PC));
35717 break;
35718case OP_SetThisFieldFloat:
35719 Text.Op = PrintName("SetThisFieldFloat");
35720 Text.Args.push_back(printArg<uint32_t>(P, PC));
35721 break;
35722#endif
35723#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35724bool emitSetThisFieldSint8( uint32_t , SourceInfo);
35725bool emitSetThisFieldUint8( uint32_t , SourceInfo);
35726bool emitSetThisFieldSint16( uint32_t , SourceInfo);
35727bool emitSetThisFieldUint16( uint32_t , SourceInfo);
35728bool emitSetThisFieldSint32( uint32_t , SourceInfo);
35729bool emitSetThisFieldUint32( uint32_t , SourceInfo);
35730bool emitSetThisFieldSint64( uint32_t , SourceInfo);
35731bool emitSetThisFieldUint64( uint32_t , SourceInfo);
35732bool emitSetThisFieldIntAP( uint32_t , SourceInfo);
35733bool emitSetThisFieldIntAPS( uint32_t , SourceInfo);
35734bool emitSetThisFieldBool( uint32_t , SourceInfo);
35735bool emitSetThisFieldFixedPoint( uint32_t , SourceInfo);
35736bool emitSetThisFieldPtr( uint32_t , SourceInfo);
35737bool emitSetThisFieldMemberPtr( uint32_t , SourceInfo);
35738bool emitSetThisFieldFloat( uint32_t , SourceInfo);
35739#endif
35740#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35741[[nodiscard]] bool emitSetThisField(PrimType, uint32_t, SourceInfo I);
35742#endif
35743#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
35744bool
35745#if defined(GET_EVAL_IMPL)
35746EvalEmitter
35747#else
35748ByteCodeEmitter
35749#endif
35750::emitSetThisField(PrimType T0, uint32_t A0, SourceInfo I) {
35751 switch (T0) {
35752 case PT_Sint8:
35753 return emitSetThisFieldSint8(A0, I);
35754 case PT_Uint8:
35755 return emitSetThisFieldUint8(A0, I);
35756 case PT_Sint16:
35757 return emitSetThisFieldSint16(A0, I);
35758 case PT_Uint16:
35759 return emitSetThisFieldUint16(A0, I);
35760 case PT_Sint32:
35761 return emitSetThisFieldSint32(A0, I);
35762 case PT_Uint32:
35763 return emitSetThisFieldUint32(A0, I);
35764 case PT_Sint64:
35765 return emitSetThisFieldSint64(A0, I);
35766 case PT_Uint64:
35767 return emitSetThisFieldUint64(A0, I);
35768 case PT_IntAP:
35769 return emitSetThisFieldIntAP(A0, I);
35770 case PT_IntAPS:
35771 return emitSetThisFieldIntAPS(A0, I);
35772 case PT_Bool:
35773 return emitSetThisFieldBool(A0, I);
35774 case PT_FixedPoint:
35775 return emitSetThisFieldFixedPoint(A0, I);
35776 case PT_Ptr:
35777 return emitSetThisFieldPtr(A0, I);
35778 case PT_MemberPtr:
35779 return emitSetThisFieldMemberPtr(A0, I);
35780 case PT_Float:
35781 return emitSetThisFieldFloat(A0, I);
35782 }
35783 llvm_unreachable("invalid enum value");
35784}
35785#endif
35786#ifdef GET_LINK_IMPL
35787bool ByteCodeEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
35788 return emitOp<uint32_t>(OP_SetThisFieldSint8, A0, L);
35789}
35790bool ByteCodeEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
35791 return emitOp<uint32_t>(OP_SetThisFieldUint8, A0, L);
35792}
35793bool ByteCodeEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
35794 return emitOp<uint32_t>(OP_SetThisFieldSint16, A0, L);
35795}
35796bool ByteCodeEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
35797 return emitOp<uint32_t>(OP_SetThisFieldUint16, A0, L);
35798}
35799bool ByteCodeEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
35800 return emitOp<uint32_t>(OP_SetThisFieldSint32, A0, L);
35801}
35802bool ByteCodeEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
35803 return emitOp<uint32_t>(OP_SetThisFieldUint32, A0, L);
35804}
35805bool ByteCodeEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
35806 return emitOp<uint32_t>(OP_SetThisFieldSint64, A0, L);
35807}
35808bool ByteCodeEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
35809 return emitOp<uint32_t>(OP_SetThisFieldUint64, A0, L);
35810}
35811bool ByteCodeEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
35812 return emitOp<uint32_t>(OP_SetThisFieldIntAP, A0, L);
35813}
35814bool ByteCodeEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35815 return emitOp<uint32_t>(OP_SetThisFieldIntAPS, A0, L);
35816}
35817bool ByteCodeEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
35818 return emitOp<uint32_t>(OP_SetThisFieldBool, A0, L);
35819}
35820bool ByteCodeEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35821 return emitOp<uint32_t>(OP_SetThisFieldFixedPoint, A0, L);
35822}
35823bool ByteCodeEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
35824 return emitOp<uint32_t>(OP_SetThisFieldPtr, A0, L);
35825}
35826bool ByteCodeEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35827 return emitOp<uint32_t>(OP_SetThisFieldMemberPtr, A0, L);
35828}
35829bool ByteCodeEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
35830 return emitOp<uint32_t>(OP_SetThisFieldFloat, A0, L);
35831}
35832#endif
35833#ifdef GET_EVAL_IMPL
35834bool EvalEmitter::emitSetThisFieldSint8( uint32_t A0, SourceInfo L) {
35835 if (!isActive()) return true;
35836 CurrentSource = L;
35837 return SetThisField<PT_Sint8>(S, OpPC, A0);
35838}
35839bool EvalEmitter::emitSetThisFieldUint8( uint32_t A0, SourceInfo L) {
35840 if (!isActive()) return true;
35841 CurrentSource = L;
35842 return SetThisField<PT_Uint8>(S, OpPC, A0);
35843}
35844bool EvalEmitter::emitSetThisFieldSint16( uint32_t A0, SourceInfo L) {
35845 if (!isActive()) return true;
35846 CurrentSource = L;
35847 return SetThisField<PT_Sint16>(S, OpPC, A0);
35848}
35849bool EvalEmitter::emitSetThisFieldUint16( uint32_t A0, SourceInfo L) {
35850 if (!isActive()) return true;
35851 CurrentSource = L;
35852 return SetThisField<PT_Uint16>(S, OpPC, A0);
35853}
35854bool EvalEmitter::emitSetThisFieldSint32( uint32_t A0, SourceInfo L) {
35855 if (!isActive()) return true;
35856 CurrentSource = L;
35857 return SetThisField<PT_Sint32>(S, OpPC, A0);
35858}
35859bool EvalEmitter::emitSetThisFieldUint32( uint32_t A0, SourceInfo L) {
35860 if (!isActive()) return true;
35861 CurrentSource = L;
35862 return SetThisField<PT_Uint32>(S, OpPC, A0);
35863}
35864bool EvalEmitter::emitSetThisFieldSint64( uint32_t A0, SourceInfo L) {
35865 if (!isActive()) return true;
35866 CurrentSource = L;
35867 return SetThisField<PT_Sint64>(S, OpPC, A0);
35868}
35869bool EvalEmitter::emitSetThisFieldUint64( uint32_t A0, SourceInfo L) {
35870 if (!isActive()) return true;
35871 CurrentSource = L;
35872 return SetThisField<PT_Uint64>(S, OpPC, A0);
35873}
35874bool EvalEmitter::emitSetThisFieldIntAP( uint32_t A0, SourceInfo L) {
35875 if (!isActive()) return true;
35876 CurrentSource = L;
35877 return SetThisField<PT_IntAP>(S, OpPC, A0);
35878}
35879bool EvalEmitter::emitSetThisFieldIntAPS( uint32_t A0, SourceInfo L) {
35880 if (!isActive()) return true;
35881 CurrentSource = L;
35882 return SetThisField<PT_IntAPS>(S, OpPC, A0);
35883}
35884bool EvalEmitter::emitSetThisFieldBool( uint32_t A0, SourceInfo L) {
35885 if (!isActive()) return true;
35886 CurrentSource = L;
35887 return SetThisField<PT_Bool>(S, OpPC, A0);
35888}
35889bool EvalEmitter::emitSetThisFieldFixedPoint( uint32_t A0, SourceInfo L) {
35890 if (!isActive()) return true;
35891 CurrentSource = L;
35892 return SetThisField<PT_FixedPoint>(S, OpPC, A0);
35893}
35894bool EvalEmitter::emitSetThisFieldPtr( uint32_t A0, SourceInfo L) {
35895 if (!isActive()) return true;
35896 CurrentSource = L;
35897 return SetThisField<PT_Ptr>(S, OpPC, A0);
35898}
35899bool EvalEmitter::emitSetThisFieldMemberPtr( uint32_t A0, SourceInfo L) {
35900 if (!isActive()) return true;
35901 CurrentSource = L;
35902 return SetThisField<PT_MemberPtr>(S, OpPC, A0);
35903}
35904bool EvalEmitter::emitSetThisFieldFloat( uint32_t A0, SourceInfo L) {
35905 if (!isActive()) return true;
35906 CurrentSource = L;
35907 return SetThisField<PT_Float>(S, OpPC, A0);
35908}
35909#endif
35910#ifdef GET_OPCODE_NAMES
35911OP_ShiftFixedPoint,
35912#endif
35913#ifdef GET_INTERP
35914case OP_ShiftFixedPoint: {
35915 const auto V0 = ReadArg<bool>(S, PC);
35916 if (!ShiftFixedPoint(S, OpPC, V0))
35917 return false;
35918 continue;
35919}
35920#endif
35921#ifdef GET_DISASM
35922case OP_ShiftFixedPoint:
35923 Text.Op = PrintName("ShiftFixedPoint");
35924 Text.Args.push_back(printArg<bool>(P, PC));
35925 break;
35926#endif
35927#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
35928bool emitShiftFixedPoint( bool , SourceInfo);
35929#endif
35930#ifdef GET_LINK_IMPL
35931bool ByteCodeEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
35932 return emitOp<bool>(OP_ShiftFixedPoint, A0, L);
35933}
35934#endif
35935#ifdef GET_EVAL_IMPL
35936bool EvalEmitter::emitShiftFixedPoint( bool A0, SourceInfo L) {
35937 if (!isActive()) return true;
35938 CurrentSource = L;
35939 return ShiftFixedPoint(S, OpPC, A0);
35940}
35941#endif
35942#ifdef GET_OPCODE_NAMES
35943OP_ShlSint8Sint8,
35944OP_ShlSint8Uint8,
35945OP_ShlSint8Sint16,
35946OP_ShlSint8Uint16,
35947OP_ShlSint8Sint32,
35948OP_ShlSint8Uint32,
35949OP_ShlSint8Sint64,
35950OP_ShlSint8Uint64,
35951OP_ShlSint8IntAP,
35952OP_ShlSint8IntAPS,
35953OP_ShlUint8Sint8,
35954OP_ShlUint8Uint8,
35955OP_ShlUint8Sint16,
35956OP_ShlUint8Uint16,
35957OP_ShlUint8Sint32,
35958OP_ShlUint8Uint32,
35959OP_ShlUint8Sint64,
35960OP_ShlUint8Uint64,
35961OP_ShlUint8IntAP,
35962OP_ShlUint8IntAPS,
35963OP_ShlSint16Sint8,
35964OP_ShlSint16Uint8,
35965OP_ShlSint16Sint16,
35966OP_ShlSint16Uint16,
35967OP_ShlSint16Sint32,
35968OP_ShlSint16Uint32,
35969OP_ShlSint16Sint64,
35970OP_ShlSint16Uint64,
35971OP_ShlSint16IntAP,
35972OP_ShlSint16IntAPS,
35973OP_ShlUint16Sint8,
35974OP_ShlUint16Uint8,
35975OP_ShlUint16Sint16,
35976OP_ShlUint16Uint16,
35977OP_ShlUint16Sint32,
35978OP_ShlUint16Uint32,
35979OP_ShlUint16Sint64,
35980OP_ShlUint16Uint64,
35981OP_ShlUint16IntAP,
35982OP_ShlUint16IntAPS,
35983OP_ShlSint32Sint8,
35984OP_ShlSint32Uint8,
35985OP_ShlSint32Sint16,
35986OP_ShlSint32Uint16,
35987OP_ShlSint32Sint32,
35988OP_ShlSint32Uint32,
35989OP_ShlSint32Sint64,
35990OP_ShlSint32Uint64,
35991OP_ShlSint32IntAP,
35992OP_ShlSint32IntAPS,
35993OP_ShlUint32Sint8,
35994OP_ShlUint32Uint8,
35995OP_ShlUint32Sint16,
35996OP_ShlUint32Uint16,
35997OP_ShlUint32Sint32,
35998OP_ShlUint32Uint32,
35999OP_ShlUint32Sint64,
36000OP_ShlUint32Uint64,
36001OP_ShlUint32IntAP,
36002OP_ShlUint32IntAPS,
36003OP_ShlSint64Sint8,
36004OP_ShlSint64Uint8,
36005OP_ShlSint64Sint16,
36006OP_ShlSint64Uint16,
36007OP_ShlSint64Sint32,
36008OP_ShlSint64Uint32,
36009OP_ShlSint64Sint64,
36010OP_ShlSint64Uint64,
36011OP_ShlSint64IntAP,
36012OP_ShlSint64IntAPS,
36013OP_ShlUint64Sint8,
36014OP_ShlUint64Uint8,
36015OP_ShlUint64Sint16,
36016OP_ShlUint64Uint16,
36017OP_ShlUint64Sint32,
36018OP_ShlUint64Uint32,
36019OP_ShlUint64Sint64,
36020OP_ShlUint64Uint64,
36021OP_ShlUint64IntAP,
36022OP_ShlUint64IntAPS,
36023OP_ShlIntAPSint8,
36024OP_ShlIntAPUint8,
36025OP_ShlIntAPSint16,
36026OP_ShlIntAPUint16,
36027OP_ShlIntAPSint32,
36028OP_ShlIntAPUint32,
36029OP_ShlIntAPSint64,
36030OP_ShlIntAPUint64,
36031OP_ShlIntAPIntAP,
36032OP_ShlIntAPIntAPS,
36033OP_ShlIntAPSSint8,
36034OP_ShlIntAPSUint8,
36035OP_ShlIntAPSSint16,
36036OP_ShlIntAPSUint16,
36037OP_ShlIntAPSSint32,
36038OP_ShlIntAPSUint32,
36039OP_ShlIntAPSSint64,
36040OP_ShlIntAPSUint64,
36041OP_ShlIntAPSIntAP,
36042OP_ShlIntAPSIntAPS,
36043#endif
36044#ifdef GET_INTERP
36045case OP_ShlSint8Sint8: {
36046 if (!Shl<PT_Sint8, PT_Sint8>(S, OpPC))
36047 return false;
36048 continue;
36049}
36050case OP_ShlSint8Uint8: {
36051 if (!Shl<PT_Sint8, PT_Uint8>(S, OpPC))
36052 return false;
36053 continue;
36054}
36055case OP_ShlSint8Sint16: {
36056 if (!Shl<PT_Sint8, PT_Sint16>(S, OpPC))
36057 return false;
36058 continue;
36059}
36060case OP_ShlSint8Uint16: {
36061 if (!Shl<PT_Sint8, PT_Uint16>(S, OpPC))
36062 return false;
36063 continue;
36064}
36065case OP_ShlSint8Sint32: {
36066 if (!Shl<PT_Sint8, PT_Sint32>(S, OpPC))
36067 return false;
36068 continue;
36069}
36070case OP_ShlSint8Uint32: {
36071 if (!Shl<PT_Sint8, PT_Uint32>(S, OpPC))
36072 return false;
36073 continue;
36074}
36075case OP_ShlSint8Sint64: {
36076 if (!Shl<PT_Sint8, PT_Sint64>(S, OpPC))
36077 return false;
36078 continue;
36079}
36080case OP_ShlSint8Uint64: {
36081 if (!Shl<PT_Sint8, PT_Uint64>(S, OpPC))
36082 return false;
36083 continue;
36084}
36085case OP_ShlSint8IntAP: {
36086 if (!Shl<PT_Sint8, PT_IntAP>(S, OpPC))
36087 return false;
36088 continue;
36089}
36090case OP_ShlSint8IntAPS: {
36091 if (!Shl<PT_Sint8, PT_IntAPS>(S, OpPC))
36092 return false;
36093 continue;
36094}
36095case OP_ShlUint8Sint8: {
36096 if (!Shl<PT_Uint8, PT_Sint8>(S, OpPC))
36097 return false;
36098 continue;
36099}
36100case OP_ShlUint8Uint8: {
36101 if (!Shl<PT_Uint8, PT_Uint8>(S, OpPC))
36102 return false;
36103 continue;
36104}
36105case OP_ShlUint8Sint16: {
36106 if (!Shl<PT_Uint8, PT_Sint16>(S, OpPC))
36107 return false;
36108 continue;
36109}
36110case OP_ShlUint8Uint16: {
36111 if (!Shl<PT_Uint8, PT_Uint16>(S, OpPC))
36112 return false;
36113 continue;
36114}
36115case OP_ShlUint8Sint32: {
36116 if (!Shl<PT_Uint8, PT_Sint32>(S, OpPC))
36117 return false;
36118 continue;
36119}
36120case OP_ShlUint8Uint32: {
36121 if (!Shl<PT_Uint8, PT_Uint32>(S, OpPC))
36122 return false;
36123 continue;
36124}
36125case OP_ShlUint8Sint64: {
36126 if (!Shl<PT_Uint8, PT_Sint64>(S, OpPC))
36127 return false;
36128 continue;
36129}
36130case OP_ShlUint8Uint64: {
36131 if (!Shl<PT_Uint8, PT_Uint64>(S, OpPC))
36132 return false;
36133 continue;
36134}
36135case OP_ShlUint8IntAP: {
36136 if (!Shl<PT_Uint8, PT_IntAP>(S, OpPC))
36137 return false;
36138 continue;
36139}
36140case OP_ShlUint8IntAPS: {
36141 if (!Shl<PT_Uint8, PT_IntAPS>(S, OpPC))
36142 return false;
36143 continue;
36144}
36145case OP_ShlSint16Sint8: {
36146 if (!Shl<PT_Sint16, PT_Sint8>(S, OpPC))
36147 return false;
36148 continue;
36149}
36150case OP_ShlSint16Uint8: {
36151 if (!Shl<PT_Sint16, PT_Uint8>(S, OpPC))
36152 return false;
36153 continue;
36154}
36155case OP_ShlSint16Sint16: {
36156 if (!Shl<PT_Sint16, PT_Sint16>(S, OpPC))
36157 return false;
36158 continue;
36159}
36160case OP_ShlSint16Uint16: {
36161 if (!Shl<PT_Sint16, PT_Uint16>(S, OpPC))
36162 return false;
36163 continue;
36164}
36165case OP_ShlSint16Sint32: {
36166 if (!Shl<PT_Sint16, PT_Sint32>(S, OpPC))
36167 return false;
36168 continue;
36169}
36170case OP_ShlSint16Uint32: {
36171 if (!Shl<PT_Sint16, PT_Uint32>(S, OpPC))
36172 return false;
36173 continue;
36174}
36175case OP_ShlSint16Sint64: {
36176 if (!Shl<PT_Sint16, PT_Sint64>(S, OpPC))
36177 return false;
36178 continue;
36179}
36180case OP_ShlSint16Uint64: {
36181 if (!Shl<PT_Sint16, PT_Uint64>(S, OpPC))
36182 return false;
36183 continue;
36184}
36185case OP_ShlSint16IntAP: {
36186 if (!Shl<PT_Sint16, PT_IntAP>(S, OpPC))
36187 return false;
36188 continue;
36189}
36190case OP_ShlSint16IntAPS: {
36191 if (!Shl<PT_Sint16, PT_IntAPS>(S, OpPC))
36192 return false;
36193 continue;
36194}
36195case OP_ShlUint16Sint8: {
36196 if (!Shl<PT_Uint16, PT_Sint8>(S, OpPC))
36197 return false;
36198 continue;
36199}
36200case OP_ShlUint16Uint8: {
36201 if (!Shl<PT_Uint16, PT_Uint8>(S, OpPC))
36202 return false;
36203 continue;
36204}
36205case OP_ShlUint16Sint16: {
36206 if (!Shl<PT_Uint16, PT_Sint16>(S, OpPC))
36207 return false;
36208 continue;
36209}
36210case OP_ShlUint16Uint16: {
36211 if (!Shl<PT_Uint16, PT_Uint16>(S, OpPC))
36212 return false;
36213 continue;
36214}
36215case OP_ShlUint16Sint32: {
36216 if (!Shl<PT_Uint16, PT_Sint32>(S, OpPC))
36217 return false;
36218 continue;
36219}
36220case OP_ShlUint16Uint32: {
36221 if (!Shl<PT_Uint16, PT_Uint32>(S, OpPC))
36222 return false;
36223 continue;
36224}
36225case OP_ShlUint16Sint64: {
36226 if (!Shl<PT_Uint16, PT_Sint64>(S, OpPC))
36227 return false;
36228 continue;
36229}
36230case OP_ShlUint16Uint64: {
36231 if (!Shl<PT_Uint16, PT_Uint64>(S, OpPC))
36232 return false;
36233 continue;
36234}
36235case OP_ShlUint16IntAP: {
36236 if (!Shl<PT_Uint16, PT_IntAP>(S, OpPC))
36237 return false;
36238 continue;
36239}
36240case OP_ShlUint16IntAPS: {
36241 if (!Shl<PT_Uint16, PT_IntAPS>(S, OpPC))
36242 return false;
36243 continue;
36244}
36245case OP_ShlSint32Sint8: {
36246 if (!Shl<PT_Sint32, PT_Sint8>(S, OpPC))
36247 return false;
36248 continue;
36249}
36250case OP_ShlSint32Uint8: {
36251 if (!Shl<PT_Sint32, PT_Uint8>(S, OpPC))
36252 return false;
36253 continue;
36254}
36255case OP_ShlSint32Sint16: {
36256 if (!Shl<PT_Sint32, PT_Sint16>(S, OpPC))
36257 return false;
36258 continue;
36259}
36260case OP_ShlSint32Uint16: {
36261 if (!Shl<PT_Sint32, PT_Uint16>(S, OpPC))
36262 return false;
36263 continue;
36264}
36265case OP_ShlSint32Sint32: {
36266 if (!Shl<PT_Sint32, PT_Sint32>(S, OpPC))
36267 return false;
36268 continue;
36269}
36270case OP_ShlSint32Uint32: {
36271 if (!Shl<PT_Sint32, PT_Uint32>(S, OpPC))
36272 return false;
36273 continue;
36274}
36275case OP_ShlSint32Sint64: {
36276 if (!Shl<PT_Sint32, PT_Sint64>(S, OpPC))
36277 return false;
36278 continue;
36279}
36280case OP_ShlSint32Uint64: {
36281 if (!Shl<PT_Sint32, PT_Uint64>(S, OpPC))
36282 return false;
36283 continue;
36284}
36285case OP_ShlSint32IntAP: {
36286 if (!Shl<PT_Sint32, PT_IntAP>(S, OpPC))
36287 return false;
36288 continue;
36289}
36290case OP_ShlSint32IntAPS: {
36291 if (!Shl<PT_Sint32, PT_IntAPS>(S, OpPC))
36292 return false;
36293 continue;
36294}
36295case OP_ShlUint32Sint8: {
36296 if (!Shl<PT_Uint32, PT_Sint8>(S, OpPC))
36297 return false;
36298 continue;
36299}
36300case OP_ShlUint32Uint8: {
36301 if (!Shl<PT_Uint32, PT_Uint8>(S, OpPC))
36302 return false;
36303 continue;
36304}
36305case OP_ShlUint32Sint16: {
36306 if (!Shl<PT_Uint32, PT_Sint16>(S, OpPC))
36307 return false;
36308 continue;
36309}
36310case OP_ShlUint32Uint16: {
36311 if (!Shl<PT_Uint32, PT_Uint16>(S, OpPC))
36312 return false;
36313 continue;
36314}
36315case OP_ShlUint32Sint32: {
36316 if (!Shl<PT_Uint32, PT_Sint32>(S, OpPC))
36317 return false;
36318 continue;
36319}
36320case OP_ShlUint32Uint32: {
36321 if (!Shl<PT_Uint32, PT_Uint32>(S, OpPC))
36322 return false;
36323 continue;
36324}
36325case OP_ShlUint32Sint64: {
36326 if (!Shl<PT_Uint32, PT_Sint64>(S, OpPC))
36327 return false;
36328 continue;
36329}
36330case OP_ShlUint32Uint64: {
36331 if (!Shl<PT_Uint32, PT_Uint64>(S, OpPC))
36332 return false;
36333 continue;
36334}
36335case OP_ShlUint32IntAP: {
36336 if (!Shl<PT_Uint32, PT_IntAP>(S, OpPC))
36337 return false;
36338 continue;
36339}
36340case OP_ShlUint32IntAPS: {
36341 if (!Shl<PT_Uint32, PT_IntAPS>(S, OpPC))
36342 return false;
36343 continue;
36344}
36345case OP_ShlSint64Sint8: {
36346 if (!Shl<PT_Sint64, PT_Sint8>(S, OpPC))
36347 return false;
36348 continue;
36349}
36350case OP_ShlSint64Uint8: {
36351 if (!Shl<PT_Sint64, PT_Uint8>(S, OpPC))
36352 return false;
36353 continue;
36354}
36355case OP_ShlSint64Sint16: {
36356 if (!Shl<PT_Sint64, PT_Sint16>(S, OpPC))
36357 return false;
36358 continue;
36359}
36360case OP_ShlSint64Uint16: {
36361 if (!Shl<PT_Sint64, PT_Uint16>(S, OpPC))
36362 return false;
36363 continue;
36364}
36365case OP_ShlSint64Sint32: {
36366 if (!Shl<PT_Sint64, PT_Sint32>(S, OpPC))
36367 return false;
36368 continue;
36369}
36370case OP_ShlSint64Uint32: {
36371 if (!Shl<PT_Sint64, PT_Uint32>(S, OpPC))
36372 return false;
36373 continue;
36374}
36375case OP_ShlSint64Sint64: {
36376 if (!Shl<PT_Sint64, PT_Sint64>(S, OpPC))
36377 return false;
36378 continue;
36379}
36380case OP_ShlSint64Uint64: {
36381 if (!Shl<PT_Sint64, PT_Uint64>(S, OpPC))
36382 return false;
36383 continue;
36384}
36385case OP_ShlSint64IntAP: {
36386 if (!Shl<PT_Sint64, PT_IntAP>(S, OpPC))
36387 return false;
36388 continue;
36389}
36390case OP_ShlSint64IntAPS: {
36391 if (!Shl<PT_Sint64, PT_IntAPS>(S, OpPC))
36392 return false;
36393 continue;
36394}
36395case OP_ShlUint64Sint8: {
36396 if (!Shl<PT_Uint64, PT_Sint8>(S, OpPC))
36397 return false;
36398 continue;
36399}
36400case OP_ShlUint64Uint8: {
36401 if (!Shl<PT_Uint64, PT_Uint8>(S, OpPC))
36402 return false;
36403 continue;
36404}
36405case OP_ShlUint64Sint16: {
36406 if (!Shl<PT_Uint64, PT_Sint16>(S, OpPC))
36407 return false;
36408 continue;
36409}
36410case OP_ShlUint64Uint16: {
36411 if (!Shl<PT_Uint64, PT_Uint16>(S, OpPC))
36412 return false;
36413 continue;
36414}
36415case OP_ShlUint64Sint32: {
36416 if (!Shl<PT_Uint64, PT_Sint32>(S, OpPC))
36417 return false;
36418 continue;
36419}
36420case OP_ShlUint64Uint32: {
36421 if (!Shl<PT_Uint64, PT_Uint32>(S, OpPC))
36422 return false;
36423 continue;
36424}
36425case OP_ShlUint64Sint64: {
36426 if (!Shl<PT_Uint64, PT_Sint64>(S, OpPC))
36427 return false;
36428 continue;
36429}
36430case OP_ShlUint64Uint64: {
36431 if (!Shl<PT_Uint64, PT_Uint64>(S, OpPC))
36432 return false;
36433 continue;
36434}
36435case OP_ShlUint64IntAP: {
36436 if (!Shl<PT_Uint64, PT_IntAP>(S, OpPC))
36437 return false;
36438 continue;
36439}
36440case OP_ShlUint64IntAPS: {
36441 if (!Shl<PT_Uint64, PT_IntAPS>(S, OpPC))
36442 return false;
36443 continue;
36444}
36445case OP_ShlIntAPSint8: {
36446 if (!Shl<PT_IntAP, PT_Sint8>(S, OpPC))
36447 return false;
36448 continue;
36449}
36450case OP_ShlIntAPUint8: {
36451 if (!Shl<PT_IntAP, PT_Uint8>(S, OpPC))
36452 return false;
36453 continue;
36454}
36455case OP_ShlIntAPSint16: {
36456 if (!Shl<PT_IntAP, PT_Sint16>(S, OpPC))
36457 return false;
36458 continue;
36459}
36460case OP_ShlIntAPUint16: {
36461 if (!Shl<PT_IntAP, PT_Uint16>(S, OpPC))
36462 return false;
36463 continue;
36464}
36465case OP_ShlIntAPSint32: {
36466 if (!Shl<PT_IntAP, PT_Sint32>(S, OpPC))
36467 return false;
36468 continue;
36469}
36470case OP_ShlIntAPUint32: {
36471 if (!Shl<PT_IntAP, PT_Uint32>(S, OpPC))
36472 return false;
36473 continue;
36474}
36475case OP_ShlIntAPSint64: {
36476 if (!Shl<PT_IntAP, PT_Sint64>(S, OpPC))
36477 return false;
36478 continue;
36479}
36480case OP_ShlIntAPUint64: {
36481 if (!Shl<PT_IntAP, PT_Uint64>(S, OpPC))
36482 return false;
36483 continue;
36484}
36485case OP_ShlIntAPIntAP: {
36486 if (!Shl<PT_IntAP, PT_IntAP>(S, OpPC))
36487 return false;
36488 continue;
36489}
36490case OP_ShlIntAPIntAPS: {
36491 if (!Shl<PT_IntAP, PT_IntAPS>(S, OpPC))
36492 return false;
36493 continue;
36494}
36495case OP_ShlIntAPSSint8: {
36496 if (!Shl<PT_IntAPS, PT_Sint8>(S, OpPC))
36497 return false;
36498 continue;
36499}
36500case OP_ShlIntAPSUint8: {
36501 if (!Shl<PT_IntAPS, PT_Uint8>(S, OpPC))
36502 return false;
36503 continue;
36504}
36505case OP_ShlIntAPSSint16: {
36506 if (!Shl<PT_IntAPS, PT_Sint16>(S, OpPC))
36507 return false;
36508 continue;
36509}
36510case OP_ShlIntAPSUint16: {
36511 if (!Shl<PT_IntAPS, PT_Uint16>(S, OpPC))
36512 return false;
36513 continue;
36514}
36515case OP_ShlIntAPSSint32: {
36516 if (!Shl<PT_IntAPS, PT_Sint32>(S, OpPC))
36517 return false;
36518 continue;
36519}
36520case OP_ShlIntAPSUint32: {
36521 if (!Shl<PT_IntAPS, PT_Uint32>(S, OpPC))
36522 return false;
36523 continue;
36524}
36525case OP_ShlIntAPSSint64: {
36526 if (!Shl<PT_IntAPS, PT_Sint64>(S, OpPC))
36527 return false;
36528 continue;
36529}
36530case OP_ShlIntAPSUint64: {
36531 if (!Shl<PT_IntAPS, PT_Uint64>(S, OpPC))
36532 return false;
36533 continue;
36534}
36535case OP_ShlIntAPSIntAP: {
36536 if (!Shl<PT_IntAPS, PT_IntAP>(S, OpPC))
36537 return false;
36538 continue;
36539}
36540case OP_ShlIntAPSIntAPS: {
36541 if (!Shl<PT_IntAPS, PT_IntAPS>(S, OpPC))
36542 return false;
36543 continue;
36544}
36545#endif
36546#ifdef GET_DISASM
36547case OP_ShlSint8Sint8:
36548 Text.Op = PrintName("ShlSint8Sint8");
36549 break;
36550case OP_ShlSint8Uint8:
36551 Text.Op = PrintName("ShlSint8Uint8");
36552 break;
36553case OP_ShlSint8Sint16:
36554 Text.Op = PrintName("ShlSint8Sint16");
36555 break;
36556case OP_ShlSint8Uint16:
36557 Text.Op = PrintName("ShlSint8Uint16");
36558 break;
36559case OP_ShlSint8Sint32:
36560 Text.Op = PrintName("ShlSint8Sint32");
36561 break;
36562case OP_ShlSint8Uint32:
36563 Text.Op = PrintName("ShlSint8Uint32");
36564 break;
36565case OP_ShlSint8Sint64:
36566 Text.Op = PrintName("ShlSint8Sint64");
36567 break;
36568case OP_ShlSint8Uint64:
36569 Text.Op = PrintName("ShlSint8Uint64");
36570 break;
36571case OP_ShlSint8IntAP:
36572 Text.Op = PrintName("ShlSint8IntAP");
36573 break;
36574case OP_ShlSint8IntAPS:
36575 Text.Op = PrintName("ShlSint8IntAPS");
36576 break;
36577case OP_ShlUint8Sint8:
36578 Text.Op = PrintName("ShlUint8Sint8");
36579 break;
36580case OP_ShlUint8Uint8:
36581 Text.Op = PrintName("ShlUint8Uint8");
36582 break;
36583case OP_ShlUint8Sint16:
36584 Text.Op = PrintName("ShlUint8Sint16");
36585 break;
36586case OP_ShlUint8Uint16:
36587 Text.Op = PrintName("ShlUint8Uint16");
36588 break;
36589case OP_ShlUint8Sint32:
36590 Text.Op = PrintName("ShlUint8Sint32");
36591 break;
36592case OP_ShlUint8Uint32:
36593 Text.Op = PrintName("ShlUint8Uint32");
36594 break;
36595case OP_ShlUint8Sint64:
36596 Text.Op = PrintName("ShlUint8Sint64");
36597 break;
36598case OP_ShlUint8Uint64:
36599 Text.Op = PrintName("ShlUint8Uint64");
36600 break;
36601case OP_ShlUint8IntAP:
36602 Text.Op = PrintName("ShlUint8IntAP");
36603 break;
36604case OP_ShlUint8IntAPS:
36605 Text.Op = PrintName("ShlUint8IntAPS");
36606 break;
36607case OP_ShlSint16Sint8:
36608 Text.Op = PrintName("ShlSint16Sint8");
36609 break;
36610case OP_ShlSint16Uint8:
36611 Text.Op = PrintName("ShlSint16Uint8");
36612 break;
36613case OP_ShlSint16Sint16:
36614 Text.Op = PrintName("ShlSint16Sint16");
36615 break;
36616case OP_ShlSint16Uint16:
36617 Text.Op = PrintName("ShlSint16Uint16");
36618 break;
36619case OP_ShlSint16Sint32:
36620 Text.Op = PrintName("ShlSint16Sint32");
36621 break;
36622case OP_ShlSint16Uint32:
36623 Text.Op = PrintName("ShlSint16Uint32");
36624 break;
36625case OP_ShlSint16Sint64:
36626 Text.Op = PrintName("ShlSint16Sint64");
36627 break;
36628case OP_ShlSint16Uint64:
36629 Text.Op = PrintName("ShlSint16Uint64");
36630 break;
36631case OP_ShlSint16IntAP:
36632 Text.Op = PrintName("ShlSint16IntAP");
36633 break;
36634case OP_ShlSint16IntAPS:
36635 Text.Op = PrintName("ShlSint16IntAPS");
36636 break;
36637case OP_ShlUint16Sint8:
36638 Text.Op = PrintName("ShlUint16Sint8");
36639 break;
36640case OP_ShlUint16Uint8:
36641 Text.Op = PrintName("ShlUint16Uint8");
36642 break;
36643case OP_ShlUint16Sint16:
36644 Text.Op = PrintName("ShlUint16Sint16");
36645 break;
36646case OP_ShlUint16Uint16:
36647 Text.Op = PrintName("ShlUint16Uint16");
36648 break;
36649case OP_ShlUint16Sint32:
36650 Text.Op = PrintName("ShlUint16Sint32");
36651 break;
36652case OP_ShlUint16Uint32:
36653 Text.Op = PrintName("ShlUint16Uint32");
36654 break;
36655case OP_ShlUint16Sint64:
36656 Text.Op = PrintName("ShlUint16Sint64");
36657 break;
36658case OP_ShlUint16Uint64:
36659 Text.Op = PrintName("ShlUint16Uint64");
36660 break;
36661case OP_ShlUint16IntAP:
36662 Text.Op = PrintName("ShlUint16IntAP");
36663 break;
36664case OP_ShlUint16IntAPS:
36665 Text.Op = PrintName("ShlUint16IntAPS");
36666 break;
36667case OP_ShlSint32Sint8:
36668 Text.Op = PrintName("ShlSint32Sint8");
36669 break;
36670case OP_ShlSint32Uint8:
36671 Text.Op = PrintName("ShlSint32Uint8");
36672 break;
36673case OP_ShlSint32Sint16:
36674 Text.Op = PrintName("ShlSint32Sint16");
36675 break;
36676case OP_ShlSint32Uint16:
36677 Text.Op = PrintName("ShlSint32Uint16");
36678 break;
36679case OP_ShlSint32Sint32:
36680 Text.Op = PrintName("ShlSint32Sint32");
36681 break;
36682case OP_ShlSint32Uint32:
36683 Text.Op = PrintName("ShlSint32Uint32");
36684 break;
36685case OP_ShlSint32Sint64:
36686 Text.Op = PrintName("ShlSint32Sint64");
36687 break;
36688case OP_ShlSint32Uint64:
36689 Text.Op = PrintName("ShlSint32Uint64");
36690 break;
36691case OP_ShlSint32IntAP:
36692 Text.Op = PrintName("ShlSint32IntAP");
36693 break;
36694case OP_ShlSint32IntAPS:
36695 Text.Op = PrintName("ShlSint32IntAPS");
36696 break;
36697case OP_ShlUint32Sint8:
36698 Text.Op = PrintName("ShlUint32Sint8");
36699 break;
36700case OP_ShlUint32Uint8:
36701 Text.Op = PrintName("ShlUint32Uint8");
36702 break;
36703case OP_ShlUint32Sint16:
36704 Text.Op = PrintName("ShlUint32Sint16");
36705 break;
36706case OP_ShlUint32Uint16:
36707 Text.Op = PrintName("ShlUint32Uint16");
36708 break;
36709case OP_ShlUint32Sint32:
36710 Text.Op = PrintName("ShlUint32Sint32");
36711 break;
36712case OP_ShlUint32Uint32:
36713 Text.Op = PrintName("ShlUint32Uint32");
36714 break;
36715case OP_ShlUint32Sint64:
36716 Text.Op = PrintName("ShlUint32Sint64");
36717 break;
36718case OP_ShlUint32Uint64:
36719 Text.Op = PrintName("ShlUint32Uint64");
36720 break;
36721case OP_ShlUint32IntAP:
36722 Text.Op = PrintName("ShlUint32IntAP");
36723 break;
36724case OP_ShlUint32IntAPS:
36725 Text.Op = PrintName("ShlUint32IntAPS");
36726 break;
36727case OP_ShlSint64Sint8:
36728 Text.Op = PrintName("ShlSint64Sint8");
36729 break;
36730case OP_ShlSint64Uint8:
36731 Text.Op = PrintName("ShlSint64Uint8");
36732 break;
36733case OP_ShlSint64Sint16:
36734 Text.Op = PrintName("ShlSint64Sint16");
36735 break;
36736case OP_ShlSint64Uint16:
36737 Text.Op = PrintName("ShlSint64Uint16");
36738 break;
36739case OP_ShlSint64Sint32:
36740 Text.Op = PrintName("ShlSint64Sint32");
36741 break;
36742case OP_ShlSint64Uint32:
36743 Text.Op = PrintName("ShlSint64Uint32");
36744 break;
36745case OP_ShlSint64Sint64:
36746 Text.Op = PrintName("ShlSint64Sint64");
36747 break;
36748case OP_ShlSint64Uint64:
36749 Text.Op = PrintName("ShlSint64Uint64");
36750 break;
36751case OP_ShlSint64IntAP:
36752 Text.Op = PrintName("ShlSint64IntAP");
36753 break;
36754case OP_ShlSint64IntAPS:
36755 Text.Op = PrintName("ShlSint64IntAPS");
36756 break;
36757case OP_ShlUint64Sint8:
36758 Text.Op = PrintName("ShlUint64Sint8");
36759 break;
36760case OP_ShlUint64Uint8:
36761 Text.Op = PrintName("ShlUint64Uint8");
36762 break;
36763case OP_ShlUint64Sint16:
36764 Text.Op = PrintName("ShlUint64Sint16");
36765 break;
36766case OP_ShlUint64Uint16:
36767 Text.Op = PrintName("ShlUint64Uint16");
36768 break;
36769case OP_ShlUint64Sint32:
36770 Text.Op = PrintName("ShlUint64Sint32");
36771 break;
36772case OP_ShlUint64Uint32:
36773 Text.Op = PrintName("ShlUint64Uint32");
36774 break;
36775case OP_ShlUint64Sint64:
36776 Text.Op = PrintName("ShlUint64Sint64");
36777 break;
36778case OP_ShlUint64Uint64:
36779 Text.Op = PrintName("ShlUint64Uint64");
36780 break;
36781case OP_ShlUint64IntAP:
36782 Text.Op = PrintName("ShlUint64IntAP");
36783 break;
36784case OP_ShlUint64IntAPS:
36785 Text.Op = PrintName("ShlUint64IntAPS");
36786 break;
36787case OP_ShlIntAPSint8:
36788 Text.Op = PrintName("ShlIntAPSint8");
36789 break;
36790case OP_ShlIntAPUint8:
36791 Text.Op = PrintName("ShlIntAPUint8");
36792 break;
36793case OP_ShlIntAPSint16:
36794 Text.Op = PrintName("ShlIntAPSint16");
36795 break;
36796case OP_ShlIntAPUint16:
36797 Text.Op = PrintName("ShlIntAPUint16");
36798 break;
36799case OP_ShlIntAPSint32:
36800 Text.Op = PrintName("ShlIntAPSint32");
36801 break;
36802case OP_ShlIntAPUint32:
36803 Text.Op = PrintName("ShlIntAPUint32");
36804 break;
36805case OP_ShlIntAPSint64:
36806 Text.Op = PrintName("ShlIntAPSint64");
36807 break;
36808case OP_ShlIntAPUint64:
36809 Text.Op = PrintName("ShlIntAPUint64");
36810 break;
36811case OP_ShlIntAPIntAP:
36812 Text.Op = PrintName("ShlIntAPIntAP");
36813 break;
36814case OP_ShlIntAPIntAPS:
36815 Text.Op = PrintName("ShlIntAPIntAPS");
36816 break;
36817case OP_ShlIntAPSSint8:
36818 Text.Op = PrintName("ShlIntAPSSint8");
36819 break;
36820case OP_ShlIntAPSUint8:
36821 Text.Op = PrintName("ShlIntAPSUint8");
36822 break;
36823case OP_ShlIntAPSSint16:
36824 Text.Op = PrintName("ShlIntAPSSint16");
36825 break;
36826case OP_ShlIntAPSUint16:
36827 Text.Op = PrintName("ShlIntAPSUint16");
36828 break;
36829case OP_ShlIntAPSSint32:
36830 Text.Op = PrintName("ShlIntAPSSint32");
36831 break;
36832case OP_ShlIntAPSUint32:
36833 Text.Op = PrintName("ShlIntAPSUint32");
36834 break;
36835case OP_ShlIntAPSSint64:
36836 Text.Op = PrintName("ShlIntAPSSint64");
36837 break;
36838case OP_ShlIntAPSUint64:
36839 Text.Op = PrintName("ShlIntAPSUint64");
36840 break;
36841case OP_ShlIntAPSIntAP:
36842 Text.Op = PrintName("ShlIntAPSIntAP");
36843 break;
36844case OP_ShlIntAPSIntAPS:
36845 Text.Op = PrintName("ShlIntAPSIntAPS");
36846 break;
36847#endif
36848#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36849bool emitShlSint8Sint8(SourceInfo);
36850bool emitShlSint8Uint8(SourceInfo);
36851bool emitShlSint8Sint16(SourceInfo);
36852bool emitShlSint8Uint16(SourceInfo);
36853bool emitShlSint8Sint32(SourceInfo);
36854bool emitShlSint8Uint32(SourceInfo);
36855bool emitShlSint8Sint64(SourceInfo);
36856bool emitShlSint8Uint64(SourceInfo);
36857bool emitShlSint8IntAP(SourceInfo);
36858bool emitShlSint8IntAPS(SourceInfo);
36859bool emitShlUint8Sint8(SourceInfo);
36860bool emitShlUint8Uint8(SourceInfo);
36861bool emitShlUint8Sint16(SourceInfo);
36862bool emitShlUint8Uint16(SourceInfo);
36863bool emitShlUint8Sint32(SourceInfo);
36864bool emitShlUint8Uint32(SourceInfo);
36865bool emitShlUint8Sint64(SourceInfo);
36866bool emitShlUint8Uint64(SourceInfo);
36867bool emitShlUint8IntAP(SourceInfo);
36868bool emitShlUint8IntAPS(SourceInfo);
36869bool emitShlSint16Sint8(SourceInfo);
36870bool emitShlSint16Uint8(SourceInfo);
36871bool emitShlSint16Sint16(SourceInfo);
36872bool emitShlSint16Uint16(SourceInfo);
36873bool emitShlSint16Sint32(SourceInfo);
36874bool emitShlSint16Uint32(SourceInfo);
36875bool emitShlSint16Sint64(SourceInfo);
36876bool emitShlSint16Uint64(SourceInfo);
36877bool emitShlSint16IntAP(SourceInfo);
36878bool emitShlSint16IntAPS(SourceInfo);
36879bool emitShlUint16Sint8(SourceInfo);
36880bool emitShlUint16Uint8(SourceInfo);
36881bool emitShlUint16Sint16(SourceInfo);
36882bool emitShlUint16Uint16(SourceInfo);
36883bool emitShlUint16Sint32(SourceInfo);
36884bool emitShlUint16Uint32(SourceInfo);
36885bool emitShlUint16Sint64(SourceInfo);
36886bool emitShlUint16Uint64(SourceInfo);
36887bool emitShlUint16IntAP(SourceInfo);
36888bool emitShlUint16IntAPS(SourceInfo);
36889bool emitShlSint32Sint8(SourceInfo);
36890bool emitShlSint32Uint8(SourceInfo);
36891bool emitShlSint32Sint16(SourceInfo);
36892bool emitShlSint32Uint16(SourceInfo);
36893bool emitShlSint32Sint32(SourceInfo);
36894bool emitShlSint32Uint32(SourceInfo);
36895bool emitShlSint32Sint64(SourceInfo);
36896bool emitShlSint32Uint64(SourceInfo);
36897bool emitShlSint32IntAP(SourceInfo);
36898bool emitShlSint32IntAPS(SourceInfo);
36899bool emitShlUint32Sint8(SourceInfo);
36900bool emitShlUint32Uint8(SourceInfo);
36901bool emitShlUint32Sint16(SourceInfo);
36902bool emitShlUint32Uint16(SourceInfo);
36903bool emitShlUint32Sint32(SourceInfo);
36904bool emitShlUint32Uint32(SourceInfo);
36905bool emitShlUint32Sint64(SourceInfo);
36906bool emitShlUint32Uint64(SourceInfo);
36907bool emitShlUint32IntAP(SourceInfo);
36908bool emitShlUint32IntAPS(SourceInfo);
36909bool emitShlSint64Sint8(SourceInfo);
36910bool emitShlSint64Uint8(SourceInfo);
36911bool emitShlSint64Sint16(SourceInfo);
36912bool emitShlSint64Uint16(SourceInfo);
36913bool emitShlSint64Sint32(SourceInfo);
36914bool emitShlSint64Uint32(SourceInfo);
36915bool emitShlSint64Sint64(SourceInfo);
36916bool emitShlSint64Uint64(SourceInfo);
36917bool emitShlSint64IntAP(SourceInfo);
36918bool emitShlSint64IntAPS(SourceInfo);
36919bool emitShlUint64Sint8(SourceInfo);
36920bool emitShlUint64Uint8(SourceInfo);
36921bool emitShlUint64Sint16(SourceInfo);
36922bool emitShlUint64Uint16(SourceInfo);
36923bool emitShlUint64Sint32(SourceInfo);
36924bool emitShlUint64Uint32(SourceInfo);
36925bool emitShlUint64Sint64(SourceInfo);
36926bool emitShlUint64Uint64(SourceInfo);
36927bool emitShlUint64IntAP(SourceInfo);
36928bool emitShlUint64IntAPS(SourceInfo);
36929bool emitShlIntAPSint8(SourceInfo);
36930bool emitShlIntAPUint8(SourceInfo);
36931bool emitShlIntAPSint16(SourceInfo);
36932bool emitShlIntAPUint16(SourceInfo);
36933bool emitShlIntAPSint32(SourceInfo);
36934bool emitShlIntAPUint32(SourceInfo);
36935bool emitShlIntAPSint64(SourceInfo);
36936bool emitShlIntAPUint64(SourceInfo);
36937bool emitShlIntAPIntAP(SourceInfo);
36938bool emitShlIntAPIntAPS(SourceInfo);
36939bool emitShlIntAPSSint8(SourceInfo);
36940bool emitShlIntAPSUint8(SourceInfo);
36941bool emitShlIntAPSSint16(SourceInfo);
36942bool emitShlIntAPSUint16(SourceInfo);
36943bool emitShlIntAPSSint32(SourceInfo);
36944bool emitShlIntAPSUint32(SourceInfo);
36945bool emitShlIntAPSSint64(SourceInfo);
36946bool emitShlIntAPSUint64(SourceInfo);
36947bool emitShlIntAPSIntAP(SourceInfo);
36948bool emitShlIntAPSIntAPS(SourceInfo);
36949#endif
36950#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
36951[[nodiscard]] bool emitShl(PrimType, PrimType, SourceInfo I);
36952#endif
36953#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
36954bool
36955#if defined(GET_EVAL_IMPL)
36956EvalEmitter
36957#else
36958ByteCodeEmitter
36959#endif
36960::emitShl(PrimType T0, PrimType T1, SourceInfo I) {
36961 switch (T0) {
36962 case PT_Sint8:
36963 switch (T1) {
36964 case PT_Sint8:
36965 return emitShlSint8Sint8(I);
36966 case PT_Uint8:
36967 return emitShlSint8Uint8(I);
36968 case PT_Sint16:
36969 return emitShlSint8Sint16(I);
36970 case PT_Uint16:
36971 return emitShlSint8Uint16(I);
36972 case PT_Sint32:
36973 return emitShlSint8Sint32(I);
36974 case PT_Uint32:
36975 return emitShlSint8Uint32(I);
36976 case PT_Sint64:
36977 return emitShlSint8Sint64(I);
36978 case PT_Uint64:
36979 return emitShlSint8Uint64(I);
36980 case PT_IntAP:
36981 return emitShlSint8IntAP(I);
36982 case PT_IntAPS:
36983 return emitShlSint8IntAPS(I);
36984 default: llvm_unreachable("invalid type: emitShl");
36985 }
36986 llvm_unreachable("invalid enum value");
36987 case PT_Uint8:
36988 switch (T1) {
36989 case PT_Sint8:
36990 return emitShlUint8Sint8(I);
36991 case PT_Uint8:
36992 return emitShlUint8Uint8(I);
36993 case PT_Sint16:
36994 return emitShlUint8Sint16(I);
36995 case PT_Uint16:
36996 return emitShlUint8Uint16(I);
36997 case PT_Sint32:
36998 return emitShlUint8Sint32(I);
36999 case PT_Uint32:
37000 return emitShlUint8Uint32(I);
37001 case PT_Sint64:
37002 return emitShlUint8Sint64(I);
37003 case PT_Uint64:
37004 return emitShlUint8Uint64(I);
37005 case PT_IntAP:
37006 return emitShlUint8IntAP(I);
37007 case PT_IntAPS:
37008 return emitShlUint8IntAPS(I);
37009 default: llvm_unreachable("invalid type: emitShl");
37010 }
37011 llvm_unreachable("invalid enum value");
37012 case PT_Sint16:
37013 switch (T1) {
37014 case PT_Sint8:
37015 return emitShlSint16Sint8(I);
37016 case PT_Uint8:
37017 return emitShlSint16Uint8(I);
37018 case PT_Sint16:
37019 return emitShlSint16Sint16(I);
37020 case PT_Uint16:
37021 return emitShlSint16Uint16(I);
37022 case PT_Sint32:
37023 return emitShlSint16Sint32(I);
37024 case PT_Uint32:
37025 return emitShlSint16Uint32(I);
37026 case PT_Sint64:
37027 return emitShlSint16Sint64(I);
37028 case PT_Uint64:
37029 return emitShlSint16Uint64(I);
37030 case PT_IntAP:
37031 return emitShlSint16IntAP(I);
37032 case PT_IntAPS:
37033 return emitShlSint16IntAPS(I);
37034 default: llvm_unreachable("invalid type: emitShl");
37035 }
37036 llvm_unreachable("invalid enum value");
37037 case PT_Uint16:
37038 switch (T1) {
37039 case PT_Sint8:
37040 return emitShlUint16Sint8(I);
37041 case PT_Uint8:
37042 return emitShlUint16Uint8(I);
37043 case PT_Sint16:
37044 return emitShlUint16Sint16(I);
37045 case PT_Uint16:
37046 return emitShlUint16Uint16(I);
37047 case PT_Sint32:
37048 return emitShlUint16Sint32(I);
37049 case PT_Uint32:
37050 return emitShlUint16Uint32(I);
37051 case PT_Sint64:
37052 return emitShlUint16Sint64(I);
37053 case PT_Uint64:
37054 return emitShlUint16Uint64(I);
37055 case PT_IntAP:
37056 return emitShlUint16IntAP(I);
37057 case PT_IntAPS:
37058 return emitShlUint16IntAPS(I);
37059 default: llvm_unreachable("invalid type: emitShl");
37060 }
37061 llvm_unreachable("invalid enum value");
37062 case PT_Sint32:
37063 switch (T1) {
37064 case PT_Sint8:
37065 return emitShlSint32Sint8(I);
37066 case PT_Uint8:
37067 return emitShlSint32Uint8(I);
37068 case PT_Sint16:
37069 return emitShlSint32Sint16(I);
37070 case PT_Uint16:
37071 return emitShlSint32Uint16(I);
37072 case PT_Sint32:
37073 return emitShlSint32Sint32(I);
37074 case PT_Uint32:
37075 return emitShlSint32Uint32(I);
37076 case PT_Sint64:
37077 return emitShlSint32Sint64(I);
37078 case PT_Uint64:
37079 return emitShlSint32Uint64(I);
37080 case PT_IntAP:
37081 return emitShlSint32IntAP(I);
37082 case PT_IntAPS:
37083 return emitShlSint32IntAPS(I);
37084 default: llvm_unreachable("invalid type: emitShl");
37085 }
37086 llvm_unreachable("invalid enum value");
37087 case PT_Uint32:
37088 switch (T1) {
37089 case PT_Sint8:
37090 return emitShlUint32Sint8(I);
37091 case PT_Uint8:
37092 return emitShlUint32Uint8(I);
37093 case PT_Sint16:
37094 return emitShlUint32Sint16(I);
37095 case PT_Uint16:
37096 return emitShlUint32Uint16(I);
37097 case PT_Sint32:
37098 return emitShlUint32Sint32(I);
37099 case PT_Uint32:
37100 return emitShlUint32Uint32(I);
37101 case PT_Sint64:
37102 return emitShlUint32Sint64(I);
37103 case PT_Uint64:
37104 return emitShlUint32Uint64(I);
37105 case PT_IntAP:
37106 return emitShlUint32IntAP(I);
37107 case PT_IntAPS:
37108 return emitShlUint32IntAPS(I);
37109 default: llvm_unreachable("invalid type: emitShl");
37110 }
37111 llvm_unreachable("invalid enum value");
37112 case PT_Sint64:
37113 switch (T1) {
37114 case PT_Sint8:
37115 return emitShlSint64Sint8(I);
37116 case PT_Uint8:
37117 return emitShlSint64Uint8(I);
37118 case PT_Sint16:
37119 return emitShlSint64Sint16(I);
37120 case PT_Uint16:
37121 return emitShlSint64Uint16(I);
37122 case PT_Sint32:
37123 return emitShlSint64Sint32(I);
37124 case PT_Uint32:
37125 return emitShlSint64Uint32(I);
37126 case PT_Sint64:
37127 return emitShlSint64Sint64(I);
37128 case PT_Uint64:
37129 return emitShlSint64Uint64(I);
37130 case PT_IntAP:
37131 return emitShlSint64IntAP(I);
37132 case PT_IntAPS:
37133 return emitShlSint64IntAPS(I);
37134 default: llvm_unreachable("invalid type: emitShl");
37135 }
37136 llvm_unreachable("invalid enum value");
37137 case PT_Uint64:
37138 switch (T1) {
37139 case PT_Sint8:
37140 return emitShlUint64Sint8(I);
37141 case PT_Uint8:
37142 return emitShlUint64Uint8(I);
37143 case PT_Sint16:
37144 return emitShlUint64Sint16(I);
37145 case PT_Uint16:
37146 return emitShlUint64Uint16(I);
37147 case PT_Sint32:
37148 return emitShlUint64Sint32(I);
37149 case PT_Uint32:
37150 return emitShlUint64Uint32(I);
37151 case PT_Sint64:
37152 return emitShlUint64Sint64(I);
37153 case PT_Uint64:
37154 return emitShlUint64Uint64(I);
37155 case PT_IntAP:
37156 return emitShlUint64IntAP(I);
37157 case PT_IntAPS:
37158 return emitShlUint64IntAPS(I);
37159 default: llvm_unreachable("invalid type: emitShl");
37160 }
37161 llvm_unreachable("invalid enum value");
37162 case PT_IntAP:
37163 switch (T1) {
37164 case PT_Sint8:
37165 return emitShlIntAPSint8(I);
37166 case PT_Uint8:
37167 return emitShlIntAPUint8(I);
37168 case PT_Sint16:
37169 return emitShlIntAPSint16(I);
37170 case PT_Uint16:
37171 return emitShlIntAPUint16(I);
37172 case PT_Sint32:
37173 return emitShlIntAPSint32(I);
37174 case PT_Uint32:
37175 return emitShlIntAPUint32(I);
37176 case PT_Sint64:
37177 return emitShlIntAPSint64(I);
37178 case PT_Uint64:
37179 return emitShlIntAPUint64(I);
37180 case PT_IntAP:
37181 return emitShlIntAPIntAP(I);
37182 case PT_IntAPS:
37183 return emitShlIntAPIntAPS(I);
37184 default: llvm_unreachable("invalid type: emitShl");
37185 }
37186 llvm_unreachable("invalid enum value");
37187 case PT_IntAPS:
37188 switch (T1) {
37189 case PT_Sint8:
37190 return emitShlIntAPSSint8(I);
37191 case PT_Uint8:
37192 return emitShlIntAPSUint8(I);
37193 case PT_Sint16:
37194 return emitShlIntAPSSint16(I);
37195 case PT_Uint16:
37196 return emitShlIntAPSUint16(I);
37197 case PT_Sint32:
37198 return emitShlIntAPSSint32(I);
37199 case PT_Uint32:
37200 return emitShlIntAPSUint32(I);
37201 case PT_Sint64:
37202 return emitShlIntAPSSint64(I);
37203 case PT_Uint64:
37204 return emitShlIntAPSUint64(I);
37205 case PT_IntAP:
37206 return emitShlIntAPSIntAP(I);
37207 case PT_IntAPS:
37208 return emitShlIntAPSIntAPS(I);
37209 default: llvm_unreachable("invalid type: emitShl");
37210 }
37211 llvm_unreachable("invalid enum value");
37212 default: llvm_unreachable("invalid type: emitShl");
37213 }
37214 llvm_unreachable("invalid enum value");
37215}
37216#endif
37217#ifdef GET_LINK_IMPL
37218bool ByteCodeEmitter::emitShlSint8Sint8(SourceInfo L) {
37219 return emitOp<>(OP_ShlSint8Sint8, L);
37220}
37221bool ByteCodeEmitter::emitShlSint8Uint8(SourceInfo L) {
37222 return emitOp<>(OP_ShlSint8Uint8, L);
37223}
37224bool ByteCodeEmitter::emitShlSint8Sint16(SourceInfo L) {
37225 return emitOp<>(OP_ShlSint8Sint16, L);
37226}
37227bool ByteCodeEmitter::emitShlSint8Uint16(SourceInfo L) {
37228 return emitOp<>(OP_ShlSint8Uint16, L);
37229}
37230bool ByteCodeEmitter::emitShlSint8Sint32(SourceInfo L) {
37231 return emitOp<>(OP_ShlSint8Sint32, L);
37232}
37233bool ByteCodeEmitter::emitShlSint8Uint32(SourceInfo L) {
37234 return emitOp<>(OP_ShlSint8Uint32, L);
37235}
37236bool ByteCodeEmitter::emitShlSint8Sint64(SourceInfo L) {
37237 return emitOp<>(OP_ShlSint8Sint64, L);
37238}
37239bool ByteCodeEmitter::emitShlSint8Uint64(SourceInfo L) {
37240 return emitOp<>(OP_ShlSint8Uint64, L);
37241}
37242bool ByteCodeEmitter::emitShlSint8IntAP(SourceInfo L) {
37243 return emitOp<>(OP_ShlSint8IntAP, L);
37244}
37245bool ByteCodeEmitter::emitShlSint8IntAPS(SourceInfo L) {
37246 return emitOp<>(OP_ShlSint8IntAPS, L);
37247}
37248bool ByteCodeEmitter::emitShlUint8Sint8(SourceInfo L) {
37249 return emitOp<>(OP_ShlUint8Sint8, L);
37250}
37251bool ByteCodeEmitter::emitShlUint8Uint8(SourceInfo L) {
37252 return emitOp<>(OP_ShlUint8Uint8, L);
37253}
37254bool ByteCodeEmitter::emitShlUint8Sint16(SourceInfo L) {
37255 return emitOp<>(OP_ShlUint8Sint16, L);
37256}
37257bool ByteCodeEmitter::emitShlUint8Uint16(SourceInfo L) {
37258 return emitOp<>(OP_ShlUint8Uint16, L);
37259}
37260bool ByteCodeEmitter::emitShlUint8Sint32(SourceInfo L) {
37261 return emitOp<>(OP_ShlUint8Sint32, L);
37262}
37263bool ByteCodeEmitter::emitShlUint8Uint32(SourceInfo L) {
37264 return emitOp<>(OP_ShlUint8Uint32, L);
37265}
37266bool ByteCodeEmitter::emitShlUint8Sint64(SourceInfo L) {
37267 return emitOp<>(OP_ShlUint8Sint64, L);
37268}
37269bool ByteCodeEmitter::emitShlUint8Uint64(SourceInfo L) {
37270 return emitOp<>(OP_ShlUint8Uint64, L);
37271}
37272bool ByteCodeEmitter::emitShlUint8IntAP(SourceInfo L) {
37273 return emitOp<>(OP_ShlUint8IntAP, L);
37274}
37275bool ByteCodeEmitter::emitShlUint8IntAPS(SourceInfo L) {
37276 return emitOp<>(OP_ShlUint8IntAPS, L);
37277}
37278bool ByteCodeEmitter::emitShlSint16Sint8(SourceInfo L) {
37279 return emitOp<>(OP_ShlSint16Sint8, L);
37280}
37281bool ByteCodeEmitter::emitShlSint16Uint8(SourceInfo L) {
37282 return emitOp<>(OP_ShlSint16Uint8, L);
37283}
37284bool ByteCodeEmitter::emitShlSint16Sint16(SourceInfo L) {
37285 return emitOp<>(OP_ShlSint16Sint16, L);
37286}
37287bool ByteCodeEmitter::emitShlSint16Uint16(SourceInfo L) {
37288 return emitOp<>(OP_ShlSint16Uint16, L);
37289}
37290bool ByteCodeEmitter::emitShlSint16Sint32(SourceInfo L) {
37291 return emitOp<>(OP_ShlSint16Sint32, L);
37292}
37293bool ByteCodeEmitter::emitShlSint16Uint32(SourceInfo L) {
37294 return emitOp<>(OP_ShlSint16Uint32, L);
37295}
37296bool ByteCodeEmitter::emitShlSint16Sint64(SourceInfo L) {
37297 return emitOp<>(OP_ShlSint16Sint64, L);
37298}
37299bool ByteCodeEmitter::emitShlSint16Uint64(SourceInfo L) {
37300 return emitOp<>(OP_ShlSint16Uint64, L);
37301}
37302bool ByteCodeEmitter::emitShlSint16IntAP(SourceInfo L) {
37303 return emitOp<>(OP_ShlSint16IntAP, L);
37304}
37305bool ByteCodeEmitter::emitShlSint16IntAPS(SourceInfo L) {
37306 return emitOp<>(OP_ShlSint16IntAPS, L);
37307}
37308bool ByteCodeEmitter::emitShlUint16Sint8(SourceInfo L) {
37309 return emitOp<>(OP_ShlUint16Sint8, L);
37310}
37311bool ByteCodeEmitter::emitShlUint16Uint8(SourceInfo L) {
37312 return emitOp<>(OP_ShlUint16Uint8, L);
37313}
37314bool ByteCodeEmitter::emitShlUint16Sint16(SourceInfo L) {
37315 return emitOp<>(OP_ShlUint16Sint16, L);
37316}
37317bool ByteCodeEmitter::emitShlUint16Uint16(SourceInfo L) {
37318 return emitOp<>(OP_ShlUint16Uint16, L);
37319}
37320bool ByteCodeEmitter::emitShlUint16Sint32(SourceInfo L) {
37321 return emitOp<>(OP_ShlUint16Sint32, L);
37322}
37323bool ByteCodeEmitter::emitShlUint16Uint32(SourceInfo L) {
37324 return emitOp<>(OP_ShlUint16Uint32, L);
37325}
37326bool ByteCodeEmitter::emitShlUint16Sint64(SourceInfo L) {
37327 return emitOp<>(OP_ShlUint16Sint64, L);
37328}
37329bool ByteCodeEmitter::emitShlUint16Uint64(SourceInfo L) {
37330 return emitOp<>(OP_ShlUint16Uint64, L);
37331}
37332bool ByteCodeEmitter::emitShlUint16IntAP(SourceInfo L) {
37333 return emitOp<>(OP_ShlUint16IntAP, L);
37334}
37335bool ByteCodeEmitter::emitShlUint16IntAPS(SourceInfo L) {
37336 return emitOp<>(OP_ShlUint16IntAPS, L);
37337}
37338bool ByteCodeEmitter::emitShlSint32Sint8(SourceInfo L) {
37339 return emitOp<>(OP_ShlSint32Sint8, L);
37340}
37341bool ByteCodeEmitter::emitShlSint32Uint8(SourceInfo L) {
37342 return emitOp<>(OP_ShlSint32Uint8, L);
37343}
37344bool ByteCodeEmitter::emitShlSint32Sint16(SourceInfo L) {
37345 return emitOp<>(OP_ShlSint32Sint16, L);
37346}
37347bool ByteCodeEmitter::emitShlSint32Uint16(SourceInfo L) {
37348 return emitOp<>(OP_ShlSint32Uint16, L);
37349}
37350bool ByteCodeEmitter::emitShlSint32Sint32(SourceInfo L) {
37351 return emitOp<>(OP_ShlSint32Sint32, L);
37352}
37353bool ByteCodeEmitter::emitShlSint32Uint32(SourceInfo L) {
37354 return emitOp<>(OP_ShlSint32Uint32, L);
37355}
37356bool ByteCodeEmitter::emitShlSint32Sint64(SourceInfo L) {
37357 return emitOp<>(OP_ShlSint32Sint64, L);
37358}
37359bool ByteCodeEmitter::emitShlSint32Uint64(SourceInfo L) {
37360 return emitOp<>(OP_ShlSint32Uint64, L);
37361}
37362bool ByteCodeEmitter::emitShlSint32IntAP(SourceInfo L) {
37363 return emitOp<>(OP_ShlSint32IntAP, L);
37364}
37365bool ByteCodeEmitter::emitShlSint32IntAPS(SourceInfo L) {
37366 return emitOp<>(OP_ShlSint32IntAPS, L);
37367}
37368bool ByteCodeEmitter::emitShlUint32Sint8(SourceInfo L) {
37369 return emitOp<>(OP_ShlUint32Sint8, L);
37370}
37371bool ByteCodeEmitter::emitShlUint32Uint8(SourceInfo L) {
37372 return emitOp<>(OP_ShlUint32Uint8, L);
37373}
37374bool ByteCodeEmitter::emitShlUint32Sint16(SourceInfo L) {
37375 return emitOp<>(OP_ShlUint32Sint16, L);
37376}
37377bool ByteCodeEmitter::emitShlUint32Uint16(SourceInfo L) {
37378 return emitOp<>(OP_ShlUint32Uint16, L);
37379}
37380bool ByteCodeEmitter::emitShlUint32Sint32(SourceInfo L) {
37381 return emitOp<>(OP_ShlUint32Sint32, L);
37382}
37383bool ByteCodeEmitter::emitShlUint32Uint32(SourceInfo L) {
37384 return emitOp<>(OP_ShlUint32Uint32, L);
37385}
37386bool ByteCodeEmitter::emitShlUint32Sint64(SourceInfo L) {
37387 return emitOp<>(OP_ShlUint32Sint64, L);
37388}
37389bool ByteCodeEmitter::emitShlUint32Uint64(SourceInfo L) {
37390 return emitOp<>(OP_ShlUint32Uint64, L);
37391}
37392bool ByteCodeEmitter::emitShlUint32IntAP(SourceInfo L) {
37393 return emitOp<>(OP_ShlUint32IntAP, L);
37394}
37395bool ByteCodeEmitter::emitShlUint32IntAPS(SourceInfo L) {
37396 return emitOp<>(OP_ShlUint32IntAPS, L);
37397}
37398bool ByteCodeEmitter::emitShlSint64Sint8(SourceInfo L) {
37399 return emitOp<>(OP_ShlSint64Sint8, L);
37400}
37401bool ByteCodeEmitter::emitShlSint64Uint8(SourceInfo L) {
37402 return emitOp<>(OP_ShlSint64Uint8, L);
37403}
37404bool ByteCodeEmitter::emitShlSint64Sint16(SourceInfo L) {
37405 return emitOp<>(OP_ShlSint64Sint16, L);
37406}
37407bool ByteCodeEmitter::emitShlSint64Uint16(SourceInfo L) {
37408 return emitOp<>(OP_ShlSint64Uint16, L);
37409}
37410bool ByteCodeEmitter::emitShlSint64Sint32(SourceInfo L) {
37411 return emitOp<>(OP_ShlSint64Sint32, L);
37412}
37413bool ByteCodeEmitter::emitShlSint64Uint32(SourceInfo L) {
37414 return emitOp<>(OP_ShlSint64Uint32, L);
37415}
37416bool ByteCodeEmitter::emitShlSint64Sint64(SourceInfo L) {
37417 return emitOp<>(OP_ShlSint64Sint64, L);
37418}
37419bool ByteCodeEmitter::emitShlSint64Uint64(SourceInfo L) {
37420 return emitOp<>(OP_ShlSint64Uint64, L);
37421}
37422bool ByteCodeEmitter::emitShlSint64IntAP(SourceInfo L) {
37423 return emitOp<>(OP_ShlSint64IntAP, L);
37424}
37425bool ByteCodeEmitter::emitShlSint64IntAPS(SourceInfo L) {
37426 return emitOp<>(OP_ShlSint64IntAPS, L);
37427}
37428bool ByteCodeEmitter::emitShlUint64Sint8(SourceInfo L) {
37429 return emitOp<>(OP_ShlUint64Sint8, L);
37430}
37431bool ByteCodeEmitter::emitShlUint64Uint8(SourceInfo L) {
37432 return emitOp<>(OP_ShlUint64Uint8, L);
37433}
37434bool ByteCodeEmitter::emitShlUint64Sint16(SourceInfo L) {
37435 return emitOp<>(OP_ShlUint64Sint16, L);
37436}
37437bool ByteCodeEmitter::emitShlUint64Uint16(SourceInfo L) {
37438 return emitOp<>(OP_ShlUint64Uint16, L);
37439}
37440bool ByteCodeEmitter::emitShlUint64Sint32(SourceInfo L) {
37441 return emitOp<>(OP_ShlUint64Sint32, L);
37442}
37443bool ByteCodeEmitter::emitShlUint64Uint32(SourceInfo L) {
37444 return emitOp<>(OP_ShlUint64Uint32, L);
37445}
37446bool ByteCodeEmitter::emitShlUint64Sint64(SourceInfo L) {
37447 return emitOp<>(OP_ShlUint64Sint64, L);
37448}
37449bool ByteCodeEmitter::emitShlUint64Uint64(SourceInfo L) {
37450 return emitOp<>(OP_ShlUint64Uint64, L);
37451}
37452bool ByteCodeEmitter::emitShlUint64IntAP(SourceInfo L) {
37453 return emitOp<>(OP_ShlUint64IntAP, L);
37454}
37455bool ByteCodeEmitter::emitShlUint64IntAPS(SourceInfo L) {
37456 return emitOp<>(OP_ShlUint64IntAPS, L);
37457}
37458bool ByteCodeEmitter::emitShlIntAPSint8(SourceInfo L) {
37459 return emitOp<>(OP_ShlIntAPSint8, L);
37460}
37461bool ByteCodeEmitter::emitShlIntAPUint8(SourceInfo L) {
37462 return emitOp<>(OP_ShlIntAPUint8, L);
37463}
37464bool ByteCodeEmitter::emitShlIntAPSint16(SourceInfo L) {
37465 return emitOp<>(OP_ShlIntAPSint16, L);
37466}
37467bool ByteCodeEmitter::emitShlIntAPUint16(SourceInfo L) {
37468 return emitOp<>(OP_ShlIntAPUint16, L);
37469}
37470bool ByteCodeEmitter::emitShlIntAPSint32(SourceInfo L) {
37471 return emitOp<>(OP_ShlIntAPSint32, L);
37472}
37473bool ByteCodeEmitter::emitShlIntAPUint32(SourceInfo L) {
37474 return emitOp<>(OP_ShlIntAPUint32, L);
37475}
37476bool ByteCodeEmitter::emitShlIntAPSint64(SourceInfo L) {
37477 return emitOp<>(OP_ShlIntAPSint64, L);
37478}
37479bool ByteCodeEmitter::emitShlIntAPUint64(SourceInfo L) {
37480 return emitOp<>(OP_ShlIntAPUint64, L);
37481}
37482bool ByteCodeEmitter::emitShlIntAPIntAP(SourceInfo L) {
37483 return emitOp<>(OP_ShlIntAPIntAP, L);
37484}
37485bool ByteCodeEmitter::emitShlIntAPIntAPS(SourceInfo L) {
37486 return emitOp<>(OP_ShlIntAPIntAPS, L);
37487}
37488bool ByteCodeEmitter::emitShlIntAPSSint8(SourceInfo L) {
37489 return emitOp<>(OP_ShlIntAPSSint8, L);
37490}
37491bool ByteCodeEmitter::emitShlIntAPSUint8(SourceInfo L) {
37492 return emitOp<>(OP_ShlIntAPSUint8, L);
37493}
37494bool ByteCodeEmitter::emitShlIntAPSSint16(SourceInfo L) {
37495 return emitOp<>(OP_ShlIntAPSSint16, L);
37496}
37497bool ByteCodeEmitter::emitShlIntAPSUint16(SourceInfo L) {
37498 return emitOp<>(OP_ShlIntAPSUint16, L);
37499}
37500bool ByteCodeEmitter::emitShlIntAPSSint32(SourceInfo L) {
37501 return emitOp<>(OP_ShlIntAPSSint32, L);
37502}
37503bool ByteCodeEmitter::emitShlIntAPSUint32(SourceInfo L) {
37504 return emitOp<>(OP_ShlIntAPSUint32, L);
37505}
37506bool ByteCodeEmitter::emitShlIntAPSSint64(SourceInfo L) {
37507 return emitOp<>(OP_ShlIntAPSSint64, L);
37508}
37509bool ByteCodeEmitter::emitShlIntAPSUint64(SourceInfo L) {
37510 return emitOp<>(OP_ShlIntAPSUint64, L);
37511}
37512bool ByteCodeEmitter::emitShlIntAPSIntAP(SourceInfo L) {
37513 return emitOp<>(OP_ShlIntAPSIntAP, L);
37514}
37515bool ByteCodeEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
37516 return emitOp<>(OP_ShlIntAPSIntAPS, L);
37517}
37518#endif
37519#ifdef GET_EVAL_IMPL
37520bool EvalEmitter::emitShlSint8Sint8(SourceInfo L) {
37521 if (!isActive()) return true;
37522 CurrentSource = L;
37523 return Shl<PT_Sint8, PT_Sint8>(S, OpPC);
37524}
37525bool EvalEmitter::emitShlSint8Uint8(SourceInfo L) {
37526 if (!isActive()) return true;
37527 CurrentSource = L;
37528 return Shl<PT_Sint8, PT_Uint8>(S, OpPC);
37529}
37530bool EvalEmitter::emitShlSint8Sint16(SourceInfo L) {
37531 if (!isActive()) return true;
37532 CurrentSource = L;
37533 return Shl<PT_Sint8, PT_Sint16>(S, OpPC);
37534}
37535bool EvalEmitter::emitShlSint8Uint16(SourceInfo L) {
37536 if (!isActive()) return true;
37537 CurrentSource = L;
37538 return Shl<PT_Sint8, PT_Uint16>(S, OpPC);
37539}
37540bool EvalEmitter::emitShlSint8Sint32(SourceInfo L) {
37541 if (!isActive()) return true;
37542 CurrentSource = L;
37543 return Shl<PT_Sint8, PT_Sint32>(S, OpPC);
37544}
37545bool EvalEmitter::emitShlSint8Uint32(SourceInfo L) {
37546 if (!isActive()) return true;
37547 CurrentSource = L;
37548 return Shl<PT_Sint8, PT_Uint32>(S, OpPC);
37549}
37550bool EvalEmitter::emitShlSint8Sint64(SourceInfo L) {
37551 if (!isActive()) return true;
37552 CurrentSource = L;
37553 return Shl<PT_Sint8, PT_Sint64>(S, OpPC);
37554}
37555bool EvalEmitter::emitShlSint8Uint64(SourceInfo L) {
37556 if (!isActive()) return true;
37557 CurrentSource = L;
37558 return Shl<PT_Sint8, PT_Uint64>(S, OpPC);
37559}
37560bool EvalEmitter::emitShlSint8IntAP(SourceInfo L) {
37561 if (!isActive()) return true;
37562 CurrentSource = L;
37563 return Shl<PT_Sint8, PT_IntAP>(S, OpPC);
37564}
37565bool EvalEmitter::emitShlSint8IntAPS(SourceInfo L) {
37566 if (!isActive()) return true;
37567 CurrentSource = L;
37568 return Shl<PT_Sint8, PT_IntAPS>(S, OpPC);
37569}
37570bool EvalEmitter::emitShlUint8Sint8(SourceInfo L) {
37571 if (!isActive()) return true;
37572 CurrentSource = L;
37573 return Shl<PT_Uint8, PT_Sint8>(S, OpPC);
37574}
37575bool EvalEmitter::emitShlUint8Uint8(SourceInfo L) {
37576 if (!isActive()) return true;
37577 CurrentSource = L;
37578 return Shl<PT_Uint8, PT_Uint8>(S, OpPC);
37579}
37580bool EvalEmitter::emitShlUint8Sint16(SourceInfo L) {
37581 if (!isActive()) return true;
37582 CurrentSource = L;
37583 return Shl<PT_Uint8, PT_Sint16>(S, OpPC);
37584}
37585bool EvalEmitter::emitShlUint8Uint16(SourceInfo L) {
37586 if (!isActive()) return true;
37587 CurrentSource = L;
37588 return Shl<PT_Uint8, PT_Uint16>(S, OpPC);
37589}
37590bool EvalEmitter::emitShlUint8Sint32(SourceInfo L) {
37591 if (!isActive()) return true;
37592 CurrentSource = L;
37593 return Shl<PT_Uint8, PT_Sint32>(S, OpPC);
37594}
37595bool EvalEmitter::emitShlUint8Uint32(SourceInfo L) {
37596 if (!isActive()) return true;
37597 CurrentSource = L;
37598 return Shl<PT_Uint8, PT_Uint32>(S, OpPC);
37599}
37600bool EvalEmitter::emitShlUint8Sint64(SourceInfo L) {
37601 if (!isActive()) return true;
37602 CurrentSource = L;
37603 return Shl<PT_Uint8, PT_Sint64>(S, OpPC);
37604}
37605bool EvalEmitter::emitShlUint8Uint64(SourceInfo L) {
37606 if (!isActive()) return true;
37607 CurrentSource = L;
37608 return Shl<PT_Uint8, PT_Uint64>(S, OpPC);
37609}
37610bool EvalEmitter::emitShlUint8IntAP(SourceInfo L) {
37611 if (!isActive()) return true;
37612 CurrentSource = L;
37613 return Shl<PT_Uint8, PT_IntAP>(S, OpPC);
37614}
37615bool EvalEmitter::emitShlUint8IntAPS(SourceInfo L) {
37616 if (!isActive()) return true;
37617 CurrentSource = L;
37618 return Shl<PT_Uint8, PT_IntAPS>(S, OpPC);
37619}
37620bool EvalEmitter::emitShlSint16Sint8(SourceInfo L) {
37621 if (!isActive()) return true;
37622 CurrentSource = L;
37623 return Shl<PT_Sint16, PT_Sint8>(S, OpPC);
37624}
37625bool EvalEmitter::emitShlSint16Uint8(SourceInfo L) {
37626 if (!isActive()) return true;
37627 CurrentSource = L;
37628 return Shl<PT_Sint16, PT_Uint8>(S, OpPC);
37629}
37630bool EvalEmitter::emitShlSint16Sint16(SourceInfo L) {
37631 if (!isActive()) return true;
37632 CurrentSource = L;
37633 return Shl<PT_Sint16, PT_Sint16>(S, OpPC);
37634}
37635bool EvalEmitter::emitShlSint16Uint16(SourceInfo L) {
37636 if (!isActive()) return true;
37637 CurrentSource = L;
37638 return Shl<PT_Sint16, PT_Uint16>(S, OpPC);
37639}
37640bool EvalEmitter::emitShlSint16Sint32(SourceInfo L) {
37641 if (!isActive()) return true;
37642 CurrentSource = L;
37643 return Shl<PT_Sint16, PT_Sint32>(S, OpPC);
37644}
37645bool EvalEmitter::emitShlSint16Uint32(SourceInfo L) {
37646 if (!isActive()) return true;
37647 CurrentSource = L;
37648 return Shl<PT_Sint16, PT_Uint32>(S, OpPC);
37649}
37650bool EvalEmitter::emitShlSint16Sint64(SourceInfo L) {
37651 if (!isActive()) return true;
37652 CurrentSource = L;
37653 return Shl<PT_Sint16, PT_Sint64>(S, OpPC);
37654}
37655bool EvalEmitter::emitShlSint16Uint64(SourceInfo L) {
37656 if (!isActive()) return true;
37657 CurrentSource = L;
37658 return Shl<PT_Sint16, PT_Uint64>(S, OpPC);
37659}
37660bool EvalEmitter::emitShlSint16IntAP(SourceInfo L) {
37661 if (!isActive()) return true;
37662 CurrentSource = L;
37663 return Shl<PT_Sint16, PT_IntAP>(S, OpPC);
37664}
37665bool EvalEmitter::emitShlSint16IntAPS(SourceInfo L) {
37666 if (!isActive()) return true;
37667 CurrentSource = L;
37668 return Shl<PT_Sint16, PT_IntAPS>(S, OpPC);
37669}
37670bool EvalEmitter::emitShlUint16Sint8(SourceInfo L) {
37671 if (!isActive()) return true;
37672 CurrentSource = L;
37673 return Shl<PT_Uint16, PT_Sint8>(S, OpPC);
37674}
37675bool EvalEmitter::emitShlUint16Uint8(SourceInfo L) {
37676 if (!isActive()) return true;
37677 CurrentSource = L;
37678 return Shl<PT_Uint16, PT_Uint8>(S, OpPC);
37679}
37680bool EvalEmitter::emitShlUint16Sint16(SourceInfo L) {
37681 if (!isActive()) return true;
37682 CurrentSource = L;
37683 return Shl<PT_Uint16, PT_Sint16>(S, OpPC);
37684}
37685bool EvalEmitter::emitShlUint16Uint16(SourceInfo L) {
37686 if (!isActive()) return true;
37687 CurrentSource = L;
37688 return Shl<PT_Uint16, PT_Uint16>(S, OpPC);
37689}
37690bool EvalEmitter::emitShlUint16Sint32(SourceInfo L) {
37691 if (!isActive()) return true;
37692 CurrentSource = L;
37693 return Shl<PT_Uint16, PT_Sint32>(S, OpPC);
37694}
37695bool EvalEmitter::emitShlUint16Uint32(SourceInfo L) {
37696 if (!isActive()) return true;
37697 CurrentSource = L;
37698 return Shl<PT_Uint16, PT_Uint32>(S, OpPC);
37699}
37700bool EvalEmitter::emitShlUint16Sint64(SourceInfo L) {
37701 if (!isActive()) return true;
37702 CurrentSource = L;
37703 return Shl<PT_Uint16, PT_Sint64>(S, OpPC);
37704}
37705bool EvalEmitter::emitShlUint16Uint64(SourceInfo L) {
37706 if (!isActive()) return true;
37707 CurrentSource = L;
37708 return Shl<PT_Uint16, PT_Uint64>(S, OpPC);
37709}
37710bool EvalEmitter::emitShlUint16IntAP(SourceInfo L) {
37711 if (!isActive()) return true;
37712 CurrentSource = L;
37713 return Shl<PT_Uint16, PT_IntAP>(S, OpPC);
37714}
37715bool EvalEmitter::emitShlUint16IntAPS(SourceInfo L) {
37716 if (!isActive()) return true;
37717 CurrentSource = L;
37718 return Shl<PT_Uint16, PT_IntAPS>(S, OpPC);
37719}
37720bool EvalEmitter::emitShlSint32Sint8(SourceInfo L) {
37721 if (!isActive()) return true;
37722 CurrentSource = L;
37723 return Shl<PT_Sint32, PT_Sint8>(S, OpPC);
37724}
37725bool EvalEmitter::emitShlSint32Uint8(SourceInfo L) {
37726 if (!isActive()) return true;
37727 CurrentSource = L;
37728 return Shl<PT_Sint32, PT_Uint8>(S, OpPC);
37729}
37730bool EvalEmitter::emitShlSint32Sint16(SourceInfo L) {
37731 if (!isActive()) return true;
37732 CurrentSource = L;
37733 return Shl<PT_Sint32, PT_Sint16>(S, OpPC);
37734}
37735bool EvalEmitter::emitShlSint32Uint16(SourceInfo L) {
37736 if (!isActive()) return true;
37737 CurrentSource = L;
37738 return Shl<PT_Sint32, PT_Uint16>(S, OpPC);
37739}
37740bool EvalEmitter::emitShlSint32Sint32(SourceInfo L) {
37741 if (!isActive()) return true;
37742 CurrentSource = L;
37743 return Shl<PT_Sint32, PT_Sint32>(S, OpPC);
37744}
37745bool EvalEmitter::emitShlSint32Uint32(SourceInfo L) {
37746 if (!isActive()) return true;
37747 CurrentSource = L;
37748 return Shl<PT_Sint32, PT_Uint32>(S, OpPC);
37749}
37750bool EvalEmitter::emitShlSint32Sint64(SourceInfo L) {
37751 if (!isActive()) return true;
37752 CurrentSource = L;
37753 return Shl<PT_Sint32, PT_Sint64>(S, OpPC);
37754}
37755bool EvalEmitter::emitShlSint32Uint64(SourceInfo L) {
37756 if (!isActive()) return true;
37757 CurrentSource = L;
37758 return Shl<PT_Sint32, PT_Uint64>(S, OpPC);
37759}
37760bool EvalEmitter::emitShlSint32IntAP(SourceInfo L) {
37761 if (!isActive()) return true;
37762 CurrentSource = L;
37763 return Shl<PT_Sint32, PT_IntAP>(S, OpPC);
37764}
37765bool EvalEmitter::emitShlSint32IntAPS(SourceInfo L) {
37766 if (!isActive()) return true;
37767 CurrentSource = L;
37768 return Shl<PT_Sint32, PT_IntAPS>(S, OpPC);
37769}
37770bool EvalEmitter::emitShlUint32Sint8(SourceInfo L) {
37771 if (!isActive()) return true;
37772 CurrentSource = L;
37773 return Shl<PT_Uint32, PT_Sint8>(S, OpPC);
37774}
37775bool EvalEmitter::emitShlUint32Uint8(SourceInfo L) {
37776 if (!isActive()) return true;
37777 CurrentSource = L;
37778 return Shl<PT_Uint32, PT_Uint8>(S, OpPC);
37779}
37780bool EvalEmitter::emitShlUint32Sint16(SourceInfo L) {
37781 if (!isActive()) return true;
37782 CurrentSource = L;
37783 return Shl<PT_Uint32, PT_Sint16>(S, OpPC);
37784}
37785bool EvalEmitter::emitShlUint32Uint16(SourceInfo L) {
37786 if (!isActive()) return true;
37787 CurrentSource = L;
37788 return Shl<PT_Uint32, PT_Uint16>(S, OpPC);
37789}
37790bool EvalEmitter::emitShlUint32Sint32(SourceInfo L) {
37791 if (!isActive()) return true;
37792 CurrentSource = L;
37793 return Shl<PT_Uint32, PT_Sint32>(S, OpPC);
37794}
37795bool EvalEmitter::emitShlUint32Uint32(SourceInfo L) {
37796 if (!isActive()) return true;
37797 CurrentSource = L;
37798 return Shl<PT_Uint32, PT_Uint32>(S, OpPC);
37799}
37800bool EvalEmitter::emitShlUint32Sint64(SourceInfo L) {
37801 if (!isActive()) return true;
37802 CurrentSource = L;
37803 return Shl<PT_Uint32, PT_Sint64>(S, OpPC);
37804}
37805bool EvalEmitter::emitShlUint32Uint64(SourceInfo L) {
37806 if (!isActive()) return true;
37807 CurrentSource = L;
37808 return Shl<PT_Uint32, PT_Uint64>(S, OpPC);
37809}
37810bool EvalEmitter::emitShlUint32IntAP(SourceInfo L) {
37811 if (!isActive()) return true;
37812 CurrentSource = L;
37813 return Shl<PT_Uint32, PT_IntAP>(S, OpPC);
37814}
37815bool EvalEmitter::emitShlUint32IntAPS(SourceInfo L) {
37816 if (!isActive()) return true;
37817 CurrentSource = L;
37818 return Shl<PT_Uint32, PT_IntAPS>(S, OpPC);
37819}
37820bool EvalEmitter::emitShlSint64Sint8(SourceInfo L) {
37821 if (!isActive()) return true;
37822 CurrentSource = L;
37823 return Shl<PT_Sint64, PT_Sint8>(S, OpPC);
37824}
37825bool EvalEmitter::emitShlSint64Uint8(SourceInfo L) {
37826 if (!isActive()) return true;
37827 CurrentSource = L;
37828 return Shl<PT_Sint64, PT_Uint8>(S, OpPC);
37829}
37830bool EvalEmitter::emitShlSint64Sint16(SourceInfo L) {
37831 if (!isActive()) return true;
37832 CurrentSource = L;
37833 return Shl<PT_Sint64, PT_Sint16>(S, OpPC);
37834}
37835bool EvalEmitter::emitShlSint64Uint16(SourceInfo L) {
37836 if (!isActive()) return true;
37837 CurrentSource = L;
37838 return Shl<PT_Sint64, PT_Uint16>(S, OpPC);
37839}
37840bool EvalEmitter::emitShlSint64Sint32(SourceInfo L) {
37841 if (!isActive()) return true;
37842 CurrentSource = L;
37843 return Shl<PT_Sint64, PT_Sint32>(S, OpPC);
37844}
37845bool EvalEmitter::emitShlSint64Uint32(SourceInfo L) {
37846 if (!isActive()) return true;
37847 CurrentSource = L;
37848 return Shl<PT_Sint64, PT_Uint32>(S, OpPC);
37849}
37850bool EvalEmitter::emitShlSint64Sint64(SourceInfo L) {
37851 if (!isActive()) return true;
37852 CurrentSource = L;
37853 return Shl<PT_Sint64, PT_Sint64>(S, OpPC);
37854}
37855bool EvalEmitter::emitShlSint64Uint64(SourceInfo L) {
37856 if (!isActive()) return true;
37857 CurrentSource = L;
37858 return Shl<PT_Sint64, PT_Uint64>(S, OpPC);
37859}
37860bool EvalEmitter::emitShlSint64IntAP(SourceInfo L) {
37861 if (!isActive()) return true;
37862 CurrentSource = L;
37863 return Shl<PT_Sint64, PT_IntAP>(S, OpPC);
37864}
37865bool EvalEmitter::emitShlSint64IntAPS(SourceInfo L) {
37866 if (!isActive()) return true;
37867 CurrentSource = L;
37868 return Shl<PT_Sint64, PT_IntAPS>(S, OpPC);
37869}
37870bool EvalEmitter::emitShlUint64Sint8(SourceInfo L) {
37871 if (!isActive()) return true;
37872 CurrentSource = L;
37873 return Shl<PT_Uint64, PT_Sint8>(S, OpPC);
37874}
37875bool EvalEmitter::emitShlUint64Uint8(SourceInfo L) {
37876 if (!isActive()) return true;
37877 CurrentSource = L;
37878 return Shl<PT_Uint64, PT_Uint8>(S, OpPC);
37879}
37880bool EvalEmitter::emitShlUint64Sint16(SourceInfo L) {
37881 if (!isActive()) return true;
37882 CurrentSource = L;
37883 return Shl<PT_Uint64, PT_Sint16>(S, OpPC);
37884}
37885bool EvalEmitter::emitShlUint64Uint16(SourceInfo L) {
37886 if (!isActive()) return true;
37887 CurrentSource = L;
37888 return Shl<PT_Uint64, PT_Uint16>(S, OpPC);
37889}
37890bool EvalEmitter::emitShlUint64Sint32(SourceInfo L) {
37891 if (!isActive()) return true;
37892 CurrentSource = L;
37893 return Shl<PT_Uint64, PT_Sint32>(S, OpPC);
37894}
37895bool EvalEmitter::emitShlUint64Uint32(SourceInfo L) {
37896 if (!isActive()) return true;
37897 CurrentSource = L;
37898 return Shl<PT_Uint64, PT_Uint32>(S, OpPC);
37899}
37900bool EvalEmitter::emitShlUint64Sint64(SourceInfo L) {
37901 if (!isActive()) return true;
37902 CurrentSource = L;
37903 return Shl<PT_Uint64, PT_Sint64>(S, OpPC);
37904}
37905bool EvalEmitter::emitShlUint64Uint64(SourceInfo L) {
37906 if (!isActive()) return true;
37907 CurrentSource = L;
37908 return Shl<PT_Uint64, PT_Uint64>(S, OpPC);
37909}
37910bool EvalEmitter::emitShlUint64IntAP(SourceInfo L) {
37911 if (!isActive()) return true;
37912 CurrentSource = L;
37913 return Shl<PT_Uint64, PT_IntAP>(S, OpPC);
37914}
37915bool EvalEmitter::emitShlUint64IntAPS(SourceInfo L) {
37916 if (!isActive()) return true;
37917 CurrentSource = L;
37918 return Shl<PT_Uint64, PT_IntAPS>(S, OpPC);
37919}
37920bool EvalEmitter::emitShlIntAPSint8(SourceInfo L) {
37921 if (!isActive()) return true;
37922 CurrentSource = L;
37923 return Shl<PT_IntAP, PT_Sint8>(S, OpPC);
37924}
37925bool EvalEmitter::emitShlIntAPUint8(SourceInfo L) {
37926 if (!isActive()) return true;
37927 CurrentSource = L;
37928 return Shl<PT_IntAP, PT_Uint8>(S, OpPC);
37929}
37930bool EvalEmitter::emitShlIntAPSint16(SourceInfo L) {
37931 if (!isActive()) return true;
37932 CurrentSource = L;
37933 return Shl<PT_IntAP, PT_Sint16>(S, OpPC);
37934}
37935bool EvalEmitter::emitShlIntAPUint16(SourceInfo L) {
37936 if (!isActive()) return true;
37937 CurrentSource = L;
37938 return Shl<PT_IntAP, PT_Uint16>(S, OpPC);
37939}
37940bool EvalEmitter::emitShlIntAPSint32(SourceInfo L) {
37941 if (!isActive()) return true;
37942 CurrentSource = L;
37943 return Shl<PT_IntAP, PT_Sint32>(S, OpPC);
37944}
37945bool EvalEmitter::emitShlIntAPUint32(SourceInfo L) {
37946 if (!isActive()) return true;
37947 CurrentSource = L;
37948 return Shl<PT_IntAP, PT_Uint32>(S, OpPC);
37949}
37950bool EvalEmitter::emitShlIntAPSint64(SourceInfo L) {
37951 if (!isActive()) return true;
37952 CurrentSource = L;
37953 return Shl<PT_IntAP, PT_Sint64>(S, OpPC);
37954}
37955bool EvalEmitter::emitShlIntAPUint64(SourceInfo L) {
37956 if (!isActive()) return true;
37957 CurrentSource = L;
37958 return Shl<PT_IntAP, PT_Uint64>(S, OpPC);
37959}
37960bool EvalEmitter::emitShlIntAPIntAP(SourceInfo L) {
37961 if (!isActive()) return true;
37962 CurrentSource = L;
37963 return Shl<PT_IntAP, PT_IntAP>(S, OpPC);
37964}
37965bool EvalEmitter::emitShlIntAPIntAPS(SourceInfo L) {
37966 if (!isActive()) return true;
37967 CurrentSource = L;
37968 return Shl<PT_IntAP, PT_IntAPS>(S, OpPC);
37969}
37970bool EvalEmitter::emitShlIntAPSSint8(SourceInfo L) {
37971 if (!isActive()) return true;
37972 CurrentSource = L;
37973 return Shl<PT_IntAPS, PT_Sint8>(S, OpPC);
37974}
37975bool EvalEmitter::emitShlIntAPSUint8(SourceInfo L) {
37976 if (!isActive()) return true;
37977 CurrentSource = L;
37978 return Shl<PT_IntAPS, PT_Uint8>(S, OpPC);
37979}
37980bool EvalEmitter::emitShlIntAPSSint16(SourceInfo L) {
37981 if (!isActive()) return true;
37982 CurrentSource = L;
37983 return Shl<PT_IntAPS, PT_Sint16>(S, OpPC);
37984}
37985bool EvalEmitter::emitShlIntAPSUint16(SourceInfo L) {
37986 if (!isActive()) return true;
37987 CurrentSource = L;
37988 return Shl<PT_IntAPS, PT_Uint16>(S, OpPC);
37989}
37990bool EvalEmitter::emitShlIntAPSSint32(SourceInfo L) {
37991 if (!isActive()) return true;
37992 CurrentSource = L;
37993 return Shl<PT_IntAPS, PT_Sint32>(S, OpPC);
37994}
37995bool EvalEmitter::emitShlIntAPSUint32(SourceInfo L) {
37996 if (!isActive()) return true;
37997 CurrentSource = L;
37998 return Shl<PT_IntAPS, PT_Uint32>(S, OpPC);
37999}
38000bool EvalEmitter::emitShlIntAPSSint64(SourceInfo L) {
38001 if (!isActive()) return true;
38002 CurrentSource = L;
38003 return Shl<PT_IntAPS, PT_Sint64>(S, OpPC);
38004}
38005bool EvalEmitter::emitShlIntAPSUint64(SourceInfo L) {
38006 if (!isActive()) return true;
38007 CurrentSource = L;
38008 return Shl<PT_IntAPS, PT_Uint64>(S, OpPC);
38009}
38010bool EvalEmitter::emitShlIntAPSIntAP(SourceInfo L) {
38011 if (!isActive()) return true;
38012 CurrentSource = L;
38013 return Shl<PT_IntAPS, PT_IntAP>(S, OpPC);
38014}
38015bool EvalEmitter::emitShlIntAPSIntAPS(SourceInfo L) {
38016 if (!isActive()) return true;
38017 CurrentSource = L;
38018 return Shl<PT_IntAPS, PT_IntAPS>(S, OpPC);
38019}
38020#endif
38021#ifdef GET_OPCODE_NAMES
38022OP_ShrSint8Sint8,
38023OP_ShrSint8Uint8,
38024OP_ShrSint8Sint16,
38025OP_ShrSint8Uint16,
38026OP_ShrSint8Sint32,
38027OP_ShrSint8Uint32,
38028OP_ShrSint8Sint64,
38029OP_ShrSint8Uint64,
38030OP_ShrSint8IntAP,
38031OP_ShrSint8IntAPS,
38032OP_ShrUint8Sint8,
38033OP_ShrUint8Uint8,
38034OP_ShrUint8Sint16,
38035OP_ShrUint8Uint16,
38036OP_ShrUint8Sint32,
38037OP_ShrUint8Uint32,
38038OP_ShrUint8Sint64,
38039OP_ShrUint8Uint64,
38040OP_ShrUint8IntAP,
38041OP_ShrUint8IntAPS,
38042OP_ShrSint16Sint8,
38043OP_ShrSint16Uint8,
38044OP_ShrSint16Sint16,
38045OP_ShrSint16Uint16,
38046OP_ShrSint16Sint32,
38047OP_ShrSint16Uint32,
38048OP_ShrSint16Sint64,
38049OP_ShrSint16Uint64,
38050OP_ShrSint16IntAP,
38051OP_ShrSint16IntAPS,
38052OP_ShrUint16Sint8,
38053OP_ShrUint16Uint8,
38054OP_ShrUint16Sint16,
38055OP_ShrUint16Uint16,
38056OP_ShrUint16Sint32,
38057OP_ShrUint16Uint32,
38058OP_ShrUint16Sint64,
38059OP_ShrUint16Uint64,
38060OP_ShrUint16IntAP,
38061OP_ShrUint16IntAPS,
38062OP_ShrSint32Sint8,
38063OP_ShrSint32Uint8,
38064OP_ShrSint32Sint16,
38065OP_ShrSint32Uint16,
38066OP_ShrSint32Sint32,
38067OP_ShrSint32Uint32,
38068OP_ShrSint32Sint64,
38069OP_ShrSint32Uint64,
38070OP_ShrSint32IntAP,
38071OP_ShrSint32IntAPS,
38072OP_ShrUint32Sint8,
38073OP_ShrUint32Uint8,
38074OP_ShrUint32Sint16,
38075OP_ShrUint32Uint16,
38076OP_ShrUint32Sint32,
38077OP_ShrUint32Uint32,
38078OP_ShrUint32Sint64,
38079OP_ShrUint32Uint64,
38080OP_ShrUint32IntAP,
38081OP_ShrUint32IntAPS,
38082OP_ShrSint64Sint8,
38083OP_ShrSint64Uint8,
38084OP_ShrSint64Sint16,
38085OP_ShrSint64Uint16,
38086OP_ShrSint64Sint32,
38087OP_ShrSint64Uint32,
38088OP_ShrSint64Sint64,
38089OP_ShrSint64Uint64,
38090OP_ShrSint64IntAP,
38091OP_ShrSint64IntAPS,
38092OP_ShrUint64Sint8,
38093OP_ShrUint64Uint8,
38094OP_ShrUint64Sint16,
38095OP_ShrUint64Uint16,
38096OP_ShrUint64Sint32,
38097OP_ShrUint64Uint32,
38098OP_ShrUint64Sint64,
38099OP_ShrUint64Uint64,
38100OP_ShrUint64IntAP,
38101OP_ShrUint64IntAPS,
38102OP_ShrIntAPSint8,
38103OP_ShrIntAPUint8,
38104OP_ShrIntAPSint16,
38105OP_ShrIntAPUint16,
38106OP_ShrIntAPSint32,
38107OP_ShrIntAPUint32,
38108OP_ShrIntAPSint64,
38109OP_ShrIntAPUint64,
38110OP_ShrIntAPIntAP,
38111OP_ShrIntAPIntAPS,
38112OP_ShrIntAPSSint8,
38113OP_ShrIntAPSUint8,
38114OP_ShrIntAPSSint16,
38115OP_ShrIntAPSUint16,
38116OP_ShrIntAPSSint32,
38117OP_ShrIntAPSUint32,
38118OP_ShrIntAPSSint64,
38119OP_ShrIntAPSUint64,
38120OP_ShrIntAPSIntAP,
38121OP_ShrIntAPSIntAPS,
38122#endif
38123#ifdef GET_INTERP
38124case OP_ShrSint8Sint8: {
38125 if (!Shr<PT_Sint8, PT_Sint8>(S, OpPC))
38126 return false;
38127 continue;
38128}
38129case OP_ShrSint8Uint8: {
38130 if (!Shr<PT_Sint8, PT_Uint8>(S, OpPC))
38131 return false;
38132 continue;
38133}
38134case OP_ShrSint8Sint16: {
38135 if (!Shr<PT_Sint8, PT_Sint16>(S, OpPC))
38136 return false;
38137 continue;
38138}
38139case OP_ShrSint8Uint16: {
38140 if (!Shr<PT_Sint8, PT_Uint16>(S, OpPC))
38141 return false;
38142 continue;
38143}
38144case OP_ShrSint8Sint32: {
38145 if (!Shr<PT_Sint8, PT_Sint32>(S, OpPC))
38146 return false;
38147 continue;
38148}
38149case OP_ShrSint8Uint32: {
38150 if (!Shr<PT_Sint8, PT_Uint32>(S, OpPC))
38151 return false;
38152 continue;
38153}
38154case OP_ShrSint8Sint64: {
38155 if (!Shr<PT_Sint8, PT_Sint64>(S, OpPC))
38156 return false;
38157 continue;
38158}
38159case OP_ShrSint8Uint64: {
38160 if (!Shr<PT_Sint8, PT_Uint64>(S, OpPC))
38161 return false;
38162 continue;
38163}
38164case OP_ShrSint8IntAP: {
38165 if (!Shr<PT_Sint8, PT_IntAP>(S, OpPC))
38166 return false;
38167 continue;
38168}
38169case OP_ShrSint8IntAPS: {
38170 if (!Shr<PT_Sint8, PT_IntAPS>(S, OpPC))
38171 return false;
38172 continue;
38173}
38174case OP_ShrUint8Sint8: {
38175 if (!Shr<PT_Uint8, PT_Sint8>(S, OpPC))
38176 return false;
38177 continue;
38178}
38179case OP_ShrUint8Uint8: {
38180 if (!Shr<PT_Uint8, PT_Uint8>(S, OpPC))
38181 return false;
38182 continue;
38183}
38184case OP_ShrUint8Sint16: {
38185 if (!Shr<PT_Uint8, PT_Sint16>(S, OpPC))
38186 return false;
38187 continue;
38188}
38189case OP_ShrUint8Uint16: {
38190 if (!Shr<PT_Uint8, PT_Uint16>(S, OpPC))
38191 return false;
38192 continue;
38193}
38194case OP_ShrUint8Sint32: {
38195 if (!Shr<PT_Uint8, PT_Sint32>(S, OpPC))
38196 return false;
38197 continue;
38198}
38199case OP_ShrUint8Uint32: {
38200 if (!Shr<PT_Uint8, PT_Uint32>(S, OpPC))
38201 return false;
38202 continue;
38203}
38204case OP_ShrUint8Sint64: {
38205 if (!Shr<PT_Uint8, PT_Sint64>(S, OpPC))
38206 return false;
38207 continue;
38208}
38209case OP_ShrUint8Uint64: {
38210 if (!Shr<PT_Uint8, PT_Uint64>(S, OpPC))
38211 return false;
38212 continue;
38213}
38214case OP_ShrUint8IntAP: {
38215 if (!Shr<PT_Uint8, PT_IntAP>(S, OpPC))
38216 return false;
38217 continue;
38218}
38219case OP_ShrUint8IntAPS: {
38220 if (!Shr<PT_Uint8, PT_IntAPS>(S, OpPC))
38221 return false;
38222 continue;
38223}
38224case OP_ShrSint16Sint8: {
38225 if (!Shr<PT_Sint16, PT_Sint8>(S, OpPC))
38226 return false;
38227 continue;
38228}
38229case OP_ShrSint16Uint8: {
38230 if (!Shr<PT_Sint16, PT_Uint8>(S, OpPC))
38231 return false;
38232 continue;
38233}
38234case OP_ShrSint16Sint16: {
38235 if (!Shr<PT_Sint16, PT_Sint16>(S, OpPC))
38236 return false;
38237 continue;
38238}
38239case OP_ShrSint16Uint16: {
38240 if (!Shr<PT_Sint16, PT_Uint16>(S, OpPC))
38241 return false;
38242 continue;
38243}
38244case OP_ShrSint16Sint32: {
38245 if (!Shr<PT_Sint16, PT_Sint32>(S, OpPC))
38246 return false;
38247 continue;
38248}
38249case OP_ShrSint16Uint32: {
38250 if (!Shr<PT_Sint16, PT_Uint32>(S, OpPC))
38251 return false;
38252 continue;
38253}
38254case OP_ShrSint16Sint64: {
38255 if (!Shr<PT_Sint16, PT_Sint64>(S, OpPC))
38256 return false;
38257 continue;
38258}
38259case OP_ShrSint16Uint64: {
38260 if (!Shr<PT_Sint16, PT_Uint64>(S, OpPC))
38261 return false;
38262 continue;
38263}
38264case OP_ShrSint16IntAP: {
38265 if (!Shr<PT_Sint16, PT_IntAP>(S, OpPC))
38266 return false;
38267 continue;
38268}
38269case OP_ShrSint16IntAPS: {
38270 if (!Shr<PT_Sint16, PT_IntAPS>(S, OpPC))
38271 return false;
38272 continue;
38273}
38274case OP_ShrUint16Sint8: {
38275 if (!Shr<PT_Uint16, PT_Sint8>(S, OpPC))
38276 return false;
38277 continue;
38278}
38279case OP_ShrUint16Uint8: {
38280 if (!Shr<PT_Uint16, PT_Uint8>(S, OpPC))
38281 return false;
38282 continue;
38283}
38284case OP_ShrUint16Sint16: {
38285 if (!Shr<PT_Uint16, PT_Sint16>(S, OpPC))
38286 return false;
38287 continue;
38288}
38289case OP_ShrUint16Uint16: {
38290 if (!Shr<PT_Uint16, PT_Uint16>(S, OpPC))
38291 return false;
38292 continue;
38293}
38294case OP_ShrUint16Sint32: {
38295 if (!Shr<PT_Uint16, PT_Sint32>(S, OpPC))
38296 return false;
38297 continue;
38298}
38299case OP_ShrUint16Uint32: {
38300 if (!Shr<PT_Uint16, PT_Uint32>(S, OpPC))
38301 return false;
38302 continue;
38303}
38304case OP_ShrUint16Sint64: {
38305 if (!Shr<PT_Uint16, PT_Sint64>(S, OpPC))
38306 return false;
38307 continue;
38308}
38309case OP_ShrUint16Uint64: {
38310 if (!Shr<PT_Uint16, PT_Uint64>(S, OpPC))
38311 return false;
38312 continue;
38313}
38314case OP_ShrUint16IntAP: {
38315 if (!Shr<PT_Uint16, PT_IntAP>(S, OpPC))
38316 return false;
38317 continue;
38318}
38319case OP_ShrUint16IntAPS: {
38320 if (!Shr<PT_Uint16, PT_IntAPS>(S, OpPC))
38321 return false;
38322 continue;
38323}
38324case OP_ShrSint32Sint8: {
38325 if (!Shr<PT_Sint32, PT_Sint8>(S, OpPC))
38326 return false;
38327 continue;
38328}
38329case OP_ShrSint32Uint8: {
38330 if (!Shr<PT_Sint32, PT_Uint8>(S, OpPC))
38331 return false;
38332 continue;
38333}
38334case OP_ShrSint32Sint16: {
38335 if (!Shr<PT_Sint32, PT_Sint16>(S, OpPC))
38336 return false;
38337 continue;
38338}
38339case OP_ShrSint32Uint16: {
38340 if (!Shr<PT_Sint32, PT_Uint16>(S, OpPC))
38341 return false;
38342 continue;
38343}
38344case OP_ShrSint32Sint32: {
38345 if (!Shr<PT_Sint32, PT_Sint32>(S, OpPC))
38346 return false;
38347 continue;
38348}
38349case OP_ShrSint32Uint32: {
38350 if (!Shr<PT_Sint32, PT_Uint32>(S, OpPC))
38351 return false;
38352 continue;
38353}
38354case OP_ShrSint32Sint64: {
38355 if (!Shr<PT_Sint32, PT_Sint64>(S, OpPC))
38356 return false;
38357 continue;
38358}
38359case OP_ShrSint32Uint64: {
38360 if (!Shr<PT_Sint32, PT_Uint64>(S, OpPC))
38361 return false;
38362 continue;
38363}
38364case OP_ShrSint32IntAP: {
38365 if (!Shr<PT_Sint32, PT_IntAP>(S, OpPC))
38366 return false;
38367 continue;
38368}
38369case OP_ShrSint32IntAPS: {
38370 if (!Shr<PT_Sint32, PT_IntAPS>(S, OpPC))
38371 return false;
38372 continue;
38373}
38374case OP_ShrUint32Sint8: {
38375 if (!Shr<PT_Uint32, PT_Sint8>(S, OpPC))
38376 return false;
38377 continue;
38378}
38379case OP_ShrUint32Uint8: {
38380 if (!Shr<PT_Uint32, PT_Uint8>(S, OpPC))
38381 return false;
38382 continue;
38383}
38384case OP_ShrUint32Sint16: {
38385 if (!Shr<PT_Uint32, PT_Sint16>(S, OpPC))
38386 return false;
38387 continue;
38388}
38389case OP_ShrUint32Uint16: {
38390 if (!Shr<PT_Uint32, PT_Uint16>(S, OpPC))
38391 return false;
38392 continue;
38393}
38394case OP_ShrUint32Sint32: {
38395 if (!Shr<PT_Uint32, PT_Sint32>(S, OpPC))
38396 return false;
38397 continue;
38398}
38399case OP_ShrUint32Uint32: {
38400 if (!Shr<PT_Uint32, PT_Uint32>(S, OpPC))
38401 return false;
38402 continue;
38403}
38404case OP_ShrUint32Sint64: {
38405 if (!Shr<PT_Uint32, PT_Sint64>(S, OpPC))
38406 return false;
38407 continue;
38408}
38409case OP_ShrUint32Uint64: {
38410 if (!Shr<PT_Uint32, PT_Uint64>(S, OpPC))
38411 return false;
38412 continue;
38413}
38414case OP_ShrUint32IntAP: {
38415 if (!Shr<PT_Uint32, PT_IntAP>(S, OpPC))
38416 return false;
38417 continue;
38418}
38419case OP_ShrUint32IntAPS: {
38420 if (!Shr<PT_Uint32, PT_IntAPS>(S, OpPC))
38421 return false;
38422 continue;
38423}
38424case OP_ShrSint64Sint8: {
38425 if (!Shr<PT_Sint64, PT_Sint8>(S, OpPC))
38426 return false;
38427 continue;
38428}
38429case OP_ShrSint64Uint8: {
38430 if (!Shr<PT_Sint64, PT_Uint8>(S, OpPC))
38431 return false;
38432 continue;
38433}
38434case OP_ShrSint64Sint16: {
38435 if (!Shr<PT_Sint64, PT_Sint16>(S, OpPC))
38436 return false;
38437 continue;
38438}
38439case OP_ShrSint64Uint16: {
38440 if (!Shr<PT_Sint64, PT_Uint16>(S, OpPC))
38441 return false;
38442 continue;
38443}
38444case OP_ShrSint64Sint32: {
38445 if (!Shr<PT_Sint64, PT_Sint32>(S, OpPC))
38446 return false;
38447 continue;
38448}
38449case OP_ShrSint64Uint32: {
38450 if (!Shr<PT_Sint64, PT_Uint32>(S, OpPC))
38451 return false;
38452 continue;
38453}
38454case OP_ShrSint64Sint64: {
38455 if (!Shr<PT_Sint64, PT_Sint64>(S, OpPC))
38456 return false;
38457 continue;
38458}
38459case OP_ShrSint64Uint64: {
38460 if (!Shr<PT_Sint64, PT_Uint64>(S, OpPC))
38461 return false;
38462 continue;
38463}
38464case OP_ShrSint64IntAP: {
38465 if (!Shr<PT_Sint64, PT_IntAP>(S, OpPC))
38466 return false;
38467 continue;
38468}
38469case OP_ShrSint64IntAPS: {
38470 if (!Shr<PT_Sint64, PT_IntAPS>(S, OpPC))
38471 return false;
38472 continue;
38473}
38474case OP_ShrUint64Sint8: {
38475 if (!Shr<PT_Uint64, PT_Sint8>(S, OpPC))
38476 return false;
38477 continue;
38478}
38479case OP_ShrUint64Uint8: {
38480 if (!Shr<PT_Uint64, PT_Uint8>(S, OpPC))
38481 return false;
38482 continue;
38483}
38484case OP_ShrUint64Sint16: {
38485 if (!Shr<PT_Uint64, PT_Sint16>(S, OpPC))
38486 return false;
38487 continue;
38488}
38489case OP_ShrUint64Uint16: {
38490 if (!Shr<PT_Uint64, PT_Uint16>(S, OpPC))
38491 return false;
38492 continue;
38493}
38494case OP_ShrUint64Sint32: {
38495 if (!Shr<PT_Uint64, PT_Sint32>(S, OpPC))
38496 return false;
38497 continue;
38498}
38499case OP_ShrUint64Uint32: {
38500 if (!Shr<PT_Uint64, PT_Uint32>(S, OpPC))
38501 return false;
38502 continue;
38503}
38504case OP_ShrUint64Sint64: {
38505 if (!Shr<PT_Uint64, PT_Sint64>(S, OpPC))
38506 return false;
38507 continue;
38508}
38509case OP_ShrUint64Uint64: {
38510 if (!Shr<PT_Uint64, PT_Uint64>(S, OpPC))
38511 return false;
38512 continue;
38513}
38514case OP_ShrUint64IntAP: {
38515 if (!Shr<PT_Uint64, PT_IntAP>(S, OpPC))
38516 return false;
38517 continue;
38518}
38519case OP_ShrUint64IntAPS: {
38520 if (!Shr<PT_Uint64, PT_IntAPS>(S, OpPC))
38521 return false;
38522 continue;
38523}
38524case OP_ShrIntAPSint8: {
38525 if (!Shr<PT_IntAP, PT_Sint8>(S, OpPC))
38526 return false;
38527 continue;
38528}
38529case OP_ShrIntAPUint8: {
38530 if (!Shr<PT_IntAP, PT_Uint8>(S, OpPC))
38531 return false;
38532 continue;
38533}
38534case OP_ShrIntAPSint16: {
38535 if (!Shr<PT_IntAP, PT_Sint16>(S, OpPC))
38536 return false;
38537 continue;
38538}
38539case OP_ShrIntAPUint16: {
38540 if (!Shr<PT_IntAP, PT_Uint16>(S, OpPC))
38541 return false;
38542 continue;
38543}
38544case OP_ShrIntAPSint32: {
38545 if (!Shr<PT_IntAP, PT_Sint32>(S, OpPC))
38546 return false;
38547 continue;
38548}
38549case OP_ShrIntAPUint32: {
38550 if (!Shr<PT_IntAP, PT_Uint32>(S, OpPC))
38551 return false;
38552 continue;
38553}
38554case OP_ShrIntAPSint64: {
38555 if (!Shr<PT_IntAP, PT_Sint64>(S, OpPC))
38556 return false;
38557 continue;
38558}
38559case OP_ShrIntAPUint64: {
38560 if (!Shr<PT_IntAP, PT_Uint64>(S, OpPC))
38561 return false;
38562 continue;
38563}
38564case OP_ShrIntAPIntAP: {
38565 if (!Shr<PT_IntAP, PT_IntAP>(S, OpPC))
38566 return false;
38567 continue;
38568}
38569case OP_ShrIntAPIntAPS: {
38570 if (!Shr<PT_IntAP, PT_IntAPS>(S, OpPC))
38571 return false;
38572 continue;
38573}
38574case OP_ShrIntAPSSint8: {
38575 if (!Shr<PT_IntAPS, PT_Sint8>(S, OpPC))
38576 return false;
38577 continue;
38578}
38579case OP_ShrIntAPSUint8: {
38580 if (!Shr<PT_IntAPS, PT_Uint8>(S, OpPC))
38581 return false;
38582 continue;
38583}
38584case OP_ShrIntAPSSint16: {
38585 if (!Shr<PT_IntAPS, PT_Sint16>(S, OpPC))
38586 return false;
38587 continue;
38588}
38589case OP_ShrIntAPSUint16: {
38590 if (!Shr<PT_IntAPS, PT_Uint16>(S, OpPC))
38591 return false;
38592 continue;
38593}
38594case OP_ShrIntAPSSint32: {
38595 if (!Shr<PT_IntAPS, PT_Sint32>(S, OpPC))
38596 return false;
38597 continue;
38598}
38599case OP_ShrIntAPSUint32: {
38600 if (!Shr<PT_IntAPS, PT_Uint32>(S, OpPC))
38601 return false;
38602 continue;
38603}
38604case OP_ShrIntAPSSint64: {
38605 if (!Shr<PT_IntAPS, PT_Sint64>(S, OpPC))
38606 return false;
38607 continue;
38608}
38609case OP_ShrIntAPSUint64: {
38610 if (!Shr<PT_IntAPS, PT_Uint64>(S, OpPC))
38611 return false;
38612 continue;
38613}
38614case OP_ShrIntAPSIntAP: {
38615 if (!Shr<PT_IntAPS, PT_IntAP>(S, OpPC))
38616 return false;
38617 continue;
38618}
38619case OP_ShrIntAPSIntAPS: {
38620 if (!Shr<PT_IntAPS, PT_IntAPS>(S, OpPC))
38621 return false;
38622 continue;
38623}
38624#endif
38625#ifdef GET_DISASM
38626case OP_ShrSint8Sint8:
38627 Text.Op = PrintName("ShrSint8Sint8");
38628 break;
38629case OP_ShrSint8Uint8:
38630 Text.Op = PrintName("ShrSint8Uint8");
38631 break;
38632case OP_ShrSint8Sint16:
38633 Text.Op = PrintName("ShrSint8Sint16");
38634 break;
38635case OP_ShrSint8Uint16:
38636 Text.Op = PrintName("ShrSint8Uint16");
38637 break;
38638case OP_ShrSint8Sint32:
38639 Text.Op = PrintName("ShrSint8Sint32");
38640 break;
38641case OP_ShrSint8Uint32:
38642 Text.Op = PrintName("ShrSint8Uint32");
38643 break;
38644case OP_ShrSint8Sint64:
38645 Text.Op = PrintName("ShrSint8Sint64");
38646 break;
38647case OP_ShrSint8Uint64:
38648 Text.Op = PrintName("ShrSint8Uint64");
38649 break;
38650case OP_ShrSint8IntAP:
38651 Text.Op = PrintName("ShrSint8IntAP");
38652 break;
38653case OP_ShrSint8IntAPS:
38654 Text.Op = PrintName("ShrSint8IntAPS");
38655 break;
38656case OP_ShrUint8Sint8:
38657 Text.Op = PrintName("ShrUint8Sint8");
38658 break;
38659case OP_ShrUint8Uint8:
38660 Text.Op = PrintName("ShrUint8Uint8");
38661 break;
38662case OP_ShrUint8Sint16:
38663 Text.Op = PrintName("ShrUint8Sint16");
38664 break;
38665case OP_ShrUint8Uint16:
38666 Text.Op = PrintName("ShrUint8Uint16");
38667 break;
38668case OP_ShrUint8Sint32:
38669 Text.Op = PrintName("ShrUint8Sint32");
38670 break;
38671case OP_ShrUint8Uint32:
38672 Text.Op = PrintName("ShrUint8Uint32");
38673 break;
38674case OP_ShrUint8Sint64:
38675 Text.Op = PrintName("ShrUint8Sint64");
38676 break;
38677case OP_ShrUint8Uint64:
38678 Text.Op = PrintName("ShrUint8Uint64");
38679 break;
38680case OP_ShrUint8IntAP:
38681 Text.Op = PrintName("ShrUint8IntAP");
38682 break;
38683case OP_ShrUint8IntAPS:
38684 Text.Op = PrintName("ShrUint8IntAPS");
38685 break;
38686case OP_ShrSint16Sint8:
38687 Text.Op = PrintName("ShrSint16Sint8");
38688 break;
38689case OP_ShrSint16Uint8:
38690 Text.Op = PrintName("ShrSint16Uint8");
38691 break;
38692case OP_ShrSint16Sint16:
38693 Text.Op = PrintName("ShrSint16Sint16");
38694 break;
38695case OP_ShrSint16Uint16:
38696 Text.Op = PrintName("ShrSint16Uint16");
38697 break;
38698case OP_ShrSint16Sint32:
38699 Text.Op = PrintName("ShrSint16Sint32");
38700 break;
38701case OP_ShrSint16Uint32:
38702 Text.Op = PrintName("ShrSint16Uint32");
38703 break;
38704case OP_ShrSint16Sint64:
38705 Text.Op = PrintName("ShrSint16Sint64");
38706 break;
38707case OP_ShrSint16Uint64:
38708 Text.Op = PrintName("ShrSint16Uint64");
38709 break;
38710case OP_ShrSint16IntAP:
38711 Text.Op = PrintName("ShrSint16IntAP");
38712 break;
38713case OP_ShrSint16IntAPS:
38714 Text.Op = PrintName("ShrSint16IntAPS");
38715 break;
38716case OP_ShrUint16Sint8:
38717 Text.Op = PrintName("ShrUint16Sint8");
38718 break;
38719case OP_ShrUint16Uint8:
38720 Text.Op = PrintName("ShrUint16Uint8");
38721 break;
38722case OP_ShrUint16Sint16:
38723 Text.Op = PrintName("ShrUint16Sint16");
38724 break;
38725case OP_ShrUint16Uint16:
38726 Text.Op = PrintName("ShrUint16Uint16");
38727 break;
38728case OP_ShrUint16Sint32:
38729 Text.Op = PrintName("ShrUint16Sint32");
38730 break;
38731case OP_ShrUint16Uint32:
38732 Text.Op = PrintName("ShrUint16Uint32");
38733 break;
38734case OP_ShrUint16Sint64:
38735 Text.Op = PrintName("ShrUint16Sint64");
38736 break;
38737case OP_ShrUint16Uint64:
38738 Text.Op = PrintName("ShrUint16Uint64");
38739 break;
38740case OP_ShrUint16IntAP:
38741 Text.Op = PrintName("ShrUint16IntAP");
38742 break;
38743case OP_ShrUint16IntAPS:
38744 Text.Op = PrintName("ShrUint16IntAPS");
38745 break;
38746case OP_ShrSint32Sint8:
38747 Text.Op = PrintName("ShrSint32Sint8");
38748 break;
38749case OP_ShrSint32Uint8:
38750 Text.Op = PrintName("ShrSint32Uint8");
38751 break;
38752case OP_ShrSint32Sint16:
38753 Text.Op = PrintName("ShrSint32Sint16");
38754 break;
38755case OP_ShrSint32Uint16:
38756 Text.Op = PrintName("ShrSint32Uint16");
38757 break;
38758case OP_ShrSint32Sint32:
38759 Text.Op = PrintName("ShrSint32Sint32");
38760 break;
38761case OP_ShrSint32Uint32:
38762 Text.Op = PrintName("ShrSint32Uint32");
38763 break;
38764case OP_ShrSint32Sint64:
38765 Text.Op = PrintName("ShrSint32Sint64");
38766 break;
38767case OP_ShrSint32Uint64:
38768 Text.Op = PrintName("ShrSint32Uint64");
38769 break;
38770case OP_ShrSint32IntAP:
38771 Text.Op = PrintName("ShrSint32IntAP");
38772 break;
38773case OP_ShrSint32IntAPS:
38774 Text.Op = PrintName("ShrSint32IntAPS");
38775 break;
38776case OP_ShrUint32Sint8:
38777 Text.Op = PrintName("ShrUint32Sint8");
38778 break;
38779case OP_ShrUint32Uint8:
38780 Text.Op = PrintName("ShrUint32Uint8");
38781 break;
38782case OP_ShrUint32Sint16:
38783 Text.Op = PrintName("ShrUint32Sint16");
38784 break;
38785case OP_ShrUint32Uint16:
38786 Text.Op = PrintName("ShrUint32Uint16");
38787 break;
38788case OP_ShrUint32Sint32:
38789 Text.Op = PrintName("ShrUint32Sint32");
38790 break;
38791case OP_ShrUint32Uint32:
38792 Text.Op = PrintName("ShrUint32Uint32");
38793 break;
38794case OP_ShrUint32Sint64:
38795 Text.Op = PrintName("ShrUint32Sint64");
38796 break;
38797case OP_ShrUint32Uint64:
38798 Text.Op = PrintName("ShrUint32Uint64");
38799 break;
38800case OP_ShrUint32IntAP:
38801 Text.Op = PrintName("ShrUint32IntAP");
38802 break;
38803case OP_ShrUint32IntAPS:
38804 Text.Op = PrintName("ShrUint32IntAPS");
38805 break;
38806case OP_ShrSint64Sint8:
38807 Text.Op = PrintName("ShrSint64Sint8");
38808 break;
38809case OP_ShrSint64Uint8:
38810 Text.Op = PrintName("ShrSint64Uint8");
38811 break;
38812case OP_ShrSint64Sint16:
38813 Text.Op = PrintName("ShrSint64Sint16");
38814 break;
38815case OP_ShrSint64Uint16:
38816 Text.Op = PrintName("ShrSint64Uint16");
38817 break;
38818case OP_ShrSint64Sint32:
38819 Text.Op = PrintName("ShrSint64Sint32");
38820 break;
38821case OP_ShrSint64Uint32:
38822 Text.Op = PrintName("ShrSint64Uint32");
38823 break;
38824case OP_ShrSint64Sint64:
38825 Text.Op = PrintName("ShrSint64Sint64");
38826 break;
38827case OP_ShrSint64Uint64:
38828 Text.Op = PrintName("ShrSint64Uint64");
38829 break;
38830case OP_ShrSint64IntAP:
38831 Text.Op = PrintName("ShrSint64IntAP");
38832 break;
38833case OP_ShrSint64IntAPS:
38834 Text.Op = PrintName("ShrSint64IntAPS");
38835 break;
38836case OP_ShrUint64Sint8:
38837 Text.Op = PrintName("ShrUint64Sint8");
38838 break;
38839case OP_ShrUint64Uint8:
38840 Text.Op = PrintName("ShrUint64Uint8");
38841 break;
38842case OP_ShrUint64Sint16:
38843 Text.Op = PrintName("ShrUint64Sint16");
38844 break;
38845case OP_ShrUint64Uint16:
38846 Text.Op = PrintName("ShrUint64Uint16");
38847 break;
38848case OP_ShrUint64Sint32:
38849 Text.Op = PrintName("ShrUint64Sint32");
38850 break;
38851case OP_ShrUint64Uint32:
38852 Text.Op = PrintName("ShrUint64Uint32");
38853 break;
38854case OP_ShrUint64Sint64:
38855 Text.Op = PrintName("ShrUint64Sint64");
38856 break;
38857case OP_ShrUint64Uint64:
38858 Text.Op = PrintName("ShrUint64Uint64");
38859 break;
38860case OP_ShrUint64IntAP:
38861 Text.Op = PrintName("ShrUint64IntAP");
38862 break;
38863case OP_ShrUint64IntAPS:
38864 Text.Op = PrintName("ShrUint64IntAPS");
38865 break;
38866case OP_ShrIntAPSint8:
38867 Text.Op = PrintName("ShrIntAPSint8");
38868 break;
38869case OP_ShrIntAPUint8:
38870 Text.Op = PrintName("ShrIntAPUint8");
38871 break;
38872case OP_ShrIntAPSint16:
38873 Text.Op = PrintName("ShrIntAPSint16");
38874 break;
38875case OP_ShrIntAPUint16:
38876 Text.Op = PrintName("ShrIntAPUint16");
38877 break;
38878case OP_ShrIntAPSint32:
38879 Text.Op = PrintName("ShrIntAPSint32");
38880 break;
38881case OP_ShrIntAPUint32:
38882 Text.Op = PrintName("ShrIntAPUint32");
38883 break;
38884case OP_ShrIntAPSint64:
38885 Text.Op = PrintName("ShrIntAPSint64");
38886 break;
38887case OP_ShrIntAPUint64:
38888 Text.Op = PrintName("ShrIntAPUint64");
38889 break;
38890case OP_ShrIntAPIntAP:
38891 Text.Op = PrintName("ShrIntAPIntAP");
38892 break;
38893case OP_ShrIntAPIntAPS:
38894 Text.Op = PrintName("ShrIntAPIntAPS");
38895 break;
38896case OP_ShrIntAPSSint8:
38897 Text.Op = PrintName("ShrIntAPSSint8");
38898 break;
38899case OP_ShrIntAPSUint8:
38900 Text.Op = PrintName("ShrIntAPSUint8");
38901 break;
38902case OP_ShrIntAPSSint16:
38903 Text.Op = PrintName("ShrIntAPSSint16");
38904 break;
38905case OP_ShrIntAPSUint16:
38906 Text.Op = PrintName("ShrIntAPSUint16");
38907 break;
38908case OP_ShrIntAPSSint32:
38909 Text.Op = PrintName("ShrIntAPSSint32");
38910 break;
38911case OP_ShrIntAPSUint32:
38912 Text.Op = PrintName("ShrIntAPSUint32");
38913 break;
38914case OP_ShrIntAPSSint64:
38915 Text.Op = PrintName("ShrIntAPSSint64");
38916 break;
38917case OP_ShrIntAPSUint64:
38918 Text.Op = PrintName("ShrIntAPSUint64");
38919 break;
38920case OP_ShrIntAPSIntAP:
38921 Text.Op = PrintName("ShrIntAPSIntAP");
38922 break;
38923case OP_ShrIntAPSIntAPS:
38924 Text.Op = PrintName("ShrIntAPSIntAPS");
38925 break;
38926#endif
38927#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
38928bool emitShrSint8Sint8(SourceInfo);
38929bool emitShrSint8Uint8(SourceInfo);
38930bool emitShrSint8Sint16(SourceInfo);
38931bool emitShrSint8Uint16(SourceInfo);
38932bool emitShrSint8Sint32(SourceInfo);
38933bool emitShrSint8Uint32(SourceInfo);
38934bool emitShrSint8Sint64(SourceInfo);
38935bool emitShrSint8Uint64(SourceInfo);
38936bool emitShrSint8IntAP(SourceInfo);
38937bool emitShrSint8IntAPS(SourceInfo);
38938bool emitShrUint8Sint8(SourceInfo);
38939bool emitShrUint8Uint8(SourceInfo);
38940bool emitShrUint8Sint16(SourceInfo);
38941bool emitShrUint8Uint16(SourceInfo);
38942bool emitShrUint8Sint32(SourceInfo);
38943bool emitShrUint8Uint32(SourceInfo);
38944bool emitShrUint8Sint64(SourceInfo);
38945bool emitShrUint8Uint64(SourceInfo);
38946bool emitShrUint8IntAP(SourceInfo);
38947bool emitShrUint8IntAPS(SourceInfo);
38948bool emitShrSint16Sint8(SourceInfo);
38949bool emitShrSint16Uint8(SourceInfo);
38950bool emitShrSint16Sint16(SourceInfo);
38951bool emitShrSint16Uint16(SourceInfo);
38952bool emitShrSint16Sint32(SourceInfo);
38953bool emitShrSint16Uint32(SourceInfo);
38954bool emitShrSint16Sint64(SourceInfo);
38955bool emitShrSint16Uint64(SourceInfo);
38956bool emitShrSint16IntAP(SourceInfo);
38957bool emitShrSint16IntAPS(SourceInfo);
38958bool emitShrUint16Sint8(SourceInfo);
38959bool emitShrUint16Uint8(SourceInfo);
38960bool emitShrUint16Sint16(SourceInfo);
38961bool emitShrUint16Uint16(SourceInfo);
38962bool emitShrUint16Sint32(SourceInfo);
38963bool emitShrUint16Uint32(SourceInfo);
38964bool emitShrUint16Sint64(SourceInfo);
38965bool emitShrUint16Uint64(SourceInfo);
38966bool emitShrUint16IntAP(SourceInfo);
38967bool emitShrUint16IntAPS(SourceInfo);
38968bool emitShrSint32Sint8(SourceInfo);
38969bool emitShrSint32Uint8(SourceInfo);
38970bool emitShrSint32Sint16(SourceInfo);
38971bool emitShrSint32Uint16(SourceInfo);
38972bool emitShrSint32Sint32(SourceInfo);
38973bool emitShrSint32Uint32(SourceInfo);
38974bool emitShrSint32Sint64(SourceInfo);
38975bool emitShrSint32Uint64(SourceInfo);
38976bool emitShrSint32IntAP(SourceInfo);
38977bool emitShrSint32IntAPS(SourceInfo);
38978bool emitShrUint32Sint8(SourceInfo);
38979bool emitShrUint32Uint8(SourceInfo);
38980bool emitShrUint32Sint16(SourceInfo);
38981bool emitShrUint32Uint16(SourceInfo);
38982bool emitShrUint32Sint32(SourceInfo);
38983bool emitShrUint32Uint32(SourceInfo);
38984bool emitShrUint32Sint64(SourceInfo);
38985bool emitShrUint32Uint64(SourceInfo);
38986bool emitShrUint32IntAP(SourceInfo);
38987bool emitShrUint32IntAPS(SourceInfo);
38988bool emitShrSint64Sint8(SourceInfo);
38989bool emitShrSint64Uint8(SourceInfo);
38990bool emitShrSint64Sint16(SourceInfo);
38991bool emitShrSint64Uint16(SourceInfo);
38992bool emitShrSint64Sint32(SourceInfo);
38993bool emitShrSint64Uint32(SourceInfo);
38994bool emitShrSint64Sint64(SourceInfo);
38995bool emitShrSint64Uint64(SourceInfo);
38996bool emitShrSint64IntAP(SourceInfo);
38997bool emitShrSint64IntAPS(SourceInfo);
38998bool emitShrUint64Sint8(SourceInfo);
38999bool emitShrUint64Uint8(SourceInfo);
39000bool emitShrUint64Sint16(SourceInfo);
39001bool emitShrUint64Uint16(SourceInfo);
39002bool emitShrUint64Sint32(SourceInfo);
39003bool emitShrUint64Uint32(SourceInfo);
39004bool emitShrUint64Sint64(SourceInfo);
39005bool emitShrUint64Uint64(SourceInfo);
39006bool emitShrUint64IntAP(SourceInfo);
39007bool emitShrUint64IntAPS(SourceInfo);
39008bool emitShrIntAPSint8(SourceInfo);
39009bool emitShrIntAPUint8(SourceInfo);
39010bool emitShrIntAPSint16(SourceInfo);
39011bool emitShrIntAPUint16(SourceInfo);
39012bool emitShrIntAPSint32(SourceInfo);
39013bool emitShrIntAPUint32(SourceInfo);
39014bool emitShrIntAPSint64(SourceInfo);
39015bool emitShrIntAPUint64(SourceInfo);
39016bool emitShrIntAPIntAP(SourceInfo);
39017bool emitShrIntAPIntAPS(SourceInfo);
39018bool emitShrIntAPSSint8(SourceInfo);
39019bool emitShrIntAPSUint8(SourceInfo);
39020bool emitShrIntAPSSint16(SourceInfo);
39021bool emitShrIntAPSUint16(SourceInfo);
39022bool emitShrIntAPSSint32(SourceInfo);
39023bool emitShrIntAPSUint32(SourceInfo);
39024bool emitShrIntAPSSint64(SourceInfo);
39025bool emitShrIntAPSUint64(SourceInfo);
39026bool emitShrIntAPSIntAP(SourceInfo);
39027bool emitShrIntAPSIntAPS(SourceInfo);
39028#endif
39029#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
39030[[nodiscard]] bool emitShr(PrimType, PrimType, SourceInfo I);
39031#endif
39032#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
39033bool
39034#if defined(GET_EVAL_IMPL)
39035EvalEmitter
39036#else
39037ByteCodeEmitter
39038#endif
39039::emitShr(PrimType T0, PrimType T1, SourceInfo I) {
39040 switch (T0) {
39041 case PT_Sint8:
39042 switch (T1) {
39043 case PT_Sint8:
39044 return emitShrSint8Sint8(I);
39045 case PT_Uint8:
39046 return emitShrSint8Uint8(I);
39047 case PT_Sint16:
39048 return emitShrSint8Sint16(I);
39049 case PT_Uint16:
39050 return emitShrSint8Uint16(I);
39051 case PT_Sint32:
39052 return emitShrSint8Sint32(I);
39053 case PT_Uint32:
39054 return emitShrSint8Uint32(I);
39055 case PT_Sint64:
39056 return emitShrSint8Sint64(I);
39057 case PT_Uint64:
39058 return emitShrSint8Uint64(I);
39059 case PT_IntAP:
39060 return emitShrSint8IntAP(I);
39061 case PT_IntAPS:
39062 return emitShrSint8IntAPS(I);
39063 default: llvm_unreachable("invalid type: emitShr");
39064 }
39065 llvm_unreachable("invalid enum value");
39066 case PT_Uint8:
39067 switch (T1) {
39068 case PT_Sint8:
39069 return emitShrUint8Sint8(I);
39070 case PT_Uint8:
39071 return emitShrUint8Uint8(I);
39072 case PT_Sint16:
39073 return emitShrUint8Sint16(I);
39074 case PT_Uint16:
39075 return emitShrUint8Uint16(I);
39076 case PT_Sint32:
39077 return emitShrUint8Sint32(I);
39078 case PT_Uint32:
39079 return emitShrUint8Uint32(I);
39080 case PT_Sint64:
39081 return emitShrUint8Sint64(I);
39082 case PT_Uint64:
39083 return emitShrUint8Uint64(I);
39084 case PT_IntAP:
39085 return emitShrUint8IntAP(I);
39086 case PT_IntAPS:
39087 return emitShrUint8IntAPS(I);
39088 default: llvm_unreachable("invalid type: emitShr");
39089 }
39090 llvm_unreachable("invalid enum value");
39091 case PT_Sint16:
39092 switch (T1) {
39093 case PT_Sint8:
39094 return emitShrSint16Sint8(I);
39095 case PT_Uint8:
39096 return emitShrSint16Uint8(I);
39097 case PT_Sint16:
39098 return emitShrSint16Sint16(I);
39099 case PT_Uint16:
39100 return emitShrSint16Uint16(I);
39101 case PT_Sint32:
39102 return emitShrSint16Sint32(I);
39103 case PT_Uint32:
39104 return emitShrSint16Uint32(I);
39105 case PT_Sint64:
39106 return emitShrSint16Sint64(I);
39107 case PT_Uint64:
39108 return emitShrSint16Uint64(I);
39109 case PT_IntAP:
39110 return emitShrSint16IntAP(I);
39111 case PT_IntAPS:
39112 return emitShrSint16IntAPS(I);
39113 default: llvm_unreachable("invalid type: emitShr");
39114 }
39115 llvm_unreachable("invalid enum value");
39116 case PT_Uint16:
39117 switch (T1) {
39118 case PT_Sint8:
39119 return emitShrUint16Sint8(I);
39120 case PT_Uint8:
39121 return emitShrUint16Uint8(I);
39122 case PT_Sint16:
39123 return emitShrUint16Sint16(I);
39124 case PT_Uint16:
39125 return emitShrUint16Uint16(I);
39126 case PT_Sint32:
39127 return emitShrUint16Sint32(I);
39128 case PT_Uint32:
39129 return emitShrUint16Uint32(I);
39130 case PT_Sint64:
39131 return emitShrUint16Sint64(I);
39132 case PT_Uint64:
39133 return emitShrUint16Uint64(I);
39134 case PT_IntAP:
39135 return emitShrUint16IntAP(I);
39136 case PT_IntAPS:
39137 return emitShrUint16IntAPS(I);
39138 default: llvm_unreachable("invalid type: emitShr");
39139 }
39140 llvm_unreachable("invalid enum value");
39141 case PT_Sint32:
39142 switch (T1) {
39143 case PT_Sint8:
39144 return emitShrSint32Sint8(I);
39145 case PT_Uint8:
39146 return emitShrSint32Uint8(I);
39147 case PT_Sint16:
39148 return emitShrSint32Sint16(I);
39149 case PT_Uint16:
39150 return emitShrSint32Uint16(I);
39151 case PT_Sint32:
39152 return emitShrSint32Sint32(I);
39153 case PT_Uint32:
39154 return emitShrSint32Uint32(I);
39155 case PT_Sint64:
39156 return emitShrSint32Sint64(I);
39157 case PT_Uint64:
39158 return emitShrSint32Uint64(I);
39159 case PT_IntAP:
39160 return emitShrSint32IntAP(I);
39161 case PT_IntAPS:
39162 return emitShrSint32IntAPS(I);
39163 default: llvm_unreachable("invalid type: emitShr");
39164 }
39165 llvm_unreachable("invalid enum value");
39166 case PT_Uint32:
39167 switch (T1) {
39168 case PT_Sint8:
39169 return emitShrUint32Sint8(I);
39170 case PT_Uint8:
39171 return emitShrUint32Uint8(I);
39172 case PT_Sint16:
39173 return emitShrUint32Sint16(I);
39174 case PT_Uint16:
39175 return emitShrUint32Uint16(I);
39176 case PT_Sint32:
39177 return emitShrUint32Sint32(I);
39178 case PT_Uint32:
39179 return emitShrUint32Uint32(I);
39180 case PT_Sint64:
39181 return emitShrUint32Sint64(I);
39182 case PT_Uint64:
39183 return emitShrUint32Uint64(I);
39184 case PT_IntAP:
39185 return emitShrUint32IntAP(I);
39186 case PT_IntAPS:
39187 return emitShrUint32IntAPS(I);
39188 default: llvm_unreachable("invalid type: emitShr");
39189 }
39190 llvm_unreachable("invalid enum value");
39191 case PT_Sint64:
39192 switch (T1) {
39193 case PT_Sint8:
39194 return emitShrSint64Sint8(I);
39195 case PT_Uint8:
39196 return emitShrSint64Uint8(I);
39197 case PT_Sint16:
39198 return emitShrSint64Sint16(I);
39199 case PT_Uint16:
39200 return emitShrSint64Uint16(I);
39201 case PT_Sint32:
39202 return emitShrSint64Sint32(I);
39203 case PT_Uint32:
39204 return emitShrSint64Uint32(I);
39205 case PT_Sint64:
39206 return emitShrSint64Sint64(I);
39207 case PT_Uint64:
39208 return emitShrSint64Uint64(I);
39209 case PT_IntAP:
39210 return emitShrSint64IntAP(I);
39211 case PT_IntAPS:
39212 return emitShrSint64IntAPS(I);
39213 default: llvm_unreachable("invalid type: emitShr");
39214 }
39215 llvm_unreachable("invalid enum value");
39216 case PT_Uint64:
39217 switch (T1) {
39218 case PT_Sint8:
39219 return emitShrUint64Sint8(I);
39220 case PT_Uint8:
39221 return emitShrUint64Uint8(I);
39222 case PT_Sint16:
39223 return emitShrUint64Sint16(I);
39224 case PT_Uint16:
39225 return emitShrUint64Uint16(I);
39226 case PT_Sint32:
39227 return emitShrUint64Sint32(I);
39228 case PT_Uint32:
39229 return emitShrUint64Uint32(I);
39230 case PT_Sint64:
39231 return emitShrUint64Sint64(I);
39232 case PT_Uint64:
39233 return emitShrUint64Uint64(I);
39234 case PT_IntAP:
39235 return emitShrUint64IntAP(I);
39236 case PT_IntAPS:
39237 return emitShrUint64IntAPS(I);
39238 default: llvm_unreachable("invalid type: emitShr");
39239 }
39240 llvm_unreachable("invalid enum value");
39241 case PT_IntAP:
39242 switch (T1) {
39243 case PT_Sint8:
39244 return emitShrIntAPSint8(I);
39245 case PT_Uint8:
39246 return emitShrIntAPUint8(I);
39247 case PT_Sint16:
39248 return emitShrIntAPSint16(I);
39249 case PT_Uint16:
39250 return emitShrIntAPUint16(I);
39251 case PT_Sint32:
39252 return emitShrIntAPSint32(I);
39253 case PT_Uint32:
39254 return emitShrIntAPUint32(I);
39255 case PT_Sint64:
39256 return emitShrIntAPSint64(I);
39257 case PT_Uint64:
39258 return emitShrIntAPUint64(I);
39259 case PT_IntAP:
39260 return emitShrIntAPIntAP(I);
39261 case PT_IntAPS:
39262 return emitShrIntAPIntAPS(I);
39263 default: llvm_unreachable("invalid type: emitShr");
39264 }
39265 llvm_unreachable("invalid enum value");
39266 case PT_IntAPS:
39267 switch (T1) {
39268 case PT_Sint8:
39269 return emitShrIntAPSSint8(I);
39270 case PT_Uint8:
39271 return emitShrIntAPSUint8(I);
39272 case PT_Sint16:
39273 return emitShrIntAPSSint16(I);
39274 case PT_Uint16:
39275 return emitShrIntAPSUint16(I);
39276 case PT_Sint32:
39277 return emitShrIntAPSSint32(I);
39278 case PT_Uint32:
39279 return emitShrIntAPSUint32(I);
39280 case PT_Sint64:
39281 return emitShrIntAPSSint64(I);
39282 case PT_Uint64:
39283 return emitShrIntAPSUint64(I);
39284 case PT_IntAP:
39285 return emitShrIntAPSIntAP(I);
39286 case PT_IntAPS:
39287 return emitShrIntAPSIntAPS(I);
39288 default: llvm_unreachable("invalid type: emitShr");
39289 }
39290 llvm_unreachable("invalid enum value");
39291 default: llvm_unreachable("invalid type: emitShr");
39292 }
39293 llvm_unreachable("invalid enum value");
39294}
39295#endif
39296#ifdef GET_LINK_IMPL
39297bool ByteCodeEmitter::emitShrSint8Sint8(SourceInfo L) {
39298 return emitOp<>(OP_ShrSint8Sint8, L);
39299}
39300bool ByteCodeEmitter::emitShrSint8Uint8(SourceInfo L) {
39301 return emitOp<>(OP_ShrSint8Uint8, L);
39302}
39303bool ByteCodeEmitter::emitShrSint8Sint16(SourceInfo L) {
39304 return emitOp<>(OP_ShrSint8Sint16, L);
39305}
39306bool ByteCodeEmitter::emitShrSint8Uint16(SourceInfo L) {
39307 return emitOp<>(OP_ShrSint8Uint16, L);
39308}
39309bool ByteCodeEmitter::emitShrSint8Sint32(SourceInfo L) {
39310 return emitOp<>(OP_ShrSint8Sint32, L);
39311}
39312bool ByteCodeEmitter::emitShrSint8Uint32(SourceInfo L) {
39313 return emitOp<>(OP_ShrSint8Uint32, L);
39314}
39315bool ByteCodeEmitter::emitShrSint8Sint64(SourceInfo L) {
39316 return emitOp<>(OP_ShrSint8Sint64, L);
39317}
39318bool ByteCodeEmitter::emitShrSint8Uint64(SourceInfo L) {
39319 return emitOp<>(OP_ShrSint8Uint64, L);
39320}
39321bool ByteCodeEmitter::emitShrSint8IntAP(SourceInfo L) {
39322 return emitOp<>(OP_ShrSint8IntAP, L);
39323}
39324bool ByteCodeEmitter::emitShrSint8IntAPS(SourceInfo L) {
39325 return emitOp<>(OP_ShrSint8IntAPS, L);
39326}
39327bool ByteCodeEmitter::emitShrUint8Sint8(SourceInfo L) {
39328 return emitOp<>(OP_ShrUint8Sint8, L);
39329}
39330bool ByteCodeEmitter::emitShrUint8Uint8(SourceInfo L) {
39331 return emitOp<>(OP_ShrUint8Uint8, L);
39332}
39333bool ByteCodeEmitter::emitShrUint8Sint16(SourceInfo L) {
39334 return emitOp<>(OP_ShrUint8Sint16, L);
39335}
39336bool ByteCodeEmitter::emitShrUint8Uint16(SourceInfo L) {
39337 return emitOp<>(OP_ShrUint8Uint16, L);
39338}
39339bool ByteCodeEmitter::emitShrUint8Sint32(SourceInfo L) {
39340 return emitOp<>(OP_ShrUint8Sint32, L);
39341}
39342bool ByteCodeEmitter::emitShrUint8Uint32(SourceInfo L) {
39343 return emitOp<>(OP_ShrUint8Uint32, L);
39344}
39345bool ByteCodeEmitter::emitShrUint8Sint64(SourceInfo L) {
39346 return emitOp<>(OP_ShrUint8Sint64, L);
39347}
39348bool ByteCodeEmitter::emitShrUint8Uint64(SourceInfo L) {
39349 return emitOp<>(OP_ShrUint8Uint64, L);
39350}
39351bool ByteCodeEmitter::emitShrUint8IntAP(SourceInfo L) {
39352 return emitOp<>(OP_ShrUint8IntAP, L);
39353}
39354bool ByteCodeEmitter::emitShrUint8IntAPS(SourceInfo L) {
39355 return emitOp<>(OP_ShrUint8IntAPS, L);
39356}
39357bool ByteCodeEmitter::emitShrSint16Sint8(SourceInfo L) {
39358 return emitOp<>(OP_ShrSint16Sint8, L);
39359}
39360bool ByteCodeEmitter::emitShrSint16Uint8(SourceInfo L) {
39361 return emitOp<>(OP_ShrSint16Uint8, L);
39362}
39363bool ByteCodeEmitter::emitShrSint16Sint16(SourceInfo L) {
39364 return emitOp<>(OP_ShrSint16Sint16, L);
39365}
39366bool ByteCodeEmitter::emitShrSint16Uint16(SourceInfo L) {
39367 return emitOp<>(OP_ShrSint16Uint16, L);
39368}
39369bool ByteCodeEmitter::emitShrSint16Sint32(SourceInfo L) {
39370 return emitOp<>(OP_ShrSint16Sint32, L);
39371}
39372bool ByteCodeEmitter::emitShrSint16Uint32(SourceInfo L) {
39373 return emitOp<>(OP_ShrSint16Uint32, L);
39374}
39375bool ByteCodeEmitter::emitShrSint16Sint64(SourceInfo L) {
39376 return emitOp<>(OP_ShrSint16Sint64, L);
39377}
39378bool ByteCodeEmitter::emitShrSint16Uint64(SourceInfo L) {
39379 return emitOp<>(OP_ShrSint16Uint64, L);
39380}
39381bool ByteCodeEmitter::emitShrSint16IntAP(SourceInfo L) {
39382 return emitOp<>(OP_ShrSint16IntAP, L);
39383}
39384bool ByteCodeEmitter::emitShrSint16IntAPS(SourceInfo L) {
39385 return emitOp<>(OP_ShrSint16IntAPS, L);
39386}
39387bool ByteCodeEmitter::emitShrUint16Sint8(SourceInfo L) {
39388 return emitOp<>(OP_ShrUint16Sint8, L);
39389}
39390bool ByteCodeEmitter::emitShrUint16Uint8(SourceInfo L) {
39391 return emitOp<>(OP_ShrUint16Uint8, L);
39392}
39393bool ByteCodeEmitter::emitShrUint16Sint16(SourceInfo L) {
39394 return emitOp<>(OP_ShrUint16Sint16, L);
39395}
39396bool ByteCodeEmitter::emitShrUint16Uint16(SourceInfo L) {
39397 return emitOp<>(OP_ShrUint16Uint16, L);
39398}
39399bool ByteCodeEmitter::emitShrUint16Sint32(SourceInfo L) {
39400 return emitOp<>(OP_ShrUint16Sint32, L);
39401}
39402bool ByteCodeEmitter::emitShrUint16Uint32(SourceInfo L) {
39403 return emitOp<>(OP_ShrUint16Uint32, L);
39404}
39405bool ByteCodeEmitter::emitShrUint16Sint64(SourceInfo L) {
39406 return emitOp<>(OP_ShrUint16Sint64, L);
39407}
39408bool ByteCodeEmitter::emitShrUint16Uint64(SourceInfo L) {
39409 return emitOp<>(OP_ShrUint16Uint64, L);
39410}
39411bool ByteCodeEmitter::emitShrUint16IntAP(SourceInfo L) {
39412 return emitOp<>(OP_ShrUint16IntAP, L);
39413}
39414bool ByteCodeEmitter::emitShrUint16IntAPS(SourceInfo L) {
39415 return emitOp<>(OP_ShrUint16IntAPS, L);
39416}
39417bool ByteCodeEmitter::emitShrSint32Sint8(SourceInfo L) {
39418 return emitOp<>(OP_ShrSint32Sint8, L);
39419}
39420bool ByteCodeEmitter::emitShrSint32Uint8(SourceInfo L) {
39421 return emitOp<>(OP_ShrSint32Uint8, L);
39422}
39423bool ByteCodeEmitter::emitShrSint32Sint16(SourceInfo L) {
39424 return emitOp<>(OP_ShrSint32Sint16, L);
39425}
39426bool ByteCodeEmitter::emitShrSint32Uint16(SourceInfo L) {
39427 return emitOp<>(OP_ShrSint32Uint16, L);
39428}
39429bool ByteCodeEmitter::emitShrSint32Sint32(SourceInfo L) {
39430 return emitOp<>(OP_ShrSint32Sint32, L);
39431}
39432bool ByteCodeEmitter::emitShrSint32Uint32(SourceInfo L) {
39433 return emitOp<>(OP_ShrSint32Uint32, L);
39434}
39435bool ByteCodeEmitter::emitShrSint32Sint64(SourceInfo L) {
39436 return emitOp<>(OP_ShrSint32Sint64, L);
39437}
39438bool ByteCodeEmitter::emitShrSint32Uint64(SourceInfo L) {
39439 return emitOp<>(OP_ShrSint32Uint64, L);
39440}
39441bool ByteCodeEmitter::emitShrSint32IntAP(SourceInfo L) {
39442 return emitOp<>(OP_ShrSint32IntAP, L);
39443}
39444bool ByteCodeEmitter::emitShrSint32IntAPS(SourceInfo L) {
39445 return emitOp<>(OP_ShrSint32IntAPS, L);
39446}
39447bool ByteCodeEmitter::emitShrUint32Sint8(SourceInfo L) {
39448 return emitOp<>(OP_ShrUint32Sint8, L);
39449}
39450bool ByteCodeEmitter::emitShrUint32Uint8(SourceInfo L) {
39451 return emitOp<>(OP_ShrUint32Uint8, L);
39452}
39453bool ByteCodeEmitter::emitShrUint32Sint16(SourceInfo L) {
39454 return emitOp<>(OP_ShrUint32Sint16, L);
39455}
39456bool ByteCodeEmitter::emitShrUint32Uint16(SourceInfo L) {
39457 return emitOp<>(OP_ShrUint32Uint16, L);
39458}
39459bool ByteCodeEmitter::emitShrUint32Sint32(SourceInfo L) {
39460 return emitOp<>(OP_ShrUint32Sint32, L);
39461}
39462bool ByteCodeEmitter::emitShrUint32Uint32(SourceInfo L) {
39463 return emitOp<>(OP_ShrUint32Uint32, L);
39464}
39465bool ByteCodeEmitter::emitShrUint32Sint64(SourceInfo L) {
39466 return emitOp<>(OP_ShrUint32Sint64, L);
39467}
39468bool ByteCodeEmitter::emitShrUint32Uint64(SourceInfo L) {
39469 return emitOp<>(OP_ShrUint32Uint64, L);
39470}
39471bool ByteCodeEmitter::emitShrUint32IntAP(SourceInfo L) {
39472 return emitOp<>(OP_ShrUint32IntAP, L);
39473}
39474bool ByteCodeEmitter::emitShrUint32IntAPS(SourceInfo L) {
39475 return emitOp<>(OP_ShrUint32IntAPS, L);
39476}
39477bool ByteCodeEmitter::emitShrSint64Sint8(SourceInfo L) {
39478 return emitOp<>(OP_ShrSint64Sint8, L);
39479}
39480bool ByteCodeEmitter::emitShrSint64Uint8(SourceInfo L) {
39481 return emitOp<>(OP_ShrSint64Uint8, L);
39482}
39483bool ByteCodeEmitter::emitShrSint64Sint16(SourceInfo L) {
39484 return emitOp<>(OP_ShrSint64Sint16, L);
39485}
39486bool ByteCodeEmitter::emitShrSint64Uint16(SourceInfo L) {
39487 return emitOp<>(OP_ShrSint64Uint16, L);
39488}
39489bool ByteCodeEmitter::emitShrSint64Sint32(SourceInfo L) {
39490 return emitOp<>(OP_ShrSint64Sint32, L);
39491}
39492bool ByteCodeEmitter::emitShrSint64Uint32(SourceInfo L) {
39493 return emitOp<>(OP_ShrSint64Uint32, L);
39494}
39495bool ByteCodeEmitter::emitShrSint64Sint64(SourceInfo L) {
39496 return emitOp<>(OP_ShrSint64Sint64, L);
39497}
39498bool ByteCodeEmitter::emitShrSint64Uint64(SourceInfo L) {
39499 return emitOp<>(OP_ShrSint64Uint64, L);
39500}
39501bool ByteCodeEmitter::emitShrSint64IntAP(SourceInfo L) {
39502 return emitOp<>(OP_ShrSint64IntAP, L);
39503}
39504bool ByteCodeEmitter::emitShrSint64IntAPS(SourceInfo L) {
39505 return emitOp<>(OP_ShrSint64IntAPS, L);
39506}
39507bool ByteCodeEmitter::emitShrUint64Sint8(SourceInfo L) {
39508 return emitOp<>(OP_ShrUint64Sint8, L);
39509}
39510bool ByteCodeEmitter::emitShrUint64Uint8(SourceInfo L) {
39511 return emitOp<>(OP_ShrUint64Uint8, L);
39512}
39513bool ByteCodeEmitter::emitShrUint64Sint16(SourceInfo L) {
39514 return emitOp<>(OP_ShrUint64Sint16, L);
39515}
39516bool ByteCodeEmitter::emitShrUint64Uint16(SourceInfo L) {
39517 return emitOp<>(OP_ShrUint64Uint16, L);
39518}
39519bool ByteCodeEmitter::emitShrUint64Sint32(SourceInfo L) {
39520 return emitOp<>(OP_ShrUint64Sint32, L);
39521}
39522bool ByteCodeEmitter::emitShrUint64Uint32(SourceInfo L) {
39523 return emitOp<>(OP_ShrUint64Uint32, L);
39524}
39525bool ByteCodeEmitter::emitShrUint64Sint64(SourceInfo L) {
39526 return emitOp<>(OP_ShrUint64Sint64, L);
39527}
39528bool ByteCodeEmitter::emitShrUint64Uint64(SourceInfo L) {
39529 return emitOp<>(OP_ShrUint64Uint64, L);
39530}
39531bool ByteCodeEmitter::emitShrUint64IntAP(SourceInfo L) {
39532 return emitOp<>(OP_ShrUint64IntAP, L);
39533}
39534bool ByteCodeEmitter::emitShrUint64IntAPS(SourceInfo L) {
39535 return emitOp<>(OP_ShrUint64IntAPS, L);
39536}
39537bool ByteCodeEmitter::emitShrIntAPSint8(SourceInfo L) {
39538 return emitOp<>(OP_ShrIntAPSint8, L);
39539}
39540bool ByteCodeEmitter::emitShrIntAPUint8(SourceInfo L) {
39541 return emitOp<>(OP_ShrIntAPUint8, L);
39542}
39543bool ByteCodeEmitter::emitShrIntAPSint16(SourceInfo L) {
39544 return emitOp<>(OP_ShrIntAPSint16, L);
39545}
39546bool ByteCodeEmitter::emitShrIntAPUint16(SourceInfo L) {
39547 return emitOp<>(OP_ShrIntAPUint16, L);
39548}
39549bool ByteCodeEmitter::emitShrIntAPSint32(SourceInfo L) {
39550 return emitOp<>(OP_ShrIntAPSint32, L);
39551}
39552bool ByteCodeEmitter::emitShrIntAPUint32(SourceInfo L) {
39553 return emitOp<>(OP_ShrIntAPUint32, L);
39554}
39555bool ByteCodeEmitter::emitShrIntAPSint64(SourceInfo L) {
39556 return emitOp<>(OP_ShrIntAPSint64, L);
39557}
39558bool ByteCodeEmitter::emitShrIntAPUint64(SourceInfo L) {
39559 return emitOp<>(OP_ShrIntAPUint64, L);
39560}
39561bool ByteCodeEmitter::emitShrIntAPIntAP(SourceInfo L) {
39562 return emitOp<>(OP_ShrIntAPIntAP, L);
39563}
39564bool ByteCodeEmitter::emitShrIntAPIntAPS(SourceInfo L) {
39565 return emitOp<>(OP_ShrIntAPIntAPS, L);
39566}
39567bool ByteCodeEmitter::emitShrIntAPSSint8(SourceInfo L) {
39568 return emitOp<>(OP_ShrIntAPSSint8, L);
39569}
39570bool ByteCodeEmitter::emitShrIntAPSUint8(SourceInfo L) {
39571 return emitOp<>(OP_ShrIntAPSUint8, L);
39572}
39573bool ByteCodeEmitter::emitShrIntAPSSint16(SourceInfo L) {
39574 return emitOp<>(OP_ShrIntAPSSint16, L);
39575}
39576bool ByteCodeEmitter::emitShrIntAPSUint16(SourceInfo L) {
39577 return emitOp<>(OP_ShrIntAPSUint16, L);
39578}
39579bool ByteCodeEmitter::emitShrIntAPSSint32(SourceInfo L) {
39580 return emitOp<>(OP_ShrIntAPSSint32, L);
39581}
39582bool ByteCodeEmitter::emitShrIntAPSUint32(SourceInfo L) {
39583 return emitOp<>(OP_ShrIntAPSUint32, L);
39584}
39585bool ByteCodeEmitter::emitShrIntAPSSint64(SourceInfo L) {
39586 return emitOp<>(OP_ShrIntAPSSint64, L);
39587}
39588bool ByteCodeEmitter::emitShrIntAPSUint64(SourceInfo L) {
39589 return emitOp<>(OP_ShrIntAPSUint64, L);
39590}
39591bool ByteCodeEmitter::emitShrIntAPSIntAP(SourceInfo L) {
39592 return emitOp<>(OP_ShrIntAPSIntAP, L);
39593}
39594bool ByteCodeEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
39595 return emitOp<>(OP_ShrIntAPSIntAPS, L);
39596}
39597#endif
39598#ifdef GET_EVAL_IMPL
39599bool EvalEmitter::emitShrSint8Sint8(SourceInfo L) {
39600 if (!isActive()) return true;
39601 CurrentSource = L;
39602 return Shr<PT_Sint8, PT_Sint8>(S, OpPC);
39603}
39604bool EvalEmitter::emitShrSint8Uint8(SourceInfo L) {
39605 if (!isActive()) return true;
39606 CurrentSource = L;
39607 return Shr<PT_Sint8, PT_Uint8>(S, OpPC);
39608}
39609bool EvalEmitter::emitShrSint8Sint16(SourceInfo L) {
39610 if (!isActive()) return true;
39611 CurrentSource = L;
39612 return Shr<PT_Sint8, PT_Sint16>(S, OpPC);
39613}
39614bool EvalEmitter::emitShrSint8Uint16(SourceInfo L) {
39615 if (!isActive()) return true;
39616 CurrentSource = L;
39617 return Shr<PT_Sint8, PT_Uint16>(S, OpPC);
39618}
39619bool EvalEmitter::emitShrSint8Sint32(SourceInfo L) {
39620 if (!isActive()) return true;
39621 CurrentSource = L;
39622 return Shr<PT_Sint8, PT_Sint32>(S, OpPC);
39623}
39624bool EvalEmitter::emitShrSint8Uint32(SourceInfo L) {
39625 if (!isActive()) return true;
39626 CurrentSource = L;
39627 return Shr<PT_Sint8, PT_Uint32>(S, OpPC);
39628}
39629bool EvalEmitter::emitShrSint8Sint64(SourceInfo L) {
39630 if (!isActive()) return true;
39631 CurrentSource = L;
39632 return Shr<PT_Sint8, PT_Sint64>(S, OpPC);
39633}
39634bool EvalEmitter::emitShrSint8Uint64(SourceInfo L) {
39635 if (!isActive()) return true;
39636 CurrentSource = L;
39637 return Shr<PT_Sint8, PT_Uint64>(S, OpPC);
39638}
39639bool EvalEmitter::emitShrSint8IntAP(SourceInfo L) {
39640 if (!isActive()) return true;
39641 CurrentSource = L;
39642 return Shr<PT_Sint8, PT_IntAP>(S, OpPC);
39643}
39644bool EvalEmitter::emitShrSint8IntAPS(SourceInfo L) {
39645 if (!isActive()) return true;
39646 CurrentSource = L;
39647 return Shr<PT_Sint8, PT_IntAPS>(S, OpPC);
39648}
39649bool EvalEmitter::emitShrUint8Sint8(SourceInfo L) {
39650 if (!isActive()) return true;
39651 CurrentSource = L;
39652 return Shr<PT_Uint8, PT_Sint8>(S, OpPC);
39653}
39654bool EvalEmitter::emitShrUint8Uint8(SourceInfo L) {
39655 if (!isActive()) return true;
39656 CurrentSource = L;
39657 return Shr<PT_Uint8, PT_Uint8>(S, OpPC);
39658}
39659bool EvalEmitter::emitShrUint8Sint16(SourceInfo L) {
39660 if (!isActive()) return true;
39661 CurrentSource = L;
39662 return Shr<PT_Uint8, PT_Sint16>(S, OpPC);
39663}
39664bool EvalEmitter::emitShrUint8Uint16(SourceInfo L) {
39665 if (!isActive()) return true;
39666 CurrentSource = L;
39667 return Shr<PT_Uint8, PT_Uint16>(S, OpPC);
39668}
39669bool EvalEmitter::emitShrUint8Sint32(SourceInfo L) {
39670 if (!isActive()) return true;
39671 CurrentSource = L;
39672 return Shr<PT_Uint8, PT_Sint32>(S, OpPC);
39673}
39674bool EvalEmitter::emitShrUint8Uint32(SourceInfo L) {
39675 if (!isActive()) return true;
39676 CurrentSource = L;
39677 return Shr<PT_Uint8, PT_Uint32>(S, OpPC);
39678}
39679bool EvalEmitter::emitShrUint8Sint64(SourceInfo L) {
39680 if (!isActive()) return true;
39681 CurrentSource = L;
39682 return Shr<PT_Uint8, PT_Sint64>(S, OpPC);
39683}
39684bool EvalEmitter::emitShrUint8Uint64(SourceInfo L) {
39685 if (!isActive()) return true;
39686 CurrentSource = L;
39687 return Shr<PT_Uint8, PT_Uint64>(S, OpPC);
39688}
39689bool EvalEmitter::emitShrUint8IntAP(SourceInfo L) {
39690 if (!isActive()) return true;
39691 CurrentSource = L;
39692 return Shr<PT_Uint8, PT_IntAP>(S, OpPC);
39693}
39694bool EvalEmitter::emitShrUint8IntAPS(SourceInfo L) {
39695 if (!isActive()) return true;
39696 CurrentSource = L;
39697 return Shr<PT_Uint8, PT_IntAPS>(S, OpPC);
39698}
39699bool EvalEmitter::emitShrSint16Sint8(SourceInfo L) {
39700 if (!isActive()) return true;
39701 CurrentSource = L;
39702 return Shr<PT_Sint16, PT_Sint8>(S, OpPC);
39703}
39704bool EvalEmitter::emitShrSint16Uint8(SourceInfo L) {
39705 if (!isActive()) return true;
39706 CurrentSource = L;
39707 return Shr<PT_Sint16, PT_Uint8>(S, OpPC);
39708}
39709bool EvalEmitter::emitShrSint16Sint16(SourceInfo L) {
39710 if (!isActive()) return true;
39711 CurrentSource = L;
39712 return Shr<PT_Sint16, PT_Sint16>(S, OpPC);
39713}
39714bool EvalEmitter::emitShrSint16Uint16(SourceInfo L) {
39715 if (!isActive()) return true;
39716 CurrentSource = L;
39717 return Shr<PT_Sint16, PT_Uint16>(S, OpPC);
39718}
39719bool EvalEmitter::emitShrSint16Sint32(SourceInfo L) {
39720 if (!isActive()) return true;
39721 CurrentSource = L;
39722 return Shr<PT_Sint16, PT_Sint32>(S, OpPC);
39723}
39724bool EvalEmitter::emitShrSint16Uint32(SourceInfo L) {
39725 if (!isActive()) return true;
39726 CurrentSource = L;
39727 return Shr<PT_Sint16, PT_Uint32>(S, OpPC);
39728}
39729bool EvalEmitter::emitShrSint16Sint64(SourceInfo L) {
39730 if (!isActive()) return true;
39731 CurrentSource = L;
39732 return Shr<PT_Sint16, PT_Sint64>(S, OpPC);
39733}
39734bool EvalEmitter::emitShrSint16Uint64(SourceInfo L) {
39735 if (!isActive()) return true;
39736 CurrentSource = L;
39737 return Shr<PT_Sint16, PT_Uint64>(S, OpPC);
39738}
39739bool EvalEmitter::emitShrSint16IntAP(SourceInfo L) {
39740 if (!isActive()) return true;
39741 CurrentSource = L;
39742 return Shr<PT_Sint16, PT_IntAP>(S, OpPC);
39743}
39744bool EvalEmitter::emitShrSint16IntAPS(SourceInfo L) {
39745 if (!isActive()) return true;
39746 CurrentSource = L;
39747 return Shr<PT_Sint16, PT_IntAPS>(S, OpPC);
39748}
39749bool EvalEmitter::emitShrUint16Sint8(SourceInfo L) {
39750 if (!isActive()) return true;
39751 CurrentSource = L;
39752 return Shr<PT_Uint16, PT_Sint8>(S, OpPC);
39753}
39754bool EvalEmitter::emitShrUint16Uint8(SourceInfo L) {
39755 if (!isActive()) return true;
39756 CurrentSource = L;
39757 return Shr<PT_Uint16, PT_Uint8>(S, OpPC);
39758}
39759bool EvalEmitter::emitShrUint16Sint16(SourceInfo L) {
39760 if (!isActive()) return true;
39761 CurrentSource = L;
39762 return Shr<PT_Uint16, PT_Sint16>(S, OpPC);
39763}
39764bool EvalEmitter::emitShrUint16Uint16(SourceInfo L) {
39765 if (!isActive()) return true;
39766 CurrentSource = L;
39767 return Shr<PT_Uint16, PT_Uint16>(S, OpPC);
39768}
39769bool EvalEmitter::emitShrUint16Sint32(SourceInfo L) {
39770 if (!isActive()) return true;
39771 CurrentSource = L;
39772 return Shr<PT_Uint16, PT_Sint32>(S, OpPC);
39773}
39774bool EvalEmitter::emitShrUint16Uint32(SourceInfo L) {
39775 if (!isActive()) return true;
39776 CurrentSource = L;
39777 return Shr<PT_Uint16, PT_Uint32>(S, OpPC);
39778}
39779bool EvalEmitter::emitShrUint16Sint64(SourceInfo L) {
39780 if (!isActive()) return true;
39781 CurrentSource = L;
39782 return Shr<PT_Uint16, PT_Sint64>(S, OpPC);
39783}
39784bool EvalEmitter::emitShrUint16Uint64(SourceInfo L) {
39785 if (!isActive()) return true;
39786 CurrentSource = L;
39787 return Shr<PT_Uint16, PT_Uint64>(S, OpPC);
39788}
39789bool EvalEmitter::emitShrUint16IntAP(SourceInfo L) {
39790 if (!isActive()) return true;
39791 CurrentSource = L;
39792 return Shr<PT_Uint16, PT_IntAP>(S, OpPC);
39793}
39794bool EvalEmitter::emitShrUint16IntAPS(SourceInfo L) {
39795 if (!isActive()) return true;
39796 CurrentSource = L;
39797 return Shr<PT_Uint16, PT_IntAPS>(S, OpPC);
39798}
39799bool EvalEmitter::emitShrSint32Sint8(SourceInfo L) {
39800 if (!isActive()) return true;
39801 CurrentSource = L;
39802 return Shr<PT_Sint32, PT_Sint8>(S, OpPC);
39803}
39804bool EvalEmitter::emitShrSint32Uint8(SourceInfo L) {
39805 if (!isActive()) return true;
39806 CurrentSource = L;
39807 return Shr<PT_Sint32, PT_Uint8>(S, OpPC);
39808}
39809bool EvalEmitter::emitShrSint32Sint16(SourceInfo L) {
39810 if (!isActive()) return true;
39811 CurrentSource = L;
39812 return Shr<PT_Sint32, PT_Sint16>(S, OpPC);
39813}
39814bool EvalEmitter::emitShrSint32Uint16(SourceInfo L) {
39815 if (!isActive()) return true;
39816 CurrentSource = L;
39817 return Shr<PT_Sint32, PT_Uint16>(S, OpPC);
39818}
39819bool EvalEmitter::emitShrSint32Sint32(SourceInfo L) {
39820 if (!isActive()) return true;
39821 CurrentSource = L;
39822 return Shr<PT_Sint32, PT_Sint32>(S, OpPC);
39823}
39824bool EvalEmitter::emitShrSint32Uint32(SourceInfo L) {
39825 if (!isActive()) return true;
39826 CurrentSource = L;
39827 return Shr<PT_Sint32, PT_Uint32>(S, OpPC);
39828}
39829bool EvalEmitter::emitShrSint32Sint64(SourceInfo L) {
39830 if (!isActive()) return true;
39831 CurrentSource = L;
39832 return Shr<PT_Sint32, PT_Sint64>(S, OpPC);
39833}
39834bool EvalEmitter::emitShrSint32Uint64(SourceInfo L) {
39835 if (!isActive()) return true;
39836 CurrentSource = L;
39837 return Shr<PT_Sint32, PT_Uint64>(S, OpPC);
39838}
39839bool EvalEmitter::emitShrSint32IntAP(SourceInfo L) {
39840 if (!isActive()) return true;
39841 CurrentSource = L;
39842 return Shr<PT_Sint32, PT_IntAP>(S, OpPC);
39843}
39844bool EvalEmitter::emitShrSint32IntAPS(SourceInfo L) {
39845 if (!isActive()) return true;
39846 CurrentSource = L;
39847 return Shr<PT_Sint32, PT_IntAPS>(S, OpPC);
39848}
39849bool EvalEmitter::emitShrUint32Sint8(SourceInfo L) {
39850 if (!isActive()) return true;
39851 CurrentSource = L;
39852 return Shr<PT_Uint32, PT_Sint8>(S, OpPC);
39853}
39854bool EvalEmitter::emitShrUint32Uint8(SourceInfo L) {
39855 if (!isActive()) return true;
39856 CurrentSource = L;
39857 return Shr<PT_Uint32, PT_Uint8>(S, OpPC);
39858}
39859bool EvalEmitter::emitShrUint32Sint16(SourceInfo L) {
39860 if (!isActive()) return true;
39861 CurrentSource = L;
39862 return Shr<PT_Uint32, PT_Sint16>(S, OpPC);
39863}
39864bool EvalEmitter::emitShrUint32Uint16(SourceInfo L) {
39865 if (!isActive()) return true;
39866 CurrentSource = L;
39867 return Shr<PT_Uint32, PT_Uint16>(S, OpPC);
39868}
39869bool EvalEmitter::emitShrUint32Sint32(SourceInfo L) {
39870 if (!isActive()) return true;
39871 CurrentSource = L;
39872 return Shr<PT_Uint32, PT_Sint32>(S, OpPC);
39873}
39874bool EvalEmitter::emitShrUint32Uint32(SourceInfo L) {
39875 if (!isActive()) return true;
39876 CurrentSource = L;
39877 return Shr<PT_Uint32, PT_Uint32>(S, OpPC);
39878}
39879bool EvalEmitter::emitShrUint32Sint64(SourceInfo L) {
39880 if (!isActive()) return true;
39881 CurrentSource = L;
39882 return Shr<PT_Uint32, PT_Sint64>(S, OpPC);
39883}
39884bool EvalEmitter::emitShrUint32Uint64(SourceInfo L) {
39885 if (!isActive()) return true;
39886 CurrentSource = L;
39887 return Shr<PT_Uint32, PT_Uint64>(S, OpPC);
39888}
39889bool EvalEmitter::emitShrUint32IntAP(SourceInfo L) {
39890 if (!isActive()) return true;
39891 CurrentSource = L;
39892 return Shr<PT_Uint32, PT_IntAP>(S, OpPC);
39893}
39894bool EvalEmitter::emitShrUint32IntAPS(SourceInfo L) {
39895 if (!isActive()) return true;
39896 CurrentSource = L;
39897 return Shr<PT_Uint32, PT_IntAPS>(S, OpPC);
39898}
39899bool EvalEmitter::emitShrSint64Sint8(SourceInfo L) {
39900 if (!isActive()) return true;
39901 CurrentSource = L;
39902 return Shr<PT_Sint64, PT_Sint8>(S, OpPC);
39903}
39904bool EvalEmitter::emitShrSint64Uint8(SourceInfo L) {
39905 if (!isActive()) return true;
39906 CurrentSource = L;
39907 return Shr<PT_Sint64, PT_Uint8>(S, OpPC);
39908}
39909bool EvalEmitter::emitShrSint64Sint16(SourceInfo L) {
39910 if (!isActive()) return true;
39911 CurrentSource = L;
39912 return Shr<PT_Sint64, PT_Sint16>(S, OpPC);
39913}
39914bool EvalEmitter::emitShrSint64Uint16(SourceInfo L) {
39915 if (!isActive()) return true;
39916 CurrentSource = L;
39917 return Shr<PT_Sint64, PT_Uint16>(S, OpPC);
39918}
39919bool EvalEmitter::emitShrSint64Sint32(SourceInfo L) {
39920 if (!isActive()) return true;
39921 CurrentSource = L;
39922 return Shr<PT_Sint64, PT_Sint32>(S, OpPC);
39923}
39924bool EvalEmitter::emitShrSint64Uint32(SourceInfo L) {
39925 if (!isActive()) return true;
39926 CurrentSource = L;
39927 return Shr<PT_Sint64, PT_Uint32>(S, OpPC);
39928}
39929bool EvalEmitter::emitShrSint64Sint64(SourceInfo L) {
39930 if (!isActive()) return true;
39931 CurrentSource = L;
39932 return Shr<PT_Sint64, PT_Sint64>(S, OpPC);
39933}
39934bool EvalEmitter::emitShrSint64Uint64(SourceInfo L) {
39935 if (!isActive()) return true;
39936 CurrentSource = L;
39937 return Shr<PT_Sint64, PT_Uint64>(S, OpPC);
39938}
39939bool EvalEmitter::emitShrSint64IntAP(SourceInfo L) {
39940 if (!isActive()) return true;
39941 CurrentSource = L;
39942 return Shr<PT_Sint64, PT_IntAP>(S, OpPC);
39943}
39944bool EvalEmitter::emitShrSint64IntAPS(SourceInfo L) {
39945 if (!isActive()) return true;
39946 CurrentSource = L;
39947 return Shr<PT_Sint64, PT_IntAPS>(S, OpPC);
39948}
39949bool EvalEmitter::emitShrUint64Sint8(SourceInfo L) {
39950 if (!isActive()) return true;
39951 CurrentSource = L;
39952 return Shr<PT_Uint64, PT_Sint8>(S, OpPC);
39953}
39954bool EvalEmitter::emitShrUint64Uint8(SourceInfo L) {
39955 if (!isActive()) return true;
39956 CurrentSource = L;
39957 return Shr<PT_Uint64, PT_Uint8>(S, OpPC);
39958}
39959bool EvalEmitter::emitShrUint64Sint16(SourceInfo L) {
39960 if (!isActive()) return true;
39961 CurrentSource = L;
39962 return Shr<PT_Uint64, PT_Sint16>(S, OpPC);
39963}
39964bool EvalEmitter::emitShrUint64Uint16(SourceInfo L) {
39965 if (!isActive()) return true;
39966 CurrentSource = L;
39967 return Shr<PT_Uint64, PT_Uint16>(S, OpPC);
39968}
39969bool EvalEmitter::emitShrUint64Sint32(SourceInfo L) {
39970 if (!isActive()) return true;
39971 CurrentSource = L;
39972 return Shr<PT_Uint64, PT_Sint32>(S, OpPC);
39973}
39974bool EvalEmitter::emitShrUint64Uint32(SourceInfo L) {
39975 if (!isActive()) return true;
39976 CurrentSource = L;
39977 return Shr<PT_Uint64, PT_Uint32>(S, OpPC);
39978}
39979bool EvalEmitter::emitShrUint64Sint64(SourceInfo L) {
39980 if (!isActive()) return true;
39981 CurrentSource = L;
39982 return Shr<PT_Uint64, PT_Sint64>(S, OpPC);
39983}
39984bool EvalEmitter::emitShrUint64Uint64(SourceInfo L) {
39985 if (!isActive()) return true;
39986 CurrentSource = L;
39987 return Shr<PT_Uint64, PT_Uint64>(S, OpPC);
39988}
39989bool EvalEmitter::emitShrUint64IntAP(SourceInfo L) {
39990 if (!isActive()) return true;
39991 CurrentSource = L;
39992 return Shr<PT_Uint64, PT_IntAP>(S, OpPC);
39993}
39994bool EvalEmitter::emitShrUint64IntAPS(SourceInfo L) {
39995 if (!isActive()) return true;
39996 CurrentSource = L;
39997 return Shr<PT_Uint64, PT_IntAPS>(S, OpPC);
39998}
39999bool EvalEmitter::emitShrIntAPSint8(SourceInfo L) {
40000 if (!isActive()) return true;
40001 CurrentSource = L;
40002 return Shr<PT_IntAP, PT_Sint8>(S, OpPC);
40003}
40004bool EvalEmitter::emitShrIntAPUint8(SourceInfo L) {
40005 if (!isActive()) return true;
40006 CurrentSource = L;
40007 return Shr<PT_IntAP, PT_Uint8>(S, OpPC);
40008}
40009bool EvalEmitter::emitShrIntAPSint16(SourceInfo L) {
40010 if (!isActive()) return true;
40011 CurrentSource = L;
40012 return Shr<PT_IntAP, PT_Sint16>(S, OpPC);
40013}
40014bool EvalEmitter::emitShrIntAPUint16(SourceInfo L) {
40015 if (!isActive()) return true;
40016 CurrentSource = L;
40017 return Shr<PT_IntAP, PT_Uint16>(S, OpPC);
40018}
40019bool EvalEmitter::emitShrIntAPSint32(SourceInfo L) {
40020 if (!isActive()) return true;
40021 CurrentSource = L;
40022 return Shr<PT_IntAP, PT_Sint32>(S, OpPC);
40023}
40024bool EvalEmitter::emitShrIntAPUint32(SourceInfo L) {
40025 if (!isActive()) return true;
40026 CurrentSource = L;
40027 return Shr<PT_IntAP, PT_Uint32>(S, OpPC);
40028}
40029bool EvalEmitter::emitShrIntAPSint64(SourceInfo L) {
40030 if (!isActive()) return true;
40031 CurrentSource = L;
40032 return Shr<PT_IntAP, PT_Sint64>(S, OpPC);
40033}
40034bool EvalEmitter::emitShrIntAPUint64(SourceInfo L) {
40035 if (!isActive()) return true;
40036 CurrentSource = L;
40037 return Shr<PT_IntAP, PT_Uint64>(S, OpPC);
40038}
40039bool EvalEmitter::emitShrIntAPIntAP(SourceInfo L) {
40040 if (!isActive()) return true;
40041 CurrentSource = L;
40042 return Shr<PT_IntAP, PT_IntAP>(S, OpPC);
40043}
40044bool EvalEmitter::emitShrIntAPIntAPS(SourceInfo L) {
40045 if (!isActive()) return true;
40046 CurrentSource = L;
40047 return Shr<PT_IntAP, PT_IntAPS>(S, OpPC);
40048}
40049bool EvalEmitter::emitShrIntAPSSint8(SourceInfo L) {
40050 if (!isActive()) return true;
40051 CurrentSource = L;
40052 return Shr<PT_IntAPS, PT_Sint8>(S, OpPC);
40053}
40054bool EvalEmitter::emitShrIntAPSUint8(SourceInfo L) {
40055 if (!isActive()) return true;
40056 CurrentSource = L;
40057 return Shr<PT_IntAPS, PT_Uint8>(S, OpPC);
40058}
40059bool EvalEmitter::emitShrIntAPSSint16(SourceInfo L) {
40060 if (!isActive()) return true;
40061 CurrentSource = L;
40062 return Shr<PT_IntAPS, PT_Sint16>(S, OpPC);
40063}
40064bool EvalEmitter::emitShrIntAPSUint16(SourceInfo L) {
40065 if (!isActive()) return true;
40066 CurrentSource = L;
40067 return Shr<PT_IntAPS, PT_Uint16>(S, OpPC);
40068}
40069bool EvalEmitter::emitShrIntAPSSint32(SourceInfo L) {
40070 if (!isActive()) return true;
40071 CurrentSource = L;
40072 return Shr<PT_IntAPS, PT_Sint32>(S, OpPC);
40073}
40074bool EvalEmitter::emitShrIntAPSUint32(SourceInfo L) {
40075 if (!isActive()) return true;
40076 CurrentSource = L;
40077 return Shr<PT_IntAPS, PT_Uint32>(S, OpPC);
40078}
40079bool EvalEmitter::emitShrIntAPSSint64(SourceInfo L) {
40080 if (!isActive()) return true;
40081 CurrentSource = L;
40082 return Shr<PT_IntAPS, PT_Sint64>(S, OpPC);
40083}
40084bool EvalEmitter::emitShrIntAPSUint64(SourceInfo L) {
40085 if (!isActive()) return true;
40086 CurrentSource = L;
40087 return Shr<PT_IntAPS, PT_Uint64>(S, OpPC);
40088}
40089bool EvalEmitter::emitShrIntAPSIntAP(SourceInfo L) {
40090 if (!isActive()) return true;
40091 CurrentSource = L;
40092 return Shr<PT_IntAPS, PT_IntAP>(S, OpPC);
40093}
40094bool EvalEmitter::emitShrIntAPSIntAPS(SourceInfo L) {
40095 if (!isActive()) return true;
40096 CurrentSource = L;
40097 return Shr<PT_IntAPS, PT_IntAPS>(S, OpPC);
40098}
40099#endif
40100#ifdef GET_OPCODE_NAMES
40101OP_SideEffect,
40102#endif
40103#ifdef GET_INTERP
40104case OP_SideEffect: {
40105 if (!SideEffect(S, OpPC))
40106 return false;
40107 continue;
40108}
40109#endif
40110#ifdef GET_DISASM
40111case OP_SideEffect:
40112 Text.Op = PrintName("SideEffect");
40113 break;
40114#endif
40115#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40116bool emitSideEffect(SourceInfo);
40117#endif
40118#ifdef GET_LINK_IMPL
40119bool ByteCodeEmitter::emitSideEffect(SourceInfo L) {
40120 return emitOp<>(OP_SideEffect, L);
40121}
40122#endif
40123#ifdef GET_EVAL_IMPL
40124bool EvalEmitter::emitSideEffect(SourceInfo L) {
40125 if (!isActive()) return true;
40126 CurrentSource = L;
40127 return SideEffect(S, OpPC);
40128}
40129#endif
40130#ifdef GET_OPCODE_NAMES
40131OP_SizelessVectorElementSize,
40132#endif
40133#ifdef GET_INTERP
40134case OP_SizelessVectorElementSize: {
40135 if (!SizelessVectorElementSize(S, OpPC))
40136 return false;
40137 continue;
40138}
40139#endif
40140#ifdef GET_DISASM
40141case OP_SizelessVectorElementSize:
40142 Text.Op = PrintName("SizelessVectorElementSize");
40143 break;
40144#endif
40145#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40146bool emitSizelessVectorElementSize(SourceInfo);
40147#endif
40148#ifdef GET_LINK_IMPL
40149bool ByteCodeEmitter::emitSizelessVectorElementSize(SourceInfo L) {
40150 return emitOp<>(OP_SizelessVectorElementSize, L);
40151}
40152#endif
40153#ifdef GET_EVAL_IMPL
40154bool EvalEmitter::emitSizelessVectorElementSize(SourceInfo L) {
40155 if (!isActive()) return true;
40156 CurrentSource = L;
40157 return SizelessVectorElementSize(S, OpPC);
40158}
40159#endif
40160#ifdef GET_OPCODE_NAMES
40161OP_StartLifetime,
40162#endif
40163#ifdef GET_INTERP
40164case OP_StartLifetime: {
40165 if (!StartLifetime(S, OpPC))
40166 return false;
40167 continue;
40168}
40169#endif
40170#ifdef GET_DISASM
40171case OP_StartLifetime:
40172 Text.Op = PrintName("StartLifetime");
40173 break;
40174#endif
40175#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40176bool emitStartLifetime(SourceInfo);
40177#endif
40178#ifdef GET_LINK_IMPL
40179bool ByteCodeEmitter::emitStartLifetime(SourceInfo L) {
40180 return emitOp<>(OP_StartLifetime, L);
40181}
40182#endif
40183#ifdef GET_EVAL_IMPL
40184bool EvalEmitter::emitStartLifetime(SourceInfo L) {
40185 if (!isActive()) return true;
40186 CurrentSource = L;
40187 return StartLifetime(S, OpPC);
40188}
40189#endif
40190#ifdef GET_OPCODE_NAMES
40191OP_StartSpeculation,
40192#endif
40193#ifdef GET_INTERP
40194case OP_StartSpeculation: {
40195 if (!StartSpeculation(S, OpPC))
40196 return false;
40197 continue;
40198}
40199#endif
40200#ifdef GET_DISASM
40201case OP_StartSpeculation:
40202 Text.Op = PrintName("StartSpeculation");
40203 break;
40204#endif
40205#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40206bool emitStartSpeculation(SourceInfo);
40207#endif
40208#ifdef GET_LINK_IMPL
40209bool ByteCodeEmitter::emitStartSpeculation(SourceInfo L) {
40210 return emitOp<>(OP_StartSpeculation, L);
40211}
40212#endif
40213#ifdef GET_EVAL_IMPL
40214bool EvalEmitter::emitStartSpeculation(SourceInfo L) {
40215 if (!isActive()) return true;
40216 CurrentSource = L;
40217 return StartSpeculation(S, OpPC);
40218}
40219#endif
40220#ifdef GET_OPCODE_NAMES
40221OP_StoreSint8,
40222OP_StoreUint8,
40223OP_StoreSint16,
40224OP_StoreUint16,
40225OP_StoreSint32,
40226OP_StoreUint32,
40227OP_StoreSint64,
40228OP_StoreUint64,
40229OP_StoreIntAP,
40230OP_StoreIntAPS,
40231OP_StoreBool,
40232OP_StoreFixedPoint,
40233OP_StorePtr,
40234OP_StoreMemberPtr,
40235OP_StoreFloat,
40236#endif
40237#ifdef GET_INTERP
40238case OP_StoreSint8: {
40239 if (!Store<PT_Sint8>(S, OpPC))
40240 return false;
40241 continue;
40242}
40243case OP_StoreUint8: {
40244 if (!Store<PT_Uint8>(S, OpPC))
40245 return false;
40246 continue;
40247}
40248case OP_StoreSint16: {
40249 if (!Store<PT_Sint16>(S, OpPC))
40250 return false;
40251 continue;
40252}
40253case OP_StoreUint16: {
40254 if (!Store<PT_Uint16>(S, OpPC))
40255 return false;
40256 continue;
40257}
40258case OP_StoreSint32: {
40259 if (!Store<PT_Sint32>(S, OpPC))
40260 return false;
40261 continue;
40262}
40263case OP_StoreUint32: {
40264 if (!Store<PT_Uint32>(S, OpPC))
40265 return false;
40266 continue;
40267}
40268case OP_StoreSint64: {
40269 if (!Store<PT_Sint64>(S, OpPC))
40270 return false;
40271 continue;
40272}
40273case OP_StoreUint64: {
40274 if (!Store<PT_Uint64>(S, OpPC))
40275 return false;
40276 continue;
40277}
40278case OP_StoreIntAP: {
40279 if (!Store<PT_IntAP>(S, OpPC))
40280 return false;
40281 continue;
40282}
40283case OP_StoreIntAPS: {
40284 if (!Store<PT_IntAPS>(S, OpPC))
40285 return false;
40286 continue;
40287}
40288case OP_StoreBool: {
40289 if (!Store<PT_Bool>(S, OpPC))
40290 return false;
40291 continue;
40292}
40293case OP_StoreFixedPoint: {
40294 if (!Store<PT_FixedPoint>(S, OpPC))
40295 return false;
40296 continue;
40297}
40298case OP_StorePtr: {
40299 if (!Store<PT_Ptr>(S, OpPC))
40300 return false;
40301 continue;
40302}
40303case OP_StoreMemberPtr: {
40304 if (!Store<PT_MemberPtr>(S, OpPC))
40305 return false;
40306 continue;
40307}
40308case OP_StoreFloat: {
40309 if (!Store<PT_Float>(S, OpPC))
40310 return false;
40311 continue;
40312}
40313#endif
40314#ifdef GET_DISASM
40315case OP_StoreSint8:
40316 Text.Op = PrintName("StoreSint8");
40317 break;
40318case OP_StoreUint8:
40319 Text.Op = PrintName("StoreUint8");
40320 break;
40321case OP_StoreSint16:
40322 Text.Op = PrintName("StoreSint16");
40323 break;
40324case OP_StoreUint16:
40325 Text.Op = PrintName("StoreUint16");
40326 break;
40327case OP_StoreSint32:
40328 Text.Op = PrintName("StoreSint32");
40329 break;
40330case OP_StoreUint32:
40331 Text.Op = PrintName("StoreUint32");
40332 break;
40333case OP_StoreSint64:
40334 Text.Op = PrintName("StoreSint64");
40335 break;
40336case OP_StoreUint64:
40337 Text.Op = PrintName("StoreUint64");
40338 break;
40339case OP_StoreIntAP:
40340 Text.Op = PrintName("StoreIntAP");
40341 break;
40342case OP_StoreIntAPS:
40343 Text.Op = PrintName("StoreIntAPS");
40344 break;
40345case OP_StoreBool:
40346 Text.Op = PrintName("StoreBool");
40347 break;
40348case OP_StoreFixedPoint:
40349 Text.Op = PrintName("StoreFixedPoint");
40350 break;
40351case OP_StorePtr:
40352 Text.Op = PrintName("StorePtr");
40353 break;
40354case OP_StoreMemberPtr:
40355 Text.Op = PrintName("StoreMemberPtr");
40356 break;
40357case OP_StoreFloat:
40358 Text.Op = PrintName("StoreFloat");
40359 break;
40360#endif
40361#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40362bool emitStoreSint8(SourceInfo);
40363bool emitStoreUint8(SourceInfo);
40364bool emitStoreSint16(SourceInfo);
40365bool emitStoreUint16(SourceInfo);
40366bool emitStoreSint32(SourceInfo);
40367bool emitStoreUint32(SourceInfo);
40368bool emitStoreSint64(SourceInfo);
40369bool emitStoreUint64(SourceInfo);
40370bool emitStoreIntAP(SourceInfo);
40371bool emitStoreIntAPS(SourceInfo);
40372bool emitStoreBool(SourceInfo);
40373bool emitStoreFixedPoint(SourceInfo);
40374bool emitStorePtr(SourceInfo);
40375bool emitStoreMemberPtr(SourceInfo);
40376bool emitStoreFloat(SourceInfo);
40377#endif
40378#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40379[[nodiscard]] bool emitStore(PrimType, SourceInfo I);
40380#endif
40381#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40382bool
40383#if defined(GET_EVAL_IMPL)
40384EvalEmitter
40385#else
40386ByteCodeEmitter
40387#endif
40388::emitStore(PrimType T0, SourceInfo I) {
40389 switch (T0) {
40390 case PT_Sint8:
40391 return emitStoreSint8(I);
40392 case PT_Uint8:
40393 return emitStoreUint8(I);
40394 case PT_Sint16:
40395 return emitStoreSint16(I);
40396 case PT_Uint16:
40397 return emitStoreUint16(I);
40398 case PT_Sint32:
40399 return emitStoreSint32(I);
40400 case PT_Uint32:
40401 return emitStoreUint32(I);
40402 case PT_Sint64:
40403 return emitStoreSint64(I);
40404 case PT_Uint64:
40405 return emitStoreUint64(I);
40406 case PT_IntAP:
40407 return emitStoreIntAP(I);
40408 case PT_IntAPS:
40409 return emitStoreIntAPS(I);
40410 case PT_Bool:
40411 return emitStoreBool(I);
40412 case PT_FixedPoint:
40413 return emitStoreFixedPoint(I);
40414 case PT_Ptr:
40415 return emitStorePtr(I);
40416 case PT_MemberPtr:
40417 return emitStoreMemberPtr(I);
40418 case PT_Float:
40419 return emitStoreFloat(I);
40420 }
40421 llvm_unreachable("invalid enum value");
40422}
40423#endif
40424#ifdef GET_LINK_IMPL
40425bool ByteCodeEmitter::emitStoreSint8(SourceInfo L) {
40426 return emitOp<>(OP_StoreSint8, L);
40427}
40428bool ByteCodeEmitter::emitStoreUint8(SourceInfo L) {
40429 return emitOp<>(OP_StoreUint8, L);
40430}
40431bool ByteCodeEmitter::emitStoreSint16(SourceInfo L) {
40432 return emitOp<>(OP_StoreSint16, L);
40433}
40434bool ByteCodeEmitter::emitStoreUint16(SourceInfo L) {
40435 return emitOp<>(OP_StoreUint16, L);
40436}
40437bool ByteCodeEmitter::emitStoreSint32(SourceInfo L) {
40438 return emitOp<>(OP_StoreSint32, L);
40439}
40440bool ByteCodeEmitter::emitStoreUint32(SourceInfo L) {
40441 return emitOp<>(OP_StoreUint32, L);
40442}
40443bool ByteCodeEmitter::emitStoreSint64(SourceInfo L) {
40444 return emitOp<>(OP_StoreSint64, L);
40445}
40446bool ByteCodeEmitter::emitStoreUint64(SourceInfo L) {
40447 return emitOp<>(OP_StoreUint64, L);
40448}
40449bool ByteCodeEmitter::emitStoreIntAP(SourceInfo L) {
40450 return emitOp<>(OP_StoreIntAP, L);
40451}
40452bool ByteCodeEmitter::emitStoreIntAPS(SourceInfo L) {
40453 return emitOp<>(OP_StoreIntAPS, L);
40454}
40455bool ByteCodeEmitter::emitStoreBool(SourceInfo L) {
40456 return emitOp<>(OP_StoreBool, L);
40457}
40458bool ByteCodeEmitter::emitStoreFixedPoint(SourceInfo L) {
40459 return emitOp<>(OP_StoreFixedPoint, L);
40460}
40461bool ByteCodeEmitter::emitStorePtr(SourceInfo L) {
40462 return emitOp<>(OP_StorePtr, L);
40463}
40464bool ByteCodeEmitter::emitStoreMemberPtr(SourceInfo L) {
40465 return emitOp<>(OP_StoreMemberPtr, L);
40466}
40467bool ByteCodeEmitter::emitStoreFloat(SourceInfo L) {
40468 return emitOp<>(OP_StoreFloat, L);
40469}
40470#endif
40471#ifdef GET_EVAL_IMPL
40472bool EvalEmitter::emitStoreSint8(SourceInfo L) {
40473 if (!isActive()) return true;
40474 CurrentSource = L;
40475 return Store<PT_Sint8>(S, OpPC);
40476}
40477bool EvalEmitter::emitStoreUint8(SourceInfo L) {
40478 if (!isActive()) return true;
40479 CurrentSource = L;
40480 return Store<PT_Uint8>(S, OpPC);
40481}
40482bool EvalEmitter::emitStoreSint16(SourceInfo L) {
40483 if (!isActive()) return true;
40484 CurrentSource = L;
40485 return Store<PT_Sint16>(S, OpPC);
40486}
40487bool EvalEmitter::emitStoreUint16(SourceInfo L) {
40488 if (!isActive()) return true;
40489 CurrentSource = L;
40490 return Store<PT_Uint16>(S, OpPC);
40491}
40492bool EvalEmitter::emitStoreSint32(SourceInfo L) {
40493 if (!isActive()) return true;
40494 CurrentSource = L;
40495 return Store<PT_Sint32>(S, OpPC);
40496}
40497bool EvalEmitter::emitStoreUint32(SourceInfo L) {
40498 if (!isActive()) return true;
40499 CurrentSource = L;
40500 return Store<PT_Uint32>(S, OpPC);
40501}
40502bool EvalEmitter::emitStoreSint64(SourceInfo L) {
40503 if (!isActive()) return true;
40504 CurrentSource = L;
40505 return Store<PT_Sint64>(S, OpPC);
40506}
40507bool EvalEmitter::emitStoreUint64(SourceInfo L) {
40508 if (!isActive()) return true;
40509 CurrentSource = L;
40510 return Store<PT_Uint64>(S, OpPC);
40511}
40512bool EvalEmitter::emitStoreIntAP(SourceInfo L) {
40513 if (!isActive()) return true;
40514 CurrentSource = L;
40515 return Store<PT_IntAP>(S, OpPC);
40516}
40517bool EvalEmitter::emitStoreIntAPS(SourceInfo L) {
40518 if (!isActive()) return true;
40519 CurrentSource = L;
40520 return Store<PT_IntAPS>(S, OpPC);
40521}
40522bool EvalEmitter::emitStoreBool(SourceInfo L) {
40523 if (!isActive()) return true;
40524 CurrentSource = L;
40525 return Store<PT_Bool>(S, OpPC);
40526}
40527bool EvalEmitter::emitStoreFixedPoint(SourceInfo L) {
40528 if (!isActive()) return true;
40529 CurrentSource = L;
40530 return Store<PT_FixedPoint>(S, OpPC);
40531}
40532bool EvalEmitter::emitStorePtr(SourceInfo L) {
40533 if (!isActive()) return true;
40534 CurrentSource = L;
40535 return Store<PT_Ptr>(S, OpPC);
40536}
40537bool EvalEmitter::emitStoreMemberPtr(SourceInfo L) {
40538 if (!isActive()) return true;
40539 CurrentSource = L;
40540 return Store<PT_MemberPtr>(S, OpPC);
40541}
40542bool EvalEmitter::emitStoreFloat(SourceInfo L) {
40543 if (!isActive()) return true;
40544 CurrentSource = L;
40545 return Store<PT_Float>(S, OpPC);
40546}
40547#endif
40548#ifdef GET_OPCODE_NAMES
40549OP_StoreActivateSint8,
40550OP_StoreActivateUint8,
40551OP_StoreActivateSint16,
40552OP_StoreActivateUint16,
40553OP_StoreActivateSint32,
40554OP_StoreActivateUint32,
40555OP_StoreActivateSint64,
40556OP_StoreActivateUint64,
40557OP_StoreActivateIntAP,
40558OP_StoreActivateIntAPS,
40559OP_StoreActivateBool,
40560OP_StoreActivateFixedPoint,
40561OP_StoreActivatePtr,
40562OP_StoreActivateMemberPtr,
40563OP_StoreActivateFloat,
40564#endif
40565#ifdef GET_INTERP
40566case OP_StoreActivateSint8: {
40567 if (!StoreActivate<PT_Sint8>(S, OpPC))
40568 return false;
40569 continue;
40570}
40571case OP_StoreActivateUint8: {
40572 if (!StoreActivate<PT_Uint8>(S, OpPC))
40573 return false;
40574 continue;
40575}
40576case OP_StoreActivateSint16: {
40577 if (!StoreActivate<PT_Sint16>(S, OpPC))
40578 return false;
40579 continue;
40580}
40581case OP_StoreActivateUint16: {
40582 if (!StoreActivate<PT_Uint16>(S, OpPC))
40583 return false;
40584 continue;
40585}
40586case OP_StoreActivateSint32: {
40587 if (!StoreActivate<PT_Sint32>(S, OpPC))
40588 return false;
40589 continue;
40590}
40591case OP_StoreActivateUint32: {
40592 if (!StoreActivate<PT_Uint32>(S, OpPC))
40593 return false;
40594 continue;
40595}
40596case OP_StoreActivateSint64: {
40597 if (!StoreActivate<PT_Sint64>(S, OpPC))
40598 return false;
40599 continue;
40600}
40601case OP_StoreActivateUint64: {
40602 if (!StoreActivate<PT_Uint64>(S, OpPC))
40603 return false;
40604 continue;
40605}
40606case OP_StoreActivateIntAP: {
40607 if (!StoreActivate<PT_IntAP>(S, OpPC))
40608 return false;
40609 continue;
40610}
40611case OP_StoreActivateIntAPS: {
40612 if (!StoreActivate<PT_IntAPS>(S, OpPC))
40613 return false;
40614 continue;
40615}
40616case OP_StoreActivateBool: {
40617 if (!StoreActivate<PT_Bool>(S, OpPC))
40618 return false;
40619 continue;
40620}
40621case OP_StoreActivateFixedPoint: {
40622 if (!StoreActivate<PT_FixedPoint>(S, OpPC))
40623 return false;
40624 continue;
40625}
40626case OP_StoreActivatePtr: {
40627 if (!StoreActivate<PT_Ptr>(S, OpPC))
40628 return false;
40629 continue;
40630}
40631case OP_StoreActivateMemberPtr: {
40632 if (!StoreActivate<PT_MemberPtr>(S, OpPC))
40633 return false;
40634 continue;
40635}
40636case OP_StoreActivateFloat: {
40637 if (!StoreActivate<PT_Float>(S, OpPC))
40638 return false;
40639 continue;
40640}
40641#endif
40642#ifdef GET_DISASM
40643case OP_StoreActivateSint8:
40644 Text.Op = PrintName("StoreActivateSint8");
40645 break;
40646case OP_StoreActivateUint8:
40647 Text.Op = PrintName("StoreActivateUint8");
40648 break;
40649case OP_StoreActivateSint16:
40650 Text.Op = PrintName("StoreActivateSint16");
40651 break;
40652case OP_StoreActivateUint16:
40653 Text.Op = PrintName("StoreActivateUint16");
40654 break;
40655case OP_StoreActivateSint32:
40656 Text.Op = PrintName("StoreActivateSint32");
40657 break;
40658case OP_StoreActivateUint32:
40659 Text.Op = PrintName("StoreActivateUint32");
40660 break;
40661case OP_StoreActivateSint64:
40662 Text.Op = PrintName("StoreActivateSint64");
40663 break;
40664case OP_StoreActivateUint64:
40665 Text.Op = PrintName("StoreActivateUint64");
40666 break;
40667case OP_StoreActivateIntAP:
40668 Text.Op = PrintName("StoreActivateIntAP");
40669 break;
40670case OP_StoreActivateIntAPS:
40671 Text.Op = PrintName("StoreActivateIntAPS");
40672 break;
40673case OP_StoreActivateBool:
40674 Text.Op = PrintName("StoreActivateBool");
40675 break;
40676case OP_StoreActivateFixedPoint:
40677 Text.Op = PrintName("StoreActivateFixedPoint");
40678 break;
40679case OP_StoreActivatePtr:
40680 Text.Op = PrintName("StoreActivatePtr");
40681 break;
40682case OP_StoreActivateMemberPtr:
40683 Text.Op = PrintName("StoreActivateMemberPtr");
40684 break;
40685case OP_StoreActivateFloat:
40686 Text.Op = PrintName("StoreActivateFloat");
40687 break;
40688#endif
40689#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40690bool emitStoreActivateSint8(SourceInfo);
40691bool emitStoreActivateUint8(SourceInfo);
40692bool emitStoreActivateSint16(SourceInfo);
40693bool emitStoreActivateUint16(SourceInfo);
40694bool emitStoreActivateSint32(SourceInfo);
40695bool emitStoreActivateUint32(SourceInfo);
40696bool emitStoreActivateSint64(SourceInfo);
40697bool emitStoreActivateUint64(SourceInfo);
40698bool emitStoreActivateIntAP(SourceInfo);
40699bool emitStoreActivateIntAPS(SourceInfo);
40700bool emitStoreActivateBool(SourceInfo);
40701bool emitStoreActivateFixedPoint(SourceInfo);
40702bool emitStoreActivatePtr(SourceInfo);
40703bool emitStoreActivateMemberPtr(SourceInfo);
40704bool emitStoreActivateFloat(SourceInfo);
40705#endif
40706#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
40707[[nodiscard]] bool emitStoreActivate(PrimType, SourceInfo I);
40708#endif
40709#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
40710bool
40711#if defined(GET_EVAL_IMPL)
40712EvalEmitter
40713#else
40714ByteCodeEmitter
40715#endif
40716::emitStoreActivate(PrimType T0, SourceInfo I) {
40717 switch (T0) {
40718 case PT_Sint8:
40719 return emitStoreActivateSint8(I);
40720 case PT_Uint8:
40721 return emitStoreActivateUint8(I);
40722 case PT_Sint16:
40723 return emitStoreActivateSint16(I);
40724 case PT_Uint16:
40725 return emitStoreActivateUint16(I);
40726 case PT_Sint32:
40727 return emitStoreActivateSint32(I);
40728 case PT_Uint32:
40729 return emitStoreActivateUint32(I);
40730 case PT_Sint64:
40731 return emitStoreActivateSint64(I);
40732 case PT_Uint64:
40733 return emitStoreActivateUint64(I);
40734 case PT_IntAP:
40735 return emitStoreActivateIntAP(I);
40736 case PT_IntAPS:
40737 return emitStoreActivateIntAPS(I);
40738 case PT_Bool:
40739 return emitStoreActivateBool(I);
40740 case PT_FixedPoint:
40741 return emitStoreActivateFixedPoint(I);
40742 case PT_Ptr:
40743 return emitStoreActivatePtr(I);
40744 case PT_MemberPtr:
40745 return emitStoreActivateMemberPtr(I);
40746 case PT_Float:
40747 return emitStoreActivateFloat(I);
40748 }
40749 llvm_unreachable("invalid enum value");
40750}
40751#endif
40752#ifdef GET_LINK_IMPL
40753bool ByteCodeEmitter::emitStoreActivateSint8(SourceInfo L) {
40754 return emitOp<>(OP_StoreActivateSint8, L);
40755}
40756bool ByteCodeEmitter::emitStoreActivateUint8(SourceInfo L) {
40757 return emitOp<>(OP_StoreActivateUint8, L);
40758}
40759bool ByteCodeEmitter::emitStoreActivateSint16(SourceInfo L) {
40760 return emitOp<>(OP_StoreActivateSint16, L);
40761}
40762bool ByteCodeEmitter::emitStoreActivateUint16(SourceInfo L) {
40763 return emitOp<>(OP_StoreActivateUint16, L);
40764}
40765bool ByteCodeEmitter::emitStoreActivateSint32(SourceInfo L) {
40766 return emitOp<>(OP_StoreActivateSint32, L);
40767}
40768bool ByteCodeEmitter::emitStoreActivateUint32(SourceInfo L) {
40769 return emitOp<>(OP_StoreActivateUint32, L);
40770}
40771bool ByteCodeEmitter::emitStoreActivateSint64(SourceInfo L) {
40772 return emitOp<>(OP_StoreActivateSint64, L);
40773}
40774bool ByteCodeEmitter::emitStoreActivateUint64(SourceInfo L) {
40775 return emitOp<>(OP_StoreActivateUint64, L);
40776}
40777bool ByteCodeEmitter::emitStoreActivateIntAP(SourceInfo L) {
40778 return emitOp<>(OP_StoreActivateIntAP, L);
40779}
40780bool ByteCodeEmitter::emitStoreActivateIntAPS(SourceInfo L) {
40781 return emitOp<>(OP_StoreActivateIntAPS, L);
40782}
40783bool ByteCodeEmitter::emitStoreActivateBool(SourceInfo L) {
40784 return emitOp<>(OP_StoreActivateBool, L);
40785}
40786bool ByteCodeEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
40787 return emitOp<>(OP_StoreActivateFixedPoint, L);
40788}
40789bool ByteCodeEmitter::emitStoreActivatePtr(SourceInfo L) {
40790 return emitOp<>(OP_StoreActivatePtr, L);
40791}
40792bool ByteCodeEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
40793 return emitOp<>(OP_StoreActivateMemberPtr, L);
40794}
40795bool ByteCodeEmitter::emitStoreActivateFloat(SourceInfo L) {
40796 return emitOp<>(OP_StoreActivateFloat, L);
40797}
40798#endif
40799#ifdef GET_EVAL_IMPL
40800bool EvalEmitter::emitStoreActivateSint8(SourceInfo L) {
40801 if (!isActive()) return true;
40802 CurrentSource = L;
40803 return StoreActivate<PT_Sint8>(S, OpPC);
40804}
40805bool EvalEmitter::emitStoreActivateUint8(SourceInfo L) {
40806 if (!isActive()) return true;
40807 CurrentSource = L;
40808 return StoreActivate<PT_Uint8>(S, OpPC);
40809}
40810bool EvalEmitter::emitStoreActivateSint16(SourceInfo L) {
40811 if (!isActive()) return true;
40812 CurrentSource = L;
40813 return StoreActivate<PT_Sint16>(S, OpPC);
40814}
40815bool EvalEmitter::emitStoreActivateUint16(SourceInfo L) {
40816 if (!isActive()) return true;
40817 CurrentSource = L;
40818 return StoreActivate<PT_Uint16>(S, OpPC);
40819}
40820bool EvalEmitter::emitStoreActivateSint32(SourceInfo L) {
40821 if (!isActive()) return true;
40822 CurrentSource = L;
40823 return StoreActivate<PT_Sint32>(S, OpPC);
40824}
40825bool EvalEmitter::emitStoreActivateUint32(SourceInfo L) {
40826 if (!isActive()) return true;
40827 CurrentSource = L;
40828 return StoreActivate<PT_Uint32>(S, OpPC);
40829}
40830bool EvalEmitter::emitStoreActivateSint64(SourceInfo L) {
40831 if (!isActive()) return true;
40832 CurrentSource = L;
40833 return StoreActivate<PT_Sint64>(S, OpPC);
40834}
40835bool EvalEmitter::emitStoreActivateUint64(SourceInfo L) {
40836 if (!isActive()) return true;
40837 CurrentSource = L;
40838 return StoreActivate<PT_Uint64>(S, OpPC);
40839}
40840bool EvalEmitter::emitStoreActivateIntAP(SourceInfo L) {
40841 if (!isActive()) return true;
40842 CurrentSource = L;
40843 return StoreActivate<PT_IntAP>(S, OpPC);
40844}
40845bool EvalEmitter::emitStoreActivateIntAPS(SourceInfo L) {
40846 if (!isActive()) return true;
40847 CurrentSource = L;
40848 return StoreActivate<PT_IntAPS>(S, OpPC);
40849}
40850bool EvalEmitter::emitStoreActivateBool(SourceInfo L) {
40851 if (!isActive()) return true;
40852 CurrentSource = L;
40853 return StoreActivate<PT_Bool>(S, OpPC);
40854}
40855bool EvalEmitter::emitStoreActivateFixedPoint(SourceInfo L) {
40856 if (!isActive()) return true;
40857 CurrentSource = L;
40858 return StoreActivate<PT_FixedPoint>(S, OpPC);
40859}
40860bool EvalEmitter::emitStoreActivatePtr(SourceInfo L) {
40861 if (!isActive()) return true;
40862 CurrentSource = L;
40863 return StoreActivate<PT_Ptr>(S, OpPC);
40864}
40865bool EvalEmitter::emitStoreActivateMemberPtr(SourceInfo L) {
40866 if (!isActive()) return true;
40867 CurrentSource = L;
40868 return StoreActivate<PT_MemberPtr>(S, OpPC);
40869}
40870bool EvalEmitter::emitStoreActivateFloat(SourceInfo L) {
40871 if (!isActive()) return true;
40872 CurrentSource = L;
40873 return StoreActivate<PT_Float>(S, OpPC);
40874}
40875#endif
40876#ifdef GET_OPCODE_NAMES
40877OP_StoreActivatePopSint8,
40878OP_StoreActivatePopUint8,
40879OP_StoreActivatePopSint16,
40880OP_StoreActivatePopUint16,
40881OP_StoreActivatePopSint32,
40882OP_StoreActivatePopUint32,
40883OP_StoreActivatePopSint64,
40884OP_StoreActivatePopUint64,
40885OP_StoreActivatePopIntAP,
40886OP_StoreActivatePopIntAPS,
40887OP_StoreActivatePopBool,
40888OP_StoreActivatePopFixedPoint,
40889OP_StoreActivatePopPtr,
40890OP_StoreActivatePopMemberPtr,
40891OP_StoreActivatePopFloat,
40892#endif
40893#ifdef GET_INTERP
40894case OP_StoreActivatePopSint8: {
40895 if (!StoreActivatePop<PT_Sint8>(S, OpPC))
40896 return false;
40897 continue;
40898}
40899case OP_StoreActivatePopUint8: {
40900 if (!StoreActivatePop<PT_Uint8>(S, OpPC))
40901 return false;
40902 continue;
40903}
40904case OP_StoreActivatePopSint16: {
40905 if (!StoreActivatePop<PT_Sint16>(S, OpPC))
40906 return false;
40907 continue;
40908}
40909case OP_StoreActivatePopUint16: {
40910 if (!StoreActivatePop<PT_Uint16>(S, OpPC))
40911 return false;
40912 continue;
40913}
40914case OP_StoreActivatePopSint32: {
40915 if (!StoreActivatePop<PT_Sint32>(S, OpPC))
40916 return false;
40917 continue;
40918}
40919case OP_StoreActivatePopUint32: {
40920 if (!StoreActivatePop<PT_Uint32>(S, OpPC))
40921 return false;
40922 continue;
40923}
40924case OP_StoreActivatePopSint64: {
40925 if (!StoreActivatePop<PT_Sint64>(S, OpPC))
40926 return false;
40927 continue;
40928}
40929case OP_StoreActivatePopUint64: {
40930 if (!StoreActivatePop<PT_Uint64>(S, OpPC))
40931 return false;
40932 continue;
40933}
40934case OP_StoreActivatePopIntAP: {
40935 if (!StoreActivatePop<PT_IntAP>(S, OpPC))
40936 return false;
40937 continue;
40938}
40939case OP_StoreActivatePopIntAPS: {
40940 if (!StoreActivatePop<PT_IntAPS>(S, OpPC))
40941 return false;
40942 continue;
40943}
40944case OP_StoreActivatePopBool: {
40945 if (!StoreActivatePop<PT_Bool>(S, OpPC))
40946 return false;
40947 continue;
40948}
40949case OP_StoreActivatePopFixedPoint: {
40950 if (!StoreActivatePop<PT_FixedPoint>(S, OpPC))
40951 return false;
40952 continue;
40953}
40954case OP_StoreActivatePopPtr: {
40955 if (!StoreActivatePop<PT_Ptr>(S, OpPC))
40956 return false;
40957 continue;
40958}
40959case OP_StoreActivatePopMemberPtr: {
40960 if (!StoreActivatePop<PT_MemberPtr>(S, OpPC))
40961 return false;
40962 continue;
40963}
40964case OP_StoreActivatePopFloat: {
40965 if (!StoreActivatePop<PT_Float>(S, OpPC))
40966 return false;
40967 continue;
40968}
40969#endif
40970#ifdef GET_DISASM
40971case OP_StoreActivatePopSint8:
40972 Text.Op = PrintName("StoreActivatePopSint8");
40973 break;
40974case OP_StoreActivatePopUint8:
40975 Text.Op = PrintName("StoreActivatePopUint8");
40976 break;
40977case OP_StoreActivatePopSint16:
40978 Text.Op = PrintName("StoreActivatePopSint16");
40979 break;
40980case OP_StoreActivatePopUint16:
40981 Text.Op = PrintName("StoreActivatePopUint16");
40982 break;
40983case OP_StoreActivatePopSint32:
40984 Text.Op = PrintName("StoreActivatePopSint32");
40985 break;
40986case OP_StoreActivatePopUint32:
40987 Text.Op = PrintName("StoreActivatePopUint32");
40988 break;
40989case OP_StoreActivatePopSint64:
40990 Text.Op = PrintName("StoreActivatePopSint64");
40991 break;
40992case OP_StoreActivatePopUint64:
40993 Text.Op = PrintName("StoreActivatePopUint64");
40994 break;
40995case OP_StoreActivatePopIntAP:
40996 Text.Op = PrintName("StoreActivatePopIntAP");
40997 break;
40998case OP_StoreActivatePopIntAPS:
40999 Text.Op = PrintName("StoreActivatePopIntAPS");
41000 break;
41001case OP_StoreActivatePopBool:
41002 Text.Op = PrintName("StoreActivatePopBool");
41003 break;
41004case OP_StoreActivatePopFixedPoint:
41005 Text.Op = PrintName("StoreActivatePopFixedPoint");
41006 break;
41007case OP_StoreActivatePopPtr:
41008 Text.Op = PrintName("StoreActivatePopPtr");
41009 break;
41010case OP_StoreActivatePopMemberPtr:
41011 Text.Op = PrintName("StoreActivatePopMemberPtr");
41012 break;
41013case OP_StoreActivatePopFloat:
41014 Text.Op = PrintName("StoreActivatePopFloat");
41015 break;
41016#endif
41017#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41018bool emitStoreActivatePopSint8(SourceInfo);
41019bool emitStoreActivatePopUint8(SourceInfo);
41020bool emitStoreActivatePopSint16(SourceInfo);
41021bool emitStoreActivatePopUint16(SourceInfo);
41022bool emitStoreActivatePopSint32(SourceInfo);
41023bool emitStoreActivatePopUint32(SourceInfo);
41024bool emitStoreActivatePopSint64(SourceInfo);
41025bool emitStoreActivatePopUint64(SourceInfo);
41026bool emitStoreActivatePopIntAP(SourceInfo);
41027bool emitStoreActivatePopIntAPS(SourceInfo);
41028bool emitStoreActivatePopBool(SourceInfo);
41029bool emitStoreActivatePopFixedPoint(SourceInfo);
41030bool emitStoreActivatePopPtr(SourceInfo);
41031bool emitStoreActivatePopMemberPtr(SourceInfo);
41032bool emitStoreActivatePopFloat(SourceInfo);
41033#endif
41034#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41035[[nodiscard]] bool emitStoreActivatePop(PrimType, SourceInfo I);
41036#endif
41037#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41038bool
41039#if defined(GET_EVAL_IMPL)
41040EvalEmitter
41041#else
41042ByteCodeEmitter
41043#endif
41044::emitStoreActivatePop(PrimType T0, SourceInfo I) {
41045 switch (T0) {
41046 case PT_Sint8:
41047 return emitStoreActivatePopSint8(I);
41048 case PT_Uint8:
41049 return emitStoreActivatePopUint8(I);
41050 case PT_Sint16:
41051 return emitStoreActivatePopSint16(I);
41052 case PT_Uint16:
41053 return emitStoreActivatePopUint16(I);
41054 case PT_Sint32:
41055 return emitStoreActivatePopSint32(I);
41056 case PT_Uint32:
41057 return emitStoreActivatePopUint32(I);
41058 case PT_Sint64:
41059 return emitStoreActivatePopSint64(I);
41060 case PT_Uint64:
41061 return emitStoreActivatePopUint64(I);
41062 case PT_IntAP:
41063 return emitStoreActivatePopIntAP(I);
41064 case PT_IntAPS:
41065 return emitStoreActivatePopIntAPS(I);
41066 case PT_Bool:
41067 return emitStoreActivatePopBool(I);
41068 case PT_FixedPoint:
41069 return emitStoreActivatePopFixedPoint(I);
41070 case PT_Ptr:
41071 return emitStoreActivatePopPtr(I);
41072 case PT_MemberPtr:
41073 return emitStoreActivatePopMemberPtr(I);
41074 case PT_Float:
41075 return emitStoreActivatePopFloat(I);
41076 }
41077 llvm_unreachable("invalid enum value");
41078}
41079#endif
41080#ifdef GET_LINK_IMPL
41081bool ByteCodeEmitter::emitStoreActivatePopSint8(SourceInfo L) {
41082 return emitOp<>(OP_StoreActivatePopSint8, L);
41083}
41084bool ByteCodeEmitter::emitStoreActivatePopUint8(SourceInfo L) {
41085 return emitOp<>(OP_StoreActivatePopUint8, L);
41086}
41087bool ByteCodeEmitter::emitStoreActivatePopSint16(SourceInfo L) {
41088 return emitOp<>(OP_StoreActivatePopSint16, L);
41089}
41090bool ByteCodeEmitter::emitStoreActivatePopUint16(SourceInfo L) {
41091 return emitOp<>(OP_StoreActivatePopUint16, L);
41092}
41093bool ByteCodeEmitter::emitStoreActivatePopSint32(SourceInfo L) {
41094 return emitOp<>(OP_StoreActivatePopSint32, L);
41095}
41096bool ByteCodeEmitter::emitStoreActivatePopUint32(SourceInfo L) {
41097 return emitOp<>(OP_StoreActivatePopUint32, L);
41098}
41099bool ByteCodeEmitter::emitStoreActivatePopSint64(SourceInfo L) {
41100 return emitOp<>(OP_StoreActivatePopSint64, L);
41101}
41102bool ByteCodeEmitter::emitStoreActivatePopUint64(SourceInfo L) {
41103 return emitOp<>(OP_StoreActivatePopUint64, L);
41104}
41105bool ByteCodeEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
41106 return emitOp<>(OP_StoreActivatePopIntAP, L);
41107}
41108bool ByteCodeEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
41109 return emitOp<>(OP_StoreActivatePopIntAPS, L);
41110}
41111bool ByteCodeEmitter::emitStoreActivatePopBool(SourceInfo L) {
41112 return emitOp<>(OP_StoreActivatePopBool, L);
41113}
41114bool ByteCodeEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
41115 return emitOp<>(OP_StoreActivatePopFixedPoint, L);
41116}
41117bool ByteCodeEmitter::emitStoreActivatePopPtr(SourceInfo L) {
41118 return emitOp<>(OP_StoreActivatePopPtr, L);
41119}
41120bool ByteCodeEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
41121 return emitOp<>(OP_StoreActivatePopMemberPtr, L);
41122}
41123bool ByteCodeEmitter::emitStoreActivatePopFloat(SourceInfo L) {
41124 return emitOp<>(OP_StoreActivatePopFloat, L);
41125}
41126#endif
41127#ifdef GET_EVAL_IMPL
41128bool EvalEmitter::emitStoreActivatePopSint8(SourceInfo L) {
41129 if (!isActive()) return true;
41130 CurrentSource = L;
41131 return StoreActivatePop<PT_Sint8>(S, OpPC);
41132}
41133bool EvalEmitter::emitStoreActivatePopUint8(SourceInfo L) {
41134 if (!isActive()) return true;
41135 CurrentSource = L;
41136 return StoreActivatePop<PT_Uint8>(S, OpPC);
41137}
41138bool EvalEmitter::emitStoreActivatePopSint16(SourceInfo L) {
41139 if (!isActive()) return true;
41140 CurrentSource = L;
41141 return StoreActivatePop<PT_Sint16>(S, OpPC);
41142}
41143bool EvalEmitter::emitStoreActivatePopUint16(SourceInfo L) {
41144 if (!isActive()) return true;
41145 CurrentSource = L;
41146 return StoreActivatePop<PT_Uint16>(S, OpPC);
41147}
41148bool EvalEmitter::emitStoreActivatePopSint32(SourceInfo L) {
41149 if (!isActive()) return true;
41150 CurrentSource = L;
41151 return StoreActivatePop<PT_Sint32>(S, OpPC);
41152}
41153bool EvalEmitter::emitStoreActivatePopUint32(SourceInfo L) {
41154 if (!isActive()) return true;
41155 CurrentSource = L;
41156 return StoreActivatePop<PT_Uint32>(S, OpPC);
41157}
41158bool EvalEmitter::emitStoreActivatePopSint64(SourceInfo L) {
41159 if (!isActive()) return true;
41160 CurrentSource = L;
41161 return StoreActivatePop<PT_Sint64>(S, OpPC);
41162}
41163bool EvalEmitter::emitStoreActivatePopUint64(SourceInfo L) {
41164 if (!isActive()) return true;
41165 CurrentSource = L;
41166 return StoreActivatePop<PT_Uint64>(S, OpPC);
41167}
41168bool EvalEmitter::emitStoreActivatePopIntAP(SourceInfo L) {
41169 if (!isActive()) return true;
41170 CurrentSource = L;
41171 return StoreActivatePop<PT_IntAP>(S, OpPC);
41172}
41173bool EvalEmitter::emitStoreActivatePopIntAPS(SourceInfo L) {
41174 if (!isActive()) return true;
41175 CurrentSource = L;
41176 return StoreActivatePop<PT_IntAPS>(S, OpPC);
41177}
41178bool EvalEmitter::emitStoreActivatePopBool(SourceInfo L) {
41179 if (!isActive()) return true;
41180 CurrentSource = L;
41181 return StoreActivatePop<PT_Bool>(S, OpPC);
41182}
41183bool EvalEmitter::emitStoreActivatePopFixedPoint(SourceInfo L) {
41184 if (!isActive()) return true;
41185 CurrentSource = L;
41186 return StoreActivatePop<PT_FixedPoint>(S, OpPC);
41187}
41188bool EvalEmitter::emitStoreActivatePopPtr(SourceInfo L) {
41189 if (!isActive()) return true;
41190 CurrentSource = L;
41191 return StoreActivatePop<PT_Ptr>(S, OpPC);
41192}
41193bool EvalEmitter::emitStoreActivatePopMemberPtr(SourceInfo L) {
41194 if (!isActive()) return true;
41195 CurrentSource = L;
41196 return StoreActivatePop<PT_MemberPtr>(S, OpPC);
41197}
41198bool EvalEmitter::emitStoreActivatePopFloat(SourceInfo L) {
41199 if (!isActive()) return true;
41200 CurrentSource = L;
41201 return StoreActivatePop<PT_Float>(S, OpPC);
41202}
41203#endif
41204#ifdef GET_OPCODE_NAMES
41205OP_StoreBitFieldSint8,
41206OP_StoreBitFieldUint8,
41207OP_StoreBitFieldSint16,
41208OP_StoreBitFieldUint16,
41209OP_StoreBitFieldSint32,
41210OP_StoreBitFieldUint32,
41211OP_StoreBitFieldSint64,
41212OP_StoreBitFieldUint64,
41213OP_StoreBitFieldIntAP,
41214OP_StoreBitFieldIntAPS,
41215OP_StoreBitFieldBool,
41216OP_StoreBitFieldFixedPoint,
41217#endif
41218#ifdef GET_INTERP
41219case OP_StoreBitFieldSint8: {
41220 if (!StoreBitField<PT_Sint8>(S, OpPC))
41221 return false;
41222 continue;
41223}
41224case OP_StoreBitFieldUint8: {
41225 if (!StoreBitField<PT_Uint8>(S, OpPC))
41226 return false;
41227 continue;
41228}
41229case OP_StoreBitFieldSint16: {
41230 if (!StoreBitField<PT_Sint16>(S, OpPC))
41231 return false;
41232 continue;
41233}
41234case OP_StoreBitFieldUint16: {
41235 if (!StoreBitField<PT_Uint16>(S, OpPC))
41236 return false;
41237 continue;
41238}
41239case OP_StoreBitFieldSint32: {
41240 if (!StoreBitField<PT_Sint32>(S, OpPC))
41241 return false;
41242 continue;
41243}
41244case OP_StoreBitFieldUint32: {
41245 if (!StoreBitField<PT_Uint32>(S, OpPC))
41246 return false;
41247 continue;
41248}
41249case OP_StoreBitFieldSint64: {
41250 if (!StoreBitField<PT_Sint64>(S, OpPC))
41251 return false;
41252 continue;
41253}
41254case OP_StoreBitFieldUint64: {
41255 if (!StoreBitField<PT_Uint64>(S, OpPC))
41256 return false;
41257 continue;
41258}
41259case OP_StoreBitFieldIntAP: {
41260 if (!StoreBitField<PT_IntAP>(S, OpPC))
41261 return false;
41262 continue;
41263}
41264case OP_StoreBitFieldIntAPS: {
41265 if (!StoreBitField<PT_IntAPS>(S, OpPC))
41266 return false;
41267 continue;
41268}
41269case OP_StoreBitFieldBool: {
41270 if (!StoreBitField<PT_Bool>(S, OpPC))
41271 return false;
41272 continue;
41273}
41274case OP_StoreBitFieldFixedPoint: {
41275 if (!StoreBitField<PT_FixedPoint>(S, OpPC))
41276 return false;
41277 continue;
41278}
41279#endif
41280#ifdef GET_DISASM
41281case OP_StoreBitFieldSint8:
41282 Text.Op = PrintName("StoreBitFieldSint8");
41283 break;
41284case OP_StoreBitFieldUint8:
41285 Text.Op = PrintName("StoreBitFieldUint8");
41286 break;
41287case OP_StoreBitFieldSint16:
41288 Text.Op = PrintName("StoreBitFieldSint16");
41289 break;
41290case OP_StoreBitFieldUint16:
41291 Text.Op = PrintName("StoreBitFieldUint16");
41292 break;
41293case OP_StoreBitFieldSint32:
41294 Text.Op = PrintName("StoreBitFieldSint32");
41295 break;
41296case OP_StoreBitFieldUint32:
41297 Text.Op = PrintName("StoreBitFieldUint32");
41298 break;
41299case OP_StoreBitFieldSint64:
41300 Text.Op = PrintName("StoreBitFieldSint64");
41301 break;
41302case OP_StoreBitFieldUint64:
41303 Text.Op = PrintName("StoreBitFieldUint64");
41304 break;
41305case OP_StoreBitFieldIntAP:
41306 Text.Op = PrintName("StoreBitFieldIntAP");
41307 break;
41308case OP_StoreBitFieldIntAPS:
41309 Text.Op = PrintName("StoreBitFieldIntAPS");
41310 break;
41311case OP_StoreBitFieldBool:
41312 Text.Op = PrintName("StoreBitFieldBool");
41313 break;
41314case OP_StoreBitFieldFixedPoint:
41315 Text.Op = PrintName("StoreBitFieldFixedPoint");
41316 break;
41317#endif
41318#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41319bool emitStoreBitFieldSint8(SourceInfo);
41320bool emitStoreBitFieldUint8(SourceInfo);
41321bool emitStoreBitFieldSint16(SourceInfo);
41322bool emitStoreBitFieldUint16(SourceInfo);
41323bool emitStoreBitFieldSint32(SourceInfo);
41324bool emitStoreBitFieldUint32(SourceInfo);
41325bool emitStoreBitFieldSint64(SourceInfo);
41326bool emitStoreBitFieldUint64(SourceInfo);
41327bool emitStoreBitFieldIntAP(SourceInfo);
41328bool emitStoreBitFieldIntAPS(SourceInfo);
41329bool emitStoreBitFieldBool(SourceInfo);
41330bool emitStoreBitFieldFixedPoint(SourceInfo);
41331#endif
41332#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41333[[nodiscard]] bool emitStoreBitField(PrimType, SourceInfo I);
41334#endif
41335#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41336bool
41337#if defined(GET_EVAL_IMPL)
41338EvalEmitter
41339#else
41340ByteCodeEmitter
41341#endif
41342::emitStoreBitField(PrimType T0, SourceInfo I) {
41343 switch (T0) {
41344 case PT_Sint8:
41345 return emitStoreBitFieldSint8(I);
41346 case PT_Uint8:
41347 return emitStoreBitFieldUint8(I);
41348 case PT_Sint16:
41349 return emitStoreBitFieldSint16(I);
41350 case PT_Uint16:
41351 return emitStoreBitFieldUint16(I);
41352 case PT_Sint32:
41353 return emitStoreBitFieldSint32(I);
41354 case PT_Uint32:
41355 return emitStoreBitFieldUint32(I);
41356 case PT_Sint64:
41357 return emitStoreBitFieldSint64(I);
41358 case PT_Uint64:
41359 return emitStoreBitFieldUint64(I);
41360 case PT_IntAP:
41361 return emitStoreBitFieldIntAP(I);
41362 case PT_IntAPS:
41363 return emitStoreBitFieldIntAPS(I);
41364 case PT_Bool:
41365 return emitStoreBitFieldBool(I);
41366 case PT_FixedPoint:
41367 return emitStoreBitFieldFixedPoint(I);
41368 default: llvm_unreachable("invalid type: emitStoreBitField");
41369 }
41370 llvm_unreachable("invalid enum value");
41371}
41372#endif
41373#ifdef GET_LINK_IMPL
41374bool ByteCodeEmitter::emitStoreBitFieldSint8(SourceInfo L) {
41375 return emitOp<>(OP_StoreBitFieldSint8, L);
41376}
41377bool ByteCodeEmitter::emitStoreBitFieldUint8(SourceInfo L) {
41378 return emitOp<>(OP_StoreBitFieldUint8, L);
41379}
41380bool ByteCodeEmitter::emitStoreBitFieldSint16(SourceInfo L) {
41381 return emitOp<>(OP_StoreBitFieldSint16, L);
41382}
41383bool ByteCodeEmitter::emitStoreBitFieldUint16(SourceInfo L) {
41384 return emitOp<>(OP_StoreBitFieldUint16, L);
41385}
41386bool ByteCodeEmitter::emitStoreBitFieldSint32(SourceInfo L) {
41387 return emitOp<>(OP_StoreBitFieldSint32, L);
41388}
41389bool ByteCodeEmitter::emitStoreBitFieldUint32(SourceInfo L) {
41390 return emitOp<>(OP_StoreBitFieldUint32, L);
41391}
41392bool ByteCodeEmitter::emitStoreBitFieldSint64(SourceInfo L) {
41393 return emitOp<>(OP_StoreBitFieldSint64, L);
41394}
41395bool ByteCodeEmitter::emitStoreBitFieldUint64(SourceInfo L) {
41396 return emitOp<>(OP_StoreBitFieldUint64, L);
41397}
41398bool ByteCodeEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
41399 return emitOp<>(OP_StoreBitFieldIntAP, L);
41400}
41401bool ByteCodeEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
41402 return emitOp<>(OP_StoreBitFieldIntAPS, L);
41403}
41404bool ByteCodeEmitter::emitStoreBitFieldBool(SourceInfo L) {
41405 return emitOp<>(OP_StoreBitFieldBool, L);
41406}
41407bool ByteCodeEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
41408 return emitOp<>(OP_StoreBitFieldFixedPoint, L);
41409}
41410#endif
41411#ifdef GET_EVAL_IMPL
41412bool EvalEmitter::emitStoreBitFieldSint8(SourceInfo L) {
41413 if (!isActive()) return true;
41414 CurrentSource = L;
41415 return StoreBitField<PT_Sint8>(S, OpPC);
41416}
41417bool EvalEmitter::emitStoreBitFieldUint8(SourceInfo L) {
41418 if (!isActive()) return true;
41419 CurrentSource = L;
41420 return StoreBitField<PT_Uint8>(S, OpPC);
41421}
41422bool EvalEmitter::emitStoreBitFieldSint16(SourceInfo L) {
41423 if (!isActive()) return true;
41424 CurrentSource = L;
41425 return StoreBitField<PT_Sint16>(S, OpPC);
41426}
41427bool EvalEmitter::emitStoreBitFieldUint16(SourceInfo L) {
41428 if (!isActive()) return true;
41429 CurrentSource = L;
41430 return StoreBitField<PT_Uint16>(S, OpPC);
41431}
41432bool EvalEmitter::emitStoreBitFieldSint32(SourceInfo L) {
41433 if (!isActive()) return true;
41434 CurrentSource = L;
41435 return StoreBitField<PT_Sint32>(S, OpPC);
41436}
41437bool EvalEmitter::emitStoreBitFieldUint32(SourceInfo L) {
41438 if (!isActive()) return true;
41439 CurrentSource = L;
41440 return StoreBitField<PT_Uint32>(S, OpPC);
41441}
41442bool EvalEmitter::emitStoreBitFieldSint64(SourceInfo L) {
41443 if (!isActive()) return true;
41444 CurrentSource = L;
41445 return StoreBitField<PT_Sint64>(S, OpPC);
41446}
41447bool EvalEmitter::emitStoreBitFieldUint64(SourceInfo L) {
41448 if (!isActive()) return true;
41449 CurrentSource = L;
41450 return StoreBitField<PT_Uint64>(S, OpPC);
41451}
41452bool EvalEmitter::emitStoreBitFieldIntAP(SourceInfo L) {
41453 if (!isActive()) return true;
41454 CurrentSource = L;
41455 return StoreBitField<PT_IntAP>(S, OpPC);
41456}
41457bool EvalEmitter::emitStoreBitFieldIntAPS(SourceInfo L) {
41458 if (!isActive()) return true;
41459 CurrentSource = L;
41460 return StoreBitField<PT_IntAPS>(S, OpPC);
41461}
41462bool EvalEmitter::emitStoreBitFieldBool(SourceInfo L) {
41463 if (!isActive()) return true;
41464 CurrentSource = L;
41465 return StoreBitField<PT_Bool>(S, OpPC);
41466}
41467bool EvalEmitter::emitStoreBitFieldFixedPoint(SourceInfo L) {
41468 if (!isActive()) return true;
41469 CurrentSource = L;
41470 return StoreBitField<PT_FixedPoint>(S, OpPC);
41471}
41472#endif
41473#ifdef GET_OPCODE_NAMES
41474OP_StoreBitFieldActivateSint8,
41475OP_StoreBitFieldActivateUint8,
41476OP_StoreBitFieldActivateSint16,
41477OP_StoreBitFieldActivateUint16,
41478OP_StoreBitFieldActivateSint32,
41479OP_StoreBitFieldActivateUint32,
41480OP_StoreBitFieldActivateSint64,
41481OP_StoreBitFieldActivateUint64,
41482OP_StoreBitFieldActivateIntAP,
41483OP_StoreBitFieldActivateIntAPS,
41484OP_StoreBitFieldActivateBool,
41485OP_StoreBitFieldActivateFixedPoint,
41486#endif
41487#ifdef GET_INTERP
41488case OP_StoreBitFieldActivateSint8: {
41489 if (!StoreBitFieldActivate<PT_Sint8>(S, OpPC))
41490 return false;
41491 continue;
41492}
41493case OP_StoreBitFieldActivateUint8: {
41494 if (!StoreBitFieldActivate<PT_Uint8>(S, OpPC))
41495 return false;
41496 continue;
41497}
41498case OP_StoreBitFieldActivateSint16: {
41499 if (!StoreBitFieldActivate<PT_Sint16>(S, OpPC))
41500 return false;
41501 continue;
41502}
41503case OP_StoreBitFieldActivateUint16: {
41504 if (!StoreBitFieldActivate<PT_Uint16>(S, OpPC))
41505 return false;
41506 continue;
41507}
41508case OP_StoreBitFieldActivateSint32: {
41509 if (!StoreBitFieldActivate<PT_Sint32>(S, OpPC))
41510 return false;
41511 continue;
41512}
41513case OP_StoreBitFieldActivateUint32: {
41514 if (!StoreBitFieldActivate<PT_Uint32>(S, OpPC))
41515 return false;
41516 continue;
41517}
41518case OP_StoreBitFieldActivateSint64: {
41519 if (!StoreBitFieldActivate<PT_Sint64>(S, OpPC))
41520 return false;
41521 continue;
41522}
41523case OP_StoreBitFieldActivateUint64: {
41524 if (!StoreBitFieldActivate<PT_Uint64>(S, OpPC))
41525 return false;
41526 continue;
41527}
41528case OP_StoreBitFieldActivateIntAP: {
41529 if (!StoreBitFieldActivate<PT_IntAP>(S, OpPC))
41530 return false;
41531 continue;
41532}
41533case OP_StoreBitFieldActivateIntAPS: {
41534 if (!StoreBitFieldActivate<PT_IntAPS>(S, OpPC))
41535 return false;
41536 continue;
41537}
41538case OP_StoreBitFieldActivateBool: {
41539 if (!StoreBitFieldActivate<PT_Bool>(S, OpPC))
41540 return false;
41541 continue;
41542}
41543case OP_StoreBitFieldActivateFixedPoint: {
41544 if (!StoreBitFieldActivate<PT_FixedPoint>(S, OpPC))
41545 return false;
41546 continue;
41547}
41548#endif
41549#ifdef GET_DISASM
41550case OP_StoreBitFieldActivateSint8:
41551 Text.Op = PrintName("StoreBitFieldActivateSint8");
41552 break;
41553case OP_StoreBitFieldActivateUint8:
41554 Text.Op = PrintName("StoreBitFieldActivateUint8");
41555 break;
41556case OP_StoreBitFieldActivateSint16:
41557 Text.Op = PrintName("StoreBitFieldActivateSint16");
41558 break;
41559case OP_StoreBitFieldActivateUint16:
41560 Text.Op = PrintName("StoreBitFieldActivateUint16");
41561 break;
41562case OP_StoreBitFieldActivateSint32:
41563 Text.Op = PrintName("StoreBitFieldActivateSint32");
41564 break;
41565case OP_StoreBitFieldActivateUint32:
41566 Text.Op = PrintName("StoreBitFieldActivateUint32");
41567 break;
41568case OP_StoreBitFieldActivateSint64:
41569 Text.Op = PrintName("StoreBitFieldActivateSint64");
41570 break;
41571case OP_StoreBitFieldActivateUint64:
41572 Text.Op = PrintName("StoreBitFieldActivateUint64");
41573 break;
41574case OP_StoreBitFieldActivateIntAP:
41575 Text.Op = PrintName("StoreBitFieldActivateIntAP");
41576 break;
41577case OP_StoreBitFieldActivateIntAPS:
41578 Text.Op = PrintName("StoreBitFieldActivateIntAPS");
41579 break;
41580case OP_StoreBitFieldActivateBool:
41581 Text.Op = PrintName("StoreBitFieldActivateBool");
41582 break;
41583case OP_StoreBitFieldActivateFixedPoint:
41584 Text.Op = PrintName("StoreBitFieldActivateFixedPoint");
41585 break;
41586#endif
41587#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41588bool emitStoreBitFieldActivateSint8(SourceInfo);
41589bool emitStoreBitFieldActivateUint8(SourceInfo);
41590bool emitStoreBitFieldActivateSint16(SourceInfo);
41591bool emitStoreBitFieldActivateUint16(SourceInfo);
41592bool emitStoreBitFieldActivateSint32(SourceInfo);
41593bool emitStoreBitFieldActivateUint32(SourceInfo);
41594bool emitStoreBitFieldActivateSint64(SourceInfo);
41595bool emitStoreBitFieldActivateUint64(SourceInfo);
41596bool emitStoreBitFieldActivateIntAP(SourceInfo);
41597bool emitStoreBitFieldActivateIntAPS(SourceInfo);
41598bool emitStoreBitFieldActivateBool(SourceInfo);
41599bool emitStoreBitFieldActivateFixedPoint(SourceInfo);
41600#endif
41601#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41602[[nodiscard]] bool emitStoreBitFieldActivate(PrimType, SourceInfo I);
41603#endif
41604#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41605bool
41606#if defined(GET_EVAL_IMPL)
41607EvalEmitter
41608#else
41609ByteCodeEmitter
41610#endif
41611::emitStoreBitFieldActivate(PrimType T0, SourceInfo I) {
41612 switch (T0) {
41613 case PT_Sint8:
41614 return emitStoreBitFieldActivateSint8(I);
41615 case PT_Uint8:
41616 return emitStoreBitFieldActivateUint8(I);
41617 case PT_Sint16:
41618 return emitStoreBitFieldActivateSint16(I);
41619 case PT_Uint16:
41620 return emitStoreBitFieldActivateUint16(I);
41621 case PT_Sint32:
41622 return emitStoreBitFieldActivateSint32(I);
41623 case PT_Uint32:
41624 return emitStoreBitFieldActivateUint32(I);
41625 case PT_Sint64:
41626 return emitStoreBitFieldActivateSint64(I);
41627 case PT_Uint64:
41628 return emitStoreBitFieldActivateUint64(I);
41629 case PT_IntAP:
41630 return emitStoreBitFieldActivateIntAP(I);
41631 case PT_IntAPS:
41632 return emitStoreBitFieldActivateIntAPS(I);
41633 case PT_Bool:
41634 return emitStoreBitFieldActivateBool(I);
41635 case PT_FixedPoint:
41636 return emitStoreBitFieldActivateFixedPoint(I);
41637 default: llvm_unreachable("invalid type: emitStoreBitFieldActivate");
41638 }
41639 llvm_unreachable("invalid enum value");
41640}
41641#endif
41642#ifdef GET_LINK_IMPL
41643bool ByteCodeEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
41644 return emitOp<>(OP_StoreBitFieldActivateSint8, L);
41645}
41646bool ByteCodeEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
41647 return emitOp<>(OP_StoreBitFieldActivateUint8, L);
41648}
41649bool ByteCodeEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
41650 return emitOp<>(OP_StoreBitFieldActivateSint16, L);
41651}
41652bool ByteCodeEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
41653 return emitOp<>(OP_StoreBitFieldActivateUint16, L);
41654}
41655bool ByteCodeEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
41656 return emitOp<>(OP_StoreBitFieldActivateSint32, L);
41657}
41658bool ByteCodeEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
41659 return emitOp<>(OP_StoreBitFieldActivateUint32, L);
41660}
41661bool ByteCodeEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
41662 return emitOp<>(OP_StoreBitFieldActivateSint64, L);
41663}
41664bool ByteCodeEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
41665 return emitOp<>(OP_StoreBitFieldActivateUint64, L);
41666}
41667bool ByteCodeEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
41668 return emitOp<>(OP_StoreBitFieldActivateIntAP, L);
41669}
41670bool ByteCodeEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
41671 return emitOp<>(OP_StoreBitFieldActivateIntAPS, L);
41672}
41673bool ByteCodeEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
41674 return emitOp<>(OP_StoreBitFieldActivateBool, L);
41675}
41676bool ByteCodeEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
41677 return emitOp<>(OP_StoreBitFieldActivateFixedPoint, L);
41678}
41679#endif
41680#ifdef GET_EVAL_IMPL
41681bool EvalEmitter::emitStoreBitFieldActivateSint8(SourceInfo L) {
41682 if (!isActive()) return true;
41683 CurrentSource = L;
41684 return StoreBitFieldActivate<PT_Sint8>(S, OpPC);
41685}
41686bool EvalEmitter::emitStoreBitFieldActivateUint8(SourceInfo L) {
41687 if (!isActive()) return true;
41688 CurrentSource = L;
41689 return StoreBitFieldActivate<PT_Uint8>(S, OpPC);
41690}
41691bool EvalEmitter::emitStoreBitFieldActivateSint16(SourceInfo L) {
41692 if (!isActive()) return true;
41693 CurrentSource = L;
41694 return StoreBitFieldActivate<PT_Sint16>(S, OpPC);
41695}
41696bool EvalEmitter::emitStoreBitFieldActivateUint16(SourceInfo L) {
41697 if (!isActive()) return true;
41698 CurrentSource = L;
41699 return StoreBitFieldActivate<PT_Uint16>(S, OpPC);
41700}
41701bool EvalEmitter::emitStoreBitFieldActivateSint32(SourceInfo L) {
41702 if (!isActive()) return true;
41703 CurrentSource = L;
41704 return StoreBitFieldActivate<PT_Sint32>(S, OpPC);
41705}
41706bool EvalEmitter::emitStoreBitFieldActivateUint32(SourceInfo L) {
41707 if (!isActive()) return true;
41708 CurrentSource = L;
41709 return StoreBitFieldActivate<PT_Uint32>(S, OpPC);
41710}
41711bool EvalEmitter::emitStoreBitFieldActivateSint64(SourceInfo L) {
41712 if (!isActive()) return true;
41713 CurrentSource = L;
41714 return StoreBitFieldActivate<PT_Sint64>(S, OpPC);
41715}
41716bool EvalEmitter::emitStoreBitFieldActivateUint64(SourceInfo L) {
41717 if (!isActive()) return true;
41718 CurrentSource = L;
41719 return StoreBitFieldActivate<PT_Uint64>(S, OpPC);
41720}
41721bool EvalEmitter::emitStoreBitFieldActivateIntAP(SourceInfo L) {
41722 if (!isActive()) return true;
41723 CurrentSource = L;
41724 return StoreBitFieldActivate<PT_IntAP>(S, OpPC);
41725}
41726bool EvalEmitter::emitStoreBitFieldActivateIntAPS(SourceInfo L) {
41727 if (!isActive()) return true;
41728 CurrentSource = L;
41729 return StoreBitFieldActivate<PT_IntAPS>(S, OpPC);
41730}
41731bool EvalEmitter::emitStoreBitFieldActivateBool(SourceInfo L) {
41732 if (!isActive()) return true;
41733 CurrentSource = L;
41734 return StoreBitFieldActivate<PT_Bool>(S, OpPC);
41735}
41736bool EvalEmitter::emitStoreBitFieldActivateFixedPoint(SourceInfo L) {
41737 if (!isActive()) return true;
41738 CurrentSource = L;
41739 return StoreBitFieldActivate<PT_FixedPoint>(S, OpPC);
41740}
41741#endif
41742#ifdef GET_OPCODE_NAMES
41743OP_StoreBitFieldActivatePopSint8,
41744OP_StoreBitFieldActivatePopUint8,
41745OP_StoreBitFieldActivatePopSint16,
41746OP_StoreBitFieldActivatePopUint16,
41747OP_StoreBitFieldActivatePopSint32,
41748OP_StoreBitFieldActivatePopUint32,
41749OP_StoreBitFieldActivatePopSint64,
41750OP_StoreBitFieldActivatePopUint64,
41751OP_StoreBitFieldActivatePopIntAP,
41752OP_StoreBitFieldActivatePopIntAPS,
41753OP_StoreBitFieldActivatePopBool,
41754OP_StoreBitFieldActivatePopFixedPoint,
41755#endif
41756#ifdef GET_INTERP
41757case OP_StoreBitFieldActivatePopSint8: {
41758 if (!StoreBitFieldActivatePop<PT_Sint8>(S, OpPC))
41759 return false;
41760 continue;
41761}
41762case OP_StoreBitFieldActivatePopUint8: {
41763 if (!StoreBitFieldActivatePop<PT_Uint8>(S, OpPC))
41764 return false;
41765 continue;
41766}
41767case OP_StoreBitFieldActivatePopSint16: {
41768 if (!StoreBitFieldActivatePop<PT_Sint16>(S, OpPC))
41769 return false;
41770 continue;
41771}
41772case OP_StoreBitFieldActivatePopUint16: {
41773 if (!StoreBitFieldActivatePop<PT_Uint16>(S, OpPC))
41774 return false;
41775 continue;
41776}
41777case OP_StoreBitFieldActivatePopSint32: {
41778 if (!StoreBitFieldActivatePop<PT_Sint32>(S, OpPC))
41779 return false;
41780 continue;
41781}
41782case OP_StoreBitFieldActivatePopUint32: {
41783 if (!StoreBitFieldActivatePop<PT_Uint32>(S, OpPC))
41784 return false;
41785 continue;
41786}
41787case OP_StoreBitFieldActivatePopSint64: {
41788 if (!StoreBitFieldActivatePop<PT_Sint64>(S, OpPC))
41789 return false;
41790 continue;
41791}
41792case OP_StoreBitFieldActivatePopUint64: {
41793 if (!StoreBitFieldActivatePop<PT_Uint64>(S, OpPC))
41794 return false;
41795 continue;
41796}
41797case OP_StoreBitFieldActivatePopIntAP: {
41798 if (!StoreBitFieldActivatePop<PT_IntAP>(S, OpPC))
41799 return false;
41800 continue;
41801}
41802case OP_StoreBitFieldActivatePopIntAPS: {
41803 if (!StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC))
41804 return false;
41805 continue;
41806}
41807case OP_StoreBitFieldActivatePopBool: {
41808 if (!StoreBitFieldActivatePop<PT_Bool>(S, OpPC))
41809 return false;
41810 continue;
41811}
41812case OP_StoreBitFieldActivatePopFixedPoint: {
41813 if (!StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC))
41814 return false;
41815 continue;
41816}
41817#endif
41818#ifdef GET_DISASM
41819case OP_StoreBitFieldActivatePopSint8:
41820 Text.Op = PrintName("StoreBitFieldActivatePopSint8");
41821 break;
41822case OP_StoreBitFieldActivatePopUint8:
41823 Text.Op = PrintName("StoreBitFieldActivatePopUint8");
41824 break;
41825case OP_StoreBitFieldActivatePopSint16:
41826 Text.Op = PrintName("StoreBitFieldActivatePopSint16");
41827 break;
41828case OP_StoreBitFieldActivatePopUint16:
41829 Text.Op = PrintName("StoreBitFieldActivatePopUint16");
41830 break;
41831case OP_StoreBitFieldActivatePopSint32:
41832 Text.Op = PrintName("StoreBitFieldActivatePopSint32");
41833 break;
41834case OP_StoreBitFieldActivatePopUint32:
41835 Text.Op = PrintName("StoreBitFieldActivatePopUint32");
41836 break;
41837case OP_StoreBitFieldActivatePopSint64:
41838 Text.Op = PrintName("StoreBitFieldActivatePopSint64");
41839 break;
41840case OP_StoreBitFieldActivatePopUint64:
41841 Text.Op = PrintName("StoreBitFieldActivatePopUint64");
41842 break;
41843case OP_StoreBitFieldActivatePopIntAP:
41844 Text.Op = PrintName("StoreBitFieldActivatePopIntAP");
41845 break;
41846case OP_StoreBitFieldActivatePopIntAPS:
41847 Text.Op = PrintName("StoreBitFieldActivatePopIntAPS");
41848 break;
41849case OP_StoreBitFieldActivatePopBool:
41850 Text.Op = PrintName("StoreBitFieldActivatePopBool");
41851 break;
41852case OP_StoreBitFieldActivatePopFixedPoint:
41853 Text.Op = PrintName("StoreBitFieldActivatePopFixedPoint");
41854 break;
41855#endif
41856#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41857bool emitStoreBitFieldActivatePopSint8(SourceInfo);
41858bool emitStoreBitFieldActivatePopUint8(SourceInfo);
41859bool emitStoreBitFieldActivatePopSint16(SourceInfo);
41860bool emitStoreBitFieldActivatePopUint16(SourceInfo);
41861bool emitStoreBitFieldActivatePopSint32(SourceInfo);
41862bool emitStoreBitFieldActivatePopUint32(SourceInfo);
41863bool emitStoreBitFieldActivatePopSint64(SourceInfo);
41864bool emitStoreBitFieldActivatePopUint64(SourceInfo);
41865bool emitStoreBitFieldActivatePopIntAP(SourceInfo);
41866bool emitStoreBitFieldActivatePopIntAPS(SourceInfo);
41867bool emitStoreBitFieldActivatePopBool(SourceInfo);
41868bool emitStoreBitFieldActivatePopFixedPoint(SourceInfo);
41869#endif
41870#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
41871[[nodiscard]] bool emitStoreBitFieldActivatePop(PrimType, SourceInfo I);
41872#endif
41873#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
41874bool
41875#if defined(GET_EVAL_IMPL)
41876EvalEmitter
41877#else
41878ByteCodeEmitter
41879#endif
41880::emitStoreBitFieldActivatePop(PrimType T0, SourceInfo I) {
41881 switch (T0) {
41882 case PT_Sint8:
41883 return emitStoreBitFieldActivatePopSint8(I);
41884 case PT_Uint8:
41885 return emitStoreBitFieldActivatePopUint8(I);
41886 case PT_Sint16:
41887 return emitStoreBitFieldActivatePopSint16(I);
41888 case PT_Uint16:
41889 return emitStoreBitFieldActivatePopUint16(I);
41890 case PT_Sint32:
41891 return emitStoreBitFieldActivatePopSint32(I);
41892 case PT_Uint32:
41893 return emitStoreBitFieldActivatePopUint32(I);
41894 case PT_Sint64:
41895 return emitStoreBitFieldActivatePopSint64(I);
41896 case PT_Uint64:
41897 return emitStoreBitFieldActivatePopUint64(I);
41898 case PT_IntAP:
41899 return emitStoreBitFieldActivatePopIntAP(I);
41900 case PT_IntAPS:
41901 return emitStoreBitFieldActivatePopIntAPS(I);
41902 case PT_Bool:
41903 return emitStoreBitFieldActivatePopBool(I);
41904 case PT_FixedPoint:
41905 return emitStoreBitFieldActivatePopFixedPoint(I);
41906 default: llvm_unreachable("invalid type: emitStoreBitFieldActivatePop");
41907 }
41908 llvm_unreachable("invalid enum value");
41909}
41910#endif
41911#ifdef GET_LINK_IMPL
41912bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
41913 return emitOp<>(OP_StoreBitFieldActivatePopSint8, L);
41914}
41915bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
41916 return emitOp<>(OP_StoreBitFieldActivatePopUint8, L);
41917}
41918bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
41919 return emitOp<>(OP_StoreBitFieldActivatePopSint16, L);
41920}
41921bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
41922 return emitOp<>(OP_StoreBitFieldActivatePopUint16, L);
41923}
41924bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
41925 return emitOp<>(OP_StoreBitFieldActivatePopSint32, L);
41926}
41927bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
41928 return emitOp<>(OP_StoreBitFieldActivatePopUint32, L);
41929}
41930bool ByteCodeEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
41931 return emitOp<>(OP_StoreBitFieldActivatePopSint64, L);
41932}
41933bool ByteCodeEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
41934 return emitOp<>(OP_StoreBitFieldActivatePopUint64, L);
41935}
41936bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
41937 return emitOp<>(OP_StoreBitFieldActivatePopIntAP, L);
41938}
41939bool ByteCodeEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
41940 return emitOp<>(OP_StoreBitFieldActivatePopIntAPS, L);
41941}
41942bool ByteCodeEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
41943 return emitOp<>(OP_StoreBitFieldActivatePopBool, L);
41944}
41945bool ByteCodeEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
41946 return emitOp<>(OP_StoreBitFieldActivatePopFixedPoint, L);
41947}
41948#endif
41949#ifdef GET_EVAL_IMPL
41950bool EvalEmitter::emitStoreBitFieldActivatePopSint8(SourceInfo L) {
41951 if (!isActive()) return true;
41952 CurrentSource = L;
41953 return StoreBitFieldActivatePop<PT_Sint8>(S, OpPC);
41954}
41955bool EvalEmitter::emitStoreBitFieldActivatePopUint8(SourceInfo L) {
41956 if (!isActive()) return true;
41957 CurrentSource = L;
41958 return StoreBitFieldActivatePop<PT_Uint8>(S, OpPC);
41959}
41960bool EvalEmitter::emitStoreBitFieldActivatePopSint16(SourceInfo L) {
41961 if (!isActive()) return true;
41962 CurrentSource = L;
41963 return StoreBitFieldActivatePop<PT_Sint16>(S, OpPC);
41964}
41965bool EvalEmitter::emitStoreBitFieldActivatePopUint16(SourceInfo L) {
41966 if (!isActive()) return true;
41967 CurrentSource = L;
41968 return StoreBitFieldActivatePop<PT_Uint16>(S, OpPC);
41969}
41970bool EvalEmitter::emitStoreBitFieldActivatePopSint32(SourceInfo L) {
41971 if (!isActive()) return true;
41972 CurrentSource = L;
41973 return StoreBitFieldActivatePop<PT_Sint32>(S, OpPC);
41974}
41975bool EvalEmitter::emitStoreBitFieldActivatePopUint32(SourceInfo L) {
41976 if (!isActive()) return true;
41977 CurrentSource = L;
41978 return StoreBitFieldActivatePop<PT_Uint32>(S, OpPC);
41979}
41980bool EvalEmitter::emitStoreBitFieldActivatePopSint64(SourceInfo L) {
41981 if (!isActive()) return true;
41982 CurrentSource = L;
41983 return StoreBitFieldActivatePop<PT_Sint64>(S, OpPC);
41984}
41985bool EvalEmitter::emitStoreBitFieldActivatePopUint64(SourceInfo L) {
41986 if (!isActive()) return true;
41987 CurrentSource = L;
41988 return StoreBitFieldActivatePop<PT_Uint64>(S, OpPC);
41989}
41990bool EvalEmitter::emitStoreBitFieldActivatePopIntAP(SourceInfo L) {
41991 if (!isActive()) return true;
41992 CurrentSource = L;
41993 return StoreBitFieldActivatePop<PT_IntAP>(S, OpPC);
41994}
41995bool EvalEmitter::emitStoreBitFieldActivatePopIntAPS(SourceInfo L) {
41996 if (!isActive()) return true;
41997 CurrentSource = L;
41998 return StoreBitFieldActivatePop<PT_IntAPS>(S, OpPC);
41999}
42000bool EvalEmitter::emitStoreBitFieldActivatePopBool(SourceInfo L) {
42001 if (!isActive()) return true;
42002 CurrentSource = L;
42003 return StoreBitFieldActivatePop<PT_Bool>(S, OpPC);
42004}
42005bool EvalEmitter::emitStoreBitFieldActivatePopFixedPoint(SourceInfo L) {
42006 if (!isActive()) return true;
42007 CurrentSource = L;
42008 return StoreBitFieldActivatePop<PT_FixedPoint>(S, OpPC);
42009}
42010#endif
42011#ifdef GET_OPCODE_NAMES
42012OP_StoreBitFieldPopSint8,
42013OP_StoreBitFieldPopUint8,
42014OP_StoreBitFieldPopSint16,
42015OP_StoreBitFieldPopUint16,
42016OP_StoreBitFieldPopSint32,
42017OP_StoreBitFieldPopUint32,
42018OP_StoreBitFieldPopSint64,
42019OP_StoreBitFieldPopUint64,
42020OP_StoreBitFieldPopIntAP,
42021OP_StoreBitFieldPopIntAPS,
42022OP_StoreBitFieldPopBool,
42023OP_StoreBitFieldPopFixedPoint,
42024#endif
42025#ifdef GET_INTERP
42026case OP_StoreBitFieldPopSint8: {
42027 if (!StoreBitFieldPop<PT_Sint8>(S, OpPC))
42028 return false;
42029 continue;
42030}
42031case OP_StoreBitFieldPopUint8: {
42032 if (!StoreBitFieldPop<PT_Uint8>(S, OpPC))
42033 return false;
42034 continue;
42035}
42036case OP_StoreBitFieldPopSint16: {
42037 if (!StoreBitFieldPop<PT_Sint16>(S, OpPC))
42038 return false;
42039 continue;
42040}
42041case OP_StoreBitFieldPopUint16: {
42042 if (!StoreBitFieldPop<PT_Uint16>(S, OpPC))
42043 return false;
42044 continue;
42045}
42046case OP_StoreBitFieldPopSint32: {
42047 if (!StoreBitFieldPop<PT_Sint32>(S, OpPC))
42048 return false;
42049 continue;
42050}
42051case OP_StoreBitFieldPopUint32: {
42052 if (!StoreBitFieldPop<PT_Uint32>(S, OpPC))
42053 return false;
42054 continue;
42055}
42056case OP_StoreBitFieldPopSint64: {
42057 if (!StoreBitFieldPop<PT_Sint64>(S, OpPC))
42058 return false;
42059 continue;
42060}
42061case OP_StoreBitFieldPopUint64: {
42062 if (!StoreBitFieldPop<PT_Uint64>(S, OpPC))
42063 return false;
42064 continue;
42065}
42066case OP_StoreBitFieldPopIntAP: {
42067 if (!StoreBitFieldPop<PT_IntAP>(S, OpPC))
42068 return false;
42069 continue;
42070}
42071case OP_StoreBitFieldPopIntAPS: {
42072 if (!StoreBitFieldPop<PT_IntAPS>(S, OpPC))
42073 return false;
42074 continue;
42075}
42076case OP_StoreBitFieldPopBool: {
42077 if (!StoreBitFieldPop<PT_Bool>(S, OpPC))
42078 return false;
42079 continue;
42080}
42081case OP_StoreBitFieldPopFixedPoint: {
42082 if (!StoreBitFieldPop<PT_FixedPoint>(S, OpPC))
42083 return false;
42084 continue;
42085}
42086#endif
42087#ifdef GET_DISASM
42088case OP_StoreBitFieldPopSint8:
42089 Text.Op = PrintName("StoreBitFieldPopSint8");
42090 break;
42091case OP_StoreBitFieldPopUint8:
42092 Text.Op = PrintName("StoreBitFieldPopUint8");
42093 break;
42094case OP_StoreBitFieldPopSint16:
42095 Text.Op = PrintName("StoreBitFieldPopSint16");
42096 break;
42097case OP_StoreBitFieldPopUint16:
42098 Text.Op = PrintName("StoreBitFieldPopUint16");
42099 break;
42100case OP_StoreBitFieldPopSint32:
42101 Text.Op = PrintName("StoreBitFieldPopSint32");
42102 break;
42103case OP_StoreBitFieldPopUint32:
42104 Text.Op = PrintName("StoreBitFieldPopUint32");
42105 break;
42106case OP_StoreBitFieldPopSint64:
42107 Text.Op = PrintName("StoreBitFieldPopSint64");
42108 break;
42109case OP_StoreBitFieldPopUint64:
42110 Text.Op = PrintName("StoreBitFieldPopUint64");
42111 break;
42112case OP_StoreBitFieldPopIntAP:
42113 Text.Op = PrintName("StoreBitFieldPopIntAP");
42114 break;
42115case OP_StoreBitFieldPopIntAPS:
42116 Text.Op = PrintName("StoreBitFieldPopIntAPS");
42117 break;
42118case OP_StoreBitFieldPopBool:
42119 Text.Op = PrintName("StoreBitFieldPopBool");
42120 break;
42121case OP_StoreBitFieldPopFixedPoint:
42122 Text.Op = PrintName("StoreBitFieldPopFixedPoint");
42123 break;
42124#endif
42125#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42126bool emitStoreBitFieldPopSint8(SourceInfo);
42127bool emitStoreBitFieldPopUint8(SourceInfo);
42128bool emitStoreBitFieldPopSint16(SourceInfo);
42129bool emitStoreBitFieldPopUint16(SourceInfo);
42130bool emitStoreBitFieldPopSint32(SourceInfo);
42131bool emitStoreBitFieldPopUint32(SourceInfo);
42132bool emitStoreBitFieldPopSint64(SourceInfo);
42133bool emitStoreBitFieldPopUint64(SourceInfo);
42134bool emitStoreBitFieldPopIntAP(SourceInfo);
42135bool emitStoreBitFieldPopIntAPS(SourceInfo);
42136bool emitStoreBitFieldPopBool(SourceInfo);
42137bool emitStoreBitFieldPopFixedPoint(SourceInfo);
42138#endif
42139#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42140[[nodiscard]] bool emitStoreBitFieldPop(PrimType, SourceInfo I);
42141#endif
42142#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42143bool
42144#if defined(GET_EVAL_IMPL)
42145EvalEmitter
42146#else
42147ByteCodeEmitter
42148#endif
42149::emitStoreBitFieldPop(PrimType T0, SourceInfo I) {
42150 switch (T0) {
42151 case PT_Sint8:
42152 return emitStoreBitFieldPopSint8(I);
42153 case PT_Uint8:
42154 return emitStoreBitFieldPopUint8(I);
42155 case PT_Sint16:
42156 return emitStoreBitFieldPopSint16(I);
42157 case PT_Uint16:
42158 return emitStoreBitFieldPopUint16(I);
42159 case PT_Sint32:
42160 return emitStoreBitFieldPopSint32(I);
42161 case PT_Uint32:
42162 return emitStoreBitFieldPopUint32(I);
42163 case PT_Sint64:
42164 return emitStoreBitFieldPopSint64(I);
42165 case PT_Uint64:
42166 return emitStoreBitFieldPopUint64(I);
42167 case PT_IntAP:
42168 return emitStoreBitFieldPopIntAP(I);
42169 case PT_IntAPS:
42170 return emitStoreBitFieldPopIntAPS(I);
42171 case PT_Bool:
42172 return emitStoreBitFieldPopBool(I);
42173 case PT_FixedPoint:
42174 return emitStoreBitFieldPopFixedPoint(I);
42175 default: llvm_unreachable("invalid type: emitStoreBitFieldPop");
42176 }
42177 llvm_unreachable("invalid enum value");
42178}
42179#endif
42180#ifdef GET_LINK_IMPL
42181bool ByteCodeEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
42182 return emitOp<>(OP_StoreBitFieldPopSint8, L);
42183}
42184bool ByteCodeEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
42185 return emitOp<>(OP_StoreBitFieldPopUint8, L);
42186}
42187bool ByteCodeEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
42188 return emitOp<>(OP_StoreBitFieldPopSint16, L);
42189}
42190bool ByteCodeEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
42191 return emitOp<>(OP_StoreBitFieldPopUint16, L);
42192}
42193bool ByteCodeEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
42194 return emitOp<>(OP_StoreBitFieldPopSint32, L);
42195}
42196bool ByteCodeEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
42197 return emitOp<>(OP_StoreBitFieldPopUint32, L);
42198}
42199bool ByteCodeEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
42200 return emitOp<>(OP_StoreBitFieldPopSint64, L);
42201}
42202bool ByteCodeEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
42203 return emitOp<>(OP_StoreBitFieldPopUint64, L);
42204}
42205bool ByteCodeEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
42206 return emitOp<>(OP_StoreBitFieldPopIntAP, L);
42207}
42208bool ByteCodeEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
42209 return emitOp<>(OP_StoreBitFieldPopIntAPS, L);
42210}
42211bool ByteCodeEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
42212 return emitOp<>(OP_StoreBitFieldPopBool, L);
42213}
42214bool ByteCodeEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
42215 return emitOp<>(OP_StoreBitFieldPopFixedPoint, L);
42216}
42217#endif
42218#ifdef GET_EVAL_IMPL
42219bool EvalEmitter::emitStoreBitFieldPopSint8(SourceInfo L) {
42220 if (!isActive()) return true;
42221 CurrentSource = L;
42222 return StoreBitFieldPop<PT_Sint8>(S, OpPC);
42223}
42224bool EvalEmitter::emitStoreBitFieldPopUint8(SourceInfo L) {
42225 if (!isActive()) return true;
42226 CurrentSource = L;
42227 return StoreBitFieldPop<PT_Uint8>(S, OpPC);
42228}
42229bool EvalEmitter::emitStoreBitFieldPopSint16(SourceInfo L) {
42230 if (!isActive()) return true;
42231 CurrentSource = L;
42232 return StoreBitFieldPop<PT_Sint16>(S, OpPC);
42233}
42234bool EvalEmitter::emitStoreBitFieldPopUint16(SourceInfo L) {
42235 if (!isActive()) return true;
42236 CurrentSource = L;
42237 return StoreBitFieldPop<PT_Uint16>(S, OpPC);
42238}
42239bool EvalEmitter::emitStoreBitFieldPopSint32(SourceInfo L) {
42240 if (!isActive()) return true;
42241 CurrentSource = L;
42242 return StoreBitFieldPop<PT_Sint32>(S, OpPC);
42243}
42244bool EvalEmitter::emitStoreBitFieldPopUint32(SourceInfo L) {
42245 if (!isActive()) return true;
42246 CurrentSource = L;
42247 return StoreBitFieldPop<PT_Uint32>(S, OpPC);
42248}
42249bool EvalEmitter::emitStoreBitFieldPopSint64(SourceInfo L) {
42250 if (!isActive()) return true;
42251 CurrentSource = L;
42252 return StoreBitFieldPop<PT_Sint64>(S, OpPC);
42253}
42254bool EvalEmitter::emitStoreBitFieldPopUint64(SourceInfo L) {
42255 if (!isActive()) return true;
42256 CurrentSource = L;
42257 return StoreBitFieldPop<PT_Uint64>(S, OpPC);
42258}
42259bool EvalEmitter::emitStoreBitFieldPopIntAP(SourceInfo L) {
42260 if (!isActive()) return true;
42261 CurrentSource = L;
42262 return StoreBitFieldPop<PT_IntAP>(S, OpPC);
42263}
42264bool EvalEmitter::emitStoreBitFieldPopIntAPS(SourceInfo L) {
42265 if (!isActive()) return true;
42266 CurrentSource = L;
42267 return StoreBitFieldPop<PT_IntAPS>(S, OpPC);
42268}
42269bool EvalEmitter::emitStoreBitFieldPopBool(SourceInfo L) {
42270 if (!isActive()) return true;
42271 CurrentSource = L;
42272 return StoreBitFieldPop<PT_Bool>(S, OpPC);
42273}
42274bool EvalEmitter::emitStoreBitFieldPopFixedPoint(SourceInfo L) {
42275 if (!isActive()) return true;
42276 CurrentSource = L;
42277 return StoreBitFieldPop<PT_FixedPoint>(S, OpPC);
42278}
42279#endif
42280#ifdef GET_OPCODE_NAMES
42281OP_StorePopSint8,
42282OP_StorePopUint8,
42283OP_StorePopSint16,
42284OP_StorePopUint16,
42285OP_StorePopSint32,
42286OP_StorePopUint32,
42287OP_StorePopSint64,
42288OP_StorePopUint64,
42289OP_StorePopIntAP,
42290OP_StorePopIntAPS,
42291OP_StorePopBool,
42292OP_StorePopFixedPoint,
42293OP_StorePopPtr,
42294OP_StorePopMemberPtr,
42295OP_StorePopFloat,
42296#endif
42297#ifdef GET_INTERP
42298case OP_StorePopSint8: {
42299 if (!StorePop<PT_Sint8>(S, OpPC))
42300 return false;
42301 continue;
42302}
42303case OP_StorePopUint8: {
42304 if (!StorePop<PT_Uint8>(S, OpPC))
42305 return false;
42306 continue;
42307}
42308case OP_StorePopSint16: {
42309 if (!StorePop<PT_Sint16>(S, OpPC))
42310 return false;
42311 continue;
42312}
42313case OP_StorePopUint16: {
42314 if (!StorePop<PT_Uint16>(S, OpPC))
42315 return false;
42316 continue;
42317}
42318case OP_StorePopSint32: {
42319 if (!StorePop<PT_Sint32>(S, OpPC))
42320 return false;
42321 continue;
42322}
42323case OP_StorePopUint32: {
42324 if (!StorePop<PT_Uint32>(S, OpPC))
42325 return false;
42326 continue;
42327}
42328case OP_StorePopSint64: {
42329 if (!StorePop<PT_Sint64>(S, OpPC))
42330 return false;
42331 continue;
42332}
42333case OP_StorePopUint64: {
42334 if (!StorePop<PT_Uint64>(S, OpPC))
42335 return false;
42336 continue;
42337}
42338case OP_StorePopIntAP: {
42339 if (!StorePop<PT_IntAP>(S, OpPC))
42340 return false;
42341 continue;
42342}
42343case OP_StorePopIntAPS: {
42344 if (!StorePop<PT_IntAPS>(S, OpPC))
42345 return false;
42346 continue;
42347}
42348case OP_StorePopBool: {
42349 if (!StorePop<PT_Bool>(S, OpPC))
42350 return false;
42351 continue;
42352}
42353case OP_StorePopFixedPoint: {
42354 if (!StorePop<PT_FixedPoint>(S, OpPC))
42355 return false;
42356 continue;
42357}
42358case OP_StorePopPtr: {
42359 if (!StorePop<PT_Ptr>(S, OpPC))
42360 return false;
42361 continue;
42362}
42363case OP_StorePopMemberPtr: {
42364 if (!StorePop<PT_MemberPtr>(S, OpPC))
42365 return false;
42366 continue;
42367}
42368case OP_StorePopFloat: {
42369 if (!StorePop<PT_Float>(S, OpPC))
42370 return false;
42371 continue;
42372}
42373#endif
42374#ifdef GET_DISASM
42375case OP_StorePopSint8:
42376 Text.Op = PrintName("StorePopSint8");
42377 break;
42378case OP_StorePopUint8:
42379 Text.Op = PrintName("StorePopUint8");
42380 break;
42381case OP_StorePopSint16:
42382 Text.Op = PrintName("StorePopSint16");
42383 break;
42384case OP_StorePopUint16:
42385 Text.Op = PrintName("StorePopUint16");
42386 break;
42387case OP_StorePopSint32:
42388 Text.Op = PrintName("StorePopSint32");
42389 break;
42390case OP_StorePopUint32:
42391 Text.Op = PrintName("StorePopUint32");
42392 break;
42393case OP_StorePopSint64:
42394 Text.Op = PrintName("StorePopSint64");
42395 break;
42396case OP_StorePopUint64:
42397 Text.Op = PrintName("StorePopUint64");
42398 break;
42399case OP_StorePopIntAP:
42400 Text.Op = PrintName("StorePopIntAP");
42401 break;
42402case OP_StorePopIntAPS:
42403 Text.Op = PrintName("StorePopIntAPS");
42404 break;
42405case OP_StorePopBool:
42406 Text.Op = PrintName("StorePopBool");
42407 break;
42408case OP_StorePopFixedPoint:
42409 Text.Op = PrintName("StorePopFixedPoint");
42410 break;
42411case OP_StorePopPtr:
42412 Text.Op = PrintName("StorePopPtr");
42413 break;
42414case OP_StorePopMemberPtr:
42415 Text.Op = PrintName("StorePopMemberPtr");
42416 break;
42417case OP_StorePopFloat:
42418 Text.Op = PrintName("StorePopFloat");
42419 break;
42420#endif
42421#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42422bool emitStorePopSint8(SourceInfo);
42423bool emitStorePopUint8(SourceInfo);
42424bool emitStorePopSint16(SourceInfo);
42425bool emitStorePopUint16(SourceInfo);
42426bool emitStorePopSint32(SourceInfo);
42427bool emitStorePopUint32(SourceInfo);
42428bool emitStorePopSint64(SourceInfo);
42429bool emitStorePopUint64(SourceInfo);
42430bool emitStorePopIntAP(SourceInfo);
42431bool emitStorePopIntAPS(SourceInfo);
42432bool emitStorePopBool(SourceInfo);
42433bool emitStorePopFixedPoint(SourceInfo);
42434bool emitStorePopPtr(SourceInfo);
42435bool emitStorePopMemberPtr(SourceInfo);
42436bool emitStorePopFloat(SourceInfo);
42437#endif
42438#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42439[[nodiscard]] bool emitStorePop(PrimType, SourceInfo I);
42440#endif
42441#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42442bool
42443#if defined(GET_EVAL_IMPL)
42444EvalEmitter
42445#else
42446ByteCodeEmitter
42447#endif
42448::emitStorePop(PrimType T0, SourceInfo I) {
42449 switch (T0) {
42450 case PT_Sint8:
42451 return emitStorePopSint8(I);
42452 case PT_Uint8:
42453 return emitStorePopUint8(I);
42454 case PT_Sint16:
42455 return emitStorePopSint16(I);
42456 case PT_Uint16:
42457 return emitStorePopUint16(I);
42458 case PT_Sint32:
42459 return emitStorePopSint32(I);
42460 case PT_Uint32:
42461 return emitStorePopUint32(I);
42462 case PT_Sint64:
42463 return emitStorePopSint64(I);
42464 case PT_Uint64:
42465 return emitStorePopUint64(I);
42466 case PT_IntAP:
42467 return emitStorePopIntAP(I);
42468 case PT_IntAPS:
42469 return emitStorePopIntAPS(I);
42470 case PT_Bool:
42471 return emitStorePopBool(I);
42472 case PT_FixedPoint:
42473 return emitStorePopFixedPoint(I);
42474 case PT_Ptr:
42475 return emitStorePopPtr(I);
42476 case PT_MemberPtr:
42477 return emitStorePopMemberPtr(I);
42478 case PT_Float:
42479 return emitStorePopFloat(I);
42480 }
42481 llvm_unreachable("invalid enum value");
42482}
42483#endif
42484#ifdef GET_LINK_IMPL
42485bool ByteCodeEmitter::emitStorePopSint8(SourceInfo L) {
42486 return emitOp<>(OP_StorePopSint8, L);
42487}
42488bool ByteCodeEmitter::emitStorePopUint8(SourceInfo L) {
42489 return emitOp<>(OP_StorePopUint8, L);
42490}
42491bool ByteCodeEmitter::emitStorePopSint16(SourceInfo L) {
42492 return emitOp<>(OP_StorePopSint16, L);
42493}
42494bool ByteCodeEmitter::emitStorePopUint16(SourceInfo L) {
42495 return emitOp<>(OP_StorePopUint16, L);
42496}
42497bool ByteCodeEmitter::emitStorePopSint32(SourceInfo L) {
42498 return emitOp<>(OP_StorePopSint32, L);
42499}
42500bool ByteCodeEmitter::emitStorePopUint32(SourceInfo L) {
42501 return emitOp<>(OP_StorePopUint32, L);
42502}
42503bool ByteCodeEmitter::emitStorePopSint64(SourceInfo L) {
42504 return emitOp<>(OP_StorePopSint64, L);
42505}
42506bool ByteCodeEmitter::emitStorePopUint64(SourceInfo L) {
42507 return emitOp<>(OP_StorePopUint64, L);
42508}
42509bool ByteCodeEmitter::emitStorePopIntAP(SourceInfo L) {
42510 return emitOp<>(OP_StorePopIntAP, L);
42511}
42512bool ByteCodeEmitter::emitStorePopIntAPS(SourceInfo L) {
42513 return emitOp<>(OP_StorePopIntAPS, L);
42514}
42515bool ByteCodeEmitter::emitStorePopBool(SourceInfo L) {
42516 return emitOp<>(OP_StorePopBool, L);
42517}
42518bool ByteCodeEmitter::emitStorePopFixedPoint(SourceInfo L) {
42519 return emitOp<>(OP_StorePopFixedPoint, L);
42520}
42521bool ByteCodeEmitter::emitStorePopPtr(SourceInfo L) {
42522 return emitOp<>(OP_StorePopPtr, L);
42523}
42524bool ByteCodeEmitter::emitStorePopMemberPtr(SourceInfo L) {
42525 return emitOp<>(OP_StorePopMemberPtr, L);
42526}
42527bool ByteCodeEmitter::emitStorePopFloat(SourceInfo L) {
42528 return emitOp<>(OP_StorePopFloat, L);
42529}
42530#endif
42531#ifdef GET_EVAL_IMPL
42532bool EvalEmitter::emitStorePopSint8(SourceInfo L) {
42533 if (!isActive()) return true;
42534 CurrentSource = L;
42535 return StorePop<PT_Sint8>(S, OpPC);
42536}
42537bool EvalEmitter::emitStorePopUint8(SourceInfo L) {
42538 if (!isActive()) return true;
42539 CurrentSource = L;
42540 return StorePop<PT_Uint8>(S, OpPC);
42541}
42542bool EvalEmitter::emitStorePopSint16(SourceInfo L) {
42543 if (!isActive()) return true;
42544 CurrentSource = L;
42545 return StorePop<PT_Sint16>(S, OpPC);
42546}
42547bool EvalEmitter::emitStorePopUint16(SourceInfo L) {
42548 if (!isActive()) return true;
42549 CurrentSource = L;
42550 return StorePop<PT_Uint16>(S, OpPC);
42551}
42552bool EvalEmitter::emitStorePopSint32(SourceInfo L) {
42553 if (!isActive()) return true;
42554 CurrentSource = L;
42555 return StorePop<PT_Sint32>(S, OpPC);
42556}
42557bool EvalEmitter::emitStorePopUint32(SourceInfo L) {
42558 if (!isActive()) return true;
42559 CurrentSource = L;
42560 return StorePop<PT_Uint32>(S, OpPC);
42561}
42562bool EvalEmitter::emitStorePopSint64(SourceInfo L) {
42563 if (!isActive()) return true;
42564 CurrentSource = L;
42565 return StorePop<PT_Sint64>(S, OpPC);
42566}
42567bool EvalEmitter::emitStorePopUint64(SourceInfo L) {
42568 if (!isActive()) return true;
42569 CurrentSource = L;
42570 return StorePop<PT_Uint64>(S, OpPC);
42571}
42572bool EvalEmitter::emitStorePopIntAP(SourceInfo L) {
42573 if (!isActive()) return true;
42574 CurrentSource = L;
42575 return StorePop<PT_IntAP>(S, OpPC);
42576}
42577bool EvalEmitter::emitStorePopIntAPS(SourceInfo L) {
42578 if (!isActive()) return true;
42579 CurrentSource = L;
42580 return StorePop<PT_IntAPS>(S, OpPC);
42581}
42582bool EvalEmitter::emitStorePopBool(SourceInfo L) {
42583 if (!isActive()) return true;
42584 CurrentSource = L;
42585 return StorePop<PT_Bool>(S, OpPC);
42586}
42587bool EvalEmitter::emitStorePopFixedPoint(SourceInfo L) {
42588 if (!isActive()) return true;
42589 CurrentSource = L;
42590 return StorePop<PT_FixedPoint>(S, OpPC);
42591}
42592bool EvalEmitter::emitStorePopPtr(SourceInfo L) {
42593 if (!isActive()) return true;
42594 CurrentSource = L;
42595 return StorePop<PT_Ptr>(S, OpPC);
42596}
42597bool EvalEmitter::emitStorePopMemberPtr(SourceInfo L) {
42598 if (!isActive()) return true;
42599 CurrentSource = L;
42600 return StorePop<PT_MemberPtr>(S, OpPC);
42601}
42602bool EvalEmitter::emitStorePopFloat(SourceInfo L) {
42603 if (!isActive()) return true;
42604 CurrentSource = L;
42605 return StorePop<PT_Float>(S, OpPC);
42606}
42607#endif
42608#ifdef GET_OPCODE_NAMES
42609OP_SubSint8,
42610OP_SubUint8,
42611OP_SubSint16,
42612OP_SubUint16,
42613OP_SubSint32,
42614OP_SubUint32,
42615OP_SubSint64,
42616OP_SubUint64,
42617OP_SubIntAP,
42618OP_SubIntAPS,
42619OP_SubBool,
42620OP_SubFixedPoint,
42621#endif
42622#ifdef GET_INTERP
42623case OP_SubSint8: {
42624 if (!Sub<PT_Sint8>(S, OpPC))
42625 return false;
42626 continue;
42627}
42628case OP_SubUint8: {
42629 if (!Sub<PT_Uint8>(S, OpPC))
42630 return false;
42631 continue;
42632}
42633case OP_SubSint16: {
42634 if (!Sub<PT_Sint16>(S, OpPC))
42635 return false;
42636 continue;
42637}
42638case OP_SubUint16: {
42639 if (!Sub<PT_Uint16>(S, OpPC))
42640 return false;
42641 continue;
42642}
42643case OP_SubSint32: {
42644 if (!Sub<PT_Sint32>(S, OpPC))
42645 return false;
42646 continue;
42647}
42648case OP_SubUint32: {
42649 if (!Sub<PT_Uint32>(S, OpPC))
42650 return false;
42651 continue;
42652}
42653case OP_SubSint64: {
42654 if (!Sub<PT_Sint64>(S, OpPC))
42655 return false;
42656 continue;
42657}
42658case OP_SubUint64: {
42659 if (!Sub<PT_Uint64>(S, OpPC))
42660 return false;
42661 continue;
42662}
42663case OP_SubIntAP: {
42664 if (!Sub<PT_IntAP>(S, OpPC))
42665 return false;
42666 continue;
42667}
42668case OP_SubIntAPS: {
42669 if (!Sub<PT_IntAPS>(S, OpPC))
42670 return false;
42671 continue;
42672}
42673case OP_SubBool: {
42674 if (!Sub<PT_Bool>(S, OpPC))
42675 return false;
42676 continue;
42677}
42678case OP_SubFixedPoint: {
42679 if (!Sub<PT_FixedPoint>(S, OpPC))
42680 return false;
42681 continue;
42682}
42683#endif
42684#ifdef GET_DISASM
42685case OP_SubSint8:
42686 Text.Op = PrintName("SubSint8");
42687 break;
42688case OP_SubUint8:
42689 Text.Op = PrintName("SubUint8");
42690 break;
42691case OP_SubSint16:
42692 Text.Op = PrintName("SubSint16");
42693 break;
42694case OP_SubUint16:
42695 Text.Op = PrintName("SubUint16");
42696 break;
42697case OP_SubSint32:
42698 Text.Op = PrintName("SubSint32");
42699 break;
42700case OP_SubUint32:
42701 Text.Op = PrintName("SubUint32");
42702 break;
42703case OP_SubSint64:
42704 Text.Op = PrintName("SubSint64");
42705 break;
42706case OP_SubUint64:
42707 Text.Op = PrintName("SubUint64");
42708 break;
42709case OP_SubIntAP:
42710 Text.Op = PrintName("SubIntAP");
42711 break;
42712case OP_SubIntAPS:
42713 Text.Op = PrintName("SubIntAPS");
42714 break;
42715case OP_SubBool:
42716 Text.Op = PrintName("SubBool");
42717 break;
42718case OP_SubFixedPoint:
42719 Text.Op = PrintName("SubFixedPoint");
42720 break;
42721#endif
42722#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42723bool emitSubSint8(SourceInfo);
42724bool emitSubUint8(SourceInfo);
42725bool emitSubSint16(SourceInfo);
42726bool emitSubUint16(SourceInfo);
42727bool emitSubSint32(SourceInfo);
42728bool emitSubUint32(SourceInfo);
42729bool emitSubSint64(SourceInfo);
42730bool emitSubUint64(SourceInfo);
42731bool emitSubIntAP(SourceInfo);
42732bool emitSubIntAPS(SourceInfo);
42733bool emitSubBool(SourceInfo);
42734bool emitSubFixedPoint(SourceInfo);
42735#endif
42736#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42737[[nodiscard]] bool emitSub(PrimType, SourceInfo I);
42738#endif
42739#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42740bool
42741#if defined(GET_EVAL_IMPL)
42742EvalEmitter
42743#else
42744ByteCodeEmitter
42745#endif
42746::emitSub(PrimType T0, SourceInfo I) {
42747 switch (T0) {
42748 case PT_Sint8:
42749 return emitSubSint8(I);
42750 case PT_Uint8:
42751 return emitSubUint8(I);
42752 case PT_Sint16:
42753 return emitSubSint16(I);
42754 case PT_Uint16:
42755 return emitSubUint16(I);
42756 case PT_Sint32:
42757 return emitSubSint32(I);
42758 case PT_Uint32:
42759 return emitSubUint32(I);
42760 case PT_Sint64:
42761 return emitSubSint64(I);
42762 case PT_Uint64:
42763 return emitSubUint64(I);
42764 case PT_IntAP:
42765 return emitSubIntAP(I);
42766 case PT_IntAPS:
42767 return emitSubIntAPS(I);
42768 case PT_Bool:
42769 return emitSubBool(I);
42770 case PT_FixedPoint:
42771 return emitSubFixedPoint(I);
42772 default: llvm_unreachable("invalid type: emitSub");
42773 }
42774 llvm_unreachable("invalid enum value");
42775}
42776#endif
42777#ifdef GET_LINK_IMPL
42778bool ByteCodeEmitter::emitSubSint8(SourceInfo L) {
42779 return emitOp<>(OP_SubSint8, L);
42780}
42781bool ByteCodeEmitter::emitSubUint8(SourceInfo L) {
42782 return emitOp<>(OP_SubUint8, L);
42783}
42784bool ByteCodeEmitter::emitSubSint16(SourceInfo L) {
42785 return emitOp<>(OP_SubSint16, L);
42786}
42787bool ByteCodeEmitter::emitSubUint16(SourceInfo L) {
42788 return emitOp<>(OP_SubUint16, L);
42789}
42790bool ByteCodeEmitter::emitSubSint32(SourceInfo L) {
42791 return emitOp<>(OP_SubSint32, L);
42792}
42793bool ByteCodeEmitter::emitSubUint32(SourceInfo L) {
42794 return emitOp<>(OP_SubUint32, L);
42795}
42796bool ByteCodeEmitter::emitSubSint64(SourceInfo L) {
42797 return emitOp<>(OP_SubSint64, L);
42798}
42799bool ByteCodeEmitter::emitSubUint64(SourceInfo L) {
42800 return emitOp<>(OP_SubUint64, L);
42801}
42802bool ByteCodeEmitter::emitSubIntAP(SourceInfo L) {
42803 return emitOp<>(OP_SubIntAP, L);
42804}
42805bool ByteCodeEmitter::emitSubIntAPS(SourceInfo L) {
42806 return emitOp<>(OP_SubIntAPS, L);
42807}
42808bool ByteCodeEmitter::emitSubBool(SourceInfo L) {
42809 return emitOp<>(OP_SubBool, L);
42810}
42811bool ByteCodeEmitter::emitSubFixedPoint(SourceInfo L) {
42812 return emitOp<>(OP_SubFixedPoint, L);
42813}
42814#endif
42815#ifdef GET_EVAL_IMPL
42816bool EvalEmitter::emitSubSint8(SourceInfo L) {
42817 if (!isActive()) return true;
42818 CurrentSource = L;
42819 return Sub<PT_Sint8>(S, OpPC);
42820}
42821bool EvalEmitter::emitSubUint8(SourceInfo L) {
42822 if (!isActive()) return true;
42823 CurrentSource = L;
42824 return Sub<PT_Uint8>(S, OpPC);
42825}
42826bool EvalEmitter::emitSubSint16(SourceInfo L) {
42827 if (!isActive()) return true;
42828 CurrentSource = L;
42829 return Sub<PT_Sint16>(S, OpPC);
42830}
42831bool EvalEmitter::emitSubUint16(SourceInfo L) {
42832 if (!isActive()) return true;
42833 CurrentSource = L;
42834 return Sub<PT_Uint16>(S, OpPC);
42835}
42836bool EvalEmitter::emitSubSint32(SourceInfo L) {
42837 if (!isActive()) return true;
42838 CurrentSource = L;
42839 return Sub<PT_Sint32>(S, OpPC);
42840}
42841bool EvalEmitter::emitSubUint32(SourceInfo L) {
42842 if (!isActive()) return true;
42843 CurrentSource = L;
42844 return Sub<PT_Uint32>(S, OpPC);
42845}
42846bool EvalEmitter::emitSubSint64(SourceInfo L) {
42847 if (!isActive()) return true;
42848 CurrentSource = L;
42849 return Sub<PT_Sint64>(S, OpPC);
42850}
42851bool EvalEmitter::emitSubUint64(SourceInfo L) {
42852 if (!isActive()) return true;
42853 CurrentSource = L;
42854 return Sub<PT_Uint64>(S, OpPC);
42855}
42856bool EvalEmitter::emitSubIntAP(SourceInfo L) {
42857 if (!isActive()) return true;
42858 CurrentSource = L;
42859 return Sub<PT_IntAP>(S, OpPC);
42860}
42861bool EvalEmitter::emitSubIntAPS(SourceInfo L) {
42862 if (!isActive()) return true;
42863 CurrentSource = L;
42864 return Sub<PT_IntAPS>(S, OpPC);
42865}
42866bool EvalEmitter::emitSubBool(SourceInfo L) {
42867 if (!isActive()) return true;
42868 CurrentSource = L;
42869 return Sub<PT_Bool>(S, OpPC);
42870}
42871bool EvalEmitter::emitSubFixedPoint(SourceInfo L) {
42872 if (!isActive()) return true;
42873 CurrentSource = L;
42874 return Sub<PT_FixedPoint>(S, OpPC);
42875}
42876#endif
42877#ifdef GET_OPCODE_NAMES
42878OP_SubOffsetSint8,
42879OP_SubOffsetUint8,
42880OP_SubOffsetSint16,
42881OP_SubOffsetUint16,
42882OP_SubOffsetSint32,
42883OP_SubOffsetUint32,
42884OP_SubOffsetSint64,
42885OP_SubOffsetUint64,
42886OP_SubOffsetIntAP,
42887OP_SubOffsetIntAPS,
42888OP_SubOffsetBool,
42889#endif
42890#ifdef GET_INTERP
42891case OP_SubOffsetSint8: {
42892 if (!SubOffset<PT_Sint8>(S, OpPC))
42893 return false;
42894 continue;
42895}
42896case OP_SubOffsetUint8: {
42897 if (!SubOffset<PT_Uint8>(S, OpPC))
42898 return false;
42899 continue;
42900}
42901case OP_SubOffsetSint16: {
42902 if (!SubOffset<PT_Sint16>(S, OpPC))
42903 return false;
42904 continue;
42905}
42906case OP_SubOffsetUint16: {
42907 if (!SubOffset<PT_Uint16>(S, OpPC))
42908 return false;
42909 continue;
42910}
42911case OP_SubOffsetSint32: {
42912 if (!SubOffset<PT_Sint32>(S, OpPC))
42913 return false;
42914 continue;
42915}
42916case OP_SubOffsetUint32: {
42917 if (!SubOffset<PT_Uint32>(S, OpPC))
42918 return false;
42919 continue;
42920}
42921case OP_SubOffsetSint64: {
42922 if (!SubOffset<PT_Sint64>(S, OpPC))
42923 return false;
42924 continue;
42925}
42926case OP_SubOffsetUint64: {
42927 if (!SubOffset<PT_Uint64>(S, OpPC))
42928 return false;
42929 continue;
42930}
42931case OP_SubOffsetIntAP: {
42932 if (!SubOffset<PT_IntAP>(S, OpPC))
42933 return false;
42934 continue;
42935}
42936case OP_SubOffsetIntAPS: {
42937 if (!SubOffset<PT_IntAPS>(S, OpPC))
42938 return false;
42939 continue;
42940}
42941case OP_SubOffsetBool: {
42942 if (!SubOffset<PT_Bool>(S, OpPC))
42943 return false;
42944 continue;
42945}
42946#endif
42947#ifdef GET_DISASM
42948case OP_SubOffsetSint8:
42949 Text.Op = PrintName("SubOffsetSint8");
42950 break;
42951case OP_SubOffsetUint8:
42952 Text.Op = PrintName("SubOffsetUint8");
42953 break;
42954case OP_SubOffsetSint16:
42955 Text.Op = PrintName("SubOffsetSint16");
42956 break;
42957case OP_SubOffsetUint16:
42958 Text.Op = PrintName("SubOffsetUint16");
42959 break;
42960case OP_SubOffsetSint32:
42961 Text.Op = PrintName("SubOffsetSint32");
42962 break;
42963case OP_SubOffsetUint32:
42964 Text.Op = PrintName("SubOffsetUint32");
42965 break;
42966case OP_SubOffsetSint64:
42967 Text.Op = PrintName("SubOffsetSint64");
42968 break;
42969case OP_SubOffsetUint64:
42970 Text.Op = PrintName("SubOffsetUint64");
42971 break;
42972case OP_SubOffsetIntAP:
42973 Text.Op = PrintName("SubOffsetIntAP");
42974 break;
42975case OP_SubOffsetIntAPS:
42976 Text.Op = PrintName("SubOffsetIntAPS");
42977 break;
42978case OP_SubOffsetBool:
42979 Text.Op = PrintName("SubOffsetBool");
42980 break;
42981#endif
42982#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42983bool emitSubOffsetSint8(SourceInfo);
42984bool emitSubOffsetUint8(SourceInfo);
42985bool emitSubOffsetSint16(SourceInfo);
42986bool emitSubOffsetUint16(SourceInfo);
42987bool emitSubOffsetSint32(SourceInfo);
42988bool emitSubOffsetUint32(SourceInfo);
42989bool emitSubOffsetSint64(SourceInfo);
42990bool emitSubOffsetUint64(SourceInfo);
42991bool emitSubOffsetIntAP(SourceInfo);
42992bool emitSubOffsetIntAPS(SourceInfo);
42993bool emitSubOffsetBool(SourceInfo);
42994#endif
42995#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
42996[[nodiscard]] bool emitSubOffset(PrimType, SourceInfo I);
42997#endif
42998#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
42999bool
43000#if defined(GET_EVAL_IMPL)
43001EvalEmitter
43002#else
43003ByteCodeEmitter
43004#endif
43005::emitSubOffset(PrimType T0, SourceInfo I) {
43006 switch (T0) {
43007 case PT_Sint8:
43008 return emitSubOffsetSint8(I);
43009 case PT_Uint8:
43010 return emitSubOffsetUint8(I);
43011 case PT_Sint16:
43012 return emitSubOffsetSint16(I);
43013 case PT_Uint16:
43014 return emitSubOffsetUint16(I);
43015 case PT_Sint32:
43016 return emitSubOffsetSint32(I);
43017 case PT_Uint32:
43018 return emitSubOffsetUint32(I);
43019 case PT_Sint64:
43020 return emitSubOffsetSint64(I);
43021 case PT_Uint64:
43022 return emitSubOffsetUint64(I);
43023 case PT_IntAP:
43024 return emitSubOffsetIntAP(I);
43025 case PT_IntAPS:
43026 return emitSubOffsetIntAPS(I);
43027 case PT_Bool:
43028 return emitSubOffsetBool(I);
43029 default: llvm_unreachable("invalid type: emitSubOffset");
43030 }
43031 llvm_unreachable("invalid enum value");
43032}
43033#endif
43034#ifdef GET_LINK_IMPL
43035bool ByteCodeEmitter::emitSubOffsetSint8(SourceInfo L) {
43036 return emitOp<>(OP_SubOffsetSint8, L);
43037}
43038bool ByteCodeEmitter::emitSubOffsetUint8(SourceInfo L) {
43039 return emitOp<>(OP_SubOffsetUint8, L);
43040}
43041bool ByteCodeEmitter::emitSubOffsetSint16(SourceInfo L) {
43042 return emitOp<>(OP_SubOffsetSint16, L);
43043}
43044bool ByteCodeEmitter::emitSubOffsetUint16(SourceInfo L) {
43045 return emitOp<>(OP_SubOffsetUint16, L);
43046}
43047bool ByteCodeEmitter::emitSubOffsetSint32(SourceInfo L) {
43048 return emitOp<>(OP_SubOffsetSint32, L);
43049}
43050bool ByteCodeEmitter::emitSubOffsetUint32(SourceInfo L) {
43051 return emitOp<>(OP_SubOffsetUint32, L);
43052}
43053bool ByteCodeEmitter::emitSubOffsetSint64(SourceInfo L) {
43054 return emitOp<>(OP_SubOffsetSint64, L);
43055}
43056bool ByteCodeEmitter::emitSubOffsetUint64(SourceInfo L) {
43057 return emitOp<>(OP_SubOffsetUint64, L);
43058}
43059bool ByteCodeEmitter::emitSubOffsetIntAP(SourceInfo L) {
43060 return emitOp<>(OP_SubOffsetIntAP, L);
43061}
43062bool ByteCodeEmitter::emitSubOffsetIntAPS(SourceInfo L) {
43063 return emitOp<>(OP_SubOffsetIntAPS, L);
43064}
43065bool ByteCodeEmitter::emitSubOffsetBool(SourceInfo L) {
43066 return emitOp<>(OP_SubOffsetBool, L);
43067}
43068#endif
43069#ifdef GET_EVAL_IMPL
43070bool EvalEmitter::emitSubOffsetSint8(SourceInfo L) {
43071 if (!isActive()) return true;
43072 CurrentSource = L;
43073 return SubOffset<PT_Sint8>(S, OpPC);
43074}
43075bool EvalEmitter::emitSubOffsetUint8(SourceInfo L) {
43076 if (!isActive()) return true;
43077 CurrentSource = L;
43078 return SubOffset<PT_Uint8>(S, OpPC);
43079}
43080bool EvalEmitter::emitSubOffsetSint16(SourceInfo L) {
43081 if (!isActive()) return true;
43082 CurrentSource = L;
43083 return SubOffset<PT_Sint16>(S, OpPC);
43084}
43085bool EvalEmitter::emitSubOffsetUint16(SourceInfo L) {
43086 if (!isActive()) return true;
43087 CurrentSource = L;
43088 return SubOffset<PT_Uint16>(S, OpPC);
43089}
43090bool EvalEmitter::emitSubOffsetSint32(SourceInfo L) {
43091 if (!isActive()) return true;
43092 CurrentSource = L;
43093 return SubOffset<PT_Sint32>(S, OpPC);
43094}
43095bool EvalEmitter::emitSubOffsetUint32(SourceInfo L) {
43096 if (!isActive()) return true;
43097 CurrentSource = L;
43098 return SubOffset<PT_Uint32>(S, OpPC);
43099}
43100bool EvalEmitter::emitSubOffsetSint64(SourceInfo L) {
43101 if (!isActive()) return true;
43102 CurrentSource = L;
43103 return SubOffset<PT_Sint64>(S, OpPC);
43104}
43105bool EvalEmitter::emitSubOffsetUint64(SourceInfo L) {
43106 if (!isActive()) return true;
43107 CurrentSource = L;
43108 return SubOffset<PT_Uint64>(S, OpPC);
43109}
43110bool EvalEmitter::emitSubOffsetIntAP(SourceInfo L) {
43111 if (!isActive()) return true;
43112 CurrentSource = L;
43113 return SubOffset<PT_IntAP>(S, OpPC);
43114}
43115bool EvalEmitter::emitSubOffsetIntAPS(SourceInfo L) {
43116 if (!isActive()) return true;
43117 CurrentSource = L;
43118 return SubOffset<PT_IntAPS>(S, OpPC);
43119}
43120bool EvalEmitter::emitSubOffsetBool(SourceInfo L) {
43121 if (!isActive()) return true;
43122 CurrentSource = L;
43123 return SubOffset<PT_Bool>(S, OpPC);
43124}
43125#endif
43126#ifdef GET_OPCODE_NAMES
43127OP_SubPtrSint8,
43128OP_SubPtrUint8,
43129OP_SubPtrSint16,
43130OP_SubPtrUint16,
43131OP_SubPtrSint32,
43132OP_SubPtrUint32,
43133OP_SubPtrSint64,
43134OP_SubPtrUint64,
43135OP_SubPtrIntAP,
43136OP_SubPtrIntAPS,
43137#endif
43138#ifdef GET_INTERP
43139case OP_SubPtrSint8: {
43140 const auto V0 = ReadArg<bool>(S, PC);
43141 if (!SubPtr<PT_Sint8>(S, OpPC, V0))
43142 return false;
43143 continue;
43144}
43145case OP_SubPtrUint8: {
43146 const auto V0 = ReadArg<bool>(S, PC);
43147 if (!SubPtr<PT_Uint8>(S, OpPC, V0))
43148 return false;
43149 continue;
43150}
43151case OP_SubPtrSint16: {
43152 const auto V0 = ReadArg<bool>(S, PC);
43153 if (!SubPtr<PT_Sint16>(S, OpPC, V0))
43154 return false;
43155 continue;
43156}
43157case OP_SubPtrUint16: {
43158 const auto V0 = ReadArg<bool>(S, PC);
43159 if (!SubPtr<PT_Uint16>(S, OpPC, V0))
43160 return false;
43161 continue;
43162}
43163case OP_SubPtrSint32: {
43164 const auto V0 = ReadArg<bool>(S, PC);
43165 if (!SubPtr<PT_Sint32>(S, OpPC, V0))
43166 return false;
43167 continue;
43168}
43169case OP_SubPtrUint32: {
43170 const auto V0 = ReadArg<bool>(S, PC);
43171 if (!SubPtr<PT_Uint32>(S, OpPC, V0))
43172 return false;
43173 continue;
43174}
43175case OP_SubPtrSint64: {
43176 const auto V0 = ReadArg<bool>(S, PC);
43177 if (!SubPtr<PT_Sint64>(S, OpPC, V0))
43178 return false;
43179 continue;
43180}
43181case OP_SubPtrUint64: {
43182 const auto V0 = ReadArg<bool>(S, PC);
43183 if (!SubPtr<PT_Uint64>(S, OpPC, V0))
43184 return false;
43185 continue;
43186}
43187case OP_SubPtrIntAP: {
43188 const auto V0 = ReadArg<bool>(S, PC);
43189 if (!SubPtr<PT_IntAP>(S, OpPC, V0))
43190 return false;
43191 continue;
43192}
43193case OP_SubPtrIntAPS: {
43194 const auto V0 = ReadArg<bool>(S, PC);
43195 if (!SubPtr<PT_IntAPS>(S, OpPC, V0))
43196 return false;
43197 continue;
43198}
43199#endif
43200#ifdef GET_DISASM
43201case OP_SubPtrSint8:
43202 Text.Op = PrintName("SubPtrSint8");
43203 Text.Args.push_back(printArg<bool>(P, PC));
43204 break;
43205case OP_SubPtrUint8:
43206 Text.Op = PrintName("SubPtrUint8");
43207 Text.Args.push_back(printArg<bool>(P, PC));
43208 break;
43209case OP_SubPtrSint16:
43210 Text.Op = PrintName("SubPtrSint16");
43211 Text.Args.push_back(printArg<bool>(P, PC));
43212 break;
43213case OP_SubPtrUint16:
43214 Text.Op = PrintName("SubPtrUint16");
43215 Text.Args.push_back(printArg<bool>(P, PC));
43216 break;
43217case OP_SubPtrSint32:
43218 Text.Op = PrintName("SubPtrSint32");
43219 Text.Args.push_back(printArg<bool>(P, PC));
43220 break;
43221case OP_SubPtrUint32:
43222 Text.Op = PrintName("SubPtrUint32");
43223 Text.Args.push_back(printArg<bool>(P, PC));
43224 break;
43225case OP_SubPtrSint64:
43226 Text.Op = PrintName("SubPtrSint64");
43227 Text.Args.push_back(printArg<bool>(P, PC));
43228 break;
43229case OP_SubPtrUint64:
43230 Text.Op = PrintName("SubPtrUint64");
43231 Text.Args.push_back(printArg<bool>(P, PC));
43232 break;
43233case OP_SubPtrIntAP:
43234 Text.Op = PrintName("SubPtrIntAP");
43235 Text.Args.push_back(printArg<bool>(P, PC));
43236 break;
43237case OP_SubPtrIntAPS:
43238 Text.Op = PrintName("SubPtrIntAPS");
43239 Text.Args.push_back(printArg<bool>(P, PC));
43240 break;
43241#endif
43242#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43243bool emitSubPtrSint8( bool , SourceInfo);
43244bool emitSubPtrUint8( bool , SourceInfo);
43245bool emitSubPtrSint16( bool , SourceInfo);
43246bool emitSubPtrUint16( bool , SourceInfo);
43247bool emitSubPtrSint32( bool , SourceInfo);
43248bool emitSubPtrUint32( bool , SourceInfo);
43249bool emitSubPtrSint64( bool , SourceInfo);
43250bool emitSubPtrUint64( bool , SourceInfo);
43251bool emitSubPtrIntAP( bool , SourceInfo);
43252bool emitSubPtrIntAPS( bool , SourceInfo);
43253#endif
43254#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43255[[nodiscard]] bool emitSubPtr(PrimType, bool, SourceInfo I);
43256#endif
43257#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43258bool
43259#if defined(GET_EVAL_IMPL)
43260EvalEmitter
43261#else
43262ByteCodeEmitter
43263#endif
43264::emitSubPtr(PrimType T0, bool A0, SourceInfo I) {
43265 switch (T0) {
43266 case PT_Sint8:
43267 return emitSubPtrSint8(A0, I);
43268 case PT_Uint8:
43269 return emitSubPtrUint8(A0, I);
43270 case PT_Sint16:
43271 return emitSubPtrSint16(A0, I);
43272 case PT_Uint16:
43273 return emitSubPtrUint16(A0, I);
43274 case PT_Sint32:
43275 return emitSubPtrSint32(A0, I);
43276 case PT_Uint32:
43277 return emitSubPtrUint32(A0, I);
43278 case PT_Sint64:
43279 return emitSubPtrSint64(A0, I);
43280 case PT_Uint64:
43281 return emitSubPtrUint64(A0, I);
43282 case PT_IntAP:
43283 return emitSubPtrIntAP(A0, I);
43284 case PT_IntAPS:
43285 return emitSubPtrIntAPS(A0, I);
43286 default: llvm_unreachable("invalid type: emitSubPtr");
43287 }
43288 llvm_unreachable("invalid enum value");
43289}
43290#endif
43291#ifdef GET_LINK_IMPL
43292bool ByteCodeEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
43293 return emitOp<bool>(OP_SubPtrSint8, A0, L);
43294}
43295bool ByteCodeEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
43296 return emitOp<bool>(OP_SubPtrUint8, A0, L);
43297}
43298bool ByteCodeEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
43299 return emitOp<bool>(OP_SubPtrSint16, A0, L);
43300}
43301bool ByteCodeEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
43302 return emitOp<bool>(OP_SubPtrUint16, A0, L);
43303}
43304bool ByteCodeEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
43305 return emitOp<bool>(OP_SubPtrSint32, A0, L);
43306}
43307bool ByteCodeEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
43308 return emitOp<bool>(OP_SubPtrUint32, A0, L);
43309}
43310bool ByteCodeEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
43311 return emitOp<bool>(OP_SubPtrSint64, A0, L);
43312}
43313bool ByteCodeEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
43314 return emitOp<bool>(OP_SubPtrUint64, A0, L);
43315}
43316bool ByteCodeEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
43317 return emitOp<bool>(OP_SubPtrIntAP, A0, L);
43318}
43319bool ByteCodeEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
43320 return emitOp<bool>(OP_SubPtrIntAPS, A0, L);
43321}
43322#endif
43323#ifdef GET_EVAL_IMPL
43324bool EvalEmitter::emitSubPtrSint8( bool A0, SourceInfo L) {
43325 if (!isActive()) return true;
43326 CurrentSource = L;
43327 return SubPtr<PT_Sint8>(S, OpPC, A0);
43328}
43329bool EvalEmitter::emitSubPtrUint8( bool A0, SourceInfo L) {
43330 if (!isActive()) return true;
43331 CurrentSource = L;
43332 return SubPtr<PT_Uint8>(S, OpPC, A0);
43333}
43334bool EvalEmitter::emitSubPtrSint16( bool A0, SourceInfo L) {
43335 if (!isActive()) return true;
43336 CurrentSource = L;
43337 return SubPtr<PT_Sint16>(S, OpPC, A0);
43338}
43339bool EvalEmitter::emitSubPtrUint16( bool A0, SourceInfo L) {
43340 if (!isActive()) return true;
43341 CurrentSource = L;
43342 return SubPtr<PT_Uint16>(S, OpPC, A0);
43343}
43344bool EvalEmitter::emitSubPtrSint32( bool A0, SourceInfo L) {
43345 if (!isActive()) return true;
43346 CurrentSource = L;
43347 return SubPtr<PT_Sint32>(S, OpPC, A0);
43348}
43349bool EvalEmitter::emitSubPtrUint32( bool A0, SourceInfo L) {
43350 if (!isActive()) return true;
43351 CurrentSource = L;
43352 return SubPtr<PT_Uint32>(S, OpPC, A0);
43353}
43354bool EvalEmitter::emitSubPtrSint64( bool A0, SourceInfo L) {
43355 if (!isActive()) return true;
43356 CurrentSource = L;
43357 return SubPtr<PT_Sint64>(S, OpPC, A0);
43358}
43359bool EvalEmitter::emitSubPtrUint64( bool A0, SourceInfo L) {
43360 if (!isActive()) return true;
43361 CurrentSource = L;
43362 return SubPtr<PT_Uint64>(S, OpPC, A0);
43363}
43364bool EvalEmitter::emitSubPtrIntAP( bool A0, SourceInfo L) {
43365 if (!isActive()) return true;
43366 CurrentSource = L;
43367 return SubPtr<PT_IntAP>(S, OpPC, A0);
43368}
43369bool EvalEmitter::emitSubPtrIntAPS( bool A0, SourceInfo L) {
43370 if (!isActive()) return true;
43371 CurrentSource = L;
43372 return SubPtr<PT_IntAPS>(S, OpPC, A0);
43373}
43374#endif
43375#ifdef GET_OPCODE_NAMES
43376OP_Subf,
43377#endif
43378#ifdef GET_INTERP
43379case OP_Subf: {
43380 const auto V0 = ReadArg<uint32_t>(S, PC);
43381 if (!Subf(S, OpPC, V0))
43382 return false;
43383 continue;
43384}
43385#endif
43386#ifdef GET_DISASM
43387case OP_Subf:
43388 Text.Op = PrintName("Subf");
43389 Text.Args.push_back(printArg<uint32_t>(P, PC));
43390 break;
43391#endif
43392#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43393bool emitSubf( uint32_t , SourceInfo);
43394#endif
43395#ifdef GET_LINK_IMPL
43396bool ByteCodeEmitter::emitSubf( uint32_t A0, SourceInfo L) {
43397 return emitOp<uint32_t>(OP_Subf, A0, L);
43398}
43399#endif
43400#ifdef GET_EVAL_IMPL
43401bool EvalEmitter::emitSubf( uint32_t A0, SourceInfo L) {
43402 if (!isActive()) return true;
43403 CurrentSource = L;
43404 return Subf(S, OpPC, A0);
43405}
43406#endif
43407#ifdef GET_OPCODE_NAMES
43408OP_This,
43409#endif
43410#ifdef GET_INTERP
43411case OP_This: {
43412 if (!This(S, OpPC))
43413 return false;
43414 continue;
43415}
43416#endif
43417#ifdef GET_DISASM
43418case OP_This:
43419 Text.Op = PrintName("This");
43420 break;
43421#endif
43422#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43423bool emitThis(SourceInfo);
43424#endif
43425#ifdef GET_LINK_IMPL
43426bool ByteCodeEmitter::emitThis(SourceInfo L) {
43427 return emitOp<>(OP_This, L);
43428}
43429#endif
43430#ifdef GET_EVAL_IMPL
43431bool EvalEmitter::emitThis(SourceInfo L) {
43432 if (!isActive()) return true;
43433 CurrentSource = L;
43434 return This(S, OpPC);
43435}
43436#endif
43437#ifdef GET_OPCODE_NAMES
43438OP_ToMemberPtr,
43439#endif
43440#ifdef GET_INTERP
43441case OP_ToMemberPtr: {
43442 if (!ToMemberPtr(S, OpPC))
43443 return false;
43444 continue;
43445}
43446#endif
43447#ifdef GET_DISASM
43448case OP_ToMemberPtr:
43449 Text.Op = PrintName("ToMemberPtr");
43450 break;
43451#endif
43452#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43453bool emitToMemberPtr(SourceInfo);
43454#endif
43455#ifdef GET_LINK_IMPL
43456bool ByteCodeEmitter::emitToMemberPtr(SourceInfo L) {
43457 return emitOp<>(OP_ToMemberPtr, L);
43458}
43459#endif
43460#ifdef GET_EVAL_IMPL
43461bool EvalEmitter::emitToMemberPtr(SourceInfo L) {
43462 if (!isActive()) return true;
43463 CurrentSource = L;
43464 return ToMemberPtr(S, OpPC);
43465}
43466#endif
43467#ifdef GET_OPCODE_NAMES
43468OP_Unsupported,
43469#endif
43470#ifdef GET_INTERP
43471case OP_Unsupported: {
43472 if (!Unsupported(S, OpPC))
43473 return false;
43474 continue;
43475}
43476#endif
43477#ifdef GET_DISASM
43478case OP_Unsupported:
43479 Text.Op = PrintName("Unsupported");
43480 break;
43481#endif
43482#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43483bool emitUnsupported(SourceInfo);
43484#endif
43485#ifdef GET_LINK_IMPL
43486bool ByteCodeEmitter::emitUnsupported(SourceInfo L) {
43487 return emitOp<>(OP_Unsupported, L);
43488}
43489#endif
43490#ifdef GET_EVAL_IMPL
43491bool EvalEmitter::emitUnsupported(SourceInfo L) {
43492 if (!isActive()) return true;
43493 CurrentSource = L;
43494 return Unsupported(S, OpPC);
43495}
43496#endif
43497#ifdef GET_OPCODE_NAMES
43498OP_ZeroSint8,
43499OP_ZeroUint8,
43500OP_ZeroSint16,
43501OP_ZeroUint16,
43502OP_ZeroSint32,
43503OP_ZeroUint32,
43504OP_ZeroSint64,
43505OP_ZeroUint64,
43506OP_ZeroBool,
43507#endif
43508#ifdef GET_INTERP
43509case OP_ZeroSint8: {
43510 if (!Zero<PT_Sint8>(S, OpPC))
43511 return false;
43512 continue;
43513}
43514case OP_ZeroUint8: {
43515 if (!Zero<PT_Uint8>(S, OpPC))
43516 return false;
43517 continue;
43518}
43519case OP_ZeroSint16: {
43520 if (!Zero<PT_Sint16>(S, OpPC))
43521 return false;
43522 continue;
43523}
43524case OP_ZeroUint16: {
43525 if (!Zero<PT_Uint16>(S, OpPC))
43526 return false;
43527 continue;
43528}
43529case OP_ZeroSint32: {
43530 if (!Zero<PT_Sint32>(S, OpPC))
43531 return false;
43532 continue;
43533}
43534case OP_ZeroUint32: {
43535 if (!Zero<PT_Uint32>(S, OpPC))
43536 return false;
43537 continue;
43538}
43539case OP_ZeroSint64: {
43540 if (!Zero<PT_Sint64>(S, OpPC))
43541 return false;
43542 continue;
43543}
43544case OP_ZeroUint64: {
43545 if (!Zero<PT_Uint64>(S, OpPC))
43546 return false;
43547 continue;
43548}
43549case OP_ZeroBool: {
43550 if (!Zero<PT_Bool>(S, OpPC))
43551 return false;
43552 continue;
43553}
43554#endif
43555#ifdef GET_DISASM
43556case OP_ZeroSint8:
43557 Text.Op = PrintName("ZeroSint8");
43558 break;
43559case OP_ZeroUint8:
43560 Text.Op = PrintName("ZeroUint8");
43561 break;
43562case OP_ZeroSint16:
43563 Text.Op = PrintName("ZeroSint16");
43564 break;
43565case OP_ZeroUint16:
43566 Text.Op = PrintName("ZeroUint16");
43567 break;
43568case OP_ZeroSint32:
43569 Text.Op = PrintName("ZeroSint32");
43570 break;
43571case OP_ZeroUint32:
43572 Text.Op = PrintName("ZeroUint32");
43573 break;
43574case OP_ZeroSint64:
43575 Text.Op = PrintName("ZeroSint64");
43576 break;
43577case OP_ZeroUint64:
43578 Text.Op = PrintName("ZeroUint64");
43579 break;
43580case OP_ZeroBool:
43581 Text.Op = PrintName("ZeroBool");
43582 break;
43583#endif
43584#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43585bool emitZeroSint8(SourceInfo);
43586bool emitZeroUint8(SourceInfo);
43587bool emitZeroSint16(SourceInfo);
43588bool emitZeroUint16(SourceInfo);
43589bool emitZeroSint32(SourceInfo);
43590bool emitZeroUint32(SourceInfo);
43591bool emitZeroSint64(SourceInfo);
43592bool emitZeroUint64(SourceInfo);
43593bool emitZeroBool(SourceInfo);
43594#endif
43595#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43596[[nodiscard]] bool emitZero(PrimType, SourceInfo I);
43597#endif
43598#if defined(GET_EVAL_IMPL) || defined(GET_LINK_IMPL)
43599bool
43600#if defined(GET_EVAL_IMPL)
43601EvalEmitter
43602#else
43603ByteCodeEmitter
43604#endif
43605::emitZero(PrimType T0, SourceInfo I) {
43606 switch (T0) {
43607 case PT_Sint8:
43608 return emitZeroSint8(I);
43609 case PT_Uint8:
43610 return emitZeroUint8(I);
43611 case PT_Sint16:
43612 return emitZeroSint16(I);
43613 case PT_Uint16:
43614 return emitZeroUint16(I);
43615 case PT_Sint32:
43616 return emitZeroSint32(I);
43617 case PT_Uint32:
43618 return emitZeroUint32(I);
43619 case PT_Sint64:
43620 return emitZeroSint64(I);
43621 case PT_Uint64:
43622 return emitZeroUint64(I);
43623 case PT_Bool:
43624 return emitZeroBool(I);
43625 default: llvm_unreachable("invalid type: emitZero");
43626 }
43627 llvm_unreachable("invalid enum value");
43628}
43629#endif
43630#ifdef GET_LINK_IMPL
43631bool ByteCodeEmitter::emitZeroSint8(SourceInfo L) {
43632 return emitOp<>(OP_ZeroSint8, L);
43633}
43634bool ByteCodeEmitter::emitZeroUint8(SourceInfo L) {
43635 return emitOp<>(OP_ZeroUint8, L);
43636}
43637bool ByteCodeEmitter::emitZeroSint16(SourceInfo L) {
43638 return emitOp<>(OP_ZeroSint16, L);
43639}
43640bool ByteCodeEmitter::emitZeroUint16(SourceInfo L) {
43641 return emitOp<>(OP_ZeroUint16, L);
43642}
43643bool ByteCodeEmitter::emitZeroSint32(SourceInfo L) {
43644 return emitOp<>(OP_ZeroSint32, L);
43645}
43646bool ByteCodeEmitter::emitZeroUint32(SourceInfo L) {
43647 return emitOp<>(OP_ZeroUint32, L);
43648}
43649bool ByteCodeEmitter::emitZeroSint64(SourceInfo L) {
43650 return emitOp<>(OP_ZeroSint64, L);
43651}
43652bool ByteCodeEmitter::emitZeroUint64(SourceInfo L) {
43653 return emitOp<>(OP_ZeroUint64, L);
43654}
43655bool ByteCodeEmitter::emitZeroBool(SourceInfo L) {
43656 return emitOp<>(OP_ZeroBool, L);
43657}
43658#endif
43659#ifdef GET_EVAL_IMPL
43660bool EvalEmitter::emitZeroSint8(SourceInfo L) {
43661 if (!isActive()) return true;
43662 CurrentSource = L;
43663 return Zero<PT_Sint8>(S, OpPC);
43664}
43665bool EvalEmitter::emitZeroUint8(SourceInfo L) {
43666 if (!isActive()) return true;
43667 CurrentSource = L;
43668 return Zero<PT_Uint8>(S, OpPC);
43669}
43670bool EvalEmitter::emitZeroSint16(SourceInfo L) {
43671 if (!isActive()) return true;
43672 CurrentSource = L;
43673 return Zero<PT_Sint16>(S, OpPC);
43674}
43675bool EvalEmitter::emitZeroUint16(SourceInfo L) {
43676 if (!isActive()) return true;
43677 CurrentSource = L;
43678 return Zero<PT_Uint16>(S, OpPC);
43679}
43680bool EvalEmitter::emitZeroSint32(SourceInfo L) {
43681 if (!isActive()) return true;
43682 CurrentSource = L;
43683 return Zero<PT_Sint32>(S, OpPC);
43684}
43685bool EvalEmitter::emitZeroUint32(SourceInfo L) {
43686 if (!isActive()) return true;
43687 CurrentSource = L;
43688 return Zero<PT_Uint32>(S, OpPC);
43689}
43690bool EvalEmitter::emitZeroSint64(SourceInfo L) {
43691 if (!isActive()) return true;
43692 CurrentSource = L;
43693 return Zero<PT_Sint64>(S, OpPC);
43694}
43695bool EvalEmitter::emitZeroUint64(SourceInfo L) {
43696 if (!isActive()) return true;
43697 CurrentSource = L;
43698 return Zero<PT_Uint64>(S, OpPC);
43699}
43700bool EvalEmitter::emitZeroBool(SourceInfo L) {
43701 if (!isActive()) return true;
43702 CurrentSource = L;
43703 return Zero<PT_Bool>(S, OpPC);
43704}
43705#endif
43706#ifdef GET_OPCODE_NAMES
43707OP_ZeroIntAP,
43708#endif
43709#ifdef GET_INTERP
43710case OP_ZeroIntAP: {
43711 const auto V0 = ReadArg<uint32_t>(S, PC);
43712 if (!ZeroIntAP(S, OpPC, V0))
43713 return false;
43714 continue;
43715}
43716#endif
43717#ifdef GET_DISASM
43718case OP_ZeroIntAP:
43719 Text.Op = PrintName("ZeroIntAP");
43720 Text.Args.push_back(printArg<uint32_t>(P, PC));
43721 break;
43722#endif
43723#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43724bool emitZeroIntAP( uint32_t , SourceInfo);
43725#endif
43726#ifdef GET_LINK_IMPL
43727bool ByteCodeEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
43728 return emitOp<uint32_t>(OP_ZeroIntAP, A0, L);
43729}
43730#endif
43731#ifdef GET_EVAL_IMPL
43732bool EvalEmitter::emitZeroIntAP( uint32_t A0, SourceInfo L) {
43733 if (!isActive()) return true;
43734 CurrentSource = L;
43735 return ZeroIntAP(S, OpPC, A0);
43736}
43737#endif
43738#ifdef GET_OPCODE_NAMES
43739OP_ZeroIntAPS,
43740#endif
43741#ifdef GET_INTERP
43742case OP_ZeroIntAPS: {
43743 const auto V0 = ReadArg<uint32_t>(S, PC);
43744 if (!ZeroIntAPS(S, OpPC, V0))
43745 return false;
43746 continue;
43747}
43748#endif
43749#ifdef GET_DISASM
43750case OP_ZeroIntAPS:
43751 Text.Op = PrintName("ZeroIntAPS");
43752 Text.Args.push_back(printArg<uint32_t>(P, PC));
43753 break;
43754#endif
43755#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)
43756bool emitZeroIntAPS( uint32_t , SourceInfo);
43757#endif
43758#ifdef GET_LINK_IMPL
43759bool ByteCodeEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
43760 return emitOp<uint32_t>(OP_ZeroIntAPS, A0, L);
43761}
43762#endif
43763#ifdef GET_EVAL_IMPL
43764bool EvalEmitter::emitZeroIntAPS( uint32_t A0, SourceInfo L) {
43765 if (!isActive()) return true;
43766 CurrentSource = L;
43767 return ZeroIntAPS(S, OpPC, A0);
43768}
43769#endif
43770